From: Ido Schimmel <ido...@nvidia.com>

Subsequent patches will need to report locked FDB entries to the bridge
driver. Prepare for that by adding a 'locked' argument to
mlxsw_sp_fdb_call_notifiers() according to which the 'locked' bit is set
in the FDB notification info. For now, always pass 'false'.

Signed-off-by: Ido Schimmel <ido...@nvidia.com>
Reviewed-by: Petr Machata <pe...@nvidia.com>
Signed-off-by: Petr Machata <pe...@nvidia.com>
---
 .../mellanox/mlxsw/spectrum_switchdev.c       | 21 ++++++++++++-------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c 
b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index 4efccd942fb8..0fbefa43f9b1 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -2888,13 +2888,14 @@ static void mlxsw_sp_fdb_nve_call_notifiers(struct 
net_device *dev,
 static void
 mlxsw_sp_fdb_call_notifiers(enum switchdev_notifier_type type,
                            const char *mac, u16 vid,
-                           struct net_device *dev, bool offloaded)
+                           struct net_device *dev, bool offloaded, bool locked)
 {
        struct switchdev_notifier_fdb_info info = {};
 
        info.addr = mac;
        info.vid = vid;
        info.offloaded = offloaded;
+       info.locked = locked;
        call_switchdev_notifiers(type, dev, &info.info, NULL);
 }
 
@@ -2952,7 +2953,8 @@ static void mlxsw_sp_fdb_notify_mac_process(struct 
mlxsw_sp *mlxsw_sp,
        if (!do_notification)
                return;
        type = adding ? SWITCHDEV_FDB_ADD_TO_BRIDGE : 
SWITCHDEV_FDB_DEL_TO_BRIDGE;
-       mlxsw_sp_fdb_call_notifiers(type, mac, vid, bridge_port->dev, adding);
+       mlxsw_sp_fdb_call_notifiers(type, mac, vid, bridge_port->dev, adding,
+                                   false);
 
        return;
 
@@ -3015,7 +3017,8 @@ static void mlxsw_sp_fdb_notify_mac_lag_process(struct 
mlxsw_sp *mlxsw_sp,
        if (!do_notification)
                return;
        type = adding ? SWITCHDEV_FDB_ADD_TO_BRIDGE : 
SWITCHDEV_FDB_DEL_TO_BRIDGE;
-       mlxsw_sp_fdb_call_notifiers(type, mac, vid, bridge_port->dev, adding);
+       mlxsw_sp_fdb_call_notifiers(type, mac, vid, bridge_port->dev, adding,
+                                   false);
 
        return;
 
@@ -3122,7 +3125,7 @@ static void 
mlxsw_sp_fdb_notify_mac_uc_tunnel_process(struct mlxsw_sp *mlxsw_sp,
 
        type = adding ? SWITCHDEV_FDB_ADD_TO_BRIDGE :
                        SWITCHDEV_FDB_DEL_TO_BRIDGE;
-       mlxsw_sp_fdb_call_notifiers(type, mac, vid, nve_dev, adding);
+       mlxsw_sp_fdb_call_notifiers(type, mac, vid, nve_dev, adding, false);
 
        mlxsw_sp_fid_put(fid);
 
@@ -3264,7 +3267,7 @@ mlxsw_sp_switchdev_bridge_vxlan_fdb_event(struct mlxsw_sp 
*mlxsw_sp,
                                         &vxlan_fdb_info.info, NULL);
                mlxsw_sp_fdb_call_notifiers(SWITCHDEV_FDB_OFFLOADED,
                                            vxlan_fdb_info.eth_addr,
-                                           fdb_info->vid, dev, true);
+                                           fdb_info->vid, dev, true, false);
                break;
        case SWITCHDEV_FDB_DEL_TO_DEVICE:
                err = mlxsw_sp_port_fdb_tunnel_uc_op(mlxsw_sp,
@@ -3359,7 +3362,7 @@ static void 
mlxsw_sp_switchdev_bridge_fdb_event_work(struct work_struct *work)
                        break;
                mlxsw_sp_fdb_call_notifiers(SWITCHDEV_FDB_OFFLOADED,
                                            fdb_info->addr,
-                                           fdb_info->vid, dev, true);
+                                           fdb_info->vid, dev, true, false);
                break;
        case SWITCHDEV_FDB_DEL_TO_DEVICE:
                fdb_info = &switchdev_work->fdb_info;
@@ -3443,7 +3446,8 @@ mlxsw_sp_switchdev_vxlan_fdb_add(struct mlxsw_sp 
*mlxsw_sp,
        call_switchdev_notifiers(SWITCHDEV_VXLAN_FDB_OFFLOADED, dev,
                                 &vxlan_fdb_info->info, NULL);
        mlxsw_sp_fdb_call_notifiers(SWITCHDEV_FDB_OFFLOADED,
-                                   vxlan_fdb_info->eth_addr, vid, dev, true);
+                                   vxlan_fdb_info->eth_addr, vid, dev, true,
+                                   false);
 
        mlxsw_sp_fid_put(fid);
 
@@ -3493,7 +3497,8 @@ mlxsw_sp_switchdev_vxlan_fdb_del(struct mlxsw_sp 
*mlxsw_sp,
                                       false, false);
        vid = bridge_device->ops->fid_vid(bridge_device, fid);
        mlxsw_sp_fdb_call_notifiers(SWITCHDEV_FDB_OFFLOADED,
-                                   vxlan_fdb_info->eth_addr, vid, dev, false);
+                                   vxlan_fdb_info->eth_addr, vid, dev, false,
+                                   false);
 
        mlxsw_sp_fid_put(fid);
 }
-- 
2.35.3

Reply via email to