android_kernel_xiaomi_sm8350/drivers/net
Herbert Xu 39d3215774 virtio_net: Make delayed refill more reliable
I have seen RX stalls on a machine that experienced a suspected
OOM.  After the stall, the RX buffer is empty on the guest side
and there are exactly 16 entries available on the host side.  As
the number of entries is less than that required by a maximal
skb, the host cannot proceed.

The guest did not have a refill job scheduled.

My diagnosis is that an OOM had occured, with the delayed refill
job scheduled.  The job was able to allocate at least one skb, but
not enough to overcome the minimum required by the host to proceed.

As the refill job would only reschedule itself if it failed completely
to allocate any skbs, this would lead to an RX stall.

The following patch removes this stall possibility by always
rescheduling the refill job until the ring is totally refilled.

Testing has shown that the RX stall no longer occurs whereas
previously it would occur within a day.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-01-25 15:51:01 -08:00
..
appletalk Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
arcnet drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
arm ARM: 5865/1: nuc900 ethernet driver needs mii 2010-01-05 20:53:07 +00:00
atl1c Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ 2009-12-11 17:12:17 -08:00
atl1e atl1e: Remove non-implementation of ethtool set_msglevel() operation 2009-12-02 22:10:16 -08:00
atlx NET: atlx, fix memory leak 2010-01-07 01:07:30 -08:00
benet be2net: swap only first 2 fields of mcc_wrb 2010-01-23 01:08:51 -08:00
bonding bond_3ad.c avoid possible null deref 2009-12-26 20:24:46 -08:00
can drivers/net/can: Correct NULL test 2010-01-03 21:42:49 -08:00
chelsio
cris
cxgb3 Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ 2009-12-11 17:12:17 -08:00
e1000 e1000/e1000e: don't use small hardware rx buffers 2010-01-23 01:08:53 -08:00
e1000e net: Fix IPv6 GSO type checks in Intel ethernet drivers 2010-01-23 02:02:21 -08:00
ehea Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2009-12-12 14:27:24 -08:00
enic
fs_enet
hamradio hamradio: avoid null deref v3 2010-01-03 21:42:50 -08:00
ibm_newemac drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
igb net: Fix IPv6 GSO type checks in Intel ethernet drivers 2010-01-23 02:02:21 -08:00
igbvf net: Fix IPv6 GSO type checks in Intel ethernet drivers 2010-01-23 02:02:21 -08:00
irda Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
ixgb e1000/e1000e/igb/igbvf/ixgb/ixgbe: Fix tests of unsigned in *_tx_map() 2010-01-20 16:21:22 -08:00
ixgbe net: Fix IPv6 GSO type checks in Intel ethernet drivers 2010-01-23 02:02:21 -08:00
ixp2000
mlx4 mlx4_core: Fix cleanup in __mlx4_init_one() error path 2010-01-06 12:54:39 -08:00
myri10ge myri10ge: use src+dst for rss hashing 2009-12-08 20:24:35 -08:00
netxen netxen: update version to 4.0.72 2010-01-08 00:35:28 -08:00
octeon NET: Add Ethernet driver for Octeon MGMT devices. 2009-12-17 01:56:59 +00:00
pcmcia fmvj18x_cs: add new id (Panasonic lan & modem card) 2010-01-23 01:08:52 -08:00
phy Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ 2010-01-22 22:45:46 -08:00
qlge qlge: Only free resources if they were allocated 2010-01-25 15:46:58 -08:00
sfc sfc: Use fixed-size buffers for MCDI NVRAM requests 2010-01-25 15:49:59 -08:00
skfp tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
stmmac Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
tokenring Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
tulip Please add support for Microsoft MN-120 PCMCIA network card 2010-01-23 01:08:51 -08:00
usb hso: fixed missing newlines 2010-01-07 00:43:47 -08:00
vmxnet3 const: constify remaining dev_pm_ops 2009-12-15 08:53:25 -08:00
vxge vxge: use pci_dma_mapping_error to test return value 2010-01-10 13:40:10 -08:00
wan Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
wimax wimax/i2400m: Add support for more i6x50 SKUs 2010-01-21 16:49:24 -08:00
wireless Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ 2010-01-22 22:45:46 -08:00
3c59x.c const: constify remaining dev_pm_ops 2009-12-15 08:53:25 -08:00
3c501.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
3c501.h
3c503.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
3c503.h
3c505.c
3c505.h
3c507.c Fix MAC address access in 3c507, ibmlana, pcnet32 and libertas 2009-12-26 20:24:45 -08:00
3c509.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
3c515.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
3c523.c
3c523.h
3c527.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
3c527.h
7990.c
7990.h
8139cp.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
8139too.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
8390.c
8390.h
8390p.c
82596.c tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
a2065.c
a2065.h
ac3200.c
acenic.c
acenic.h
amd8111e.c tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
amd8111e.h
apne.c
ariadne.c
ariadne.h tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
at1700.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
atarilance.c atarilance: timeout ignored in lance_open() 2010-01-03 21:42:52 -08:00
atp.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
atp.h
au1000_eth.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-29 00:57:15 -08:00
au1000_eth.h
ax88796.c
b44.c b44 WOL setup: one-bit-off stack corruption kernel panic fix 2009-12-08 21:00:22 -08:00
b44.h
bcm63xx_enet.c bcm63xx_enet: fix compilation failure after get_stats_count removal 2009-12-15 21:12:22 -08:00
bcm63xx_enet.h
bfin_mac.c bfin_mac: use the newer CLKBUFOE bit name via asm/dpmc.h 2010-01-19 01:59:18 -08:00
bfin_mac.h
bmac.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
bmac.h
bnx2_fw.h
bnx2.c bnx2: Fix bnx2_netif_stop() merge error. 2009-12-20 18:40:18 -08:00
bnx2.h bnx2: Dump some state during tx timeout. 2009-12-03 13:18:11 -08:00
bnx2x_dump.h
bnx2x_fw_defs.h
bnx2x_fw_file_hdr.h
bnx2x_hsi.h
bnx2x_init_ops.h
bnx2x_init.h
bnx2x_link.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
bnx2x_link.h
bnx2x_main.c bnx2x: Initialize cnic status block during chip reset 2009-12-25 17:13:07 -08:00
bnx2x_reg.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
bnx2x.h
bsd_comp.c
cassini.c
cassini.h
cnic_defs.h
cnic_if.h
cnic.c cnic: Zero out status block and Event Queue indices. 2009-12-11 15:07:55 -08:00
cnic.h
cpmac.c drivers/net/cpmac.c: Correct code taking the size of a pointer 2009-12-13 19:56:35 -08:00
cs89x0.c cs89x0: Always report failure to request interrupt 2010-01-07 01:07:29 -08:00
cs89x0.h
davinci_emac.c TI DaVinci EMAC: Handle emac module clock correctly. 2010-01-07 17:27:31 -08:00
de600.c
de600.h
de620.c
de620.h
declance.c
defxx.c
defxx.h
depca.c
depca.h
dl2k.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
dl2k.h
dm9000.c const: constify remaining dev_pm_ops 2009-12-15 08:53:25 -08:00
dm9000.h
dnet.c
dnet.h
dummy.c
e100.c e100: Fix broken cbs accounting due to missing memset. 2009-12-18 20:18:21 -08:00
e2100.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
eepro.c
eexpress.c
eexpress.h
enc28j60_hw.h
enc28j60.c
epic100.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
eql.c
es3210.c
eth16i.c
ethoc.c
ewrk3.c
ewrk3.h
fealnx.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
fec_mpc52xx_phy.c
fec_mpc52xx.c net/mpc5200: Fix locking on fec_mpc52xx driver 2009-12-08 20:29:10 -08:00
fec_mpc52xx.h
fec.c
fec.h
forcedeth.c
fsl_pq_mdio.c fsl_pq_mdio: Fix iomem unmapping for non-eTSEC2.0 controllers 2009-12-30 22:03:43 -08:00
fsl_pq_mdio.h
gianfar_ethtool.c
gianfar_sysfs.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
gianfar.c gianfar: Fix gianfar select_queue bogosity 2009-12-26 20:24:44 -08:00
gianfar.h gianfar: Fix bit definitions of IMASK_GRSC and IMASK_GTSC 2009-12-18 20:38:37 -08:00
hamachi.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
hp100.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
hp100.h
hp-plus.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
hp.c
hplance.c
hplance.h
hydra.c
ibmlana.c Fix MAC address access in 3c507, ibmlana, pcnet32 and libertas 2009-12-26 20:24:45 -08:00
ibmlana.h
ibmveth.c
ibmveth.h
ifb.c
ioc3-eth.c
ipg.c
ipg.h
isa-skeleton.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
iseries_veth.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
jazzsonic.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
jme.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
jme.h
Kconfig Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-12-30 12:37:35 -08:00
korina.c
ks8842.c
ks8851_mll.c
ks8851.c net: Fix ks8851 snl NULL pointer dereference Oops 2009-12-03 16:04:25 -08:00
ks8851.h
lance.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
lasi_82596.c tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
lib8390.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
lib82596.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
LICENSE.SRC
ll_temac_main.c drivers/net : Correct the size argument to kzalloc 2010-01-03 21:42:51 -08:00
ll_temac_mdio.c
ll_temac.h
lne390.c
loopback.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2009-12-14 09:58:24 -08:00
lp486e.c
mac89x0.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
mac8390.c
macb.c
macb.h
mace.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
mace.h
macmace.c
macsonic.c
macvlan.c netdevice: provide common routine for macvlan and vlan operstate management 2009-12-03 15:59:22 -08:00
Makefile NET: Add Ethernet driver for Octeon MGMT devices. 2009-12-17 01:56:59 +00:00
mdio.c
meth.c
meth.h
mii.c
mipsnet.c
mv643xx_eth.c mv643xx_eth: don't include cache padding in rx desc buffer size 2010-01-07 01:11:10 -08:00
mvme147.c
myri_sbus.c
myri_sbus.h
natsemi.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
ne2.c
ne2k-pci.c
ne3210.c
ne-h8300.c
ne.c
netconsole.c
netx-eth.c
ni52.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
ni52.h
ni65.c
ni65.h
ni5010.c
ni5010.h
niu.c niu: timeout ignored in tcam_wait_bit() 2010-01-03 21:42:52 -08:00
niu.h
ns83820.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
pasemi_mac_ethtool.c
pasemi_mac.c
pasemi_mac.h
pci-skeleton.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
pcnet32.c Fix MAC address access in 3c507, ibmlana, pcnet32 and libertas 2009-12-26 20:24:45 -08:00
plip.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
ppp_async.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
ppp_deflate.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
ppp_generic.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
ppp_mppe.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
ppp_mppe.h
ppp_synctty.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
pppoe.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
pppol2tp.c net: Simplify pppol2tp pernet operations. 2009-12-01 16:15:57 -08:00
pppox.c
ps3_gelic_net.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
ps3_gelic_net.h net/ps3: Add support for gelic link negotiation 2009-12-02 00:52:31 -08:00
ps3_gelic_wireless.c
ps3_gelic_wireless.h
qla3xxx.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
qla3xxx.h
r6040.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
r8169.c const: constify remaining dev_pm_ops 2009-12-15 08:53:25 -08:00
rionet.c
rrunner.c rrunner: fix buffer overflow 2010-01-03 22:06:15 -08:00
rrunner.h
s2io-regs.h
s2io.c S2io: two branches the same in wait_for_cmd_complete() 2010-01-19 12:36:20 -08:00
s2io.h
s6gmac.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
sb1000.c
sb1250-mac.c
sc92031.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
seeq8005.c
seeq8005.h
sgiseeq.c
sgiseeq.h
sh_eth.c net: Test off by one in sh_eth_reset() 2010-01-03 21:42:53 -08:00
sh_eth.h
sis190.c
sis900.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
sis900.h
skge.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
skge.h
sky2.c sky2: revert config space change 2010-01-24 22:37:07 -08:00
sky2.h
slhc.c
slip.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
slip.h
smc91x.c net: smc91x: Fix up type mismatch in smc_drv_resume(). 2009-12-11 15:07:54 -08:00
smc91x.h smc91x: remove OMAP specific bits 2009-12-11 16:16:33 -08:00
smc911x.c
smc911x.h
smc9194.c
smc9194.h
smc-mca.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
smc-ultra32.c
smc-ultra.c
smsc911x.c const: constify remaining dev_pm_ops 2009-12-15 08:53:25 -08:00
smsc911x.h tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
smsc9420.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-12-01 22:13:38 -08:00
smsc9420.h
sni_82596.c
sonic.c
sonic.h
Space.c
spider_net_ethtool.c
spider_net.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
spider_net.h
starfire.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
stnic.c
sun3_82586.c
sun3_82586.h
sun3lance.c
sunbmac.c
sunbmac.h
sundance.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
sungem_phy.c
sungem_phy.h
sungem.c
sungem.h drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
sunhme.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
sunhme.h
sunlance.c
sunqe.c
sunqe.h
sunvnet.c
sunvnet.h
tc35815.c
tehuti.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
tehuti.h
tg3.c tg3: Update copyright and driver version 2010-01-13 17:18:54 -08:00
tg3.h tg3: Update copyright and driver version 2010-01-13 17:18:54 -08:00
tlan.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
tlan.h
tsi108_eth.c
tsi108_eth.h
tun.c tun: use tun_sk instead container_of 2009-12-26 20:24:44 -08:00
typhoon.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
typhoon.h
ucc_geth_ethtool.c
ucc_geth.c ucc_geth: Fix full TX queue processing 2010-01-19 01:59:03 -08:00
ucc_geth.h ucc_geth: Fix the wrong the Rx/Tx FIFO size 2010-01-06 20:32:38 -08:00
veth.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2009-12-14 09:58:24 -08:00
via-rhine.c net/via-rhine: Fix scheduling while atomic bugs 2009-12-23 21:54:29 -08:00
via-velocity.c via-velocity: Give RX descriptors to the NIC later on open or MTU change 2010-01-03 21:18:40 -08:00
via-velocity.h
virtio_net.c virtio_net: Make delayed refill more reliable 2010-01-25 15:51:01 -08:00
wd.c
xen-netfront.c
xilinx_emaclite.c
xtsonic.c
yellowfin.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
znet.c drivers/net: Move && and || to end of previous line 2009-12-03 13:18:01 -08:00
zorro8390.c