linux/drivers/net/dsa
Heiner Kallweit ed8fe20205 net: dsa: mv88e6xxx: prevent interrupt storm caused by mv88e6390x_port_set_cmode
When debugging another issue I faced an interrupt storm in this
driver (88E6390, port 9 in SGMII mode), consisting of alternating
link-up / link-down interrupts. Analysis showed that the driver
wanted to set a cmode that was set already. But so far
mv88e6390x_port_set_cmode() doesn't check this and powers down
SERDES, what causes the link to break, and eventually results in
the described interrupt storm.

Fix this by checking whether the cmode actually changes. We want
that the very first call to mv88e6390x_port_set_cmode() always
configures the registers, therefore initialize port.cmode with
a value that is different from any supported cmode value.
We have to take care that we only init the ports cmode once
chip->info->num_ports is set.

v2:
- add small helper and init the number of actual ports only

Fixes: 364e9d7776 ("net: dsa: mv88e6xxx: Power on/off SERDES on cmode change")
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-03-01 21:37:05 -08:00
..
b53 net: dsa: b53: Do not program CPU port's PVID 2019-02-15 20:37:54 -08:00
microchip net: dsa: microchip: Drop unused GPIO includes 2019-01-04 12:58:25 -08:00
mv88e6xxx net: dsa: mv88e6xxx: prevent interrupt storm caused by mv88e6390x_port_set_cmode 2019-03-01 21:37:05 -08:00
bcm_sf2_cfp.c net: dsa: bcm_sf2: fix semicolon.cocci warnings 2018-11-07 22:14:05 -08:00
bcm_sf2_regs.h net: dsa: bcm_sf2: Disable learning while in WoL 2018-08-03 12:11:43 -07:00
bcm_sf2.c net: dsa: bcm_sf2: Do not assume DSA master supports WoL 2019-02-15 20:37:54 -08:00
bcm_sf2.h net: dsa: bcm_sf2: Restore CFP rules during system resume 2018-11-06 15:05:22 -08:00
dsa_loop_bdinfo.c
dsa_loop.c net: dsa: dsa_loop: Make dynamic debugging helpful 2018-05-25 16:46:29 -04:00
dsa_loop.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig net: dsa: lantiq_gswip: Depend on HAS_IOMEM 2018-09-25 20:27:43 -07:00
lan9303_i2c.c net: dsa: lan9303: Adjust indenting 2017-11-08 13:29:06 +09:00
lan9303_mdio.c net: dsa: lan9303: Adjust indenting 2017-11-08 13:29:06 +09:00
lan9303-core.c net: dsa: Pass stringset to ethtool operations 2018-04-27 11:53:03 -04:00
lan9303.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
lantiq_gswip.c net: dsa: lantiq: Add GPHY firmware files 2019-02-24 17:34:54 -08:00
lantiq_pce.h net: dsa: Add Lantiq / Intel DSA driver for vrx200 2018-09-13 08:14:33 -07:00
Makefile net: dsa: Add Lantiq / Intel DSA driver for vrx200 2018-09-13 08:14:33 -07:00
mt7530.c net: dsa: mt7530: Drop unused GPIO include 2019-01-04 13:07:23 -08:00
mt7530.h net: dsa: mediatek: add VLAN support for MT7530 2017-12-15 10:31:54 -05:00
mv88e6060.c mv88e6060: disable hardware level MAC learning 2018-12-03 16:04:21 -08:00
mv88e6060.h
qca8k.c net: dsa: qca8k: simplify getting .driver_data 2018-10-21 21:10:11 -07:00
qca8k.h net: dsa: qca8k: Allow overwriting CPU port setting 2018-05-23 15:46:18 -04:00
realtek-smi.c net: dsa: realtek-smi: fix OF child-node lookup 2019-01-17 14:04:49 -08:00
realtek-smi.h net: dsa: realtek-smi: Add Realtek SMI driver 2018-07-18 13:43:38 +09:00
rtl8366.c dsa: rtl8366: Remove unused variable. 2018-07-18 14:42:18 +09:00
rtl8366rb.c net: dsa: rtl8366rb: Support port 4 (WAN) 2018-08-09 14:15:00 -07:00
vitesse-vsc73xx.c net: dsa: vsc73xx: Make some functions static 2018-07-05 19:29:29 +09:00