summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/rocker/rocker_ofdpa.c
diff options
context:
space:
mode:
authorIdo Schimmel <idosch@mellanox.com>2016-12-03 16:45:01 +0100
committerDavid S. Miller <davem@davemloft.net>2016-12-03 19:29:35 -0500
commit3057224e014c14921de5ab534d5147eb109fd12b (patch)
treefe8bfff09e3c4c6850fd7fb5b40222070fc88f6b /drivers/net/ethernet/rocker/rocker_ofdpa.c
parenta3832b31898f6936816257c020b1d4f1a07622f7 (diff)
downloadlinux-3057224e014c14921de5ab534d5147eb109fd12b.tar.bz2
mlxsw: spectrum_router: Implement FIB offload in deferred work
FIB offload is currently done in process context with RTNL held, but we're about to dump the FIB tables in RCU critical section, so we can no longer sleep. Instead, defer the operation to process context using deferred work. Make sure fib info isn't freed while the work is queued by taking a reference on it and releasing it after the operation is done. Deferring the operation is valid because the upper layers always assume the operation was successful. If it's not, then the driver-specific abort mechanism is called and all routed traffic is directed to slow path. The work items are submitted to an ordered workqueue to prevent a mismatch between the kernel's FIB table and the device's. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/rocker/rocker_ofdpa.c')
0 files changed, 0 insertions, 0 deletions