Date: Mon, 30 Jul 2007 05:52:44 GMT From: Peter Wemm <peter@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 124334 for review Message-ID: <200707300552.l6U5qi67049269@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=124334 Change 124334 by peter@peter_overcee on 2007/07/30 05:52:31 TCPTV_MIN is in units of ticks. When we change HZ=1000, the default value is now 1/10th of the original value. This is important because it means tcp sessions now time out at around 10-12 seconds instead of the old behavior of 105-130 seconds on a local ethernet session. A 10 second outage is real easy to achieve if you bump or move ethernet cables etc. Affected files ... .. //depot/projects/hammer/sys/dev/si/si.c#24 edit .. //depot/projects/hammer/sys/dev/si/si_pci.c#8 edit .. //depot/projects/hammer/sys/netinet/tcp_subr.c#70 edit .. //depot/projects/hammer/sys/netinet/tcp_timer.h#12 edit Differences ... ==== //depot/projects/hammer/sys/dev/si/si.c#24 (text+ko) ==== ==== //depot/projects/hammer/sys/dev/si/si_pci.c#8 (text+ko) ==== @@ -105,6 +105,21 @@ goto fail; } + if (pci_get_devid(dev) == 0x200011cb) { + /* Perform a PLX control register fixup */ + int rid = PCIR_BAR(0); + plx_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, + &rid, RF_ACTIVE); + if (plx_res == NULL) { + device_printf(dev, "couldn't map plx registers\n"); + } else { + uint32_t *maddr; + addr = rman_get_virtual(plx_res); + device_printf(dev, "PLX register 0x50: 0x%08x\n", addr[0x50 / 4]); + bus_release_resource(dev, SYS_RES_MEMORY, rid, plx_res); + } + } + error = siattach(dev); if (error) goto fail; ==== //depot/projects/hammer/sys/netinet/tcp_subr.c#70 (text+ko) ==== @@ -258,7 +258,7 @@ tcp_keepintvl = TCPTV_KEEPINTVL; tcp_maxpersistidle = TCPTV_KEEP_IDLE; tcp_msl = TCPTV_MSL; - tcp_rexmit_min = TCPTV_MIN; + tcp_rexmit_min = TCPTV_MIN < 1 ? 1 : TCPTV_MIN; tcp_rexmit_slop = TCPTV_CPU_VAR; tcp_inflight_rttthresh = TCPTV_INFLIGHT_RTTTHRESH; tcp_finwait2_timeout = TCPTV_FINWAIT2_TIMEOUT; ==== //depot/projects/hammer/sys/netinet/tcp_timer.h#12 (text+ko) ==== @@ -111,7 +111,7 @@ * The prior minimum of 1*hz (1 second) badly breaks throughput on any * networks faster then a modem that has minor (e.g. 1%) packet loss. */ -#define TCPTV_MIN ( 3 ) /* minimum allowable value */ +#define TCPTV_MIN ( hz/33 ) /* minimum allowable value */ #define TCPTV_CPU_VAR ( hz/5 ) /* cpu variance allowed (200ms) */ #define TCPTV_REXMTMAX ( 64*hz) /* max allowable REXMT value */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200707300552.l6U5qi67049269>