]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sdp: no point of waiting for data if remote host can't send
authorEldad Zinger <eldadz@mellanox.co.il>
Sun, 24 Oct 2010 09:24:27 +0000 (11:24 +0200)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 6 Oct 2015 12:05:32 +0000 (05:05 -0700)
Signed-off-by: Eldad Zinger <eldadz@mellanox.co.il>
drivers/infiniband/ulp/sdp/sdp_main.c

index d67e8d411c993434f9e7bf86250905ad6e44a8cd..946becd4d283491e36dfda514a8b4138a5b49ee5 100644 (file)
@@ -2389,6 +2389,17 @@ sdp_mid_data:
 
                if (poll_recv_cq(sk)) {
                        sdp_dbg_data(sk, "sk_wait_data %ld\n", timeo);
+                       if (remote_credits(ssk) <= SDP_MIN_TX_CREDITS) {
+                               /* Remote host can not send, so there is no
+                                * point of waiting for data.
+                                * This situation is possible if current host
+                                * can not send credits-update due to lack of
+                                * memory.
+                                */
+                               if (!copied)
+                                       copied = -ENOMEM;
+                               break;
+                       }
 
                        posts_handler_put(ssk, 0);
                        sk_wait_data(sk, &timeo);