void mlx5e_fs_set_rx_mode_work(struct mlx5e_flow_steering *fs,
struct net_device *netdev)
{
+ struct mlx5e_priv *priv = netdev_priv(netdev);
struct mlx5e_l2_table *ea = &fs->l2;
+ if (mlx5e_is_uplink_rep(priv)) {
+ mlx5e_handle_netdev_addr(fs, netdev);
+ goto update_vport_context;
+ }
+
bool rx_mode_enable = fs->state_destroy;
bool promisc_enabled = rx_mode_enable && (netdev->flags & IFF_PROMISC);
bool allmulti_enabled = rx_mode_enable && (netdev->flags & IFF_ALLMULTI);
ea->allmulti_enabled = allmulti_enabled;
ea->broadcast_enabled = broadcast_enabled;
+update_vport_context:
mlx5e_vport_context_update(fs, netdev);
}
u8 *mc_dmac;
u8 *mv_dmac;
+ if (!ft)
+ return -EINVAL;
+
spec = kvzalloc_obj(*spec);
if (!spec)
return -ENOMEM;
static void mlx5e_nic_set_rx_mode(struct mlx5e_priv *priv)
{
- if (mlx5e_is_uplink_rep(priv))
- return; /* no rx mode for uplink rep */
-
queue_work(priv->wq, &priv->set_rx_mode_work);
}
netdev_unlock(priv->netdev);
rtnl_unlock();
+ /* clean-up uplink's mpfs mac table */
+ queue_work(priv->wq, &priv->set_rx_mode_work);
mlx5e_rep_bridge_cleanup(priv);
mlx5e_dcbnl_delete_app(priv);
mlx5_notifier_unregister(mdev, &priv->events_nb);