From: Eldad Zinger Date: Tue, 28 Sep 2010 11:39:02 +0000 (+0200) Subject: sdp: sdp_poll() should not excessively poll rx_cq X-Git-Tag: v4.1.12-92~264^2~5^2~98 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=4ba9b0dd7bd0074c5387a78bce93f4b1eaa536b9;p=users%2Fjedix%2Flinux-maple.git sdp: sdp_poll() should not excessively poll rx_cq sdp_poll() might be called before send(), and if there is no data in rx_cq, polling rx_cq will waste 700 usec (recv_poll). Signed-off-by: Eldad Zinger --- diff --git a/drivers/infiniband/ulp/sdp/sdp_main.c b/drivers/infiniband/ulp/sdp/sdp_main.c index d8ddce62afd1..04e8dca7884b 100644 --- a/drivers/infiniband/ulp/sdp/sdp_main.c +++ b/drivers/infiniband/ulp/sdp/sdp_main.c @@ -2611,12 +2611,12 @@ static unsigned int sdp_poll(struct file *file, struct socket *socket, sdp_sk(sk)->cpu = smp_processor_id(); if (sk->sk_state == TCP_ESTABLISHED) { - sdp_prf(sk, NULL, "polling"); - posts_handler_get(sdp_sk(sk)); - poll_recv_cq(sk); - posts_handler_put(sdp_sk(sk), 0); + sdp_prf(sk, NULL, "posting\n"); + sdp_do_posts(sdp_sk(sk)); } mask = datagram_poll(file, socket, wait); + if (!(mask & POLLIN)) + sdp_arm_rx_cq(sk); /* * Adjust for memory in later kernels