Commit ccc0c9be authored by Jakub Kicinski's avatar Jakub Kicinski

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.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 92a34ab1 992d8a4e
...@@ -3741,12 +3741,11 @@ static int set_feature_arfs(struct net_device *netdev, bool enable) ...@@ -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, ...@@ -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, ...@@ -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;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment