Skip to content

Commit ef91843

Browse files
Achiad Shochatdavem330
authored andcommitted
net/mlx5e: Support DCBNL IEEE PFC
Implement the set/get DCBNL IEEE PFC callbacks. Signed-off-by: Achiad Shochat <achiad@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 08fb1da commit ef91843

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,43 @@ static int mlx5e_dcbnl_ieee_setets(struct net_device *netdev,
166166
return 0;
167167
}
168168

169+
static int mlx5e_dcbnl_ieee_getpfc(struct net_device *dev,
170+
struct ieee_pfc *pfc)
171+
{
172+
struct mlx5e_priv *priv = netdev_priv(dev);
173+
struct mlx5_core_dev *mdev = priv->mdev;
174+
175+
pfc->pfc_cap = mlx5_max_tc(mdev) + 1;
176+
177+
return mlx5_query_port_pfc(mdev, &pfc->pfc_en, NULL);
178+
}
179+
180+
static int mlx5e_dcbnl_ieee_setpfc(struct net_device *dev,
181+
struct ieee_pfc *pfc)
182+
{
183+
struct mlx5e_priv *priv = netdev_priv(dev);
184+
struct mlx5_core_dev *mdev = priv->mdev;
185+
enum mlx5_port_status ps;
186+
u8 curr_pfc_en;
187+
int ret;
188+
189+
mlx5_query_port_pfc(mdev, &curr_pfc_en, NULL);
190+
191+
if (pfc->pfc_en == curr_pfc_en)
192+
return 0;
193+
194+
mlx5_query_port_admin_status(mdev, &ps);
195+
if (ps == MLX5_PORT_UP)
196+
mlx5_set_port_admin_status(mdev, MLX5_PORT_DOWN);
197+
198+
ret = mlx5_set_port_pfc(mdev, pfc->pfc_en, pfc->pfc_en);
199+
200+
if (ps == MLX5_PORT_UP)
201+
mlx5_set_port_admin_status(mdev, MLX5_PORT_UP);
202+
203+
return ret;
204+
}
205+
169206
static u8 mlx5e_dcbnl_getdcbx(struct net_device *dev)
170207
{
171208
return DCB_CAP_DCBX_HOST | DCB_CAP_DCBX_VER_IEEE;
@@ -185,6 +222,8 @@ static u8 mlx5e_dcbnl_setdcbx(struct net_device *dev, u8 mode)
185222
const struct dcbnl_rtnl_ops mlx5e_dcbnl_ops = {
186223
.ieee_getets = mlx5e_dcbnl_ieee_getets,
187224
.ieee_setets = mlx5e_dcbnl_ieee_setets,
225+
.ieee_getpfc = mlx5e_dcbnl_ieee_getpfc,
226+
.ieee_setpfc = mlx5e_dcbnl_ieee_setpfc,
188227
.getdcbx = mlx5e_dcbnl_getdcbx,
189228
.setdcbx = mlx5e_dcbnl_setdcbx,
190229
};

0 commit comments

Comments
 (0)