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.

					-Matt





More information about the Submit mailing list