]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
IB/sdp: modify buffer use calculation to eliminate credit starvation
authorAmiram Perlmutter <amip@mellanox.co.il>
Mon, 13 Nov 2006 09:43:06 +0000 (11:43 +0200)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 6 Oct 2015 12:04:00 +0000 (05:04 -0700)
Signed-off-by: Amiram Perlmutter <amip@mellanox.co.il>
drivers/infiniband/ulp/sdp/sdp_bcopy.c

index bbedba0deee1da087540c3fa17abd699d9dca6c5..d3edea9ecf2a46b8b3d048509b69792611e1d39a 100644 (file)
@@ -239,14 +239,12 @@ static void sdp_post_recv(struct sdp_sock *ssk)
 
 void sdp_post_recvs(struct sdp_sock *ssk)
 {
-       int rmem = atomic_read(&ssk->isk.sk.sk_rmem_alloc);
-
        if (unlikely(!ssk->id))
                return;
 
        while ((likely(ssk->rx_head - ssk->rx_tail < SDP_RX_SIZE) &&
                (ssk->rx_head - ssk->rx_tail - SDP_MIN_BUFS) *
-               SDP_MAX_SEND_SKB_FRAGS * PAGE_SIZE + rmem <
+               SDP_MAX_SEND_SKB_FRAGS * PAGE_SIZE + ssk->rcv_nxt - ssk->copied_seq <
                ssk->isk.sk.sk_rcvbuf * rcvbuf_scale) ||
               unlikely(ssk->rx_head - ssk->rx_tail < SDP_MIN_BUFS))
                sdp_post_recv(ssk);
@@ -286,7 +284,9 @@ static inline int sdp_sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
        int skb_len;
        struct sdp_sock *ssk = sdp_sk(sk);
 
-       skb_set_owner_r(skb, sk);
+       /* not needed since sk_rmem_alloc is not currently used
+        * TODO - remove this?
+       skb_set_owner_r(skb, sk); */
 
        skb_len = skb->len;