freebsd-dev/sys
Matthew Dillon a84db8f49e Guido found another bug. There is a situation with
timestamped TCP packets where FreeBSD will send DATA+FIN and
A W2K box will ack just the DATA portion.  If this occurs
after FreeBSD has done a (NewReno) fast-retransmit and is
recovering it (dupacks > threshold) it triggers a case in
tcp_newreno_partial_ack() (tcp_newreno() in stable) where
tcp_output() is called with the expectation that the retransmit
timer will be reloaded.  But tcp_output() falls through and
returns without doing anything, causing the persist timer to be
loaded instead.  This causes the connection to hang until W2K gives up.
This occurs because in the case where only the FIN must be acked, the
'len' calculation in tcp_output() will be 0, a lot of checks will be
skipped, and the FIN check will also be skipped because it is designed
to handle FIN retransmits, not forced transmits from tcp_newreno().

The solution is to simply set TF_ACKNOW before calling tcp_output()
to absolute guarentee that it will run the send code and reset the
retransmit timer.  TF_ACKNOW is already used for this purpose in other
cases.

For some unknown reason this patch also seems to greatly reduce
the number of duplicate acks received when Guido runs his tests over
a lossy network.  It is quite possible that there are other
tcp_newreno{_partial_ack()} cases which were not generating the expected
output which this patch also fixes.

X-MFC after:	Will be MFC'd after the freeze is over
2002-09-30 18:55:45 +00:00
..
alpha use __packed. 2002-09-23 18:54:32 +00:00
amd64 - Give legacy an identify routine that always adds 'legacy0' at an order 2002-09-30 18:47:11 +00:00
arm Initiate deorbit burn for the i386-only a.out related support. Moves are 2002-09-17 01:49:00 +00:00
boot Fixed to build after removing a.out suppot. 2002-09-24 02:17:13 +00:00
cam Add quirk for Apacer HandyDrive 2002-09-30 10:11:34 +00:00
coda Fix these warns where sizeof(int) != sizeof(void *) 2002-09-26 06:19:31 +00:00
compat Make the following name changes to KSE related functions, etc., to better 2002-09-25 18:10:42 +00:00
conf Moved most interrupt related code to a new file, interrupt.S. 2002-09-28 01:56:24 +00:00
contrib (This commit touches about 15 disk device drivers in a very consistent 2002-09-20 19:36:05 +00:00
crypto
ddb Be consistent about "static" functions: if the function is marked 2002-09-28 17:15:38 +00:00
dev In rev 1.51 of usb_port.h I switched over to using the USB_USE_SOFTINTR 2002-09-30 17:50:18 +00:00
fs s/struct dev_t */dev_t */ 2002-09-28 21:21:01 +00:00
geom Don the asbestos underwear and add the code which lets DIOCWDINFO 2002-09-30 08:59:59 +00:00
gnu - Lock access to the buf lists. 2002-09-25 02:34:56 +00:00
i4b It's bad enough people can't figure out to use the same code, or in 2002-09-11 12:44:58 +00:00
i386 - Give legacy an identify routine that always adds 'legacy0' at an order 2002-09-30 18:47:11 +00:00
ia64 Make the following name changes to KSE related functions, etc., to better 2002-09-25 18:10:42 +00:00
isa Add support for DIOCGMEDIASIZE and DIOCGSECTORSIZE. 2002-09-30 13:53:22 +00:00
isofs/cd9660 Be consistent about "static" functions: if the function is marked 2002-09-28 17:15:38 +00:00
kern uh, commit all of the patch 2002-09-29 23:28:58 +00:00
libkern Use sys/libkern.h not /usr/include/string.h 2002-09-06 06:04:36 +00:00
modules HARP driver for the IDT77201/211 NICStAR ATM Adapter (Including Fore LE155). 2002-09-30 05:12:39 +00:00
net Fixed some of the namespace pollution in rev.1.33. <sys/systm.h> was 2002-09-29 12:09:08 +00:00
netatalk Add more ethernet types and move AppleTalk types into proper location. 2002-09-06 17:02:29 +00:00
netatm Include <sys/systm.h> instead of depending on namespace pollution in 2002-09-29 12:01:36 +00:00
netgraph use __packed. 2002-09-23 18:54:32 +00:00
netinet Guido found another bug. There is a situation with 2002-09-30 18:55:45 +00:00
netinet6 s/__attribute__((__packed__))/__packed/g 2002-09-23 06:25:08 +00:00
netipx
netkey
netnatm
netncp use __packed. 2002-09-23 18:54:32 +00:00
netns Use m_length() instead of home-rolled versions. 2002-09-18 19:44:14 +00:00
netsmb Use m_length() instead of home-rolled versions. 2002-09-18 19:44:14 +00:00
nfs nfsnode.h was moved to ../nfsclient ages ago. I forgot to remove it here. 2002-09-06 05:47:33 +00:00
nfsclient Be consistent about "static" functions: if the function is marked 2002-09-28 17:15:38 +00:00
nfsserver - Use incore() instead of gbincore() so we don't have to acquire the 2002-09-25 02:39:39 +00:00
pc98 Call bus_set_resource() to set the ioport resource. 2002-09-30 16:41:47 +00:00
pccard Make beep not depend on HZ setting. 2002-09-29 23:41:25 +00:00
pci Remove all DELAY(1) calls around MII operations in the XL driver. 2002-09-22 04:48:30 +00:00
posix4 Fix various style(9) bugs: 2002-09-20 17:54:34 +00:00
powerpc PIC_GOTOFF is OBE. 2002-09-23 07:27:45 +00:00
rpc
security - Use vrefcnt() instead of v_usecount. 2002-09-25 02:42:43 +00:00
sparc64 Renamed intr_enqueue to intr_vector and intr_dequeue to intr_fast, to 2002-09-28 03:06:35 +00:00
sys Implement basic KSE loaning. This stops a hread that is blocked in BOUND mode 2002-09-29 23:04:34 +00:00
tools - Move ASSERT_VOP_*LOCK* functionality into functions in vfs_subr.c 2002-09-26 04:48:44 +00:00
ufs When spamming me with a printf(9), under DIAGNOSTIC, at least be nice enough 2002-09-28 19:04:49 +00:00
vm Be consistent about "static" functions: if the function is marked 2002-09-28 17:15:38 +00:00
Makefile