DragonFly BSD
DragonFly submit List (threaded) for 2005-02
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: kue0 not receiving patch


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 15 Feb 2005 14:36:55 -0800 (PST)

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



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]