History log of /freebsd-10-stable/sys/netinet/tcp_timewait.c
Revision Date Author Comments
# 309108 24-Nov-2016 jch

MFC r286227, r286443:

r286227:

Decompose TCP INP_INFO lock to increase short-lived TCP connections scalability:

- The existing TCP INP_INFO lock continues to protect the global inpcb list
stability during full list traversal (e.g. tcp_pcblist()).

- A new INP_LIST lock protects inpcb list actual modifications (inp allocation
and free) and inpcb global counters.

It allows to use TCP INP_INFO_RLOCK lock in critical paths (e.g. tcp_input())
and INP_INFO_WLOCK only in occasional operations that walk all connections.

PR: 183659
Differential Revision: https://reviews.freebsd.org/D2599
Reviewed by: jhb, adrian
Tested by: adrian, nitroboost-gmail.com
Sponsored by: Verisign, Inc.

r286443:

Fix a kernel assertion issue introduced with r286227:
Avoid too strict INP_INFO_RLOCK_ASSERT checks due to
tcp_notify() being called from in6_pcbnotify().

Reported by: Larry Rosenman <ler@lerctr.org>
Submitted by: markj, jch


# 307906 25-Oct-2016 jch

MFC r307551:

Fix a double-free when an inp transitions to INP_TIMEWAIT state
after having been dropped.

This change enforces in_pcbdrop() logic in tcp_input():

"in_pcbdrop() is used by TCP to mark an inpcb as unused and avoid future packet
delivery or event notification when a socket remains open but TCP has closed."

PR: 203175
Reported by: Palle Girgensohn, Slawa Olhovchenkov
Tested by: Slawa Olhovchenkov
Reviewed by: Slawa Olhovchenkov
Approved by: gnn, Slawa Olhovchenkov
Differential Revision: https://reviews.freebsd.org/D8211
Sponsored by: Verisign, inc


# 282826 12-May-2015 gnn

MFC: 282215

Make it possible to statically link SIFTR into the kernel
as a new option.

Reviewed by: bz
Discussed with: lstewart


# 275402 02-Dec-2014 jch

MFC r264321, r264342, r264351, r264356, r273850, r274629:

Currently, the TCP slow timer can starve TCP input processing while it
walks the list of connections in TIME_WAIT closing expired connections
due to contention on the global TCP pcbinfo lock.

To remediate, introduce a new global lock to protect the list of
connections in TIME_WAIT. Only acquire the TCP pcbinfo lock when
closing an expired connection. This limits the window of time when
TCP input processing is stopped to the amount of time needed to close
a single connection.

Approved by: jhb (mentor)


# 270057 16-Aug-2014 bz

MFC r266907:

While PAWS is disabled, there are no consumers for the tcp options
argument to tcp_twcheck(); thus mark it __unused.


# 270054 16-Aug-2014 bz

MFC r266618:

Make tcp_twrespond() file local private; this removes it from the
public KPI; it is not used anywhere else and seems it never was.


# 282826 12-May-2015 gnn

MFC: 282215

Make it possible to statically link SIFTR into the kernel
as a new option.

Reviewed by: bz
Discussed with: lstewart


# 275402 02-Dec-2014 jch

MFC r264321, r264342, r264351, r264356, r273850, r274629:

Currently, the TCP slow timer can starve TCP input processing while it
walks the list of connections in TIME_WAIT closing expired connections
due to contention on the global TCP pcbinfo lock.

To remediate, introduce a new global lock to protect the list of
connections in TIME_WAIT. Only acquire the TCP pcbinfo lock when
closing an expired connection. This limits the window of time when
TCP input processing is stopped to the amount of time needed to close
a single connection.

Approved by: jhb (mentor)


# 270057 16-Aug-2014 bz

MFC r266907:

While PAWS is disabled, there are no consumers for the tcp options
argument to tcp_twcheck(); thus mark it __unused.


# 270054 16-Aug-2014 bz

MFC r266618:

Make tcp_twrespond() file local private; this removes it from the
public KPI; it is not used anywhere else and seems it never was.