* [PATCH net-next V2] net/mlx5e: Allow set_rx_mode on uplink representor
@ 2026-03-19 0:54 Saeed Mahameed
2026-03-21 3:20 ` patchwork-bot+netdevbpf
0 siblings, 1 reply; 2+ messages in thread
From: Saeed Mahameed @ 2026-03-19 0:54 UTC (permalink / raw)
To: David S. Miller, Jakub Kicinski, Paolo Abeni, Eric Dumazet
Cc: Saeed Mahameed, netdev, Tariq Toukan, Gal Pressman,
Leon Romanovsky, Mark Bloch
From: Saeed Mahameed <saeedm@nvidia.com>
set_rx_mode handler was skipped on uplink representor, since uplink
relies on FDB to forward all traffic to it by default, which works
perfectly on a single PF per physical port configuration, as explicit
mac request isn't required, but In case of multi-host and DPU
environments, uplink can only use own mac address, as set_rx_mode
wasn't honored in uplink rep.
Since MPFs (Multi PF switch) requires PFs to request explicit mac
forwarding, this patch enables set_rx_mode on uplink representor to
allow PF mac programming into MPFs table in switchdev mode, allowing
use-cases such as arbitrary mac address forwarding via linux bridge.
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
- Improve title and commit message -- Kuba.
v[1]: https://lore.kernel.org/netdev/20260310104841.1862380-1-tariqt@nvidia.com/
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c | 10 ++++++++++
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 3 ---
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 2 ++
3 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c b/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
index 9352e2183312..d7556d611155 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
@@ -823,8 +823,14 @@ static void mlx5e_destroy_promisc_table(struct mlx5e_flow_steering *fs)
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);
@@ -864,6 +870,7 @@ void mlx5e_fs_set_rx_mode_work(struct mlx5e_flow_steering *fs,
ea->allmulti_enabled = allmulti_enabled;
ea->broadcast_enabled = broadcast_enabled;
+update_vport_context:
mlx5e_vport_context_update(fs, netdev);
}
@@ -984,6 +991,9 @@ static int mlx5e_add_l2_flow_rule(struct mlx5e_flow_steering *fs,
u8 *mc_dmac;
u8 *mv_dmac;
+ if (!ft)
+ return -EINVAL;
+
spec = kvzalloc_obj(*spec);
if (!spec)
return -ENOMEM;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index f7009da94f0b..3eebdf402129 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -4102,9 +4102,6 @@ mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
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);
}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
index 1db4ecb2356f..8992f0f7a870 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
@@ -1369,6 +1369,8 @@ static void mlx5e_uplink_rep_disable(struct mlx5e_priv *priv)
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);
--
2.43.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH net-next V2] net/mlx5e: Allow set_rx_mode on uplink representor
2026-03-19 0:54 [PATCH net-next V2] net/mlx5e: Allow set_rx_mode on uplink representor Saeed Mahameed
@ 2026-03-21 3:20 ` patchwork-bot+netdevbpf
0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-03-21 3:20 UTC (permalink / raw)
To: Saeed Mahameed
Cc: davem, kuba, pabeni, edumazet, saeedm, netdev, tariqt, gal,
leonro, mbloch
Hello:
This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Wed, 18 Mar 2026 17:54:56 -0700 you wrote:
> From: Saeed Mahameed <saeedm@nvidia.com>
>
> set_rx_mode handler was skipped on uplink representor, since uplink
> relies on FDB to forward all traffic to it by default, which works
> perfectly on a single PF per physical port configuration, as explicit
> mac request isn't required, but In case of multi-host and DPU
> environments, uplink can only use own mac address, as set_rx_mode
> wasn't honored in uplink rep.
>
> [...]
Here is the summary with links:
- [net-next,V2] net/mlx5e: Allow set_rx_mode on uplink representor
https://git.kernel.org/netdev/net-next/c/609e79253ace
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-03-21 3:20 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-19 0:54 [PATCH net-next V2] net/mlx5e: Allow set_rx_mode on uplink representor Saeed Mahameed
2026-03-21 3:20 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox