| Home | Architecture | Status | Forum | Download |
The architecture of the driver is fairly simplistic.
Upon initiation, the driver configures the dongle for receiving and sending ethernet packets. When the driver is unloaded, the driver disables the dongle.
The interesting stuff happen when the device is first opened. First a kernel thread is spawned to handle link speed changes. Although this adds some latency to the driver, this is only needed when the link is disconnected and then reconnected. The driver then enables the receiving and transmission of network traffic.
Receiving of network traffic is handled by a persistent URB that is sent when the interface is opened. When the URB returned, the data contained within is parsed for ethernet packets and then resubmitted to the USB infrastructure. The parsed packets are then handed up through the network stack.
The transmission of ethernet packets is somewhat similar
method. Packets to be transmitted at stored in a kernel buffer, wrapped in the device
specific header, then sent in an allocated URB.
© 2005 Jimmy Pierce