Merge tag 'mlx5-fixes-2021-12-28' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux
Saeed Mahameed says: ==================== mlx5 fixes 2021-12-28 This series provides bug fixes to mlx5 driver. * tag 'mlx5-fixes-2021-12-28' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux: net/mlx5e: Fix wrong features assignment in case of error net/mlx5e: TC, Fix memory leak with rules with internal port ==================== Link: https://lore.kernel.org/r/20211229065352.30178-1-saeed@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -3741,12 +3741,11 @@ static int set_feature_arfs(struct net_device *netdev, bool enable)
|
|||||||
|
|
||||||
static int mlx5e_handle_feature(struct net_device *netdev,
|
static int mlx5e_handle_feature(struct net_device *netdev,
|
||||||
netdev_features_t *features,
|
netdev_features_t *features,
|
||||||
netdev_features_t wanted_features,
|
|
||||||
netdev_features_t feature,
|
netdev_features_t feature,
|
||||||
mlx5e_feature_handler feature_handler)
|
mlx5e_feature_handler feature_handler)
|
||||||
{
|
{
|
||||||
netdev_features_t changes = wanted_features ^ netdev->features;
|
netdev_features_t changes = *features ^ netdev->features;
|
||||||
bool enable = !!(wanted_features & feature);
|
bool enable = !!(*features & feature);
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (!(changes & feature))
|
if (!(changes & feature))
|
||||||
@@ -3754,22 +3753,22 @@ static int mlx5e_handle_feature(struct net_device *netdev,
|
|||||||
|
|
||||||
err = feature_handler(netdev, enable);
|
err = feature_handler(netdev, enable);
|
||||||
if (err) {
|
if (err) {
|
||||||
|
MLX5E_SET_FEATURE(features, feature, !enable);
|
||||||
netdev_err(netdev, "%s feature %pNF failed, err %d\n",
|
netdev_err(netdev, "%s feature %pNF failed, err %d\n",
|
||||||
enable ? "Enable" : "Disable", &feature, err);
|
enable ? "Enable" : "Disable", &feature, err);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
MLX5E_SET_FEATURE(features, feature, enable);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mlx5e_set_features(struct net_device *netdev, netdev_features_t features)
|
int mlx5e_set_features(struct net_device *netdev, netdev_features_t features)
|
||||||
{
|
{
|
||||||
netdev_features_t oper_features = netdev->features;
|
netdev_features_t oper_features = features;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
#define MLX5E_HANDLE_FEATURE(feature, handler) \
|
#define MLX5E_HANDLE_FEATURE(feature, handler) \
|
||||||
mlx5e_handle_feature(netdev, &oper_features, features, feature, handler)
|
mlx5e_handle_feature(netdev, &oper_features, feature, handler)
|
||||||
|
|
||||||
err |= MLX5E_HANDLE_FEATURE(NETIF_F_LRO, set_feature_lro);
|
err |= MLX5E_HANDLE_FEATURE(NETIF_F_LRO, set_feature_lro);
|
||||||
err |= MLX5E_HANDLE_FEATURE(NETIF_F_GRO_HW, set_feature_hw_gro);
|
err |= MLX5E_HANDLE_FEATURE(NETIF_F_GRO_HW, set_feature_hw_gro);
|
||||||
|
@@ -1441,6 +1441,8 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv,
|
|||||||
metadata);
|
metadata);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_out;
|
goto err_out;
|
||||||
|
|
||||||
|
attr->action |= MLX5_FLOW_CONTEXT_ACTION_MOD_HDR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user