From: Amir Vadai Date: Wed, 16 Jun 2010 08:54:11 +0000 (+0300) Subject: sdp: Fix iperf multistream hanging X-Git-Tag: v4.1.12-92~264^2~5^2~165 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=84b3ebb4d25958057ab87ada4fa28e87abdbebba;p=users%2Fjedix%2Flinux-maple.git 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 --- diff --git a/drivers/infiniband/ulp/sdp/sdp_bcopy.c b/drivers/infiniband/ulp/sdp/sdp_bcopy.c index 02376cdd533b..2e8088a7b696 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 &&