From: Eldad Zinger Date: Thu, 5 Aug 2010 07:16:58 +0000 (+0300) Subject: sdp: properly kill nagle_timer on socket reset X-Git-Tag: v4.1.12-92~264^2~5^2~120 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=579f4ab50ac47af0e2c373fd1fc32d7adfdfc324;p=users%2Fjedix%2Flinux-maple.git sdp: properly kill nagle_timer on socket reset Signed-off-by: Eldad Zinger --- diff --git a/drivers/infiniband/ulp/sdp/sdp_bcopy.c b/drivers/infiniband/ulp/sdp/sdp_bcopy.c index 663bf2b7a0ea6..3fba26203f618 100644 --- a/drivers/infiniband/ulp/sdp/sdp_bcopy.c +++ b/drivers/infiniband/ulp/sdp/sdp_bcopy.c @@ -129,7 +129,7 @@ static inline int sdp_nagle_off(struct sdp_sock *ssk, struct sk_buff *skb) unsigned long mseq = ring_head(ssk->tx_ring); ssk->nagle_last_unacked = mseq; } else { - if (!timer_pending(&ssk->nagle_timer)) { + if (!timer_pending(&ssk->nagle_timer) && ssk->qp_active) { mod_timer(&ssk->nagle_timer, jiffies + SDP_NAGLE_TIMEOUT); sdp_dbg_data(&ssk->isk.sk, "Starting nagle timer\n"); @@ -171,8 +171,10 @@ void sdp_nagle_timeout(unsigned long data) out: bh_unlock_sock(sk); out2: - if (sk->sk_send_head) /* If has pending sends - rearm */ + if (sk->sk_send_head && ssk->qp_active) { + /* If has pending sends - rearm */ mod_timer(&ssk->nagle_timer, jiffies + SDP_NAGLE_TIMEOUT); + } } void sdp_post_sends(struct sdp_sock *ssk, gfp_t gfp) diff --git a/drivers/infiniband/ulp/sdp/sdp_tx.c b/drivers/infiniband/ulp/sdp/sdp_tx.c index e542e226cd186..75137c29ccb09 100644 --- a/drivers/infiniband/ulp/sdp/sdp_tx.c +++ b/drivers/infiniband/ulp/sdp/sdp_tx.c @@ -517,7 +517,7 @@ void sdp_tx_ring_destroy(struct sdp_sock *ssk) { if (ssk->nagle_timer.function) - del_timer(&ssk->nagle_timer); + del_timer_sync(&ssk->nagle_timer); if (ssk->tx_ring.buffer) { sdp_tx_ring_purge(ssk);