summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_input.c
diff options
context:
space:
mode:
authorbz <bz@FreeBSD.org>2010-03-06 21:22:28 +0000
committerbz <bz@FreeBSD.org>2010-03-06 21:22:28 +0000
commit3338a0e11e4a1c30ae072ef38ee8eccce8f462ac (patch)
tree3dc2b8065bf09e209683758c9e9124936205e59c /sys/netinet/tcp_input.c
parenta131906423b9dab2dfee1f40de18364bf7b53a9a (diff)
downloadFreeBSD-src-3338a0e11e4a1c30ae072ef38ee8eccce8f462ac.zip
FreeBSD-src-3338a0e11e4a1c30ae072ef38ee8eccce8f462ac.tar.gz
Rework reference counting in case we queue into the netisr,
or overflow the netisr queue and fall back to the interface queue so that we can garuantee that the ifnet pointer stays valid. Formerly we ended up with reference counts <= 0 in case the netisr had returned ENOBUFS. The idea is to track any packet in the netisr queue and only change the refount on edge operations for the fallback interface queue. This also avoids problems in case the if_snd.ifq_len lies to us. Also rework refount assertions to make sure they trigger if we go below 1. Formerly a negative refence count did not trigger the assert as the refcount variable is u_int. Sponsored by: ISPsystem MFC after: 5 days
Diffstat (limited to 'sys/netinet/tcp_input.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud