linux-hardened/drivers/net/ethernet/mellanox/mlxsw
Ido Schimmel a69518cf0b mlxsw: spectrum_router: Avoid expensive lookup during route removal
In commit fc922bb0dd ("mlxsw: spectrum_router: Use one LPM tree for
all virtual routers") I increased the scale of supported VRFs by having
all of them share the same LPM tree.

In order to avoid look-ups for prefix lengths that don't exist, each
route removal would trigger an aggregation across all the active virtual
routers to see which prefix lengths are in use and which aren't and
structure the tree accordingly.

With the way the data structures are currently laid out, this is a very
expensive operation. When preformed repeatedly - due to the invocation
of the abort mechanism - and with enough VRFs, this can result in a hung
task.

For now, avoid this optimization until it can be properly re-added in
net-next.

Fixes: fc922bb0dd ("mlxsw: spectrum_router: Use one LPM tree for all virtual routers")
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Reported-by: David Ahern <dsa@cumulusnetworks.com>
Tested-by: David Ahern <dsa@cumulusnetworks.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-10-08 10:05:27 -07:00
..
cmd.h mlxsw: pci: Remove unused bit 2017-03-08 23:17:38 -08:00
core.c mlxsw: core: Use correct EMAD transaction ID in debug message 2017-08-02 16:58:49 -07:00
core.h mlxsw: core: Create the mlxsw_fw_rev struct 2017-05-25 17:46:17 -04:00
core_acl_flex_actions.c acl: Introduce ACL trap action 2017-06-06 12:45:24 -04:00
core_acl_flex_actions.h acl: Introduce ACL trap action 2017-06-06 12:45:24 -04:00
core_acl_flex_keys.c mlxsw: core: Introduce flexible keys support 2017-02-03 16:35:41 -05:00
core_acl_flex_keys.h mlxsw: acl: Add ip tos acl element 2017-07-17 09:18:23 -07:00
core_hwmon.c mlxsw: core: Zero payload buffers for couple of registers 2016-10-30 16:50:17 -04:00
core_thermal.c mlxsw: core: Implement thermal zone 2016-11-22 10:04:19 -05:00
emad.h
i2c.c mlxsw: Fix mlxsw_i2c_write return value 2017-01-09 14:35:13 -05:00
i2c.h mlxsw: Introduce support for I2C bus 2016-11-16 23:29:04 -05:00
ib.h mlxsw: switchx2: Add IB port support 2016-10-30 16:50:17 -04:00
item.h mlxsw: item: Add helpers for getting pointer into payload for char buffer item 2017-02-03 16:35:38 -05:00
Kconfig mlxsw: spectrum_router: Add support for IPv6 routes addition / deletion 2017-08-03 15:36:00 -07:00
Makefile mlxsw: spectrum_router: Add mlxsw_sp_ipip_ops 2017-09-03 20:23:25 -07:00
minimal.c mlxsw: minimal: Add I2C support for Mellanox ASICs 2016-11-16 23:29:04 -05:00
pci.c mlxsw: convert to pci_alloc_irq_vectors 2017-04-11 11:16:03 -04:00
pci.h mlxsw: switchib: Introduce SwitchIB and SwitchIB silicon driver 2016-10-30 16:50:17 -04:00
pci_hw.h mlxsw: pci: Fix size of trap_id field in CQE 2017-06-06 12:45:23 -04:00
port.h mlxsw: Query maximum number of ports from firmware 2017-03-24 13:53:28 -07:00
reg.h mlxsw: reg: Give mlxsw_reg_ratr_pack a type parameter 2017-09-03 20:23:25 -07:00
resources.h mlxsw: spectrum: Support for counters on router interfaces 2017-03-28 17:11:55 -07:00
spectrum.c mlxsw: spectrum: Prevent mirred-related crash on removal 2017-09-12 20:42:29 -07:00
spectrum.h mlxsw: spectrum_router: Introduce loopback RIFs 2017-09-03 20:23:25 -07:00
spectrum_acl.c mlxsw: spectrum_acl: Provide helper to lookup ruleset 2017-08-23 20:44:32 -07:00
spectrum_acl_flex_keys.h mlxsw: spectrum: Add tos to the ipv4 acl block 2017-07-17 09:18:23 -07:00
spectrum_acl_tcam.c mlxsw: spectrum_acl: Allow to get group_id value for a ruleset 2017-08-23 20:44:32 -07:00
spectrum_buffers.c mlxsw: spectrum_buffer: Reduce scope of shared buffer struct 2017-05-17 14:06:54 -04:00
spectrum_cnt.c mlxsw: spectrum: Support for counters on router interfaces 2017-03-28 17:11:55 -07:00
spectrum_cnt.h mlxsw: spectrum: Support for counters on router interfaces 2017-03-28 17:11:55 -07:00
spectrum_dcb.c mlxsw: spectrum: Do not override PAUSE settings 2016-08-08 12:57:27 -07:00
spectrum_dpipe.c mlxsw: spectrum_dpipe: Add support for controlling IPv6 neighbor counters 2017-08-31 14:42:19 -07:00
spectrum_dpipe.h mlxsw: spectrum_dpipe: Add IPv6 host table initial support 2017-08-31 14:42:19 -07:00
spectrum_fid.c mlxsw: spectrum: Improve IPv6 unregistered multicast flooding 2017-07-17 09:19:39 -07:00
spectrum_flower.c mlxsw: spectrum_flower: Offload goto_chain termination action 2017-08-23 20:44:32 -07:00
spectrum_ipip.c mlxsw: spectrum_router: Support GRE tunnels 2017-09-03 20:23:26 -07:00
spectrum_ipip.h mlxsw: spectrum_router: Support GRE tunnels 2017-09-03 20:23:26 -07:00
spectrum_kvdl.c mlxsw: spectrum_kvdl: Cosmetic kvdl allocator API change 2017-03-25 19:56:15 -07:00
spectrum_router.c mlxsw: spectrum_router: Avoid expensive lookup during route removal 2017-10-08 10:05:27 -07:00
spectrum_router.h mlxsw: spectrum_router: Support GRE tunnels 2017-09-03 20:23:26 -07:00
spectrum_switchdev.c mlxsw: spectrum_switchdev: Fix mrouter flag update 2017-08-22 14:22:54 -07:00
switchib.c mlxsw: make mlxsw_config_profile const 2017-08-11 14:57:04 -07:00
switchx2.c mlxsw: make mlxsw_config_profile const 2017-08-11 14:57:04 -07:00
trap.h mlxsw: spectrum: Register for IPIP_DECAP_ERROR trap 2017-09-03 20:23:26 -07:00
txheader.h