<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src-test2/sys/dev/usb/usb_ethersubr.h, branch release/5.2.0_cvs</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src-test2/atom?h=release%2F5.2.0_cvs</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src-test2/atom?h=release%2F5.2.0_cvs'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/'/>
<updated>2004-01-10T05:53:29Z</updated>
<entry>
<title>This commit was manufactured by cvs2svn to create tag</title>
<updated>2004-01-10T05:53:29Z</updated>
<author>
<name>cvs2svn</name>
<email>cvs2svn@FreeBSD.org</email>
</author>
<published>2004-01-10T05:53:29Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=58c9ff44c8041f394c663cb9640e9b77fe07bb13'/>
<id>urn:sha1:58c9ff44c8041f394c663cb9640e9b77fe07bb13</id>
<content type='text'>
'RELENG_5_2_0_RELEASE'.

This commit was manufactured to restore the state of the 5.2-RELEASE image.
Releases prior to 5.3-RELEASE are omitting the secure/ and crypto/ subdirs.
</content>
</entry>
<entry>
<title>Update netisr handling; Each SWI now registers its queue, and all queue</title>
<updated>2003-03-04T23:19:55Z</updated>
<author>
<name>Jonathan Lemon</name>
<email>jlemon@FreeBSD.org</email>
</author>
<published>2003-03-04T23:19:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=1cafed3941f1a4e9d2beb4fb126e91018505dfd4'/>
<id>urn:sha1:1cafed3941f1a4e9d2beb4fb126e91018505dfd4</id>
<content type='text'>
drain routines are done by swi_net, which allows for better queue control
at some future point.  Packets may also be directly dispatched to a netisr
instead of queued, this may be of interest at some installations, but
currently defaults to off.

Reviewed by: hsu, silby, jayanth, sam
Sponsored by: DARPA, NAI Labs
</content>
</entry>
<entry>
<title>Remove __P.</title>
<updated>2002-03-20T02:08:01Z</updated>
<author>
<name>Alfred Perlstein</name>
<email>alfred@FreeBSD.org</email>
</author>
<published>2002-03-20T02:08:01Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=e51a25f8505c7f9c6684c928bb59b0bda2fc039b'/>
<id>urn:sha1:e51a25f8505c7f9c6684c928bb59b0bda2fc039b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Pull my head out of my ass and actually make the tx netisr stuff work right.</title>
<updated>2000-01-14T01:36:16Z</updated>
<author>
<name>Bill Paul</name>
<email>wpaul@FreeBSD.org</email>
</author>
<published>2000-01-14T01:36:16Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=4c645f4852030e2a3682dd5505b80b98c125ee09'/>
<id>urn:sha1:4c645f4852030e2a3682dd5505b80b98c125ee09</id>
<content type='text'>
Do not not not call m_freem() in the txeof routines. Let the netisr routine
do it. This also makes the tx netisr queuing much simpler (I can just use
another ifqueue instead of the mess I had before.)

Thanks to Bosko Milekic for making me actually think about what I was
doing for a minute.
</content>
</entry>
<entry>
<title>Bunch of updates:</title>
<updated>2000-01-13T20:13:58Z</updated>
<author>
<name>Bill Paul</name>
<email>wpaul@FreeBSD.org</email>
</author>
<published>2000-01-13T20:13:58Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=4f0a6f040368296badfbd704f5089f731197a8da'/>
<id>urn:sha1:4f0a6f040368296badfbd704f5089f731197a8da</id>
<content type='text'>
- Add vendor/device ID for Corega USB-T ethernet adapter to necessary
  places so that it will work with the kue driver.

- Add vendor/device ID for CATC Netmate devices for driver to be added
  soon.

- Get really crazy about netisr stuff: avoid doing any mbuf allocations
  or deallocations at splbio/splusb.

- Fix if_aue driver so that it works with LinkSys USB100TX: you need
  to flip the GPIO bits just the right way to put the PHY in the right
  mode.
</content>
</entry>
<entry>
<title>Apply the same netisr mechanism to transmissions as well. In order to</title>
<updated>2000-01-12T17:46:40Z</updated>
<author>
<name>Bill Paul</name>
<email>wpaul@FreeBSD.org</email>
</author>
<published>2000-01-12T17:46:40Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=502c509ce0d7260d2f01ede9bb564623c4f67ef7'/>
<id>urn:sha1:502c509ce0d7260d2f01ede9bb564623c4f67ef7</id>
<content type='text'>
drive the transmitter, we have to check the interface's send queue in the
TX end of frame handler (i.e. the usb bulk out callback) and push out new
transmissions if the queue has packets in it and the transmitter is
ready. But the txeof handler is also called from a USB callback running
at splusb() too.

Grrr.
</content>
</entry>
<entry>
<title>Attempt to fix a problem with receiving packets on USB ethernet interfaces.</title>
<updated>2000-01-10T23:12:54Z</updated>
<author>
<name>Bill Paul</name>
<email>wpaul@FreeBSD.org</email>
</author>
<published>2000-01-10T23:12:54Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src-test2/commit/?id=a0067d7b89525cd8ed446d5e5c157514d043f74a'/>
<id>urn:sha1:a0067d7b89525cd8ed446d5e5c157514d043f74a</id>
<content type='text'>
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
</content>
</entry>
</feed>
