kue0 not receiving patch

Matthew Dillon dillon at apollo.backplane.com
Tue Feb 15 14:39:14 PST 2005

:>     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.

    Ah, yes I see.  And what a great example of why creating IF_*() macros
    that takes left-hand-side assignment variables as an argument is a bad
    idea!  (usbintr()'s IF_DEQUEUE call).

    Ok, I'll commit your patch but I am going to also change the NETISR to
    pass NULL instead of 'm', since 'm' is not used and couldn't be used even
    if the usbintr wanted to use it.


More information about the Submit mailing list