net/mlx5e: Move the LRO-XSK check to mlx5e_fix_features
LRO is mutually exclusive with XSK. When LRO is enabled, it checks whether XSK is active. This commit moves this check to a more correct place at mlx5e_fix_features. Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com> Reviewed-by: Tariq Toukan <tariqt@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
committed by
Saeed Mahameed
parent
f7434ba0ab
commit
1c31cb9221
@@ -3594,13 +3594,6 @@ static int set_feature_lro(struct net_device *netdev, bool enable)
|
|||||||
|
|
||||||
mutex_lock(&priv->state_lock);
|
mutex_lock(&priv->state_lock);
|
||||||
|
|
||||||
if (enable && priv->xsk.refcnt) {
|
|
||||||
netdev_warn(netdev, "LRO is incompatible with AF_XDP (%u XSKs are active)\n",
|
|
||||||
priv->xsk.refcnt);
|
|
||||||
err = -EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
cur_params = &priv->channels.params;
|
cur_params = &priv->channels.params;
|
||||||
if (enable && !MLX5E_GET_PFLAG(cur_params, MLX5E_PFLAG_RX_STRIDING_RQ)) {
|
if (enable && !MLX5E_GET_PFLAG(cur_params, MLX5E_PFLAG_RX_STRIDING_RQ)) {
|
||||||
netdev_warn(netdev, "can't set LRO with legacy RQ\n");
|
netdev_warn(netdev, "can't set LRO with legacy RQ\n");
|
||||||
@@ -3916,6 +3909,11 @@ static netdev_features_t mlx5e_fix_features(struct net_device *netdev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (priv->xsk.refcnt) {
|
if (priv->xsk.refcnt) {
|
||||||
|
if (features & NETIF_F_LRO) {
|
||||||
|
netdev_warn(netdev, "LRO is incompatible with AF_XDP (%u XSKs are active)\n",
|
||||||
|
priv->xsk.refcnt);
|
||||||
|
features &= ~NETIF_F_LRO;
|
||||||
|
}
|
||||||
if (features & NETIF_F_GRO_HW) {
|
if (features & NETIF_F_GRO_HW) {
|
||||||
netdev_warn(netdev, "HW GRO is incompatible with AF_XDP (%u XSKs are active)\n",
|
netdev_warn(netdev, "HW GRO is incompatible with AF_XDP (%u XSKs are active)\n",
|
||||||
priv->xsk.refcnt);
|
priv->xsk.refcnt);
|
||||||
|
|||||||
Reference in New Issue
Block a user