linux/drivers/net
Max Krasnyansky e35259a953 tun: Persistent devices can get stuck in xoff state
The scenario goes like this. App stops reading from tun/tap.
TX queue gets full and driver does netif_stop_queue().
App closes fd and TX queue gets flushed as part of the cleanup.
Next time the app opens tun/tap and starts reading from it but
the xoff state is not cleared. We're stuck.
Normally xoff state is cleared when netdev is brought up. But
in the case of persistent devices this happens only during
initial setup.

The fix is trivial. If device is already up when an app opens
it we clear xoff state and that gets things moving again.

Signed-off-by: Max Krasnyansky <maxk@qualcomm.com>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-07-10 16:59:11 -07:00
..
appletalk fix warning in drivers/net/appletalk/cops.c 2008-05-06 12:16:24 -04:00
arcnet
arm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-04-30 08:45:48 -07:00
atlx atl1: relax eeprom mac address error check 2008-06-17 23:09:21 -04:00
bonding bonding: handle case of device named bonding_master 2008-05-14 22:35:04 -07:00
can
chelsio
cris
cxgb3 cxgb3 - fix EEH 2008-05-13 01:31:37 -04:00
e1000 e1000: only enable TSO6 via ethtool when using correct hardware 2008-06-27 01:31:08 -04:00
e1000e e1000e: fix EEH recovery during reset on PPC 2008-06-27 01:27:48 -04:00
ehea ehea: Access iph->tot_len with correct endianness 2008-07-04 08:15:28 -04:00
fec_8xx
fs_enet fs_enet: restore promiscuous and multicast settings in restart() 2008-07-04 08:21:53 -04:00
hamradio hamradio: remove unused variable 2008-06-27 17:22:08 -07:00
ibm_emac
ibm_newemac ibm_newemac: Fixes entry of short packets 2008-07-04 08:17:20 -04:00
igb igb: fix EEH recovery during reset on PPC 2008-06-27 01:27:47 -04:00
irda irda: New device ID for nsc-ircc 2008-07-08 03:07:16 -07:00
ixgb
ixgbe ixgbe: fix EEH recovery during reset on PPC 2008-06-27 01:27:46 -04:00
ixp2000
mlx4 mlx4_core: Support creation of FMRs with pages smaller than 4K 2008-05-05 15:56:52 -07:00
myri10ge myri10ge: update driver version 2008-05-30 22:07:19 -04:00
netxen [netdrvr] netxen: fix netxen_pci_tbl[] breakage 2008-06-27 01:30:46 -04:00
pcmcia pcnet_cs, axnet_cs: clear bogus interrupt before request_irq 2008-06-27 01:28:21 -04:00
phy phylib: do EXPORT_SYMBOL on get_phy_id 2008-05-22 14:01:01 -04:00
sfc sfc: Recover from RX queue flush failure 2008-06-10 18:20:21 -04:00
skfp
tokenring drivers/net/tokenring/olympic.c: fix warning 2008-05-22 06:03:30 -04:00
tulip net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
usb net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
wan Add missing skb->dev assignment in Frame Relay RX code 2008-07-04 08:09:39 -04:00
wireless libertas: fix memory alignment problems on the blackfin 2008-07-09 16:16:32 -04:00
3c59x.c [netdrvr] 3c59x: remove irqs_disabled warning from local_bh_enable 2008-06-27 01:30:33 -04:00
3c501.c
3c501.h
3c503.c
3c503.h
3c505.c
3c505.h
3c507.c
3c509.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-05-26 10:14:02 -07:00
3c515.c
3c523.c
3c523.h
3c527.c
3c527.h
7990.c add missing lance_* exports 2008-06-10 18:20:17 -04:00
7990.h
8139cp.c
8139too.c
8390.c net: fix returning void-valued expression warnings 2008-05-01 02:47:38 -07:00
8390.h
82596.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
a2065.c
a2065.h
ac3200.c
acenic.c
acenic.h
acenic_firmware.h
amd8111e.c
amd8111e.h
apne.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
ariadne.c
ariadne.h
at1700.c
atarilance.c
atp.c
atp.h
au1000_eth.c au1000_eth: remove useless check 2008-05-22 06:20:14 -04:00
au1000_eth.h
ax88796.c
b44.c
b44.h
bfin_mac.c Blackfin EMAC Driver: Removed duplicated include <linux/ethtool.h> 2008-05-22 06:20:11 -04:00
bfin_mac.h
bmac.c
bmac.h
bnx2.c net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
bnx2.h net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
bnx2_fw.h
bnx2_fw2.h bnx2: Update RV2P firmware for 5709. 2008-05-02 16:57:59 -07:00
bnx2x.c bnx2x: Updating the Maintainer 2008-06-12 14:30:28 -07:00
bnx2x.h bnx2x: Updating the Maintainer 2008-06-12 14:30:28 -07:00
bnx2x_fw_defs.h
bnx2x_hsi.h
bnx2x_init.h bnx2x: Updating the Maintainer 2008-06-12 14:30:28 -07:00
bnx2x_init_values.h
bnx2x_reg.h
bsd_comp.c
cassini.c cassini: Only use chip checksum for ipv4 packets. 2008-05-21 17:05:34 -07:00
cassini.h
cpmac.c cpmac bugfixes and enhancements 2008-05-22 06:20:02 -04:00
cs89x0.c [netdrvr] CS89X0: Add cleanup for dma after fail 2008-05-30 22:07:11 -04:00
cs89x0.h
de600.c
de600.h
de620.c
de620.h
declance.c
defxx.c
defxx.h
depca.c
depca.h
dl2k.c
dl2k.h
dm9000.c [netdrvr] dm9000: use delayed work to update mii phy state fix 2008-05-22 06:03:28 -04:00
dm9000.h
dummy.c
e100.c e100: Do pci_dma_sync after skb_alloc for proper operation on ixp4xx 2008-06-27 01:30:59 -04:00
e2100.c
eepro.c
eepro100.c
eexpress.c [netdrvr] eexpress: IPv6 fails - multicast problems 2008-05-06 12:22:34 -04:00
eexpress.h
enc28j60.c net/enc28j60: low power mode 2008-06-17 23:07:29 -04:00
enc28j60_hw.h
epic100.c
eql.c
es3210.c
eth16i.c
ewrk3.c
ewrk3.h
fealnx.c
fec.c m68knommu: fix FEC driver locking 2008-05-01 08:08:36 -07:00
fec.h m68knommu: fix ColdFire 5272 fec driver hash registers 2008-05-01 08:08:36 -07:00
fec_mpc52xx.c fec_mpc52xx: MPC52xx_MESSAGES_DEFAULT: 2nd NETIF_MSG_IFDOWN => IFUP 2008-06-11 22:24:42 -04:00
fec_mpc52xx.h [POWERPC] mpc5200: Allow for fixed speed MII configurations 2008-05-01 11:05:58 -06:00
fec_mpc52xx_phy.c
forcedeth.c forcedeth: fix lockdep warning on ethtool -s 2008-07-04 08:09:52 -04:00
gianfar.c gianfar: Fix a bug where the pointer never moves for dma_unmap... 2008-05-13 01:31:38 -04:00
gianfar.h gianfar: Fix a locking bug in gianfar's sysfs code 2008-05-06 12:01:34 -04:00
gianfar_ethtool.c
gianfar_mii.c
gianfar_mii.h
gianfar_sysfs.c gianfar: Fix a locking bug in gianfar's sysfs code 2008-05-06 12:01:34 -04:00
hamachi.c net: use get/put_unaligned_* helpers 2008-04-29 08:06:27 -07:00
hp-plus.c
hp.c
hp100.c
hp100.h
hplance.c
hplance.h
hydra.c
ibmlana.c
ibmlana.h
ibmveth.c
ibmveth.h
ifb.c
ioc3-eth.c
ipg.c ipg: use NULL, not zero, for pointers 2008-06-27 01:28:31 -04:00
ipg.h
isa-skeleton.c
iseries_veth.c
jazzsonic.c
Kconfig [POWERPC] ehea: Remove dependency on MEMORY_HOTPLUG 2008-06-09 11:32:44 +10:00
korina.c
lance.c
lasi_82596.c
lib8390.c
lib82596.c
LICENSE.SRC
lne390.c
loopback.c
lp486e.c
mac89x0.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
mac8390.c
macb.c
macb.h
mace.c
mace.h
macmace.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
macsonic.c
macvlan.c macvlan: Fix memleak on device removal/crash on module removal 2008-05-08 01:13:31 -07:00
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-04-30 08:45:48 -07:00
meth.c
meth.h
mii.c
mipsnet.c
mv643xx_eth.c
mvme147.c
myri_code.h
myri_sbus.c
myri_sbus.h
natsemi.c
ne-h8300.c
ne.c
ne2.c
ne2k-pci.c
ne3210.c
netconsole.c
netx-eth.c
ni52.c
ni52.h
ni65.c
ni65.h
ni5010.c
ni5010.h
niu.c niu: Determine the # of ports from the card's VPD data 2008-05-12 03:10:59 -07:00
niu.h niu: Determine the # of ports from the card's VPD data 2008-05-12 03:10:59 -07:00
ns83820.c
pasemi_mac.c pasemi_mac: Access iph->tot_len with correct endianness 2008-07-04 08:15:31 -04:00
pasemi_mac.h
pasemi_mac_ethtool.c
pci-skeleton.c
pcnet32.c pcnet32: fix warning 2008-05-22 06:03:29 -04:00
plip.c
ppp_async.c tty: add throttle/unthrottle helpers 2008-04-30 08:29:47 -07:00
ppp_deflate.c
ppp_generic.c ppp: Do not free not yet unregistered net device. 2008-05-13 23:51:18 -07:00
ppp_mppe.c
ppp_mppe.h
ppp_synctty.c tty: add throttle/unthrottle helpers 2008-04-30 08:29:47 -07:00
pppoe.c pppoe: warning fix 2008-06-20 21:58:02 -07:00
pppol2tp.c l2tp: Fix potential memory corruption in pppol2tp_recvmsg() 2008-06-10 12:35:00 -07:00
pppox.c
ps3_gelic_net.c
ps3_gelic_net.h
ps3_gelic_wireless.c PS3: gelic: fix memory leak 2008-05-12 21:44:41 -04:00
ps3_gelic_wireless.h
qla3xxx.c qla3xxx: Hold RTNL while calling dev_close() 2008-06-27 01:31:50 -04:00
qla3xxx.h
r6040.c drivers/net/r6040.c: Eliminate double sizeof 2008-06-27 01:28:25 -04:00
r8169.c
rionet.c
rrunner.c
rrunner.h
s2io-regs.h S2io: Added napi support when MSIX is enabled. 2008-05-22 06:26:21 -04:00
s2io.c [netdrvr] Fix IOMMU overflow checking in s2io.c 2008-06-27 01:31:22 -04:00
s2io.h [netdrvr] Fix IOMMU overflow checking in s2io.c 2008-06-27 01:31:22 -04:00
saa9730.c
saa9730.h
sb1000.c
sb1250-mac.c sb1250: use netdev_alloc_skb 2008-05-22 06:18:55 -04:00
sc92031.c sc92031: remove bogus unlikely() 2008-05-30 22:07:17 -04:00
seeq8005.c
seeq8005.h
sgiseeq.c
sgiseeq.h
sis190.c
sis900.c
sis900.h
skge.c
skge.h
sky2.c sky2: 88E8040T pci device id 2008-06-17 23:07:03 -04:00
sky2.h sky2: fix simple define thinko 2008-05-13 01:31:44 -04:00
slhc.c
slip.c tty: The big operations rework 2008-04-30 08:29:47 -07:00
slip.h
smc-mca.c
smc-ultra.c
smc-ultra32.c
smc91x.c net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
smc91x.h smc91x: fix build error from the SMC_GET_MAC_ADDR API change 2008-06-11 08:38:18 -07:00
smc911x.c net: Eliminate flush_scheduled_work() calls while RTNL is held. 2008-06-12 02:22:02 -07:00
smc911x.h
smc9194.c
smc9194.h
sni_82596.c
sonic.c
sonic.h
Space.c
spider_net.c
spider_net.h
spider_net_ethtool.c
starfire.c
starfire_firmware.h
starfire_firmware.pl
stnic.c
sun3_82586.c
sun3_82586.h
sun3lance.c m68k: Some network drivers do not check the platform 2008-05-18 13:28:49 -07:00
sunbmac.c
sunbmac.h
sundance.c
sungem.c
sungem.h
sungem_phy.c
sungem_phy.h
sunhme.c sunhme: Cleanup use of deprecated calls to save_and_cli and restore_flags. 2008-06-04 12:06:28 -07:00
sunhme.h
sunlance.c
sunqe.c
sunqe.h
sunvnet.c
sunvnet.h
tc35815.c tc35815: Fix receiver hangup on Rx FIFO overflow 2008-06-27 01:27:43 -04:00
tehuti.c drivers/net/tehuti: use proper capability check for raw IO access 2008-04-29 11:45:16 -07:00
tehuti.h
tehuti_fw.h
tg3.c tg3: Update version to 3.92.1 2008-06-09 15:41:33 -07:00
tg3.h tg3: Add link state reporting to UMP firmware 2008-05-02 16:49:29 -07:00
tlan.c
tlan.h
tsi108_eth.c
tsi108_eth.h
tun.c tun: Persistent devices can get stuck in xoff state 2008-07-10 16:59:11 -07:00
typhoon-firmware.h
typhoon.c
typhoon.h
ucc_geth.c ucc_geth: Fix arguments to dma map/unmap functions 2008-05-22 06:19:24 -04:00
ucc_geth.h ucc_geth: Fix a bunch of sparse warnings 2008-05-06 12:02:08 -04:00
ucc_geth_ethtool.c ucc_geth_ethtool: Add a missing HW stats counter 2008-05-30 22:07:24 -04:00
ucc_geth_mii.c ucc_geth: Fix a bunch of sparse warnings 2008-05-06 12:02:08 -04:00
ucc_geth_mii.h
veth.c
via-rhine.c
via-velocity.c
via-velocity.h
virtio_net.c virtio: use callback on empty in virtio_net 2008-06-10 18:20:32 -04:00
wd.c
xen-netfront.c NETFRONT: Use __skb_queue_purge() 2008-05-22 14:01:03 -04:00
yellowfin.c net: use get/put_unaligned_* helpers 2008-04-29 08:06:27 -07:00
znet.c
zorro8390.c