linux/drivers/net
Zoltan Kiss f34a4cf9c9 xen-netback: Turn off the carrier if the guest is not able to receive
Currently when the guest is not able to receive more packets, qdisc layer starts
a timer, and when it goes off, qdisc is started again to deliver a packet again.
This is a very slow way to drain the queues, consumes unnecessary resources and
slows down other guests shutdown.
This patch change the behaviour by turning the carrier off when that timer
fires, so all the packets are freed up which were stucked waiting for that vif.
Instead of the rx_queue_purge bool it uses the VIF_STATUS_RX_PURGE_EVENT bit to
signal the thread that either the timeout happened or an RX interrupt arrived,
so the thread can check what it should do. It also disables NAPI, so the guest
can't transmit, but leaves the interrupts on, so it can resurrect.
Only the queues which brought down the interface can enable it again, the bit
QUEUE_STATUS_RX_STALLED makes sure of that.

Signed-off-by: Zoltan Kiss <zoltan.kiss@citrix.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: xen-devel@lists.xenproject.org
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-08-05 16:04:46 -07:00
..
appletalk
arcnet net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
bonding bonding: fix a memory leak in bond_arp_send_all() 2014-07-28 17:27:47 -07:00
caif net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
can Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-07-30 13:25:49 -07:00
cris eth_v10: remove unnecessary break after return 2014-07-20 21:29:49 -07:00
dsa
ethernet net: smc911x: fix %d confusingly prefixed with 0x in format string 2014-08-05 13:04:32 -07:00
fddi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-07-16 14:09:34 -07:00
hamradio net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
hippi
hyperv Drivers: net-next: hyperv: Increase the size of the sendbuf region 2014-08-04 15:07:14 -07:00
ieee802154 net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
irda drivers/net/irda/kingsun-sir.c: remove null test before kfree 2014-06-19 21:26:06 -07:00
phy net: phy: spi_ks8995: Introduce the use of devm_kzalloc 2014-08-04 12:55:23 -07:00
plip
ppp net: filter: split 'struct sk_filter' into socket and bpf parts 2014-08-02 15:03:58 -07:00
slip net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
team net: filter: split 'struct sk_filter' into socket and bpf parts 2014-08-02 15:03:58 -07:00
usb net/usb/hso: Add support for Option GTM671WFS 2014-08-05 13:06:04 -07:00
vmxnet3 vmxnet3: adjust ring sizes when interface is down 2014-06-16 21:26:40 -07:00
wan Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-07-22 00:44:59 -07:00
wimax net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
wireless Merge tag 'master-2014-07-31' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2014-08-05 13:18:20 -07:00
xen-netback xen-netback: Turn off the carrier if the guest is not able to receive 2014-08-05 16:04:46 -07:00
dummy.c net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
eql.c net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
ifb.c net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
Kconfig vxlan: Call udp_sock_create 2014-07-14 16:12:15 -07:00
LICENSE.SRC
loopback.c net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
macvlan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-06-11 16:02:55 -07:00
macvtap.c
Makefile net: remove spurious zd1201 rule. 2014-08-04 15:02:54 -07:00
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c net: use ethtool_cmd_speed_set helper to set ethtool speed value 2014-06-06 16:24:07 -07:00
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
veth.c net: rtnetlink - make create_link take name_assign_type 2014-07-15 16:13:07 -07:00
virtio_net.c virtio-net: rx busy polling support 2014-07-23 15:12:02 -07:00
vxlan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-07-30 13:25:49 -07:00
xen-netfront.c xen-netfront: call netif_carrier_off() only once when disconnecting 2014-07-08 11:21:03 -07:00