Matthew Dillon wrote:
> Hmm. That doesn't look quite right.... the mbuf is being put on the
> ifq but then it is also being passed to NETISR_USB. NETISR_USB
> (usbintr() in usb/usb_ethersubr.c) takes the passed mbuf and
> IF_DEQUEUE's it... so far so good. But then it *LOOPS* on the ifq
> to get the next mbuf... but that means the same mbuf may be IF_DEQUEUE'd
> more then once since the other mbufs on the ifq also had an ISR queued
> for them.
This basic pattern is used by many network drivers -- the argument to
the isr routine is effectively ignored. Sure, m gets initialized but the
value is never actually used.