From 84b3ebb4d25958057ab87ada4fa28e87abdbebba Mon Sep 17 00:00:00 2001 From: Amir Vadai Date: Wed, 16 Jun 2010 11:54:11 +0300 Subject: [PATCH] sdp: Fix iperf multistream hanging When trying to send and no credits available. Sometime coulnd't get credit update, because interrupts are turned off by default. Added poll RX CQ to fix in this case. Signed-off-by: Amir Vadai --- drivers/infiniband/ulp/sdp/sdp_bcopy.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/infiniband/ulp/sdp/sdp_bcopy.c b/drivers/infiniband/ulp/sdp/sdp_bcopy.c index 02376cdd533bb..2e8088a7b6962 100644 --- a/drivers/infiniband/ulp/sdp/sdp_bcopy.c +++ b/drivers/infiniband/ulp/sdp/sdp_bcopy.c @@ -195,6 +195,10 @@ void sdp_post_sends(struct sdp_sock *ssk, gfp_t gfp) if (sdp_tx_ring_slots_left(ssk) < SDP_TX_SIZE / 2) sdp_xmit_poll(ssk, 1); + /* Run out of credits, check if got a credit update */ + if (unlikely(tx_credits(ssk) <= SDP_MIN_TX_CREDITS)) + sdp_process_rx(ssk); + if (ssk->recv_request && ring_tail(ssk->rx_ring) >= ssk->recv_request_head && tx_credits(ssk) >= SDP_MIN_TX_CREDITS && -- 2.50.1