freebsd-nq/sys/conf
Bill Paul a0067d7b89 Attempt to fix a problem with receiving packets on USB ethernet interfaces.
Packets are received inside USB bulk transfer callbacks, which run at
splusb() (actually splbio()). The packet input queues are meant to be
manipulated at splimp(). However the locking apparently breaks down under
certain circumstances and the input queues can get trampled.

There's a similar problem with if_ppp, which is driven by hardware/tty
interrupts from the serial driver, but which must also manipulate the
packet input queues at splimp(). The fix there is to use a netisr, and
that's the fix I used here. (I can hear you groaning back there. Hush up.)

The usb_ethersubr module maintains a single queue of its own. When a
packet is received in the USB callback routine, it's placed on this
queue with usb_ether_input(). This routine also schedules a soft net
interrupt with schednetisr(). The ISR routine then runs later, at
splnet, outside of the USB callback/interrupt context, and passes the
packet to ether_input(), hopefully in a safe manner.

The reason this is implemented as a separate module is that there are
a limited number of NETISRs that we can use, and snarfing one up for
each driver that needs it is wasteful (there will be three once I get
the CATC driver done). It also reduces code duplication to a certain
small extent. Unfortunately, it also needs to be linked in with the
usb.ko module in order for the USB ethernet drivers to share it.

Also removed some uneeded includes from if_aue.c and if_kue.c

Fix suggested by: peter
Not rejected as a hairbrained idea by: n_hibma
2000-01-10 23:12:54 +00:00
..
defines
files Attempt to fix a problem with receiving packets on USB ethernet interfaces. 2000-01-10 23:12:54 +00:00
files.alpha Only compile gusc for isa (the #if NISA inside gusc effectively covers 1999-12-21 13:53:49 +00:00
files.i386 Move xe driver from dev/pccard to dev/xe. Convert driver to newbus. 2000-01-10 08:05:53 +00:00
files.pc98 Synced with sys/i386/conf/files.i386 rev 1.295. 2000-01-09 14:25:50 +00:00
kern.mk Make "-mpreferred-stack-boundary=2" the default on the i386. 1999-11-17 07:30:35 +00:00
kmod.mk Add "-I@/../include" and/or "-I${DESTDIR}/usr/include" to CFLAGS, 2000-01-08 18:48:57 +00:00
ldscript.alpha Lots of changes, including: 1998-08-10 07:53:59 +00:00
ldscript.amd64 Remove a rather bogus search path reference.. 1999-06-03 22:07:41 +00:00
ldscript.i386 Remove a rather bogus search path reference.. 1999-06-03 22:07:41 +00:00
ldscript.powerpc Lots of changes, including: 1998-08-10 07:53:59 +00:00
majors Add character major 139 for the Sangoma Technologies 'wanrouter' driver. 1999-12-17 19:56:39 +00:00
Makefile.alpha Put on my asbestos suit and move $mach/conf/*.$mach to conf/*.$mach as 2000-01-09 15:29:10 +00:00
Makefile.i386 Put on my asbestos suit and move $mach/conf/*.$mach to conf/*.$mach as 2000-01-09 15:29:10 +00:00
Makefile.pc98 Point to the right kernel ld script. 2000-01-09 17:59:49 +00:00
Makefile.powerpc Put on my asbestos suit and move $mach/conf/*.$mach to conf/*.$mach as 2000-01-09 15:29:10 +00:00
newvers.sh $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
nfsswapkernel.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
NOTES Remove controller miibus, there already were a device miibus. 2000-01-10 12:06:32 +00:00
options Removed defunct options EXTRA_SIO and KEY_DEBUG. 2000-01-09 14:47:38 +00:00
options.alpha - Add the device resume method. It supercedes the existing resume 1999-12-15 10:04:05 +00:00
options.i386 Put COMPAT_SVR4 in opt_dontuse.h for the same reasons as IBCS2 and 2000-01-09 10:58:39 +00:00
options.pc98 Put COMPAT_SVR4 in opt_dontuse.h for the same reasons as IBCS2 and 2000-01-09 10:58:39 +00:00
param.c This is Bosko Milekic's mbuf allocation waiting code. Basically, this 1999-12-12 05:52:51 +00:00
systags.sh $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00