USB device debugging

Bjørn Mork bjorn at mork.no
Wed May 25 08:01:02 EDT 2016


Narasimha M <mnarasimha786 at gmail.com> writes:

> Thanks for the info. Sorry to ask you again, where does the usb driver
> (GobiNet in my case) comes into picture in receive packet flow. I
> suspect that the driver has to send some data (may be with some
> interrupts) to rx_complete and then it will go to rx_submit. Is my
> understanding is correct ? or if rx_submit is the first function to
> generate the data, then where does Gobinet driver comes into place.
> Could you please explain. I don't know how some usb driver works. This
> is the first time i am working on it.

GobiNet isn't part of the receive packet flow at all, if we assume a
non-buggy Gobi device operating in 802.3 mode.  The rx_fixup callback is
called, but it does nothing.  There isn't anything to do. The buffer is
filled with an ethernet packet by the device + host controller.

The usbnet_bh() tasklet is responsible for calling rx_submit (indirectly
in newer kernels).  This is triggered by setting the EVENT_DEV_OPEN
flag, which is done by usbnet_open().  GobiNet obfuscates this quite a
bit, but it doen't do anything extra-ordinary here - it simply calls
usbnet_open() when you open the netdev.



Bjørn



More information about the Kernelnewbies mailing list