linux/drivers/net/dsa
Vladimir Oltean 21b52fed92 net: dsa: sja1105: fix broken backpressure in .port_fdb_dump
rtnl_fdb_dump() has logic to split a dump of PF_BRIDGE neighbors into
multiple netlink skbs if the buffer provided by user space is too small
(one buffer will typically handle a few hundred FDB entries).

When the current buffer becomes full, nlmsg_put() in
dsa_slave_port_fdb_do_dump() returns -EMSGSIZE and DSA saves the index
of the last dumped FDB entry, returns to rtnl_fdb_dump() up to that
point, and then the dump resumes on the same port with a new skb, and
FDB entries up to the saved index are simply skipped.

Since dsa_slave_port_fdb_do_dump() is pointed to by the "cb" passed to
drivers, then drivers must check for the -EMSGSIZE error code returned
by it. Otherwise, when a netlink skb becomes full, DSA will no longer
save newly dumped FDB entries to it, but the driver will continue
dumping. So FDB entries will be missing from the dump.

Fix the broken backpressure by propagating the "cb" return code and
allow rtnl_fdb_dump() to restart the FDB dump with a new skb.

Fixes: 291d1e72b7 ("net: dsa: sja1105: Add support for FDB and MDB management")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-08-10 13:17:22 +01:00
..
b53 net: dsa: b53: Create default VLAN entry explicitly 2021-06-22 10:19:39 -07:00
hirschmann net: dsa: hellcreek: fix broken backpressure in .port_fdb_dump 2021-08-10 13:17:22 +01:00
microchip net: dsa: microchip: ksz8795: Don't use phy_port_cnt in VLAN table lookup 2021-08-10 09:58:15 +01:00
mv88e6xxx net: dsa: mv88e6xxx: silently accept the deletion of VID 0 too 2021-07-23 17:13:02 +01:00
ocelot net: dsa: felix: set TX flow control according to the phylink_mac_link_up resolution 2021-06-08 16:35:14 -07:00
qca net: dsa: qca: ar9331: make proper initial port defaults 2021-08-07 09:34:35 +01:00
sja1105 net: dsa: sja1105: fix broken backpressure in .port_fdb_dump 2021-08-10 13:17:22 +01:00
xrs700x net: dsa: xrs700x: forward HSR supervision frames 2021-06-16 12:17:03 -07:00
bcm_sf2.c net: dsa: bcm_sf2: Fix bcm_sf2_reg_rgmii_cntrl() call for non-RGMII port 2021-05-21 14:18:34 -07:00
bcm_sf2.h net: dsa: bcm_sf2: setup BCM4908 internal crossbar 2021-03-12 17:06:37 -08:00
bcm_sf2_cfp.c net: dsa: propagate extack to .port_vlan_add 2021-02-14 17:38:11 -08:00
bcm_sf2_regs.h net: dsa: bcm_sf2: fix BCM4908 RGMII reg(s) 2021-03-18 14:44:05 -07:00
dsa_loop.c net: dsa: propagate extack to .port_vlan_filtering 2021-02-14 17:38:12 -08:00
dsa_loop.h
dsa_loop_bdinfo.c
Kconfig dsa: simplify Kconfig symbols and dependencies 2021-03-22 12:15:37 -07:00
lan9303-core.c net: dsa: lan9303: fix broken backpressure in .port_fdb_dump 2021-08-10 13:17:22 +01:00
lan9303.h
lan9303_i2c.c
lan9303_mdio.c
lantiq_gswip.c net: dsa: lantiq: fix broken backpressure in .port_fdb_dump 2021-08-10 13:17:22 +01:00
lantiq_pce.h
Makefile net: dsa: add Arrow SpeedChips XRS700x driver 2021-01-15 15:37:37 -08:00
mt7530.c net: dsa: mt7530: add the missing RxUnicast MIB counter 2021-08-06 12:08:30 +01:00
mt7530.h mt7530 fix mt7530_fdb_write vid missing ivl bit 2021-07-16 13:24:33 -07:00
mv88e6060.c
mv88e6060.h
qca8k.c net: dsa: qca8k: check the correct variable in qca8k_set_mac_eee() 2021-06-09 14:10:38 -07:00
qca8k.h net: dsa: qca8k: add support for internal phy and internal mdio 2021-05-14 15:30:22 -07:00
realtek-smi-core.c
realtek-smi-core.h net: dsa: propagate extack to .port_vlan_filtering 2021-02-14 17:38:12 -08:00
rtl8366.c net: dsa: propagate extack to .port_vlan_filtering 2021-02-14 17:38:12 -08:00
rtl8366rb.c net: dsa: rtl8366rb: standardize init jam tables 2021-01-27 20:21:20 -08:00
vitesse-vsc73xx-core.c
vitesse-vsc73xx-platform.c
vitesse-vsc73xx-spi.c
vitesse-vsc73xx.h