Date: Sat, 6 Mar 2010 21:22:28 +0000 (UTC) From: "Bjoern A. Zeeb" <bz@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/net if_epair.c Message-ID: <201003062122.o26LMjEN044760@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
bz 2010-03-06 21:22:28 UTC
FreeBSD src repository
Modified files:
sys/net if_epair.c
Log:
SVN rev 204805 on 2010-03-06 21:22:28Z by bz
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
Revision Changes Path
1.5 +71 -20 src/sys/net/if_epair.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003062122.o26LMjEN044760>
