linux/drivers/net/ethernet
Claudiu Manoil 88302648be gianfar: Fix on-the-fly vlan and mtu updates
The RCTRL and TCTRL registers should not be changed
on-the-fly, while the controller is running, otherwise
unexpected behaviour occurs.  But that's exactly what
gfar_vlan_mode() does, updating the VLAN acceleration
bits inside RCTRL/TCTRL.  The attempt to lock these
operations doesn't help, but only adds to the confusion.
There's also a dependency for Rx FCB insertion (activating
/de-activating the TOE offload block on Rx) which might
change the required rx buffer size.  This makes matters
worse as gfar_vlan_mode() ends up calling gfar_change_mtu(),
though the MTU size remains the same.  Note that there are
other situations that may affect the required rx buffer size,
like changing RXCSUM or rx hw timestamping, but errorneously
the rx buffer size is not recomputed/ updated in the process.

To fix this, do the vlan updates properly inside the MAC
reset and reconfiguration procedure, which takes care of
the rx buffer size dependecy and the rx TOE block (PRSDEP)
activation/deactivation as well (in the correct order).
As a consequence, MTU/ rx buff size updates are done now
by the same MAC reset and reconfig procedure, so that out
of context updates to MAXFRM, MRBLR, and MACCFG inside
change_mtu() are no longer needed.  The rx buffer size
dependecy to Rx FCB is now handled for the other cases too
(RXCSUM and rx hw timestamping).

Signed-off-by: Claudiu Manoil <claudiu.manoil@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-02-24 19:38:20 -05:00
..
3com Drivers: net: ethernet: 3com: 3c589_cs fixed coding style issues 2014-02-18 16:59:46 -05:00
8390 net/apne: Remove unused variable ei_local 2014-01-26 22:40:43 -08:00
adaptec net: starfire: remove unnecessary pci_set_drvdata() 2013-10-18 00:03:28 -04:00
adi net: bfin_mac: do not reset PHY after phy_start() 2013-12-09 20:38:59 -05:00
aeroflex drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
allwinner net: ethernet: sunxi: Add new compatibles 2014-02-06 19:46:54 -08:00
alteon drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
amd pcnet32: add missing check for pci_dma_mapping_error 2014-02-19 14:58:27 -05:00
apple macmace: add missing platform_set_drvdata() in mace_probe() 2013-11-11 14:02:08 -05:00
arc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-01-06 17:37:45 -05:00
atheros alx: add missing stats_lock spinlock init 2014-02-10 17:50:35 -08:00
broadcom bcmgenet: Deleted unnecessary select_queue method. 2014-02-24 19:33:27 -05:00
brocade bna: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:29 -05:00
cadence net: macb: Fix build warning 2013-12-11 00:19:17 -05:00
calxeda drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
chelsio cgxb4: Stop using ethtool SPEED_* constants 2014-02-24 19:04:08 -05:00
cirrus drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
cisco enic: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:30 -05:00
davicom dm9000: fix a lot of checkpatch issues 2014-01-16 16:22:53 -08:00
dec drivers/net: tulip_remove_one needs to call pci_disable_device() 2014-02-17 00:19:24 -05:00
dlink drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
emulex benet: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:30 -05:00
faraday net: ftgmac100: use kfree_skb() where appropriate 2014-01-17 18:54:13 -08:00
freescale gianfar: Fix on-the-fly vlan and mtu updates 2014-02-24 19:38:20 -05:00
fujitsu drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
hp hp100: replace hardcoded name in /proc/interrupts with interface name 2013-09-27 17:38:32 -04:00
i825xx drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
ibm Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2014-01-27 21:11:26 -08:00
icplus drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
intel i40e and i40evf: Bump driver versions 2014-02-21 12:38:26 -05:00
marvell Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-02-19 01:24:22 -05:00
mellanox net/mlx4: Fix limiting number of IRQ's instead of RSS queues 2014-02-24 18:38:14 -05:00
micrel drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
microchip
moxa drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
myricom myri10ge: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:32 -05:00
natsemi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-01-25 11:17:34 -08:00
neterion vxge: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:32 -05:00
nuvoton drivers:net: delete premature free_irq 2013-09-04 13:18:19 -04:00
nvidia forcedeth: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:33 -05:00
nxp drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
octeon Merge branch 'for-linus-dma-masks' of git://git.linaro.org/people/rmk/linux-arm 2013-11-14 07:55:21 +09:00
oki-semi ethernet: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
packetengines net: packetengines: slight optimization of addr 2013-12-31 16:48:32 -05:00
pasemi drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
qlogic qlcnic: Update version to 5.3.56 2014-02-24 18:43:19 -05:00
rdc r6040: use ETH_ZLEN instead of MISR for SKB length checking 2014-01-16 16:22:54 -08:00
realtek drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
renesas sh_eth: add device tree support 2014-02-18 17:21:34 -05:00
seeq drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
sfc sfc: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:34 -05:00
sgi drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
silan
sis net: sis900: remove unnecessary pci_set_drvdata() 2013-12-09 18:09:28 -05:00
smsc drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
stmicro net: stmmac:sti: Add STi SOC glue driver. 2014-02-13 16:25:13 -05:00
sun niu: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:34 -05:00
tehuti net: Spelling s/transmition/transmission/ 2014-01-14 17:11:26 -08:00
ti Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-02-19 01:24:22 -05:00
tile netdevice: add queue selection fallback handler for ndo_select_queue 2014-02-17 00:36:34 -05:00
toshiba drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
tundra drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
via net,via-rhine: Fix tx_timeout handling 2014-01-15 15:21:08 -08:00
wiznet net: w5100: use dev_get_platdata() 2013-08-30 17:43:38 -04:00
xilinx net: axienet: Fix compilation warnings 2014-02-13 18:07:40 -05:00
xircom ethernet: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
xscale ixp4xx_eth: Implement the SIOCGHWTSTAMP ioctl 2013-11-21 17:17:48 +00:00
dnet.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
dnet.h
ethoc.c net: ethoc: set up MII management bus clock 2014-02-04 20:19:51 -08:00
fealnx.c net: fealnx: remove unnecessary pci_set_drvdata() 2013-10-21 17:21:01 -04:00
jme.c net: jme: remove unnecessary pci_set_drvdata() 2013-10-21 17:21:01 -04:00
jme.h jme: Remove unused #define PFX 2013-11-07 02:14:32 -05:00
Kconfig
korina.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
lantiq_etop.c netdevice: add queue selection fallback handler for ndo_select_queue 2014-02-17 00:36:34 -05:00
Makefile
netx-eth.c ethernet: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
s6gmac.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00