linux-stable/drivers/net/ethernet/freescale
Frank Li 54309fa60b net: fec: fix kernel oops when plug/unplug cable many times
reproduce steps
 1. flood ping from other machine
 	ping -f -s 41000 IP
 2. run below script
    while [ 1 ]; do ethtool -s eth0 autoneg off;
    sleep 3;ethtool -s eth0 autoneg on; sleep 4; done;

You can see oops in one hour.

The reason is fec_restart clear BD but NAPI may use it.
The solution is disable NAPI and stop xmit when reset BD.
disable NAPI may sleep, so fec_restart can't be call in
atomic context.

Signed-off-by: Frank Li <Frank.Li@freescale.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Tested-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-05-08 13:13:30 -07:00
..
fs_enet drivers:net: Remove unnecessary OOM messages after netdev_alloc_skb 2013-03-09 16:09:19 -05:00
Kconfig NET: FEC: dynamtic check DMA desc buff type 2013-01-04 15:15:39 -08:00
Makefile net: fec: build fec.c and fec_ptp.c to one module 2013-03-25 12:14:57 -04:00
fec.h net: fec: fix kernel oops when plug/unplug cable many times 2013-05-08 13:13:30 -07:00
fec_main.c net: fec: fix kernel oops when plug/unplug cable many times 2013-05-08 13:13:30 -07:00
fec_mpc52xx.c fec: Convert printks to netdev_<level> 2013-04-14 15:41:49 -04:00
fec_mpc52xx.h drivers/net: fix up stale paths from driver reorg 2012-01-30 12:54:40 -05:00
fec_mpc52xx_phy.c
fec_ptp.c fec: Convert printks to netdev_<level> 2013-04-14 15:41:49 -04:00
fsl_pq_mdio.c net/fsl_pq_mdio: add support for the Fman 1G MDIO controller 2012-08-30 13:29:32 -04:00
gianfar.c net: Fix some __vlan_hwaccel_put_tag() callers. 2013-04-22 19:24:19 -04:00
gianfar.h gianfar: Remove superfluous kernel_dropped local counter 2013-03-21 12:01:34 -04:00
gianfar_ethtool.c net: vlan: rename NETIF_F_HW_VLAN_* feature flags to NETIF_F_HW_VLAN_CTAG_* 2013-04-19 14:45:26 -04:00
gianfar_ptp.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-04-30 03:55:20 -04:00
gianfar_sysfs.c gianfar: Use netdev_<level> when possible 2013-04-14 15:41:49 -04:00
ucc_geth.c ucc_geth: Convert ugeth_<level> to pr_<level> 2013-04-14 15:41:49 -04:00
ucc_geth.h net: remove skb recycling 2012-10-07 00:40:54 -04:00
ucc_geth_ethtool.c ucc_geth: Convert ugeth_<level> to pr_<level> 2013-04-14 15:41:49 -04:00
xgmac_mdio.c net/freescale: remove __dev* attributes 2012-12-03 11:16:54 -08:00