On 11/9/06, Michael Chan <[EMAIL PROTECTED]> wrote:
Eric Lemoine wrote:
> > On 11/9/06, Michael Chan <[EMAIL PROTECTED]> wrote:
> > > So it is not possible for tg3_poll() -> tg3_tx() to run any more
> > > after tg3_close() is called.
> >
> > But, while tg3_close() starts executing, an interrupt may
> > come in and
> > schedule polling (set __LINK_STATE_RX_SCHED). So tg3_poll() ->
> > tg3_tx() may well occur.
>
> Actually I don't understand the purpose of having dev_close() wait for
> __LINK_STATE_RX_SCHED to be cleared. An interrupt may arrive at any
> time after it's cleared, and reset __LINK_STATE_RX_SCHED. Can someone
> explain please?
>
If netif_running() is cleared, netif_rx_schedule() will not schedule
the ->poll(). So even if tg3 gets an interrupt after close,
tg3_poll() will not be scheduled.
Oh! I had missed the netif_running() check in netif_rx_schedule_prep().
Thanks Michael and Maxime for this clarification.
--
Eric
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html