[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[altq 995] Re: rl0 Watchdog timeout
Santa Wiryaman wrote:
> In reply to altq 681 and 679, I have seen a similar behavior on the
> dc driver. The problem is that typical *_start() routine expects
> to always get an mbuf from the dequeue operation. With altq,
> the dequeue operation might not return an mbuf.
>
> So to fix the watchdog timeout problem, you need to put a condition
> (mbuf != NULL) around the setting of if_timer. If_timer is used
> by net/if.c:if_slowtimo() to call the watchdog routine. So if the
> *_start() routine does not get an mbuf to send, if_timer should not
> be set.
>
> Hope this helps,
> -santa
Doesn't the following code in dc_start() already take care of this
case?
-----------------------------------------------------
@@ -2791,6 +2807,8 @@
break;
}
}
+ if (idx == sc->dc_cdata.dc_tx_prod)
+ return;
/* Transmit */
sc->dc_cdata.dc_tx_prod = idx;
-----------------------------------------------------
-Kenjiro