summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_var.h
Commit message (Collapse)AuthorAgeFilesLines
* Changes to support the addition of a new sysctl variable:dg1998-02-261-1/+2
| | | | | | net.inet.tcp.delack_enabled Which defaults to 1 and can be set to 0 to disable TCP delayed-ack processing (i.e. all acks are immediate).
* Improved connection establishment performance by doing local port lookups viadg1998-01-271-38/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a hashed port list. In the new scheme, in_pcblookup() goes away and is replaced by a new routine, in_pcblookup_local() for doing the local port check. Note that this implementation is space inefficient in that the PCB struct is now too large to fit into 128 bytes. I might deal with this in the future by using the new zone allocator, but I wanted these changes to be extensively tested in their current form first. Also: 1) Fixed off-by-one errors in the port lookup loops in in_pcbbind(). 2) Got rid of some unneeded rehashing. Adding a new routine, in_pcbinshash() to do the initialial hash insertion. 3) Renamed in_pcblookuphash() to in_pcblookup_hash() for easier readability. 4) Added a new routine, in_pcbremlists() to remove the PCB from the various hash lists. 5) Added/deleted comments where appropriate. 6) Removed unnecessary splnet() locking. In general, the PCB functions should be called at splnet()...there are unfortunately a few exceptions, however. 7) Reorganized a few structs for better cache line behavior. 8) Killed my TCP_ACK_HACK kludge. It may come back in a different form in the future, however. These changes have been tested on wcarchive for more than a month. In tests done here, connection establishment overhead is reduced by more than 50 times, thus getting rid of one of the major networking scalability problems. Still to do: make tcp_fastimo/tcp_slowtimo scale well for systems with a large number of connections. tcp_fastimo is easy; tcp_slowtimo is difficult. WARNING: Anything that knows about inpcb and tcpcb structs will have to be recompiled; at the very least, this includes netstat(1).
* The long-awaited mega-massive-network-code- cleanup. Part I.wollman1997-04-271-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | This commit includes the following changes: 1) Old-style (pr_usrreq()) protocols are no longer supported, the compatibility glue for them is deleted, and the kernel will panic on boot if any are compiled in. 2) Certain protocol entry points are modified to take a process structure, so they they can easily tell whether or not it is possible to sleep, and also to access credentials. 3) SS_PRIV is no more, and with it goes the SO_PRIVSTATE setsockopt() call. Protocols should use the process pointer they are now passed. 4) The PF_LOCAL and PF_ROUTE families have been updated to use the new style, as has the `raw' skeleton family. 5) PF_LOCAL sockets now obey the process's umask when creating a socket in the filesystem. As a result, LINT is now broken. I'm hoping that some enterprising hacker with a bit more time will either make the broken bits work (should be easy for netipx) or dike them out.
* Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are notpeter1997-02-221-1/+1
| | | | ready for it yet.
* Make the long-awaited change from $Id$ to $FreeBSD$jkh1997-01-141-1/+1
| | | | | | | | This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long. Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
* Move TCPCTL_KEEPINIT to end of MIB list (sigh)pst1996-09-131-4/+4
|
* Make the misnamed tcp initial keepalive timer value (which is really thepst1996-09-131-4/+6
| | | | | | | | time, in seconds, that state for non-established TCP sessions stays about) a sysctl modifyable variable. [part 1 of two commits, I just realized I can't play with the indices as I was typing this commit message.]
* Modify the kernel to use the new pr_usrreqs interface rather than the oldwollman1996-07-111-3/+2
| | | | | | | | | | | | | | pr_usrreq mechanism which was poorly designed and error-prone. This commit renames pr_usrreq to pr_ousrreq so that old code which depended on it would break in an obvious manner. This commit also implements the new interface for TCP, although the old function is left as an example (#ifdef'ed out). This commit ALSO fixes a longstanding bug in the TCP timer processing (introduced by davidg on 1995/04/12) which caused timer processing on a TCB to always stop after a single timer had expired (because it misinterpreted the return value from tcp_usrreq() to indicate that the TCB had been deleted). Finally, some code related to polling has been deleted from if.c because it is not relevant t -current and doesn't look at all like my current code.
* Correct formula for TCP RTO calculation. Also try to do a better job inwollman1996-06-051-3/+3
| | | | | filling in a new PCB's rttvar (but this is not the last word on the subject). And get rid of `#ifdef RTV_RTT', it's been true for four years now...
* Delete #ifdef notdef blocks containing old method of srtt calculation.wollman1996-04-261-18/+1
| | | | Requested by: davidg
* A number of performance-reducing flaws fixed based on commentswollman1996-03-221-1/+23
| | | | | | | | | | | | | | | | from Larry Peterson &co. at Arizona: - Header prediction for ACKs did not exclude Fast Retransmit/Recovery. - srtt calculation tended to get ``stuck'' and could never decrease when below 8. It still can't, but the scaling factors are adjusted so that this artifact does not cause as bad an effect on the RTO value as it used to. The paper also points out the incr/8 error that has been long since fixed, and the problems with ACKing frequency resulting from the use of options which I suspect to be fixed already as well (as part of the T/TCP work). Obtained from: Brakmo & Peterson, ``Performance Problems in BSD4.4 TCP''
* Spell tcp_listendrop consistently so that tcp_input.c and netstat compile.bde1996-02-271-2/+2
|
* Add a counter for the number of times the listen queue was overflowed toguido1996-02-261-1/+2
| | | | | | the tcpstat structure. (netstat -s) Reviewed by: wollman Obtained from: Steves, TCP/IP Ill. vol.3, page 189
* Fix a bunch of spelling errors in the comment fields ofmpp1996-01-301-2/+2
| | | | a bunch of system include files.
* remove tcp_lastport - it has not been used for quite a while (at leastpeter1996-01-191-2/+1
| | | | since the hashed pcb's I think).
* Remove some bogus externs.dg1995-12-291-4/+1
|
* Uniformized pr_ctlinput protosw functions. The third arg is now `voidbde1995-12-161-2/+2
| | | | | | | *' instead of caddr_t and it isn't optional (it never was). Most of the netipx (and netns) pr_ctlinput functions abuse the second arg instead of using the third arg but fixing this is beyond the scope of this round of changes.
* Path MTU Discovery is now standard.wollman1995-12-051-4/+2
|
* New style sysctl & staticize alot of stuff.phk1995-11-141-15/+1
|
* Fix a logical error in T/TCP: when we actively open a connection, weolah1995-11-031-1/+2
| | | | | | | | | | have to decide whether to send a CC or CCnew option in our SYN segment depending on the contents of our TAO cache. This decision has to be made once when the connection starts. The earlier code delayed this decision until the segment was assembled in tcp_output() and retransmitted SYN segments could have different CC options. Reviewed by: Richard Stevens, davidg, wollman
* The ability to administratively change the MTU of an interface presentswollman1995-10-161-1/+4
| | | | | | | a few new wrinkles for MTU discovery which tcp_output() had better be prepared to handle. ip_output() is also modified to do something helpful in this case, since it has already calculated the information we need.
* The additional checks involving sequence numbers in MTU discovery resendswollman1995-10-121-3/+1
| | | | | | turned out not to be necessary; simply watching for MTU decreases (which we already did) automagically eliminates all the cases we were trying to protect against.
* More MTU discovery: avoid over-retransmission if route changes in thewollman1995-10-101-1/+4
| | | | | | | | middle of a fully-open window. Also, keep track of how many retransmits we do as a result of MTU discovery. This may actually do more work than necessary, but it's an unusual condition... Suggested by: Janey Hoe <janey@lcs.mit.edu>
* Make a whole bunch of PCB variables ints rather than shorts. There appearwollman1995-10-041-16/+16
| | | | | | | | to be no ill effects, and so far as Iknow none of the variables in question depend on 16-bit wraparound behavior. (The sizes are in many cases relics from when a PCB had to fit inside a 128-byte mbuf. PCBs are no longer stored in that way, and the old structure would not have fit, either.)
* Remove duplicate definition for tcps_persistdrop, as added by davidg somepeter1995-09-221-2/+1
| | | | | | | | time ago. I left in Garrett's one, because his was in the 4.4-Lite-2 location, making any diffs just that little bit smaller. I presume this choice means that netstat needs to be recompiled before "netstat -s" will give a meaningful answer on tcp stats.
* Merge with 4.4-Lite-2. This just adds a couple of tcpstat entries whichwollman1995-09-211-4/+6
| | | | we don't currently set, but might in the future.
* Add connection drop capability for persist timeouts.dg1995-07-291-1/+2
| | | | | Reviewed by: Andras Olah Obtained from: 4.4BSD-lite2 via W. Richard Stevens
* tcp_input.c - keep track of how many times a route contained a cached rttwollman1995-07-101-1/+8
| | | | | | | | | or ssthresh that we were able to use tcp_var.h - declare tcpstat entries for above; declare tcp_{send,recv}space in_rmx.c - fill in the MTU and pipe sizes with the defaults TCP would have used anyway in the absence of values here
* Keep track of the number of samples through the srtt filter so that wewollman1995-06-291-1/+3
| | | | | | know better when to cache values in the route, rather than relying on a heuristic involving sequence numbers that broke when tcp_sendspace was increased to 16k.
* Now that we've gone to all sorts of effort to allow TCP to cache some ofwollman1995-06-191-1/+4
| | | | | | | | its connection parameters, we want to keep statistics on how often this actually happens to see whether there is any work that needs to be done in TCP itself. Suggested by: John Wroclawski <jtw@lcs.mit.edu>
* Implemented PCB hashing. Includes new functions in_pcbinshash, in_pcbrehash,dg1995-04-091-2/+4
| | | | and in_pcblookuphash.
* Add and move declarations to fix all of the warnings from `gcc -Wimplicit'bde1995-03-161-1/+5
| | | | | | (except in netccitt, netiso and netns) and most of the warnings from `gcc -Wnested-externs'. Fix all the bugs found. There were no serious ones.
* Transaction TCP support now standard. Hack away!wollman1995-02-161-5/+0
|
* Add lots of useful MIB variables and a few not-so-useful ones forwollman1995-02-161-2/+14
| | | | completeness.
* Get rid of some unneeded #ifdef TTCP lines. Also, get rid of somewollman1995-02-141-18/+8
| | | | bogus commons declared in header files.
* Merge Transaction TCP, courtesy of Andras Olah <olah@cs.utwente.nl> andwollman1995-02-091-5/+1
| | | | | | | | | Bob Braden <braden@isi.edu>. NB: This has not had David's TCP ACK hack re-integrated. It is not clear what the correct solution to this problem is, if any. If a better solution doesn't pop up in response to this message, I'll put David's code back in (or he's welcome to do so himself).
* Fix/#ifdef prototype for tcp_mss...apparantly overlooked by Garrett.dg1995-02-091-1/+5
|
* Merge in T/TCP TCP header file changes.wollman1995-02-081-3/+85
|
* Made idempotent.paul1994-08-211-1/+5
| | | | Submitted by: Paul
* Added $Id$dg1994-08-021-0/+1
|
* BSD 4.4 Lite Kernel Sourcesrgrimes1994-05-241-0/+278
OpenPOWER on IntegriCloud