android_kernel_xiaomi_sm8350/drivers/net
Roland Dreier 47fd23fe8e cxgb3: Keep LRO off if disabled when interface is down
I have a system with a Chelsio adapter (driven by cxgb3) whose ports are
part of a Linux bridge.  Recently I updated the kernel and discovered
that things stopped working because cxgb3 was doing LRO on packets that
were passed into the bridge code for forwarding.  (Incidentally, this
problem manifested itself in a strange way that made debugging a bit
interesting -- for some reason, the skb_warn_if_lro() check in bridge
didn't trigger and these LROed packets were forwarded out a forcedeth
interface, and caused the forcedeth transmit path to get stuck)

This is because cxgb3 has no way of keeping state for the LRO flag until
the interface is brought up, so if the bridging code disables LRO while
the interface is down, then cxgb3_up() will just reenable LRO, and on my
Debian system at least, the init scripts add interfaces to a bridge
before bringing the interfaces up.

Fix this by keeping track of each interface's LRO state in cxgb3 so that
when bridge disables LRO, it stays disabled in cxgb3_up() when the
interface is brought up.  I did this by changing the rx_csum_offload
flag into a pair of bit flags; the effect of this on the rx_eth() fast
path is miniscule enough that it should be fine (eg on x86, a cmpb
instruction becomes a testb instruction).

Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-01-11 00:19:36 -08:00
..
appletalk appletalk: convert ipddp to net_device_ops 2009-01-07 17:22:19 -08:00
arcnet drivers/net/arcnet: fix sparse warnings: make symbols static 2008-12-25 23:57:21 -08:00
arm netdev: missing validate_address hooks 2009-01-11 00:06:42 -08:00
atl1e net: Fix warning fallout from recent NAPI interface changes. 2008-12-26 15:10:00 -08:00
atlx drivers/net/atlx: fix sparse warnings: make symbols static 2008-12-25 23:58:35 -08:00
bonding bonding: use net_device_ops 2009-01-06 10:41:56 -08:00
can vcan: whitespace fixes 2008-12-17 15:37:55 -08:00
chelsio net: Fix warning fallout from recent NAPI interface changes. 2008-12-26 15:10:00 -08:00
cris
cxgb3 cxgb3: Keep LRO off if disabled when interface is down 2009-01-11 00:19:36 -08:00
e1000 trivial: fix then -> than typos in comments and documentation 2009-01-06 11:28:06 +01:00
e1000e e1000e: Add process name to WARN message when detecting Mutex contention 2009-01-11 00:04:11 -08:00
ehea net/ehea: use consistant type 2009-01-06 10:47:16 -08:00
enic netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
fs_enet net: Remove unused netdev arg from some NAPI interfaces. 2008-12-22 20:43:12 -08:00
hamradio drivers/net/hamradio/6pack.c: move a dereference below a NULL test 2009-01-11 00:06:34 -08:00
ibm_newemac
igb igb: fix anoying type mismatch warning on rx/tx queue sizing 2009-01-05 18:47:12 -08:00
irda irda: fix incomplete conversation to internal stats 2009-01-11 00:01:31 -08:00
ixgb net: Fix warning fallout from recent NAPI interface changes. 2008-12-26 15:10:00 -08:00
ixgbe ixgbe: Fix set_ringparam in ixgbe to use the same memory pools. 2008-12-26 01:36:33 -08:00
ixp2000 net: Remove unused netdev arg from some NAPI interfaces. 2008-12-22 20:43:12 -08:00
mlx4 netdev: missing validate_address hooks 2009-01-11 00:06:42 -08:00
myri10ge myri10ge: print MAC and serial number on probe failure 2009-01-05 18:16:14 -08:00
netxen drivers/net/netxen: fix sparse warnings: use NULL pointer instead of plain integer 2008-12-26 00:04:26 -08:00
pcmcia Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-12-02 19:50:27 -08:00
phy net: PHYLIB mdio fixes #2 2008-12-25 16:50:41 -08:00
qlge qlge: Remove dynamic alloc of rx ring control blocks. 2009-01-11 00:07:36 -08:00
sfc sfc: SFT9001: Fix condition for LNPGA power-off 2009-01-11 00:18:13 -08:00
skfp drivers/net/skfp: fix sparse warnings: make symbols static 2008-12-26 00:06:28 -08:00
tokenring trivial: fix then -> than typos in comments and documentation 2009-01-06 11:28:06 +01:00
tulip windbond: convert devices to new API 2009-01-07 18:02:26 -08:00
usb net: convert pegasus driver to net_device_ops 2009-01-08 11:22:25 -08:00
wan net: Fix more NAPI interface netdev argument drop fallout. 2008-12-29 18:18:24 -08:00
wimax i2400m/usb: wrap USB power saving in #ifdef CONFIG_PM 2009-01-08 11:08:25 -08:00
wireless drivers/net/wireless/libertas: move a dereference below a NULL test 2009-01-11 00:06:35 -08:00
3c59x.c 3c59x: Use device_set_wakeup_enable 2009-01-11 00:06:32 -08:00
3c501.c
3c501.h netdevice: Kill netdev->priv 2008-12-08 01:14:16 -08:00
3c503.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
3c503.h
3c505.c
3c505.h
3c507.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
3c509.c
3c515.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
3c523.c drivers/net: fix sparse warnings: make symbols static 2008-12-25 23:56:45 -08:00
3c523.h
3c527.c
3c527.h
7990.c
7990.h
8139cp.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
8139too.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
8390.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
8390.h 8390: add common net_device ops 2008-11-25 18:12:49 -08:00
8390p.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
82596.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
a2065.c
a2065.h
ac3200.c
acenic.c netdev: missing validate_address hooks 2009-01-11 00:06:42 -08:00
acenic.h firmware: convert acenic driver to request_firmware() 2009-01-04 16:10:02 -08:00
amd8111e.c amd8111e: convert to net_device_ops 2009-01-07 18:09:58 -08:00
amd8111e.h
apne.c apne: convert to net_device_ops 2008-11-25 18:25:32 -08:00
ariadne.c
ariadne.h
at1700.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
atarilance.c
atp.c atp: convert to net_device_ops 2009-01-07 18:10:24 -08:00
atp.h
au1000_eth.c drivers/net/au1000_eth.c: Remove redundant test 2008-12-25 18:02:49 -08:00
au1000_eth.h
ax88796.c
b44.c b44: fix misalignment and wasted space in rx handling 2009-01-11 00:04:12 -08:00
b44.h
bfin_mac.c
bfin_mac.h
bmac.c
bmac.h
bnx2_fw2.h
bnx2_fw.h
bnx2.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-12-23 17:56:23 -08:00
bnx2.h bnx2: Don't redefine FLOW_CTRL_{RX,TX}. 2008-12-16 23:54:23 -08:00
bnx2x_fw_defs.h
bnx2x_hsi.h
bnx2x_init_values.h
bnx2x_init.h
bnx2x_link.c trivial: fix then -> than typos in comments and documentation 2009-01-06 11:28:06 +01:00
bnx2x_link.h bnx2x: Fix namespace collision with FLOW_CTRL_{TX,RX} 2008-12-16 23:54:24 -08:00
bnx2x_main.c bnx2x: Prevent eeprom set when driver is down 2009-01-08 11:21:43 -08:00
bnx2x_reg.h
bnx2x.h
bsd_comp.c
cassini.c cassini: update to net_device_ops 2009-01-07 17:25:41 -08:00
cassini.h
cpmac.c net: Remove unused netdev arg from some NAPI interfaces. 2008-12-22 20:43:12 -08:00
cs89x0.c Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-12-30 17:36:49 -08:00
cs89x0.h
de600.c de600: update to net_device_ops 2009-01-07 17:34:36 -08:00
de600.h
de620.c de600: update to net_device_ops 2009-01-07 17:34:36 -08:00
de620.h
declance.c
defxx.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
defxx.h
depca.c depca: fix warning in drivers/net/depca.c 2008-11-25 17:00:39 -08:00
depca.h
dl2k.c dl2k: convert to net_device_ops 2008-11-21 17:31:51 -08:00
dl2k.h
dm9000.c dm9000: Fix build error. 2008-11-16 12:41:35 -08:00
dm9000.h
dummy.c dummy: convert to net_device_ops 2008-11-20 20:28:00 -08:00
e100.c firmware: convert e100 driver to request_firmware() 2009-01-07 12:59:17 -08:00
e2100.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
eepro.c drivers/net: fix sparse warnings: make symbols static 2008-12-25 23:56:45 -08:00
eexpress.c netdevice: Kill netdev->priv 2008-12-08 01:14:16 -08:00
eexpress.h EtherExpress16: fix printing timed out status 2008-12-29 18:42:33 -08:00
enc28j60_hw.h
enc28j60.c enc28j60: update to net_device_ops 2009-01-07 17:30:09 -08:00
epic100.c epic100: update to net_device_ops 2009-01-07 17:27:39 -08:00
eql.c eql: convert to net_device_ops 2008-11-21 17:37:54 -08:00
es3210.c es3210: convert to net_device_ops 2008-11-25 18:23:59 -08:00
eth16i.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
ewrk3.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
ewrk3.h
fealnx.c fealnx: update to net_device_ops 2009-01-07 17:57:47 -08:00
fec_mpc52xx_phy.c powerpc/mpc5200: Remove obsolete code from mpc5200 MDIO driver 2008-12-21 02:54:30 -07:00
fec_mpc52xx.c
fec_mpc52xx.h
fec.c
fec.h
forcedeth.c forcedeth: napi schedule lock fix 2009-01-11 00:11:28 -08:00
gianfar_ethtool.c gianfar: Add Scatter Gather support 2008-12-17 16:51:04 -08:00
gianfar_mii.c gianfar: Convert gianfar to an of_platform_driver 2008-12-16 15:29:15 -08:00
gianfar_mii.h gianfar: Convert gianfar to an of_platform_driver 2008-12-16 15:29:15 -08:00
gianfar_sysfs.c
gianfar.c netdev: gianfar: add MII ioctl handler 2009-01-11 00:06:35 -08:00
gianfar.h gianfar: Merge Tx and Rx interrupt for scheduling clean up ring 2008-12-17 16:52:00 -08:00
hamachi.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
hp100.c hp100: update to net_device_ops 2009-01-07 18:13:49 -08:00
hp100.h
hp-plus.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
hp.c hp: convert to net_device_ops 2008-11-25 18:24:57 -08:00
hplance.c
hplance.h
hydra.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
ibmlana.c
ibmlana.h
ibmveth.c ibmveth: use consistent types 2009-01-06 10:47:44 -08:00
ibmveth.h ibmveth: use consistent types 2009-01-06 10:47:44 -08:00
ifb.c netdev: add more functions to netdevice ops 2008-11-20 20:14:53 -08:00
ioc3-eth.c
ipg.c ipg: update to net_device_ops 2009-01-07 17:26:14 -08:00
ipg.h
isa-skeleton.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
iseries_veth.c
jazzsonic.c
jme.c net: Remove unused netdev arg from some NAPI interfaces. 2008-12-22 20:43:12 -08:00
jme.h Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-12-23 17:56:23 -08:00
Kconfig r6040: no longer mark r6040 as being experimental 2009-01-11 00:03:39 -08:00
korina.c net: Remove unused netdev arg from some NAPI interfaces. 2008-12-22 20:43:12 -08:00
lance.c netdevice: Kill netdev->priv 2008-12-08 01:14:16 -08:00
lasi_82596.c
lib8390.c 8390/8390p: Fix compat netdev ops handling. 2008-12-15 15:14:59 -08:00
lib82596.c
LICENSE.SRC
lne390.c lne390: convert to net_device_ops 2008-11-25 18:24:38 -08:00
loopback.c netdev: add more functions to netdevice ops 2008-11-20 20:14:53 -08:00
lp486e.c
mac89x0.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
mac8390.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
macb.c net: Remove unused netdev arg from some NAPI interfaces. 2008-12-22 20:43:12 -08:00
macb.h
mace.c
mace.h
macmace.c
macsonic.c
macvlan.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-12-02 19:50:27 -08:00
Makefile i2400m: Makefile and Kconfig 2009-01-07 10:00:22 -08:00
meth.c
meth.h
mii.c
mipsnet.c
mv643xx_eth.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-11-20 16:44:00 -08:00
mvme147.c
myri_code.h
myri_sbus.c netdevice: Kill netdev->priv 2008-12-08 01:14:16 -08:00
myri_sbus.h
natsemi.c natsemi: update to net_device_ops 2009-01-07 17:57:19 -08:00
ne2.c ne2: silence static never defined warnings 2008-11-28 15:55:00 -08:00
ne2k-pci.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
ne3210.c ne3210: convert to net_device_ops 2008-11-25 18:23:35 -08:00
ne-h8300.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
ne.c drivers/net: fix sparse warning: use ANSI-style function declaration 2008-12-25 23:52:57 -08:00
netconsole.c
netx-eth.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-12-05 22:54:40 -08:00
ni52.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
ni52.h
ni65.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
ni65.h
ni5010.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
ni5010.h
niu.c drivers/net: fix sparse warning: returning void-valued expression 2008-12-25 23:56:04 -08:00
niu.h niu: use net_device_stats nowadays available in net_device 2008-11-28 15:52:00 -08:00
ns83820.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
pasemi_mac_ethtool.c
pasemi_mac.c net: Fix unused variable warnings in pasemi_mac.c and spider_net.c 2008-12-28 20:15:38 -08:00
pasemi_mac.h
pci-skeleton.c netdevice: Kill netdev->priv 2008-12-08 01:14:16 -08:00
pcnet32.c pcnet32: round off carrier watch timer 2009-01-08 11:17:13 -08:00
plip.c plip: update to net_device_ops 2009-01-07 17:26:48 -08:00
ppp_async.c drivers/net: Remove redundant test 2008-12-25 18:03:28 -08:00
ppp_deflate.c
ppp_generic.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-12-23 17:56:23 -08:00
ppp_mppe.c
ppp_mppe.h
ppp_synctty.c drivers/net: Remove redundant test 2008-12-25 18:03:28 -08:00
pppoe.c
pppol2tp.c l2tp: fix UDP checksum support 2008-12-16 01:23:49 -08:00
pppox.c
ps3_gelic_net.c
ps3_gelic_net.h
ps3_gelic_wireless.c
ps3_gelic_wireless.h
qla3xxx.c net: Fix warning fallout from recent NAPI interface changes. 2008-12-26 15:10:00 -08:00
qla3xxx.h
r6040.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
r8169.c net: Remove unused netdev arg from some NAPI interfaces. 2008-12-22 20:43:12 -08:00
rionet.c
rrunner.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
rrunner.h
s2io-regs.h
s2io.c net: Fix warning fallout from recent NAPI interface changes. 2008-12-26 15:10:00 -08:00
s2io.h
sb1000.c sb1000: update to net_device_ops 2009-01-07 17:56:54 -08:00
sb1250-mac.c net: Remove unused netdev arg from some NAPI interfaces. 2008-12-22 20:43:12 -08:00
sc92031.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
seeq8005.c netdev: remove pathetic compile-command lines 2008-12-03 22:19:52 -08:00
seeq8005.h
sgiseeq.c
sgiseeq.h
sh_eth.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-11-20 16:44:00 -08:00
sh_eth.h
sis190.c sis190: update to net_device_ops 2009-01-07 17:35:41 -08:00
sis900.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
sis900.h
skge.c net: Remove unused netdev arg from some NAPI interfaces. 2008-12-22 20:43:12 -08:00
skge.h
sky2.c netdev: add more functions to netdevice ops 2008-11-20 20:14:53 -08:00
sky2.h
slhc.c
slip.c slip: convert to net_device_ops 2009-01-07 18:09:36 -08:00
slip.h trivial: fix then -> than typos in comments and documentation 2009-01-06 11:28:06 +01:00
smc91x.c smc91x: remove isa stuff from smc91x driver 2008-12-03 22:23:18 -08:00
smc91x.h Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-12-30 17:36:49 -08:00
smc911x.c drivers/net/smc911x.c: smc911x_drv_probe() cleanup 2008-12-03 21:05:49 -08:00
smc911x.h [ARM] pxa: explicit #include <mach/dma.h> in various drivers 2008-12-02 14:42:26 +08:00
smc9194.c drivers/net: fix sparse warnings: make symbols static 2008-12-25 23:56:45 -08:00
smc9194.h
smc-mca.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
smc-ultra32.c
smc-ultra.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
smsc911x.c smsc911x: register irq with device name, not driver name 2009-01-11 00:14:52 -08:00
smsc911x.h net: Move flow control definitions to mii.h 2008-12-16 02:00:00 -08:00
smsc9420.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
smsc9420.h net: Move flow control definitions to mii.h 2008-12-16 02:00:00 -08:00
sni_82596.c
sonic.c
sonic.h
Space.c
spider_net_ethtool.c
spider_net.c net: Fix unused variable warnings in pasemi_mac.c and spider_net.c 2008-12-28 20:15:38 -08:00
spider_net.h
starfire.c starfire: update to net_device_ops 2009-01-07 17:58:17 -08:00
stnic.c stnic: convert to net_device_ops 2008-11-25 18:25:49 -08:00
sun3_82586.c netdevice: Kill netdev->priv 2008-12-08 01:14:16 -08:00
sun3_82586.h
sun3lance.c
sunbmac.c netdevice: Kill netdev->priv 2008-12-08 01:14:16 -08:00
sunbmac.h
sundance.c sundance: update to net_device_ops 2009-01-07 17:58:43 -08:00
sungem_phy.c
sungem_phy.h
sungem.c sungem: update to net_device_ops 2009-01-07 17:28:54 -08:00
sungem.h
sunhme.c sunhme: update to net_device_ops 2009-01-07 17:28:35 -08:00
sunhme.h
sunlance.c
sunqe.c
sunqe.h
sunvnet.c sparc64: Fix unsigned long long warnings in drivers. 2009-01-06 13:20:38 -08:00
sunvnet.h
tc35815.c net: Remove unused netdev arg from some NAPI interfaces. 2008-12-22 20:43:12 -08:00
tehuti_fw.h
tehuti.c trivial: fix then -> than typos in comments and documentation 2009-01-06 11:28:06 +01:00
tehuti.h
tg3.c firmware: convert tg3 driver to request_firmware() 2009-01-04 16:11:25 -08:00
tg3.h firmware: convert tg3 driver to request_firmware() 2009-01-04 16:11:25 -08:00
tlan.c tlan: update to net_device_ops 2009-01-07 17:27:15 -08:00
tlan.h
tsi108_eth.c net: Remove unused netdev arg from some NAPI interfaces. 2008-12-22 20:43:12 -08:00
tsi108_eth.h
tun.c tun: Eliminate sparse signedness warning 2009-01-04 17:14:46 -08:00
typhoon-firmware.h
typhoon.c typhoon: update to net_device_ops 2009-01-07 17:29:46 -08:00
typhoon.h
ucc_geth_ethtool.c net/ucc_geth: Fix oops in uec_get_ethtool_stats() 2008-11-14 18:18:17 -05:00
ucc_geth_mii.c
ucc_geth_mii.h
ucc_geth.c ucc_geth: Eliminate the need for forward references 2008-12-26 01:28:43 -08:00
ucc_geth.h ucc_geth: Fix TX watchdog timeout handling 2008-12-18 22:48:55 -08:00
veth.c netdev: add more functions to netdevice ops 2008-11-20 20:14:53 -08:00
via-rhine.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
via-velocity.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
via-velocity.h
virtio_net.c virtio: convert to net_device_ops 2009-01-06 10:44:22 -08:00
wd.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
xen-netfront.c xen-netfront: convert to net_device_ops 2009-01-06 10:44:55 -08:00
xtsonic.c
yellowfin.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00
znet.c
zorro8390.c netdev: add missing set_mac_address hook 2009-01-11 00:06:36 -08:00