svn commit: r281315 - in stable: 10/sys/dev/cxgbe/tom 9/sys/dev/cxgbe/tom
John Baldwin
jhb at FreeBSD.org
Thu Apr 9 17:56:27 UTC 2015
Author: jhb
Date: Thu Apr 9 17:56:25 2015
New Revision: 281315
URL: https://svnweb.freebsd.org/changeset/base/281315
Log:
MFC 279892:
Resize receive socket buffers that support autosizing when receiving
TCP data via direct data placement.
Modified:
stable/9/sys/dev/cxgbe/tom/t4_ddp.c
Directory Properties:
stable/9/sys/ (props changed)
stable/9/sys/dev/ (props changed)
Changes in other areas also in this revision:
Modified:
stable/10/sys/dev/cxgbe/tom/t4_ddp.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/9/sys/dev/cxgbe/tom/t4_ddp.c
==============================================================================
--- stable/9/sys/dev/cxgbe/tom/t4_ddp.c Thu Apr 9 16:52:53 2015 (r281314)
+++ stable/9/sys/dev/cxgbe/tom/t4_ddp.c Thu Apr 9 17:56:25 2015 (r281315)
@@ -65,6 +65,13 @@ __FBSDID("$FreeBSD$");
#include "common/t4_tcb.h"
#include "tom/t4_tom.h"
+VNET_DECLARE(int, tcp_do_autorcvbuf);
+#define V_tcp_do_autorcvbuf VNET(tcp_do_autorcvbuf)
+VNET_DECLARE(int, tcp_autorcvbuf_inc);
+#define V_tcp_autorcvbuf_inc VNET(tcp_autorcvbuf_inc)
+VNET_DECLARE(int, tcp_autorcvbuf_max);
+#define V_tcp_autorcvbuf_max VNET(tcp_autorcvbuf_max)
+
#define PPOD_SZ(n) ((n) * sizeof(struct pagepod))
#define PPOD_SIZE (PPOD_SZ(1))
@@ -459,6 +466,21 @@ handle_ddp_data(struct toepcb *toep, __b
else
discourage_ddp(toep);
+ /* receive buffer autosize */
+ if (sb->sb_flags & SB_AUTOSIZE &&
+ V_tcp_do_autorcvbuf &&
+ sb->sb_hiwat < V_tcp_autorcvbuf_max &&
+ len > (sbspace(sb) / 8 * 7)) {
+ unsigned int hiwat = sb->sb_hiwat;
+ unsigned int newsize = min(hiwat + V_tcp_autorcvbuf_inc,
+ V_tcp_autorcvbuf_max);
+
+ if (!sbreserve_locked(sb, newsize, so, NULL))
+ sb->sb_flags &= ~SB_AUTOSIZE;
+ else
+ toep->rx_credits += newsize - hiwat;
+ }
+
KASSERT(toep->sb_cc >= sb->sb_cc,
("%s: sb %p has more data (%d) than last time (%d).",
__func__, sb, sb->sb_cc, toep->sb_cc));
More information about the svn-src-stable-9
mailing list