goto err_port_vport_create;
        }
 
+       fid = mlxsw_sp_vfid_to_fid(vfid->vfid);
        if (!vfid->nr_vports) {
-               err = mlxsw_sp_vport_flood_set(mlxsw_sp_vport, vfid->vfid,
-                                              true);
+               err = mlxsw_sp_vport_flood_set(mlxsw_sp_vport, fid, true);
                if (err) {
                        netdev_err(dev, "Failed to setup flooding for vFID=%d\n",
                                   vfid->vfid);
                }
        }
 
-       fid = mlxsw_sp_vfid_to_fid(vfid->vfid);
        err = mlxsw_sp_vport_fid_map(mlxsw_sp_vport, fid, true);
        if (err) {
                netdev_err(dev, "Failed to map {Port, VID=%d} to vFID=%d\n",
                mlxsw_sp_port_vlan_mode_trans(mlxsw_sp_port);
 err_port_vp_mode_trans:
        if (!vfid->nr_vports)
-               mlxsw_sp_vport_flood_set(mlxsw_sp_vport, vfid->vfid, false);
+               mlxsw_sp_vport_flood_set(mlxsw_sp_vport, fid, false);
 err_vport_flood_set:
        mlxsw_sp_port_vport_destroy(mlxsw_sp_vport);
 err_port_vport_create:
                goto err_port_vid_learning_set;
        }
 
-       err = mlxsw_sp_vport_flood_set(mlxsw_sp_vport, vfid->vfid, false);
+       err = mlxsw_sp_vport_flood_set(mlxsw_sp_vport, fid, false);
        if (err) {
                netdev_err(dev, "Failed clear to clear flooding\n");
                goto err_vport_flood_set;
                }
        }
 
-       err = mlxsw_sp_vport_flood_set(mlxsw_sp_vport, vfid->vfid, true);
+       fid = mlxsw_sp_vfid_to_fid(vfid->vfid);
+       err = mlxsw_sp_vport_flood_set(mlxsw_sp_vport, fid, true);
        if (err) {
                netdev_err(dev, "Failed to setup flooding for vFID=%d\n",
                           vfid->vfid);
                goto err_vport_fid_unmap;
        }
 
-       fid = mlxsw_sp_vfid_to_fid(vfid->vfid);
        err = mlxsw_sp_vport_fid_map(mlxsw_sp_vport, fid, true);
        if (err) {
                netdev_err(dev, "Failed to map {Port, VID} to vFID=%d\n",
 err_vport_fid_unmap:
        mlxsw_sp_port_vid_learning_set(mlxsw_sp_vport, vid, false);
 err_port_vid_learning_set:
-       mlxsw_sp_vport_flood_set(mlxsw_sp_vport, vfid->vfid, false);
+       mlxsw_sp_vport_flood_set(mlxsw_sp_vport, fid, false);
 err_port_flood_set:
        if (!vfid->nr_vports)
                mlxsw_sp_br_vfid_destroy(mlxsw_sp, vfid);
 
                          u16 vid);
 int mlxsw_sp_port_kill_vid(struct net_device *dev,
                           __be16 __always_unused proto, u16 vid);
-int mlxsw_sp_vport_flood_set(struct mlxsw_sp_port *mlxsw_sp_vport, u16 vfid,
+int mlxsw_sp_vport_flood_set(struct mlxsw_sp_port *mlxsw_sp_vport, u16 fid,
                             bool set);
 void mlxsw_sp_port_active_vlans_del(struct mlxsw_sp_port *mlxsw_sp_port);
 int mlxsw_sp_port_pvid_set(struct mlxsw_sp_port *mlxsw_sp_port, u16 vid);
 
        return err;
 }
 
-int mlxsw_sp_vport_flood_set(struct mlxsw_sp_port *mlxsw_sp_vport, u16 vfid,
+int mlxsw_sp_vport_flood_set(struct mlxsw_sp_port *mlxsw_sp_vport, u16 fid,
                             bool set)
 {
+       u16 vfid;
+
        /* In case of vFIDs, index into the flooding table is relative to
         * the start of the vFIDs range.
         */
+       vfid = mlxsw_sp_fid_to_vfid(fid);
        return __mlxsw_sp_port_flood_set(mlxsw_sp_vport, vfid, vfid, set,
                                         false);
 }