svn commit: r284092 - stable/10/sys/dev/cxgbe/tom
Navdeep Parhar
np at FreeBSD.org
Sat Jun 6 18:31:29 UTC 2015
Author: np
Date: Sat Jun 6 18:31:28 2015
New Revision: 284092
URL: https://svnweb.freebsd.org/changeset/base/284092
Log:
MFC r280878:
cxgbe/tom: return rx credits promptly if the socket buffer's low water
mark cannot be reached because the window advertised to the peer isn't
wide enough. While here, tweak the normal credit return too.
Modified:
stable/10/sys/dev/cxgbe/tom/t4_cpl_io.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/dev/cxgbe/tom/t4_cpl_io.c
==============================================================================
--- stable/10/sys/dev/cxgbe/tom/t4_cpl_io.c Sat Jun 6 18:21:16 2015 (r284091)
+++ stable/10/sys/dev/cxgbe/tom/t4_cpl_io.c Sat Jun 6 18:31:28 2015 (r284092)
@@ -390,19 +390,17 @@ t4_rcvd(struct toedev *tod, struct tcpcb
toep->rx_credits += toep->sb_cc - sb->sb_cc;
toep->sb_cc = sb->sb_cc;
}
- credits = toep->rx_credits;
- SOCKBUF_UNLOCK(sb);
-
- if (credits > 0 &&
- (credits + 16384 >= tp->rcv_wnd || credits >= 15 * 1024)) {
+ if (toep->rx_credits > 0 &&
+ (tp->rcv_wnd <= 32 * 1024 || toep->rx_credits >= 64 * 1024 ||
+ (toep->rx_credits >= 16 * 1024 && tp->rcv_wnd <= 128 * 1024) ||
+ toep->sb_cc + tp->rcv_wnd < sb->sb_lowat)) {
- credits = send_rx_credits(sc, toep, credits);
- SOCKBUF_LOCK(sb);
+ credits = send_rx_credits(sc, toep, toep->rx_credits);
toep->rx_credits -= credits;
- SOCKBUF_UNLOCK(sb);
tp->rcv_wnd += credits;
tp->rcv_adv += credits;
}
+ SOCKBUF_UNLOCK(sb);
}
/*
@@ -1618,6 +1616,14 @@ do_rx_data(struct sge_iq *iq, const stru
toep->rx_credits += toep->sb_cc - sb->sb_cc;
sbappendstream_locked(sb, m);
toep->sb_cc = sb->sb_cc;
+ if (toep->rx_credits > 0 && toep->sb_cc + tp->rcv_wnd < sb->sb_lowat) {
+ int credits;
+
+ credits = send_rx_credits(sc, toep, toep->rx_credits);
+ toep->rx_credits -= credits;
+ tp->rcv_wnd += credits;
+ tp->rcv_adv += credits;
+ }
sorwakeup_locked(so);
SOCKBUF_UNLOCK_ASSERT(sb);
More information about the svn-src-stable-10
mailing list