@@ -3593,9 +3593,9 @@ static int mlx5e_set_mac(struct net_device *netdev, void *addr)
#define MLX5E_SET_FEATURE(features, feature, enable) \
do { \
if (enable) \
- *features |= feature; \
+ netdev_feature_add(feature, *(features)); \
else \
- *features &= ~feature; \
+ netdev_feature_del(feature, *(features)); \
} while (0)
typedef int (*mlx5e_feature_handler)(struct net_device *netdev, bool enable);
@@ -3839,21 +3839,21 @@ static int set_feature_arfs(struct net_device *netdev, bool enable)
static int mlx5e_handle_feature(struct net_device *netdev,
netdev_features_t *features,
- netdev_features_t feature,
+ unsigned short feature_bit,
mlx5e_feature_handler feature_handler)
{
netdev_features_t changes = *features ^ netdev->features;
- bool enable = !!(*features & feature);
+ bool enable = netdev_feature_test(feature_bit, *features);
int err;
- if (!(changes & feature))
+ if (!netdev_feature_test(feature_bit, changes))
return 0;
err = feature_handler(netdev, enable);
if (err) {
- MLX5E_SET_FEATURE(features, feature, !enable);
- netdev_err(netdev, "%s feature %pNF failed, err %d\n",
- enable ? "Enable" : "Disable", &feature, err);
+ MLX5E_SET_FEATURE(features, feature_bit, !enable);
+ netdev_err(netdev, "%s feature bit %u failed, err %d\n",
+ enable ? "Enable" : "Disable", feature_bit, err);
return err;
}
@@ -3865,21 +3865,23 @@ int mlx5e_set_features(struct net_device *netdev, netdev_features_t features)
netdev_features_t oper_features = features;
int err = 0;
-#define MLX5E_HANDLE_FEATURE(feature, handler) \
- mlx5e_handle_feature(netdev, &oper_features, feature, handler)
+#define MLX5E_HANDLE_FEATURE(feature_bit, handler) \
+ mlx5e_handle_feature(netdev, &oper_features, feature_bit, handler)
- 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_HW_VLAN_CTAG_FILTER,
+ err |= MLX5E_HANDLE_FEATURE(NETIF_F_LRO_BIT, set_feature_lro);
+ err |= MLX5E_HANDLE_FEATURE(NETIF_F_GRO_HW_BIT, set_feature_hw_gro);
+ err |= MLX5E_HANDLE_FEATURE(NETIF_F_HW_VLAN_CTAG_FILTER_BIT,
set_feature_cvlan_filter);
- err |= MLX5E_HANDLE_FEATURE(NETIF_F_HW_TC, set_feature_hw_tc);
- err |= MLX5E_HANDLE_FEATURE(NETIF_F_RXALL, set_feature_rx_all);
- err |= MLX5E_HANDLE_FEATURE(NETIF_F_RXFCS, set_feature_rx_fcs);
- err |= MLX5E_HANDLE_FEATURE(NETIF_F_HW_VLAN_CTAG_RX, set_feature_rx_vlan);
+ err |= MLX5E_HANDLE_FEATURE(NETIF_F_HW_TC_BIT, set_feature_hw_tc);
+ err |= MLX5E_HANDLE_FEATURE(NETIF_F_RXALL_BIT, set_feature_rx_all);
+ err |= MLX5E_HANDLE_FEATURE(NETIF_F_RXFCS_BIT, set_feature_rx_fcs);
+ err |= MLX5E_HANDLE_FEATURE(NETIF_F_HW_VLAN_CTAG_RX_BIT,
+ set_feature_rx_vlan);
#ifdef CONFIG_MLX5_EN_ARFS
- err |= MLX5E_HANDLE_FEATURE(NETIF_F_NTUPLE, set_feature_arfs);
+ err |= MLX5E_HANDLE_FEATURE(NETIF_F_NTUPLE_BIT, set_feature_arfs);
#endif
- err |= MLX5E_HANDLE_FEATURE(NETIF_F_HW_TLS_RX, mlx5e_ktls_set_feature_rx);
+ err |= MLX5E_HANDLE_FEATURE(NETIF_F_HW_TLS_RX_BIT,
+ mlx5e_ktls_set_feature_rx);
if (err) {
netdev->features = oper_features;
The macroes MLX5E_SET_FEATURE and MLX5E_HANDLE_FEATURE use NETIF_F_XXX as parameter directly, change it to NETIF_F_XXX_BIT, for all the NETIF_F_XXX macroes will be removed later. Signed-off-by: Jian Shen <shenjian15@huawei.com> --- .../net/ethernet/mellanox/mlx5/core/en_main.c | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-)