From: David Ahern <d...@cumulusnetworks.com> Date: Tue, 27 Mar 2018 18:21:54 -0700
> I wanted to revisit how resource overload is handled for hardware offload > of FIB entries and rules. At the moment, the in-kernel fib notifier can > tell a driver about a route or rule add, replace, and delete, but the > notifier can not affect the action. Specifically, in the case of mlxsw > if a route or rule add is going to overflow the ASIC resources the only > recourse is to abort hardware offload. Aborting offload is akin to taking > down the switch as the path from data plane to the control plane simply > can not support the traffic bandwidth of the front panel ports. Further, > the current state of FIB notifiers is inconsistent with other resources > where a driver can affect a user request - e.g., enslavement of a port > into a bridge or a VRF. > > As a result of the work done over the past 3+ years, I believe we are > at a point where we can bring consistency to the stack and offloads, > and reliably allow the FIB notifiers to fail a request, pushing an error > along with a suitable error message back to the user. Rather than > aborting offload when the switch is out of resources, userspace is simply > prevented from adding more routes and has a clear indication of why. > > This set does not resolve the corner case where rules or routes not > supported by the device are installed prior to the driver getting loaded > and registering for FIB notifications. In that case, hardware offload has > not been established and it can refuse to offload anything, sending > errors back to userspace via extack. Since conceptually the driver owns > the netdevices associated with its asic, this corner case mainly applies > to unsupported rules and any races during the bringup phase. > > Patch 1 fixes call_fib_notifiers to extract the errno from the encoded > response from handlers. > > Patches 2-5 allow the call to call_fib_notifiers to fail the add or > replace of a route or rule. > > Patch 6 adds a simple resource controller to netdevsim to illustrate > how a FIB resource controller can limit the number of route entries. Series applied, thanks David.