summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorMark McLoughlin <markmc@redhat.com>2008-06-08 10:50:56 (GMT)
committerJeff Garzik <jgarzik@redhat.com>2008-06-10 22:20:31 (GMT)
commit14c998f034bdc9a5bfa53bca18fbd0738cbc65e8 (patch)
tree161263012d022bddcdb7a0389f0ab367c013ce66 /drivers/usb
parent2506ece0c0bbd2fc19a4827b96dc52ea47e2ce4a (diff)
downloadlinux-14c998f034bdc9a5bfa53bca18fbd0738cbc65e8.tar.xz
virtio: virtio_net free transmit skbs in a timer
virtio_net currently only frees old transmit skbs just before queueing new ones. If the queue is full, it then enables interrupts and waits for notification that more work has been performed. However, a side-effect of this scheme is that there are always xmit skbs left dangling when no new packets are sent, against the Documentation/networking/driver.txt guideline: "... it is not allowed for your TX mitigation scheme to let TX packets "hang out" in the TX ring unreclaimed forever if no new TX packets are sent." Add a timer to ensure that any time we queue new TX skbs, we will shortly free them again. This fixes an easily reproduced hang at shutdown where iptables attempts to unload nf_conntrack and nf_conntrack waits for an skb it is tracking to be freed, but virtio_net never frees it. Signed-off-by: Mark McLoughlin <markmc@redhat.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/usb')
0 files changed, 0 insertions, 0 deletions