1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/net/ethernet/mscc
Vladimir Oltean ca0b272b48 net: mscc: ocelot: install MAC addresses in .ndo_set_rx_mode from process context
Currently ocelot_set_rx_mode calls ocelot_mact_learn directly, which has
a very nice ocelot_mact_wait_for_completion at the end. Introduced in
commit 639c1b2625 ("net: mscc: ocelot: Register poll timeout should be
wall time not attempts"), this function uses readx_poll_timeout which
triggers a lot of lockdep warnings and is also dangerous to use from
atomic context, potentially leading to lockups and panics.

Steen Hegelund added a poll timeout of 100 ms for checking the MAC
table, a duration which is clearly absurd to poll in atomic context.
So we need to defer the MAC table access to process context, which we do
via a dynamically allocated workqueue which contains all there is to
know about the MAC table operation it has to do.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Link: https://lore.kernel.org/r/20201212191612.222019-1-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2020-12-14 19:28:22 -08:00
..
Kconfig net: mscc: ocelot: rethink Kconfig dependencies again 2020-07-16 12:46:00 -07:00
Makefile net: mscc: ocelot: rename ocelot_ace.{c, h} to ocelot_vcap.{c,h} 2020-06-20 17:25:23 -07:00
ocelot.c net: mscc: ocelot: install MAC addresses in .ndo_set_rx_mode from process context 2020-12-14 19:28:22 -08:00
ocelot.h net: mscc: ocelot: support L2 multicast entries 2020-10-30 18:25:56 -07:00
ocelot_flower.c net: mscc: ocelot: offload VLAN mangle action to VCAP IS1 2020-10-11 11:19:04 -07:00
ocelot_io.c net: mscc: ocelot: introduce a new ocelot_target_{read,write} API 2020-09-29 18:26:12 -07:00
ocelot_net.c net: mscc: ocelot: install MAC addresses in .ndo_set_rx_mode from process context 2020-12-14 19:28:22 -08:00
ocelot_police.c net: mscc: ocelot: move net_device related functions to ocelot_net.c 2020-06-20 17:25:23 -07:00
ocelot_police.h net: mscc: ocelot: unexpose ocelot_vcap_policer_{add,del} 2020-06-20 17:25:23 -07:00
ocelot_ptp.c net: mscc: ocelot: make ocelot_init_timestamp take a const struct ptp_clock_info 2020-09-18 17:52:40 -07:00
ocelot_qs.h net: mscc: Add initial Ocelot switch support 2018-05-15 16:41:15 -04:00
ocelot_rew.h net: mscc: Add initial Ocelot switch support 2018-05-15 16:41:15 -04:00
ocelot_vcap.c net: mscc: ocelot: relax ocelot_exclusive_mac_etype_filter_rules() 2020-10-02 15:40:30 -07:00
ocelot_vcap.h net: mscc: ocelot: offload egress VLAN rewriting to VCAP ES0 2020-10-02 15:40:30 -07:00
ocelot_vsc7514.c net: mscc: ocelot: fix dropping of unknown IPv4 multicast on Seville 2020-12-05 15:41:34 -08:00