Merge branch 'mlxsw-Un-offload-FDB-on-NVE-detach-attach'
authorDavid S. Miller <davem@davemloft.net>
Fri, 7 Dec 2018 20:59:09 +0000 (12:59 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 7 Dec 2018 20:59:09 +0000 (12:59 -0800)
commit9f4c2cffd08c102107992cd01c12c4a53475baf6
tree5d644bf03bf07ae2cacf155241b0824a24b5b611
parent6b241e411607a8f78bee74b96655e9d7835ea8ba
parent55939b262a61d35d3ccde8a388976b946d654dcf
Merge branch 'mlxsw-Un-offload-FDB-on-NVE-detach-attach'

Ido Schimmel says:

====================
mlxsw: Un/offload FDB on NVE detach/attach

Petr says:

When a VXLAN device is attached to a bridge of a driver capable of
offloading such, or upped, the FDB entries already present at the device
need to be offloaded. Similarly when an offloaded VXLAN device ceases
being interesting (it is downed, or detached, or a front-panel port
netdevice is detached from the bridge that the VXLAN device is attached
to), any offloaded FDB entries need to be unoffloaded and unmarked. This
attach / detach processing is implemented in this patchset.

In patch #1, a code pattern is extracted into a named function for
easier reuse.

In patch #2, vxlan_fdb_replay() is added to send
SWITCHDEV_VXLAN_FDB_ADD_TO_DEVICE for each FDB entry with a given VNI.
The intention is that the offloading driver will interpret these events
like any other and thus offload the FDB entries that existed prior to
VXLAN attach.

In patches #3 and #4, the functions vxlan_fdb_clear_offload() resp.
br_fdb_clear_offload() are added. These clear the offloaded flag at
matching FDB entries.

In patches #5-#9, we introduce FID-type-specific and NVE-type-specific
ops necessary to properly abstract invocations of the replay/clear
functions.

Finally patch #10 implements the FDB management.

In patch #11, the mlxsw-specific test case is extended to check that the
management of offload marks under the newly-supported situations is
correct. Patch #12, from Ido, exercises the new code paths in actual
functional test.

v2:
- Patch #1:
    - Modify vxlan_fdb_switchdev_notifier_info() to initialize the
      structure through a passed-in pointer argument, instead of returning
      it as a value.
- Patch #2:
    - Adapt to API change in vxlan_fdb_switchdev_notifier_info()
====================

Signed-off-by: David S. Miller <davem@davemloft.net>