From 4ba9b0dd7bd0074c5387a78bce93f4b1eaa536b9 Mon Sep 17 00:00:00 2001 From: Eldad Zinger Date: Tue, 28 Sep 2010 13:39:02 +0200 Subject: [PATCH] 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 --- drivers/infiniband/ulp/sdp/sdp_main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/infiniband/ulp/sdp/sdp_main.c b/drivers/infiniband/ulp/sdp/sdp_main.c index d8ddce62afd1e..04e8dca7884b9 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 -- 2.50.1