On Tue, Mar 11, 2025 at 12:01:44AM +0200, Tariq Toukan wrote: > From: Carolina Jubran <cjubran@xxxxxxxxxx> > > mlx5_eswitch_get_vepa returns -EPERM if the device lacks > eswitch_manager capability, blocking mlx5e_bridge_getlink from > retrieving VEPA mode. Since mlx5e_bridge_getlink implements > ndo_bridge_getlink, returning -EPERM causes bridge link show to fail > instead of skipping devices without this capability. > > To avoid this, return -EOPNOTSUPP from mlx5e_bridge_getlink when > mlx5_eswitch_get_vepa fails, ensuring the command continues processing > other devices while ignoring those without the necessary capability. > > Fixes: 4b89251de024 ("net/mlx5: Support ndo bridge_setlink and getlink") > Signed-off-by: Carolina Jubran <cjubran@xxxxxxxxxx> > Reviewed-by: Jianbo Liu <jianbol@xxxxxxxxxx> > Signed-off-by: Tariq Toukan <tariqt@xxxxxxxxxx> > --- > drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c > index a814b63ed97e..8fcaee381b0e 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c > @@ -5132,11 +5132,9 @@ static int mlx5e_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq, > struct mlx5e_priv *priv = netdev_priv(dev); > struct mlx5_core_dev *mdev = priv->mdev; > u8 mode, setting; > - int err; > > - err = mlx5_eswitch_get_vepa(mdev->priv.eswitch, &setting); > - if (err) > - return err; > + if (mlx5_eswitch_get_vepa(mdev->priv.eswitch, &setting)) > + return -EOPNOTSUPP; > mode = setting ? BRIDGE_MODE_VEPA : BRIDGE_MODE_VEB; > return ndo_dflt_bridge_getlink(skb, pid, seq, dev, > mode, Reviewed-by: Michal Swiatkowski <michal.swiatkowski@xxxxxxxxxxxxxxx> > -- > 2.31.1