David Miller [mailto:davem@xxxxxxxxxxxxx] [...] > > If the situation occurs, it means there is no tx buffer at > that time. If the > > netif_wake_queue() is called, only one more packet would be > queued and the tx > > queue would be stopped again after calling > rtl8152_start_xmit(). That is, it > > is not necessary to wake the queue. Besides, after the tx > is completed, another > > tasklet would be scheduled if there is any packet which is > queued in the list. > > That is, the r8152_tx_agg_fill() would be called and the > netif_queue_stopped() > > would be check againg, so the tx queue would not be stopped forever. > > Then the queue can be woken when in fact r8152_start_xmit() > is not able to > actually queue packets. It is just as equally problematic. > > You have to synchronize this state, somehow. > > tg3 driver does this by taking netif tx queue lock during the wake > test sequence in TX reclaim. This works because ->ndo_start_xmit() is > run with this lock held. Thanks for your answer. I would modify it. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html