In article <[EMAIL PROTECTED]>,
Zonghua Gu <[EMAIL PROTECTED]> writes:
> I appreciate any help on this question:
> When outgoing packets are sent out by dev_queue_xmit, and
dev-> tbusy is true, it's queued in the link-level queue. Suppose the
> device has been continuously busy for a while and the link-level queue
dev-> qdisc fills up. Later when the device is not busy any more, who is
> responsible for sending out the queued packets? I only see 2
> possibilities:
> 1. When another outgoing packet comes down from higher level protocols and
> hard_start_xmit calls qdisc_wakeup. But then only one packet is sent out
> by qdisc_wakeup, so this does not empty the queue.
> 2. When an incoming packet generates an interrupt and qdisc_run_queues is
> called from net_bh, therefore emptying the outgoing queue.
> But what if no incoming packets are forthcoming? I don't see how the
> outgoing queue can be emptied. 


qdisc has a watchdog timer and qdisc_run_queues
is also regularly run from net_bh (after and before every packet processing). 
See net/sched/sch_generic.c:dev_do_watchdog() and net/core/dev.c:net_bh()


-Andi


-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [EMAIL PROTECTED]

Reply via email to