summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/rocker
diff options
context:
space:
mode:
authorIdo Schimmel <idosch@mellanox.com>2016-12-03 18:45:01 +0300
committerDavid S. Miller <davem@davemloft.net>2016-12-04 03:29:35 +0300
commit3057224e014c14921de5ab534d5147eb109fd12b (patch)
treefe8bfff09e3c4c6850fd7fb5b40222070fc88f6b /drivers/net/ethernet/rocker
parenta3832b31898f6936816257c020b1d4f1a07622f7 (diff)
downloadlinux-3057224e014c14921de5ab534d5147eb109fd12b.tar.xz
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')
0 files changed, 0 insertions, 0 deletions