HomeFreeBSD

inpcb: retire INP_DROPPED and in_pcbdrop()

Description

inpcb: retire INP_DROPPED and in_pcbdrop()

The inpcb flag INP_DROPPED served two purposes.

It was used by TCP and subsystems running on top of TCP as a flag that
marks a connection that is now in TCPS_CLOSED, but was in some other state
before (not a new-born connection). Create a new TCP flag TF_DISCONNECTED
for this purpose.

The in_pcbdrop() was a TCP's version of in_pcbdisconnect() that also sets
INP_DROPPED. Use in_pcbdisconnect() instead.

Second purpose of INP_DROPPED was a negative lookup mask in
inp_smr_lock(), as SMR-protected lookup may see inpcbs that had been
removed from the hash. We already have had INP_INHASHLIST that marks
inpcb that is in hash. Convert it into INP_UNCONNECTED with the opposite
meaning. This allows to combine it with INP_FREED for the negative lookup
mask.

The Chelsio/ToE and kTLS changes are done with some style refactoring,
like moving inp/tp assignments up and using macros for that. However, no
deep thinking was taken to check if those checks are really needed, it
could be that some are not.

Reviewed by: rrs
Differential Revision: https://reviews.freebsd.org/D56186

Details

Provenance
glebiusAuthored on Apr 12 2026, 6:33 PM
Reviewer
rrs
Differential Revision
D56186: inpcb: retire INP_DROPPED and in_pcbdrop()
Parents
rGce283e115b02: netinet6: remove INP_DROPPED checks from setsockopt(2)
Branches
Unknown
Tags
Unknown