All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jian Shen <shenjian15@huawei.com>
To: <davem@davemloft.net>, <kuba@kernel.org>, <andrew@lunn.ch>,
	<hkallweit1@gmail.com>
Cc: <netdev@vger.kernel.org>, <linuxarm@openeuler.org>
Subject: [RFCv2 net-next 166/167] treewide: introduce macro __DECLARE_NETDEV_FEATURE_MASK
Date: Wed, 29 Sep 2021 23:53:33 +0800	[thread overview]
Message-ID: <20210929155334.12454-167-shenjian15@huawei.com> (raw)
In-Reply-To: <20210929155334.12454-1-shenjian15@huawei.com>

Introduce macro __DECLARE_NETDEV_FEATURE_MASK for declare
netdev_features_t. In the next patch, the macro will be
replaced by DECLARE_BITMAP(name, NETDEV_FEATURE_COUNT).

Signed-off-by: Jian Shen <shenjian15@huawei.com>
---
 drivers/net/bonding/bond_main.c               | 20 +++++++++----------
 drivers/net/ethernet/amazon/ena/ena_netdev.c  |  2 +-
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c      |  2 +-
 drivers/net/ethernet/amd/xgbe/xgbe.h          |  2 +-
 .../net/ethernet/aquantia/atlantic/aq_nic.h   |  2 +-
 .../net/ethernet/atheros/atl1c/atl1c_main.c   |  2 +-
 .../net/ethernet/atheros/atl1e/atl1e_main.c   |  2 +-
 drivers/net/ethernet/atheros/atlx/atl2.c      |  2 +-
 drivers/net/ethernet/atheros/atlx/atlx.c      |  2 +-
 drivers/net/ethernet/broadcom/bnx2.c          |  2 +-
 .../net/ethernet/broadcom/bnx2x/bnx2x_cmn.c   |  4 ++--
 drivers/net/ethernet/broadcom/bnxt/bnxt.c     |  3 ++-
 drivers/net/ethernet/broadcom/tg3.c           |  6 +++---
 drivers/net/ethernet/brocade/bna/bnad.c       |  2 +-
 drivers/net/ethernet/cadence/macb_main.c      |  4 ++--
 drivers/net/ethernet/calxeda/xgmac.c          |  2 +-
 .../ethernet/cavium/liquidio/lio_vf_main.c    |  2 +-
 .../net/ethernet/cavium/thunder/nicvf_main.c  |  2 +-
 drivers/net/ethernet/chelsio/cxgb/cxgb2.c     |  2 +-
 .../net/ethernet/chelsio/cxgb3/cxgb3_main.c   |  4 ++--
 .../net/ethernet/chelsio/cxgb4/cxgb4_main.c   |  2 +-
 .../ethernet/chelsio/cxgb4vf/cxgb4vf_main.c   |  2 +-
 drivers/net/ethernet/davicom/dm9000.c         |  2 +-
 drivers/net/ethernet/faraday/ftgmac100.c      |  2 +-
 .../net/ethernet/freescale/dpaa2/dpaa2-eth.c  |  2 +-
 drivers/net/ethernet/freescale/enetc/enetc.c  |  2 +-
 .../net/ethernet/freescale/enetc/enetc_pf.c   |  2 +-
 drivers/net/ethernet/freescale/fec_main.c     |  4 ++--
 .../net/ethernet/freescale/gianfar_ethtool.c  |  2 +-
 drivers/net/ethernet/google/gve/gve_main.c    |  2 +-
 drivers/net/ethernet/google/gve/gve_rx.c      |  2 +-
 drivers/net/ethernet/google/gve/gve_rx_dqo.c  |  2 +-
 .../net/ethernet/hisilicon/hns3/hns3_enet.c   |  2 +-
 .../net/ethernet/huawei/hinic/hinic_main.c    |  4 ++--
 drivers/net/ethernet/ibm/ibmvnic.c            |  4 ++--
 drivers/net/ethernet/intel/e100.c             |  2 +-
 drivers/net/ethernet/intel/e1000/e1000_main.c |  2 +-
 drivers/net/ethernet/intel/e1000e/netdev.c    |  2 +-
 .../net/ethernet/intel/fm10k/fm10k_netdev.c   |  2 +-
 drivers/net/ethernet/intel/i40e/i40e_main.c   |  4 ++--
 drivers/net/ethernet/intel/iavf/iavf_main.c   |  6 +++---
 drivers/net/ethernet/intel/ice/ice_main.c     |  8 ++++----
 drivers/net/ethernet/intel/igb/igb_main.c     |  2 +-
 drivers/net/ethernet/intel/igc/igc_main.c     |  2 +-
 drivers/net/ethernet/intel/ixgb/ixgb_main.c   |  2 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |  4 ++--
 .../net/ethernet/marvell/mvpp2/mvpp2_main.c   |  6 +++---
 .../ethernet/marvell/octeontx2/nic/otx2_pf.c  |  2 +-
 .../ethernet/marvell/octeontx2/nic/otx2_vf.c  |  2 +-
 drivers/net/ethernet/marvell/sky2.c           |  2 +-
 .../net/ethernet/mellanox/mlx5/core/en_main.c |  4 ++--
 .../net/ethernet/mellanox/mlxsw/spectrum.c    |  4 ++--
 drivers/net/ethernet/mscc/ocelot_net.c        |  2 +-
 .../net/ethernet/myricom/myri10ge/myri10ge.c  |  2 +-
 drivers/net/ethernet/neterion/s2io.c          |  2 +-
 .../net/ethernet/neterion/vxge/vxge-main.c    |  4 ++--
 .../ethernet/netronome/nfp/nfp_net_common.c   |  2 +-
 .../net/ethernet/netronome/nfp/nfp_net_repr.c |  4 ++--
 drivers/net/ethernet/nvidia/forcedeth.c       |  2 +-
 .../ethernet/oki-semi/pch_gbe/pch_gbe_main.c  |  2 +-
 .../net/ethernet/pensando/ionic/ionic_lif.c   |  2 +-
 drivers/net/ethernet/qlogic/qede/qede.h       |  2 +-
 .../net/ethernet/qlogic/qede/qede_filter.c    |  2 +-
 drivers/net/ethernet/qlogic/qede/qede_main.c  |  2 +-
 .../net/ethernet/qlogic/qlcnic/qlcnic_hw.c    |  4 ++--
 drivers/net/ethernet/qualcomm/emac/emac.c     |  2 +-
 drivers/net/ethernet/realtek/8139too.c        |  2 +-
 drivers/net/ethernet/renesas/ravb_main.c      |  2 +-
 drivers/net/ethernet/renesas/sh_eth.c         |  2 +-
 .../net/ethernet/samsung/sxgbe/sxgbe_main.c   |  2 +-
 drivers/net/ethernet/sfc/ef10.c               |  4 ++--
 drivers/net/ethernet/sfc/ef100_nic.c          |  2 +-
 drivers/net/ethernet/sfc/efx.c                |  2 +-
 drivers/net/ethernet/sfc/efx_common.c         |  4 ++--
 drivers/net/ethernet/sfc/falcon/efx.c         |  4 ++--
 drivers/net/ethernet/sfc/falcon/net_driver.h  |  2 +-
 drivers/net/ethernet/sfc/mcdi_filters.c       |  2 +-
 drivers/net/ethernet/sfc/net_driver.h         |  2 +-
 drivers/net/ethernet/sun/sunvnet_common.c     |  2 +-
 drivers/net/ethernet/synopsys/dwc-xlgmac.h    |  2 +-
 drivers/net/hyperv/netvsc_drv.c               |  2 +-
 drivers/net/hyperv/rndis_filter.c             |  2 +-
 drivers/net/ipvlan/ipvlan.h                   |  2 +-
 drivers/net/ipvlan/ipvlan_main.c              |  2 +-
 drivers/net/macsec.c                          |  2 +-
 drivers/net/macvlan.c                         |  5 +++--
 drivers/net/net_failover.c                    |  8 ++++----
 drivers/net/tap.c                             |  6 +++---
 drivers/net/team/team.c                       | 10 +++++-----
 drivers/net/tun.c                             |  6 +++---
 drivers/net/usb/aqc111.c                      |  2 +-
 drivers/net/usb/ax88179_178a.c                |  2 +-
 drivers/net/usb/r8152.c                       |  4 ++--
 drivers/net/veth.c                            |  2 +-
 drivers/net/virtio_net.c                      |  2 +-
 drivers/net/vmxnet3/vmxnet3_ethtool.c         |  2 +-
 drivers/net/wireless/intel/iwlwifi/mvm/tx.c   |  2 +-
 drivers/net/xen-netfront.c                    |  2 +-
 drivers/s390/net/qeth_core_main.c             |  8 ++++----
 drivers/staging/qlge/qlge_main.c              |  2 +-
 include/linux/if_macvlan.h                    |  2 +-
 include/linux/if_tap.h                        |  2 +-
 include/linux/netdev_features.h               |  3 +++
 include/linux/netdevice.h                     | 18 ++++++++---------
 include/net/mac80211.h                        |  2 +-
 include/net/sock.h                            |  8 ++++----
 include/net/udp.h                             |  2 +-
 net/8021q/vlan_dev.c                          |  6 +++---
 net/bridge/br_if.c                            |  2 +-
 net/core/dev.c                                | 18 ++++++++---------
 net/core/netpoll.c                            |  2 +-
 net/ethtool/features.c                        |  2 +-
 net/ethtool/ioctl.c                           |  6 +++---
 net/hsr/hsr_device.c                          |  2 +-
 net/ipv4/esp4_offload.c                       |  2 +-
 net/ipv4/ip_output.c                          |  2 +-
 net/ipv4/tcp_offload.c                        |  2 +-
 net/ipv6/esp6_offload.c                       |  2 +-
 net/ipv6/ip6_output.c                         |  2 +-
 net/mac80211/iface.c                          |  2 +-
 net/mac80211/main.c                           |  2 +-
 net/mpls/mpls_gso.c                           |  2 +-
 net/openvswitch/datapath.c                    |  2 +-
 net/sched/sch_cake.c                          |  2 +-
 net/sched/sch_netem.c                         |  2 +-
 net/sched/sch_taprio.c                        |  2 +-
 net/sched/sch_tbf.c                           |  2 +-
 net/sctp/offload.c                            |  2 +-
 net/xfrm/xfrm_device.c                        |  2 +-
 129 files changed, 206 insertions(+), 201 deletions(-)

diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 9c6f37589733..6e64ad75b847 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1365,8 +1365,8 @@ static void bond_fix_features(struct net_device *dev,
 			      netdev_features_t *features)
 {
 	struct bonding *bond = netdev_priv(dev);
+	__DECLARE_NETDEV_FEATURE_MASK(mask);
 	struct list_head *iter;
-	netdev_features_t mask;
 	struct slave *slave;
 
 #if IS_ENABLED(CONFIG_TLS_DEVICE)
@@ -1403,16 +1403,16 @@ static void bond_compute_features(struct bonding *bond)
 {
 	unsigned int dst_release_flag = IFF_XMIT_DST_RELEASE |
 					IFF_XMIT_DST_RELEASE_PERM;
-	netdev_features_t vlan_features;
-	netdev_features_t enc_features;
-	netdev_features_t vlan_mask;
-	netdev_features_t enc_mask;
+	__DECLARE_NETDEV_FEATURE_MASK(vlan_features);
+	__DECLARE_NETDEV_FEATURE_MASK(enc_features);
+	__DECLARE_NETDEV_FEATURE_MASK(vlan_mask);
+	__DECLARE_NETDEV_FEATURE_MASK(enc_mask);
 #ifdef CONFIG_XFRM_OFFLOAD
-	netdev_features_t xfrm_features;
-	netdev_features_t xfrm_mask;
+	__DECLARE_NETDEV_FEATURE_MASK(xfrm_features);
+	__DECLARE_NETDEV_FEATURE_MASK(xfrm_mask);
 #endif /* CONFIG_XFRM_OFFLOAD */
-	netdev_features_t mpls_features;
-	netdev_features_t mpls_mask;
+	__DECLARE_NETDEV_FEATURE_MASK(mpls_features);
+	__DECLARE_NETDEV_FEATURE_MASK(mpls_mask);
 	struct net_device *bond_dev = bond->dev;
 	struct list_head *iter;
 	struct slave *slave;
@@ -2304,10 +2304,10 @@ static int __bond_release_one(struct net_device *bond_dev,
 			      bool all, bool unregister)
 {
 	struct bonding *bond = netdev_priv(bond_dev);
+	__DECLARE_NETDEV_FEATURE_MASK(old_features);
 	struct slave *slave, *oldcurrent;
 	struct sockaddr_storage ss;
 	int old_flags = bond_dev->flags;
-	netdev_features_t old_features;
 
 	netdev_feature_copy(&old_features, bond_dev->features);
 	/* slave is not a slave or master is not master of this slave */
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index 3bbf12bc25d8..3eda7401ce63 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -4026,7 +4026,7 @@ static u32 ena_calc_max_io_queue_num(struct pci_dev *pdev,
 static void ena_set_dev_offloads(struct ena_com_dev_get_features_ctx *feat,
 				 struct net_device *netdev)
 {
-	netdev_features_t dev_features;
+	__DECLARE_NETDEV_FEATURE_MASK(dev_features);
 
 	netdev_feature_zero(&dev_features);
 
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
index 2c29fa3a0bee..401060a2e020 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
@@ -2186,7 +2186,7 @@ static void xgbe_fix_features(struct net_device *netdev,
 			      netdev_features_t *features)
 {
 	struct xgbe_prv_data *pdata = netdev_priv(netdev);
-	netdev_features_t vxlan_base;
+	__DECLARE_NETDEV_FEATURE_MASK(vxlan_base);
 
 	netdev_feature_zero(&vxlan_base);
 	netdev_feature_set_bits(NETIF_F_GSO_UDP_TUNNEL |
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h
index 3305979a9f7c..7355056ed935 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe.h
+++ b/drivers/net/ethernet/amd/xgbe/xgbe.h
@@ -1170,7 +1170,7 @@ struct xgbe_prv_data {
 
 	/* Netdev related settings */
 	unsigned char mac_addr[ETH_ALEN];
-	netdev_features_t netdev_features;
+	__DECLARE_NETDEV_FEATURE_MASK(netdev_features);
 	struct napi_struct napi;
 	struct xgbe_mmc_stats mmc_stats;
 	struct xgbe_ext_stats ext_stats;
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.h b/drivers/net/ethernet/aquantia/atlantic/aq_nic.h
index 685adb52d44a..a1047dfce73e 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.h
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.h
@@ -38,7 +38,7 @@ struct aq_fc_info {
 
 struct aq_nic_cfg_s {
 	const struct aq_hw_caps_s *aq_hw_caps;
-	netdev_features_t features;
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	u32 rxds;		/* rx ring size, descriptors # */
 	u32 txds;		/* tx ring size, descriptors # */
 	u32 vecs;		/* allocated rx/tx vectors */
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
index eea741e971ae..1c8803f86900 100644
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
@@ -530,7 +530,7 @@ static void atl1c_fix_features(struct net_device *netdev,
 static int atl1c_set_features(struct net_device *netdev,
 	netdev_features_t features)
 {
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, netdev->features, features);
 
diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
index fe5339b0ca7f..d5ee30450f89 100644
--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
@@ -399,7 +399,7 @@ static void atl1e_fix_features(struct net_device *netdev,
 static int atl1e_set_features(struct net_device *netdev,
 	netdev_features_t features)
 {
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, netdev->features, features);
 	if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT, changed))
diff --git a/drivers/net/ethernet/atheros/atlx/atl2.c b/drivers/net/ethernet/atheros/atlx/atl2.c
index 2db693636588..943f2af0e3e6 100644
--- a/drivers/net/ethernet/atheros/atlx/atl2.c
+++ b/drivers/net/ethernet/atheros/atlx/atl2.c
@@ -388,7 +388,7 @@ static void atl2_fix_features(struct net_device *netdev,
 static int atl2_set_features(struct net_device *netdev,
 	netdev_features_t features)
 {
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, netdev->features, features);
 	if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT, changed))
diff --git a/drivers/net/ethernet/atheros/atlx/atlx.c b/drivers/net/ethernet/atheros/atlx/atlx.c
index 6e91bf6f54d0..ea5b6d73e2f1 100644
--- a/drivers/net/ethernet/atheros/atlx/atlx.c
+++ b/drivers/net/ethernet/atheros/atlx/atlx.c
@@ -254,7 +254,7 @@ static void atlx_fix_features(struct net_device *netdev,
 static int atlx_set_features(struct net_device *netdev,
 	netdev_features_t features)
 {
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, netdev->features, features);
 	if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT, changed))
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index 29f7b0b03d64..4be5a2fa0734 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -7750,7 +7750,7 @@ static int
 bnx2_set_features(struct net_device *dev, netdev_features_t features)
 {
 	struct bnx2 *bp = netdev_priv(dev);
-	netdev_features_t tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 
 	/* TSO with VLAN tag won't work with current firmware */
 	if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_TX_BIT, features)) {
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index b238312fd0c7..57709a295867 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -4906,7 +4906,7 @@ void bnx2x_fix_features(struct net_device *dev, netdev_features_t *features)
 	struct bnx2x *bp = netdev_priv(dev);
 
 	if (pci_num_vf(bp->pdev)) {
-		netdev_features_t changed;
+		__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 		netdev_feature_xor(&changed, dev->features, *features);
 
@@ -4944,8 +4944,8 @@ void bnx2x_fix_features(struct net_device *dev, netdev_features_t *features)
 
 int bnx2x_set_features(struct net_device *dev, netdev_features_t features)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(changes);
 	struct bnx2x *bp = netdev_priv(dev);
-	netdev_features_t changes;
 	bool bnx2x_reload = false;
 	int rc;
 
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 24d6f883c243..3d18839615a2 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -10905,7 +10905,8 @@ static bool bnxt_rfs_capable(struct bnxt *bp)
 static void bnxt_fix_features(struct net_device *dev,
 			      netdev_features_t *features)
 {
-	netdev_features_t vlan_features, tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(vlan_features);
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 	struct bnxt *bp = netdev_priv(dev);
 
 	if (netdev_feature_test_bit(NETIF_F_NTUPLE_BIT, *features) &&
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 0406951a3a3e..430082a11f9c 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -7860,8 +7860,8 @@ static int tg3_tso_bug(struct tg3 *tp, struct tg3_napi *tnapi,
 		       struct netdev_queue *txq, struct sk_buff *skb)
 {
 	u32 frag_cnt_est = skb_shinfo(skb)->gso_segs * 3;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 	struct sk_buff *segs, *seg, *next;
-	netdev_features_t tmp;
 
 	/* Estimate the number of fragments in the worst case */
 	if (unlikely(tg3_tx_avail(tnapi) <= frag_cnt_est)) {
@@ -8316,7 +8316,7 @@ static void tg3_fix_features(struct net_device *dev,
 
 static int tg3_set_features(struct net_device *dev, netdev_features_t features)
 {
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, dev->features, features);
 	if (netdev_feature_test_bit(NETIF_F_LOOPBACK_BIT, changed) &&
@@ -17557,13 +17557,13 @@ static void tg3_init_coal(struct tg3 *tp)
 static int tg3_init_one(struct pci_dev *pdev,
 				  const struct pci_device_id *ent)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	struct net_device *dev;
 	struct tg3 *tp;
 	int i, err;
 	u32 sndmbx, rcvmbx, intmbx;
 	char str[40];
 	u64 dma_mask, persist_dma_mask;
-	netdev_features_t features;
 
 	netdev_feature_zero(&features);
 
diff --git a/drivers/net/ethernet/brocade/bna/bnad.c b/drivers/net/ethernet/brocade/bna/bnad.c
index 2e51cf6fb1c3..ed630cea4906 100644
--- a/drivers/net/ethernet/brocade/bna/bnad.c
+++ b/drivers/net/ethernet/brocade/bna/bnad.c
@@ -3351,8 +3351,8 @@ bnad_vlan_rx_kill_vid(struct net_device *netdev, __be16 proto, u16 vid)
 
 static int bnad_set_features(struct net_device *dev, netdev_features_t features)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	struct bnad *bnad = netdev_priv(dev);
-	netdev_features_t changed;
 
 	netdev_feature_xor(&changed, features, dev->features);
 	if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT, changed) &&
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index 53a44ba6444c..7ffaa706536e 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -3634,8 +3634,8 @@ static inline void macb_set_rxflow_feature(struct macb *bp,
 static int macb_set_features(struct net_device *netdev,
 			     netdev_features_t features)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	struct macb *bp = netdev_priv(netdev);
-	netdev_features_t changed;
 
 	netdev_feature_xor(&changed, features, netdev->features);
 
@@ -3656,9 +3656,9 @@ static int macb_set_features(struct net_device *netdev,
 
 static void macb_restore_features(struct macb *bp)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	struct net_device *netdev = bp->dev;
 	struct ethtool_rx_fs_item *item;
-	netdev_features_t features;
 
 	netdev_feature_copy(&features, netdev->features);
 
diff --git a/drivers/net/ethernet/calxeda/xgmac.c b/drivers/net/ethernet/calxeda/xgmac.c
index 10792529ef56..3679fed9beaf 100644
--- a/drivers/net/ethernet/calxeda/xgmac.c
+++ b/drivers/net/ethernet/calxeda/xgmac.c
@@ -1490,8 +1490,8 @@ static int xgmac_set_features(struct net_device *dev, netdev_features_t features
 {
 	u32 ctrl;
 	struct xgmac_priv *priv = netdev_priv(dev);
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	void __iomem *ioaddr = priv->base;
-	netdev_features_t changed;
 
 	netdev_feature_xor(&changed, dev->features, features);
 
diff --git a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
index 1653c058e4b9..170c3b0aaaee 100644
--- a/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
+++ b/drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
@@ -1854,8 +1854,8 @@ static void liquidio_fix_features(struct net_device *netdev,
 static int liquidio_set_features(struct net_device *netdev,
 				 netdev_features_t features)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	struct lio *lio = netdev_priv(netdev);
-	netdev_features_t changed;
 
 	netdev_feature_xor(&changed, netdev->features, features);
 	if (!netdev_feature_test_bit(NETIF_F_LRO_BIT, changed))
diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
index de451d94e1a7..be88c1b8a0a2 100644
--- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
+++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
@@ -1788,7 +1788,7 @@ static int nicvf_set_features(struct net_device *netdev,
 			      netdev_features_t features)
 {
 	struct nicvf *nic = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, features, netdev->features);
 
diff --git a/drivers/net/ethernet/chelsio/cxgb/cxgb2.c b/drivers/net/ethernet/chelsio/cxgb/cxgb2.c
index 193c75f5d682..6d4fbb1bd303 100644
--- a/drivers/net/ethernet/chelsio/cxgb/cxgb2.c
+++ b/drivers/net/ethernet/chelsio/cxgb/cxgb2.c
@@ -875,7 +875,7 @@ static void t1_fix_features(struct net_device *dev, netdev_features_t *features)
 static int t1_set_features(struct net_device *dev, netdev_features_t features)
 {
 	struct adapter *adapter = dev->ml_priv;
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, dev->features, features);
 	if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT, changed))
diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
index acd2299c1657..806d4a4d4ffe 100644
--- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
@@ -2615,7 +2615,7 @@ static void cxgb_fix_features(struct net_device *dev,
 
 static int cxgb_set_features(struct net_device *dev, netdev_features_t features)
 {
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, dev->features, features);
 	if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT, changed))
@@ -3220,9 +3220,9 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
 	int i, err, pci_using_dac = 0;
 	resource_size_t mmio_start, mmio_len;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 	const struct adapter_info *ai;
 	struct adapter *adapter = NULL;
-	netdev_features_t tmp;
 	struct port_info *pi;
 
 	if (!cxgb3_wq) {
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
index 26c550ae6dd0..260695dd4f68 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
@@ -1274,7 +1274,7 @@ int cxgb4_set_rspq_intr_params(struct sge_rspq *q,
 static int cxgb_set_features(struct net_device *dev, netdev_features_t features)
 {
 	const struct port_info *pi = netdev_priv(dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	int err;
 
 	netdev_feature_xor(&changed, dev->features, features);
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
index 772b513b6ba1..5b2730de38c8 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
@@ -1191,7 +1191,7 @@ static int cxgb4vf_set_features(struct net_device *dev,
 	netdev_features_t features)
 {
 	struct port_info *pi = netdev_priv(dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, dev->features, features);
 	if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT, changed))
diff --git a/drivers/net/ethernet/davicom/dm9000.c b/drivers/net/ethernet/davicom/dm9000.c
index cf349566d9e0..8e4ca68c1986 100644
--- a/drivers/net/ethernet/davicom/dm9000.c
+++ b/drivers/net/ethernet/davicom/dm9000.c
@@ -586,7 +586,7 @@ static int dm9000_set_features(struct net_device *dev,
 	netdev_features_t features)
 {
 	struct board_info *dm = to_dm9000_board(dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	unsigned long flags;
 
 	netdev_feature_xor(&changed, dev->features, features);
diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
index 0ca939eb2921..8552bbaa8256 100644
--- a/drivers/net/ethernet/faraday/ftgmac100.c
+++ b/drivers/net/ethernet/faraday/ftgmac100.c
@@ -1582,7 +1582,7 @@ static int ftgmac100_set_features(struct net_device *netdev,
 				  netdev_features_t features)
 {
 	struct ftgmac100 *priv = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	if (!netif_running(netdev))
 		return 0;
diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
index d9ce2925e0b9..796a311c1a0a 100644
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
@@ -2142,7 +2142,7 @@ static int dpaa2_eth_set_features(struct net_device *net_dev,
 				  netdev_features_t features)
 {
 	struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	bool enable;
 	int err;
 
diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c
index 0d92c45aa5df..719da3a38e36 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc.c
@@ -2354,7 +2354,7 @@ static void enetc_enable_txvlan(struct net_device *ndev, bool en)
 int enetc_set_features(struct net_device *ndev,
 		       netdev_features_t features)
 {
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	int err = 0;
 
 	netdev_feature_xor(&changed, ndev->features, features);
diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/ethernet/freescale/enetc/enetc_pf.c
index 7dad33460673..e4a3b3d8d98f 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c
@@ -705,7 +705,7 @@ static int enetc_pf_set_features(struct net_device *ndev,
 				 netdev_features_t features)
 {
 	struct enetc_ndev_priv *priv = netdev_priv(ndev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, ndev->features, features);
 
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index e782bf61463d..987267f897b9 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -3373,7 +3373,7 @@ static inline void fec_enet_set_netdev_features(struct net_device *netdev,
 	netdev_features_t features)
 {
 	struct fec_enet_private *fep = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, features, netdev->features);
 	netdev_feature_copy(&netdev->features, features);
@@ -3391,7 +3391,7 @@ static int fec_set_features(struct net_device *netdev,
 	netdev_features_t features)
 {
 	struct fec_enet_private *fep = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, features, netdev->features);
 
diff --git a/drivers/net/ethernet/freescale/gianfar_ethtool.c b/drivers/net/ethernet/freescale/gianfar_ethtool.c
index 38e77a01ddd1..f90708d51ecf 100644
--- a/drivers/net/ethernet/freescale/gianfar_ethtool.c
+++ b/drivers/net/ethernet/freescale/gianfar_ethtool.c
@@ -504,7 +504,7 @@ static int gfar_spauseparam(struct net_device *dev,
 int gfar_set_features(struct net_device *dev, netdev_features_t features)
 {
 	struct gfar_private *priv = netdev_priv(dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	int err = 0;
 
 	netdev_feature_xor(&changed, dev->features, features);
diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ethernet/google/gve/gve_main.c
index 2a5620bc35e5..1e964410d4fd 100644
--- a/drivers/net/ethernet/google/gve/gve_main.c
+++ b/drivers/net/ethernet/google/gve/gve_main.c
@@ -1112,8 +1112,8 @@ static void gve_tx_timeout(struct net_device *dev, unsigned int txqueue)
 static int gve_set_features(struct net_device *netdev,
 			    netdev_features_t features)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(orig_features);
 	struct gve_priv *priv = netdev_priv(netdev);
-	netdev_features_t orig_features;
 	int err;
 
 	netdev_feature_copy(&orig_features, netdev->features);
diff --git a/drivers/net/ethernet/google/gve/gve_rx.c b/drivers/net/ethernet/google/gve/gve_rx.c
index d76e89afb329..f91387efc7ef 100644
--- a/drivers/net/ethernet/google/gve/gve_rx.c
+++ b/drivers/net/ethernet/google/gve/gve_rx.c
@@ -587,8 +587,8 @@ bool gve_clean_rx_done(struct gve_rx_ring *rx, int budget,
 
 bool gve_rx_poll(struct gve_notify_block *block, int budget)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(feat);
 	struct gve_rx_ring *rx = block->rx;
-	netdev_features_t feat;
 	bool repoll = false;
 
 	netdev_feature_copy(&feat, block->napi.dev->features);
diff --git a/drivers/net/ethernet/google/gve/gve_rx_dqo.c b/drivers/net/ethernet/google/gve/gve_rx_dqo.c
index 8e55d11daceb..90ac50df604d 100644
--- a/drivers/net/ethernet/google/gve/gve_rx_dqo.c
+++ b/drivers/net/ethernet/google/gve/gve_rx_dqo.c
@@ -663,7 +663,7 @@ static int gve_rx_complete_skb(struct gve_rx_ring *rx, struct napi_struct *napi,
 int gve_rx_poll_dqo(struct gve_notify_block *block, int budget)
 {
 	struct napi_struct *napi = &block->napi;
-	netdev_features_t feat;
+	__DECLARE_NETDEV_FEATURE_MASK(feat);
 
 	struct gve_rx_ring *rx = block->rx;
 	struct gve_rx_compl_queue_dqo *complq = &rx->dqo.complq;
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
index 180019026650..ad522b163242 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
@@ -2318,7 +2318,7 @@ static int hns3_nic_set_features(struct net_device *netdev,
 {
 	struct hns3_nic_priv *priv = netdev_priv(netdev);
 	struct hnae3_handle *h = priv->ae_handle;
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	bool enable;
 	int ret;
 
diff --git a/drivers/net/ethernet/huawei/hinic/hinic_main.c b/drivers/net/ethernet/huawei/hinic/hinic_main.c
index c33bb3dd5614..fc0765db66d1 100644
--- a/drivers/net/ethernet/huawei/hinic/hinic_main.c
+++ b/drivers/net/ethernet/huawei/hinic/hinic_main.c
@@ -1079,9 +1079,9 @@ static int set_features(struct hinic_dev *nic_dev,
 			netdev_features_t pre_features,
 			netdev_features_t features, bool force_change)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(failed_features);
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	u32 csum_en = HINIC_RX_CSUM_OFFLOAD_EN;
-	netdev_features_t failed_features;
-	netdev_features_t changed;
 	int ret = 0;
 	int err = 0;
 
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
index 4dfabea91db6..4008951a24fd 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -4510,8 +4510,8 @@ static void send_control_ip_offload(struct ibmvnic_adapter *adapter)
 {
 	struct ibmvnic_control_ip_offload_buffer *ctrl_buf = &adapter->ip_offload_ctrl;
 	struct ibmvnic_query_ip_offload_buffer *buf = &adapter->ip_offload_buf;
+	__DECLARE_NETDEV_FEATURE_MASK(old_hw_features);
 	struct device *dev = &adapter->vdev->dev;
-	netdev_features_t old_hw_features;
 	union ibmvnic_crq crq;
 
 	adapter->ip_offload_ctrl_tok =
@@ -4577,7 +4577,7 @@ static void send_control_ip_offload(struct ibmvnic_adapter *adapter)
 				  adapter->netdev->hw_features);
 	} else if (!netdev_feature_equal(old_hw_features,
 					 adapter->netdev->hw_features)) {
-		netdev_features_t tmp;
+		__DECLARE_NETDEV_FEATURE_MASK(tmp);
 
 		netdev_feature_zero(&tmp);
 
diff --git a/drivers/net/ethernet/intel/e100.c b/drivers/net/ethernet/intel/e100.c
index abec49f6b541..4208d8fd3b2e 100644
--- a/drivers/net/ethernet/intel/e100.c
+++ b/drivers/net/ethernet/intel/e100.c
@@ -2794,8 +2794,8 @@ static int e100_close(struct net_device *netdev)
 static int e100_set_features(struct net_device *netdev,
 			     netdev_features_t features)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	struct nic *nic = netdev_priv(netdev);
-	netdev_features_t changed;
 
 	netdev_feature_xor(&changed, features, netdev->features);
 
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index 34536befc4ea..218b8a944645 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -804,7 +804,7 @@ static int e1000_set_features(struct net_device *netdev,
 	netdev_features_t features)
 {
 	struct e1000_adapter *adapter = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, features, netdev->features);
 
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index a299f2789164..4e36331c76d9 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -7328,7 +7328,7 @@ static int e1000_set_features(struct net_device *netdev,
 			      netdev_features_t features)
 {
 	struct e1000_adapter *adapter = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, features, netdev->features);
 
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
index e3747f310c2e..dbefa249e560 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
@@ -1540,7 +1540,7 @@ static const struct net_device_ops fm10k_netdev_ops = {
 
 struct net_device *fm10k_alloc_netdev(const struct fm10k_info *info)
 {
-	netdev_features_t hw_features;
+	__DECLARE_NETDEV_FEATURE_MASK(hw_features);
 	struct fm10k_intfc *interface;
 	struct net_device *dev;
 
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 5dddd63bde74..d4692a9f2a55 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -13310,6 +13310,8 @@ static const struct net_device_ops i40e_netdev_ops = {
  **/
 static int i40e_config_netdev(struct i40e_vsi *vsi)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(hw_enc_features);
+	__DECLARE_NETDEV_FEATURE_MASK(hw_features);
 	struct i40e_pf *pf = vsi->back;
 	struct i40e_hw *hw = &pf->hw;
 	struct i40e_netdev_priv *np;
@@ -13317,8 +13319,6 @@ static int i40e_config_netdev(struct i40e_vsi *vsi)
 	u8 broadcast[ETH_ALEN];
 	u8 mac_addr[ETH_ALEN];
 	int etherdev_size;
-	netdev_features_t hw_enc_features;
-	netdev_features_t hw_features;
 
 	etherdev_size = sizeof(struct i40e_netdev_priv);
 	netdev = alloc_etherdev_mq(etherdev_size, vsi->alloc_queue_pairs);
diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c
index 9f6b6cabdca1..0897ee2740ee 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_main.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_main.c
@@ -3354,7 +3354,7 @@ static int iavf_set_features(struct net_device *netdev,
 			     netdev_features_t features)
 {
 	struct iavf_adapter *adapter = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, netdev->features, features);
 	/* Don't allow changing VLAN_RX flag when adapter is not capable
@@ -3505,10 +3505,10 @@ int iavf_process_config(struct iavf_adapter *adapter)
 {
 	struct virtchnl_vf_resource *vfres = adapter->vf_res;
 	int i, num_req_queues = adapter->num_req_queues;
+	__DECLARE_NETDEV_FEATURE_MASK(hw_enc_features);
 	struct net_device *netdev = adapter->netdev;
+	__DECLARE_NETDEV_FEATURE_MASK(hw_features);
 	struct iavf_vsi *vsi = &adapter->vsi;
-	netdev_features_t hw_enc_features;
-	netdev_features_t hw_features;
 
 	/* got VF config message back from PF, now we can parse it */
 	for (i = 0; i < vfres->num_vsis; i++) {
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 682b14bebdee..bb76ea65dbc1 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -3057,11 +3057,11 @@ static void ice_set_ops(struct net_device *netdev)
  */
 static void ice_set_netdev_features(struct net_device *netdev)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(csumo_features);
+	__DECLARE_NETDEV_FEATURE_MASK(vlano_features);
+	__DECLARE_NETDEV_FEATURE_MASK(dflt_features);
+	__DECLARE_NETDEV_FEATURE_MASK(tso_features);
 	struct ice_pf *pf = ice_netdev_to_pf(netdev);
-	netdev_features_t csumo_features;
-	netdev_features_t vlano_features;
-	netdev_features_t dflt_features;
-	netdev_features_t tso_features;
 
 	if (ice_is_safe_mode(pf)) {
 		/* safe mode */
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 1f764d4fbd14..e4582a4ec30e 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -2450,7 +2450,7 @@ static int igb_set_features(struct net_device *netdev,
 	netdev_features_t features)
 {
 	struct igb_adapter *adapter = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, netdev->features, features);
 
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index f8b4d5cfa07b..d5d79ed550fe 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -4938,7 +4938,7 @@ static int igc_set_features(struct net_device *netdev,
 			    netdev_features_t features)
 {
 	struct igc_adapter *adapter = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, netdev->features, features);
 
diff --git a/drivers/net/ethernet/intel/ixgb/ixgb_main.c b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
index c56ac31de3e1..4357e43666c5 100644
--- a/drivers/net/ethernet/intel/ixgb/ixgb_main.c
+++ b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
@@ -309,7 +309,7 @@ static int
 ixgb_set_features(struct net_device *netdev, netdev_features_t features)
 {
 	struct ixgb_adapter *adapter = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, features, netdev->features);
 
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 742947fad23c..fc31773b2631 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -4901,7 +4901,7 @@ void ixgbe_set_rx_mode(struct net_device *netdev)
 	struct ixgbe_adapter *adapter = netdev_priv(netdev);
 	struct ixgbe_hw *hw = &adapter->hw;
 	u32 fctrl, vmolr = IXGBE_VMOLR_BAM | IXGBE_VMOLR_AUPE;
-	netdev_features_t features;
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	int count;
 
 	netdev_feature_copy(&features, netdev->features);
@@ -9731,7 +9731,7 @@ static int ixgbe_set_features(struct net_device *netdev,
 			      netdev_features_t features)
 {
 	struct ixgbe_adapter *adapter = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	bool need_reset = false;
 
 	netdev_feature_xor(&changed, netdev->features, features);
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index a222a6923dcb..894b90a6ca49 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -1265,7 +1265,7 @@ static int mvpp2_swf_bm_pool_init(struct mvpp2_port *port)
 static void mvpp2_set_hw_csum(struct mvpp2_port *port,
 			      enum mvpp2_bm_pool_log_num new_long_pool)
 {
-	netdev_features_t csums;
+	__DECLARE_NETDEV_FEATURE_MASK(csums);
 
 	netdev_feature_zero(&csums);
 	netdev_feature_set_bits(NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM, &csums);
@@ -5289,7 +5289,7 @@ static int mvpp2_set_features(struct net_device *dev,
 			      netdev_features_t features)
 {
 	struct mvpp2_port *port = netdev_priv(dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, dev->features, features);
 
@@ -6749,7 +6749,7 @@ static int mvpp2_port_probe(struct platform_device *pdev,
 	struct mvpp2_port *port;
 	struct mvpp2_port_pcpu *port_pcpu;
 	struct device_node *port_node = to_of_node(port_fwnode);
-	netdev_features_t features;
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	struct net_device *dev;
 	struct phylink *phylink;
 	char *mac_from = "";
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c
index c3d187a57d35..77806bedb8dd 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c
@@ -1842,7 +1842,7 @@ static int otx2_set_features(struct net_device *netdev,
 	bool ntuple = netdev_feature_test_bit(NETIF_F_NTUPLE_BIT, features);
 	bool tc = netdev_feature_test_bit(NETIF_F_HW_TC_BIT, features);
 	struct otx2_nic *pf = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, features, netdev->features);
 
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c
index 9b500cc46e9f..5d493afc2924 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c
@@ -475,7 +475,7 @@ static int otx2vf_set_features(struct net_device *netdev,
 {
 	bool ntuple_enabled = netdev_feature_test_bit(NETIF_F_NTUPLE_BIT, features);
 	struct otx2_nic *vf = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, features, netdev->features);
 	if (netdev_feature_test_bit(NETIF_F_NTUPLE_BIT, changed)) {
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index eee84e6b97f6..e5132f55e830 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -4391,7 +4391,7 @@ static void sky2_fix_features(struct net_device *dev,
 static int sky2_set_features(struct net_device *dev, netdev_features_t features)
 {
 	struct sky2_port *sky2 = netdev_priv(dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, dev->features, features);
 
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 4370b7241522..84a14756a171 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -3333,7 +3333,7 @@ static int mlx5e_handle_feature(struct net_device *netdev,
 				u32 feature_bit,
 				mlx5e_feature_handler feature_handler)
 {
-	netdev_features_t changes;
+	__DECLARE_NETDEV_FEATURE_MASK(changes);
 	bool enable;
 	int err;
 
@@ -3356,7 +3356,7 @@ static int mlx5e_handle_feature(struct net_device *netdev,
 
 int mlx5e_set_features(struct net_device *netdev, netdev_features_t features)
 {
-	netdev_features_t oper_features;
+	__DECLARE_NETDEV_FEATURE_MASK(oper_features);
 	int err = 0;
 
 	netdev_feature_copy(&oper_features, netdev->features);
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
index d5a8bc944947..620346d392b1 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
@@ -1109,7 +1109,7 @@ static int mlxsw_sp_handle_feature(struct net_device *dev,
 				   mlxsw_sp_feature_handler feature_handler)
 {
 	bool enable = netdev_feature_test_bit(feature_bit, wanted_features);
-	netdev_features_t changes;
+	__DECLARE_NETDEV_FEATURE_MASK(changes);
 	int err;
 
 	netdev_feature_xor(&changes, wanted_features, dev->features);
@@ -1133,7 +1133,7 @@ static int mlxsw_sp_handle_feature(struct net_device *dev,
 static int mlxsw_sp_set_features(struct net_device *dev,
 				 netdev_features_t features)
 {
-	netdev_features_t oper_features;
+	__DECLARE_NETDEV_FEATURE_MASK(oper_features);
 	int err = 0;
 
 	netdev_feature_copy(&oper_features, dev->features);
diff --git a/drivers/net/ethernet/mscc/ocelot_net.c b/drivers/net/ethernet/mscc/ocelot_net.c
index 844525fc558c..224dcf2d2a76 100644
--- a/drivers/net/ethernet/mscc/ocelot_net.c
+++ b/drivers/net/ethernet/mscc/ocelot_net.c
@@ -726,8 +726,8 @@ static int ocelot_set_features(struct net_device *dev,
 {
 	struct ocelot_port_private *priv = netdev_priv(dev);
 	struct ocelot *ocelot = priv->port.ocelot;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	int port = priv->chip_port;
-	netdev_features_t changed;
 
 	netdev_feature_xor(&changed, dev->features, features);
 
diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
index 542cb42f7ea5..b0a6b1211534 100644
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
@@ -2889,7 +2889,7 @@ static netdev_tx_t myri10ge_sw_tso(struct sk_buff *skb,
 	struct sk_buff *segs, *curr, *next;
 	struct myri10ge_priv *mgp = netdev_priv(dev);
 	struct myri10ge_slice_state *ss;
-	netdev_features_t tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 	netdev_tx_t status;
 
 	netdev_feature_copy(&tmp, dev->features);
diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c
index 0e3f500ab5bb..79165cf28549 100644
--- a/drivers/net/ethernet/neterion/s2io.c
+++ b/drivers/net/ethernet/neterion/s2io.c
@@ -6567,7 +6567,7 @@ static void s2io_ethtool_get_strings(struct net_device *dev,
 static int s2io_set_features(struct net_device *dev, netdev_features_t features)
 {
 	struct s2io_nic *sp = netdev_priv(dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, features, dev->features);
 
diff --git a/drivers/net/ethernet/neterion/vxge/vxge-main.c b/drivers/net/ethernet/neterion/vxge/vxge-main.c
index 12d0508dbd7b..98184a71aad5 100644
--- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
+++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
@@ -2643,7 +2643,7 @@ static void vxge_poll_vp_lockup(struct timer_list *t)
 static void vxge_fix_features(struct net_device *dev,
 			      netdev_features_t *features)
 {
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, dev->features, *features);
 
@@ -2659,7 +2659,7 @@ static void vxge_fix_features(struct net_device *dev,
 static int vxge_set_features(struct net_device *dev, netdev_features_t features)
 {
 	struct vxgedev *vdev = netdev_priv(dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, dev->features, features);
 
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
index 63aa017804a5..38d3066aaf7c 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
@@ -3519,7 +3519,7 @@ static int nfp_net_set_features(struct net_device *netdev,
 				netdev_features_t features)
 {
 	struct nfp_net *nn = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	u32 new_ctrl;
 	int err;
 
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c
index a9afa3bf8c56..42e211017384 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c
@@ -235,9 +235,9 @@ static int nfp_repr_open(struct net_device *netdev)
 static void nfp_repr_fix_features(struct net_device *netdev,
 				  netdev_features_t *features)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(lower_features);
+	__DECLARE_NETDEV_FEATURE_MASK(old_features);
 	struct nfp_repr *repr = netdev_priv(netdev);
-	netdev_features_t lower_features;
-	netdev_features_t old_features;
 	struct net_device *lower_dev;
 
 	lower_dev = repr->dst->u.port_info.lower_dev;
diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c
index 48b253e54888..0c408d420d79 100644
--- a/drivers/net/ethernet/nvidia/forcedeth.c
+++ b/drivers/net/ethernet/nvidia/forcedeth.c
@@ -4953,9 +4953,9 @@ static void nv_vlan_mode(struct net_device *dev, netdev_features_t features)
 
 static int nv_set_features(struct net_device *dev, netdev_features_t features)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	struct fe_priv *np = netdev_priv(dev);
 	u8 __iomem *base = get_hwbase(dev);
-	netdev_features_t changed;
 	int retval;
 
 	netdev_feature_xor(&changed, dev->features, features);
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
index 49caca2ae753..7e25af846448 100644
--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
@@ -2210,7 +2210,7 @@ static int pch_gbe_set_features(struct net_device *netdev,
 	netdev_features_t features)
 {
 	struct pch_gbe_adapter *adapter = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, features, netdev->features);
 
diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c
index 0d1604e85ed4..62178c7b9cc1 100644
--- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c
+++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c
@@ -1604,7 +1604,7 @@ static int ionic_set_nic_features(struct ionic_lif *lif,
 static int ionic_init_nic_features(struct ionic_lif *lif)
 {
 	struct net_device *netdev = lif->netdev;
-	netdev_features_t features;
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	int err;
 
 	/* set up what we expect to support by default */
diff --git a/drivers/net/ethernet/qlogic/qede/qede.h b/drivers/net/ethernet/qlogic/qede/qede.h
index ada71452d454..dc5041c289eb 100644
--- a/drivers/net/ethernet/qlogic/qede/qede.h
+++ b/drivers/net/ethernet/qlogic/qede/qede.h
@@ -515,7 +515,7 @@ int qede_get_arfs_filter_count(struct qede_dev *edev);
 struct qede_reload_args {
 	void (*func)(struct qede_dev *edev, struct qede_reload_args *args);
 	union {
-		netdev_features_t features;
+		__DECLARE_NETDEV_FEATURE_MASK(features);
 		struct bpf_prog *new_prog;
 		u16 mtu;
 	} u;
diff --git a/drivers/net/ethernet/qlogic/qede/qede_filter.c b/drivers/net/ethernet/qlogic/qede/qede_filter.c
index 9fe5762b4eb6..684565231c25 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_filter.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_filter.c
@@ -922,7 +922,7 @@ void qede_fix_features(struct net_device *dev, netdev_features_t *features)
 int qede_set_features(struct net_device *dev, netdev_features_t features)
 {
 	struct qede_dev *edev = netdev_priv(dev);
-	netdev_features_t changes;
+	__DECLARE_NETDEV_FEATURE_MASK(changes);
 	bool need_reload = false;
 
 	netdev_feature_xor(&changes, features, dev->features);
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
index e7c3139af274..e0a38e3e4ec8 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -761,10 +761,10 @@ static struct qede_dev *qede_alloc_etherdev(struct qed_dev *cdev,
 
 static void qede_init_ndev(struct qede_dev *edev)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(hw_features);
 	struct net_device *ndev = edev->ndev;
 	struct pci_dev *pdev = edev->pdev;
 	bool udp_tunnel_enable = false;
-	netdev_features_t hw_features;
 
 	pci_set_drvdata(pdev, ndev);
 
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c
index 625fcf3ecb12..ee055e9e8eda 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c
@@ -1060,7 +1060,7 @@ static void qlcnic_process_flags(struct qlcnic_adapter *adapter,
 void qlcnic_fix_features(struct net_device *netdev, netdev_features_t *features)
 {
 	struct qlcnic_adapter *adapter = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	if (qlcnic_82xx_check(adapter) &&
 	    (adapter->flags & QLCNIC_ESWITCH_ENABLED)) {
@@ -1087,7 +1087,7 @@ void qlcnic_fix_features(struct net_device *netdev, netdev_features_t *features)
 int qlcnic_set_features(struct net_device *netdev, netdev_features_t features)
 {
 	struct qlcnic_adapter *adapter = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	int hw_lro;
 
 	netdev_feature_xor(&changed, netdev->features, features);
diff --git a/drivers/net/ethernet/qualcomm/emac/emac.c b/drivers/net/ethernet/qualcomm/emac/emac.c
index 71c403cb5e6c..53a83c12cb53 100644
--- a/drivers/net/ethernet/qualcomm/emac/emac.c
+++ b/drivers/net/ethernet/qualcomm/emac/emac.c
@@ -176,7 +176,7 @@ static int emac_set_features(struct net_device *netdev,
 			     netdev_features_t features)
 {
 	struct emac_adapter *adpt = netdev_priv(netdev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, features, netdev->features);
 
diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c
index 59b5a95bcaa4..bb8ed95c70ad 100644
--- a/drivers/net/ethernet/realtek/8139too.c
+++ b/drivers/net/ethernet/realtek/8139too.c
@@ -900,7 +900,7 @@ static struct net_device *rtl8139_init_board(struct pci_dev *pdev)
 static int rtl8139_set_features(struct net_device *dev, netdev_features_t features)
 {
 	struct rtl8139_private *tp = netdev_priv(dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	unsigned long flags;
 	void __iomem *ioaddr = tp->mmio_addr;
 
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 6f3574494a8e..e4fcda147396 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -1923,7 +1923,7 @@ static void ravb_set_rx_csum(struct net_device *ndev, bool enable)
 static int ravb_set_features_rx_csum(struct net_device *ndev,
 				     netdev_features_t features)
 {
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, ndev->features, features);
 
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c
index a3cfc6283a86..a8fc9e42feca 100644
--- a/drivers/net/ethernet/renesas/sh_eth.c
+++ b/drivers/net/ethernet/renesas/sh_eth.c
@@ -2934,7 +2934,7 @@ static int sh_eth_set_features(struct net_device *ndev,
 			       netdev_features_t features)
 {
 	struct sh_eth_private *mdp = netdev_priv(ndev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, ndev->features, features);
 
diff --git a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
index b70ce380fa61..b8b6e3164ad5 100644
--- a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
+++ b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
@@ -1775,7 +1775,7 @@ static int sxgbe_set_features(struct net_device *dev,
 			      netdev_features_t features)
 {
 	struct sxgbe_priv_data *priv = netdev_priv(dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, dev->features, features);
 
diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
index 981c01acef51..426a56a6f48e 100644
--- a/drivers/net/ethernet/sfc/ef10.c
+++ b/drivers/net/ethernet/sfc/ef10.c
@@ -1305,7 +1305,7 @@ static void efx_ef10_fini_nic(struct efx_nic *efx)
 static int efx_ef10_init_nic(struct efx_nic *efx)
 {
 	struct efx_ef10_nic_data *nic_data = efx->nic_data;
-	netdev_features_t hw_enc_features;
+	__DECLARE_NETDEV_FEATURE_MASK(hw_enc_features);
 	int rc;
 
 	netdev_feature_zero(&hw_enc_features);
@@ -1358,7 +1358,7 @@ static int efx_ef10_init_nic(struct efx_nic *efx)
 					&hw_enc_features);
 	/* add encapsulated TSO features */
 	if (efx_has_cap(efx, TX_TSO_V2_ENCAP)) {
-		netdev_features_t encap_tso_features;
+		__DECLARE_NETDEV_FEATURE_MASK(encap_tso_features);
 
 		netdev_feature_zero(&encap_tso_features);
 		netdev_feature_set_bits(NETIF_F_GSO_UDP_TUNNEL |
diff --git a/drivers/net/ethernet/sfc/ef100_nic.c b/drivers/net/ethernet/sfc/ef100_nic.c
index 5127e03050d1..e16cf6bc6ba1 100644
--- a/drivers/net/ethernet/sfc/ef100_nic.c
+++ b/drivers/net/ethernet/sfc/ef100_nic.c
@@ -184,7 +184,7 @@ static int efx_ef100_init_datapath_caps(struct efx_nic *efx)
 
 	if (efx_ef100_has_cap(nic_data->datapath_caps2, TX_TSO_V3)) {
 		struct net_device *net_dev = efx->net_dev;
-		netdev_features_t tso;
+		__DECLARE_NETDEV_FEATURE_MASK(tso);
 
 		netdev_feature_zero(&tso);
 		netdev_feature_set_bits(NETIF_F_TSO | NETIF_F_TSO6 |
diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
index 30cbfdbc100e..7c909e8bfdde 100644
--- a/drivers/net/ethernet/sfc/efx.c
+++ b/drivers/net/ethernet/sfc/efx.c
@@ -990,8 +990,8 @@ static int efx_pci_probe_main(struct efx_nic *efx)
 static int efx_pci_probe_post_io(struct efx_nic *efx)
 {
 	struct net_device *net_dev = efx->net_dev;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 	int rc = efx_pci_probe_main(efx);
-	netdev_features_t tmp;
 
 	if (rc)
 		return rc;
diff --git a/drivers/net/ethernet/sfc/efx_common.c b/drivers/net/ethernet/sfc/efx_common.c
index 01353739bae0..8eac2466e33b 100644
--- a/drivers/net/ethernet/sfc/efx_common.c
+++ b/drivers/net/ethernet/sfc/efx_common.c
@@ -211,7 +211,7 @@ void efx_set_rx_mode(struct net_device *net_dev)
 int efx_set_features(struct net_device *net_dev, netdev_features_t data)
 {
 	struct efx_nic *efx = netdev_priv(net_dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	int rc;
 
 	/* If disabling RX n-tuple filtering, clear existing filters */
@@ -366,8 +366,8 @@ void efx_start_monitor(struct efx_nic *efx)
  */
 static void efx_start_datapath(struct efx_nic *efx)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(old_features);
 	bool old_rx_scatter = efx->rx_scatter;
-	netdev_features_t old_features;
 	size_t rx_buf_len;
 
 	/* Calculate the rx buffer allocation parameters required to
diff --git a/drivers/net/ethernet/sfc/falcon/efx.c b/drivers/net/ethernet/sfc/falcon/efx.c
index a6301c8dd9cb..f4bde5771ba2 100644
--- a/drivers/net/ethernet/sfc/falcon/efx.c
+++ b/drivers/net/ethernet/sfc/falcon/efx.c
@@ -592,8 +592,8 @@ static int ef4_probe_channels(struct ef4_nic *efx)
  */
 static void ef4_start_datapath(struct ef4_nic *efx)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(old_features);
 	bool old_rx_scatter = efx->rx_scatter;
-	netdev_features_t old_features;
 	struct ef4_tx_queue *tx_queue;
 	struct ef4_rx_queue *rx_queue;
 	struct ef4_channel *channel;
@@ -2196,7 +2196,7 @@ static void ef4_set_rx_mode(struct net_device *net_dev)
 static int ef4_set_features(struct net_device *net_dev, netdev_features_t data)
 {
 	struct ef4_nic *efx = netdev_priv(net_dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	int rc;
 
 	/* If disabling RX n-tuple filtering, clear existing filters */
diff --git a/drivers/net/ethernet/sfc/falcon/net_driver.h b/drivers/net/ethernet/sfc/falcon/net_driver.h
index 942c539c76c2..4b66f69f516b 100644
--- a/drivers/net/ethernet/sfc/falcon/net_driver.h
+++ b/drivers/net/ethernet/sfc/falcon/net_driver.h
@@ -849,7 +849,7 @@ struct ef4_nic {
 	bool port_initialized;
 	struct net_device *net_dev;
 
-	netdev_features_t fixed_features;
+	__DECLARE_NETDEV_FEATURE_MASK(fixed_features);
 
 	struct ef4_buffer stats_buffer;
 	u64 rx_nodesc_drops_total;
diff --git a/drivers/net/ethernet/sfc/mcdi_filters.c b/drivers/net/ethernet/sfc/mcdi_filters.c
index 2a9a692da100..c19950974b62 100644
--- a/drivers/net/ethernet/sfc/mcdi_filters.c
+++ b/drivers/net/ethernet/sfc/mcdi_filters.c
@@ -1297,8 +1297,8 @@ efx_mcdi_filter_table_probe_matches(struct efx_nic *efx,
 int efx_mcdi_filter_table_probe(struct efx_nic *efx, bool multicast_chaining)
 {
 	struct net_device *net_dev = efx->net_dev;
+	__DECLARE_NETDEV_FEATURE_MASK(supported);
 	struct efx_mcdi_filter_table *table;
-	netdev_features_t supported;
 	int rc;
 
 	if (!efx_rwsem_assert_write_locked(&efx->filter_sem))
diff --git a/drivers/net/ethernet/sfc/net_driver.h b/drivers/net/ethernet/sfc/net_driver.h
index 0c47ba740445..ca29a3786ea2 100644
--- a/drivers/net/ethernet/sfc/net_driver.h
+++ b/drivers/net/ethernet/sfc/net_driver.h
@@ -1052,7 +1052,7 @@ struct efx_nic {
 	bool port_initialized;
 	struct net_device *net_dev;
 
-	netdev_features_t fixed_features;
+	__DECLARE_NETDEV_FEATURE_MASK(fixed_features);
 
 	u16 num_mac_stats;
 	struct efx_buffer stats_buffer;
diff --git a/drivers/net/ethernet/sun/sunvnet_common.c b/drivers/net/ethernet/sun/sunvnet_common.c
index 44f4bffb5f24..534c10e353d4 100644
--- a/drivers/net/ethernet/sun/sunvnet_common.c
+++ b/drivers/net/ethernet/sun/sunvnet_common.c
@@ -1224,7 +1224,7 @@ vnet_handle_offloads(struct vnet_port *port, struct sk_buff *skb,
 	struct net_device *dev = VNET_PORT_TO_NET_DEVICE(port);
 	struct vio_dring_state *dr = &port->vio.drings[VIO_DRIVER_TX_RING];
 	struct sk_buff *segs, *curr, *next;
-	netdev_features_t tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 	int maclen, datalen;
 	int status;
 	int gso_size, gso_type, gso_segs;
diff --git a/drivers/net/ethernet/synopsys/dwc-xlgmac.h b/drivers/net/ethernet/synopsys/dwc-xlgmac.h
index 8598aaf3ec99..a0f69cc235fc 100644
--- a/drivers/net/ethernet/synopsys/dwc-xlgmac.h
+++ b/drivers/net/ethernet/synopsys/dwc-xlgmac.h
@@ -606,7 +606,7 @@ struct xlgmac_pdata {
 
 	/* Netdev related settings */
 	unsigned char mac_addr[ETH_ALEN];
-	netdev_features_t netdev_features;
+	__DECLARE_NETDEV_FEATURE_MASK(netdev_features);
 	struct napi_struct napi;
 
 	/* Filtering support */
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index 22875a7ef1ff..84b3bce287cb 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -1944,8 +1944,8 @@ static int netvsc_set_features(struct net_device *ndev,
 	struct net_device_context *ndevctx = netdev_priv(ndev);
 	struct netvsc_device *nvdev = rtnl_dereference(ndevctx->nvdev);
 	struct net_device *vf_netdev = rtnl_dereference(ndevctx->vf_netdev);
+	__DECLARE_NETDEV_FEATURE_MASK(change);
 	struct ndis_offload_params offloads;
-	netdev_features_t change;
 	int ret = 0;
 
 	if (!nvdev || nvdev->destroy)
diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
index 115ebe0b970a..f0206cd90678 100644
--- a/drivers/net/hyperv/rndis_filter.c
+++ b/drivers/net/hyperv/rndis_filter.c
@@ -1348,7 +1348,7 @@ static int rndis_netdev_set_hwcaps(struct rndis_device *rndis_device,
 	struct ndis_offload hwcaps;
 	struct ndis_offload_params offloads;
 	unsigned int gso_max_size = GSO_MAX_SIZE;
-	netdev_features_t tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 	int ret;
 
 	/* Find HW offload capabilities */
diff --git a/drivers/net/ipvlan/ipvlan.h b/drivers/net/ipvlan/ipvlan.h
index 3837c897832e..84cd8f1a5131 100644
--- a/drivers/net/ipvlan/ipvlan.h
+++ b/drivers/net/ipvlan/ipvlan.h
@@ -67,7 +67,7 @@ struct ipvl_dev {
 	struct list_head	addrs;
 	struct ipvl_pcpu_stats	__percpu *pcpu_stats;
 	DECLARE_BITMAP(mac_filters, IPVLAN_MAC_FILTER_SIZE);
-	netdev_features_t	sfeatures;
+	__DECLARE_NETDEV_FEATURE_MASK(sfeatures);
 	u32			msg_enable;
 	spinlock_t		addrs_lock;
 };
diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c
index 84ad786ae18d..e77e4dc2aa60 100644
--- a/drivers/net/ipvlan/ipvlan_main.c
+++ b/drivers/net/ipvlan/ipvlan_main.c
@@ -242,7 +242,7 @@ static void ipvlan_fix_features(struct net_device *dev,
 				netdev_features_t *features)
 {
 	struct ipvl_dev *ipvlan = netdev_priv(dev);
-	netdev_features_t tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 
 	netdev_feature_set_bits(NETIF_F_ALL_FOR_ALL, features);
 	netdev_feature_fill(&tmp);
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index 5526d54c0a14..8693decea5e8 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -3478,7 +3478,7 @@ static void macsec_fix_features(struct net_device *dev,
 {
 	struct macsec_dev *macsec = macsec_priv(dev);
 	struct net_device *real_dev = macsec->real_dev;
-	netdev_features_t tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 
 	if (macsec_is_offloaded(macsec)) {
 		netdev_feature_copy(features, real_dev->features);
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 9ac38e22ccfc..d373b4557206 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -1074,9 +1074,10 @@ static int macvlan_ethtool_get_ts_info(struct net_device *dev,
 static void macvlan_fix_features(struct net_device *dev,
 				 netdev_features_t *features)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(lowerdev_features);
 	struct macvlan_dev *vlan = netdev_priv(dev);
-	netdev_features_t lowerdev_features;
-	netdev_features_t mask, tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(mask);
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 
 	netdev_feature_copy(&lowerdev_features, vlan->lowerdev->features);
 	netdev_feature_set_bits(NETIF_F_ALL_FOR_ALL, features);
diff --git a/drivers/net/net_failover.c b/drivers/net/net_failover.c
index 704e691530f7..16375fb5c958 100644
--- a/drivers/net/net_failover.c
+++ b/drivers/net/net_failover.c
@@ -384,10 +384,10 @@ static void net_failover_compute_features(struct net_device *dev)
 					IFF_XMIT_DST_RELEASE_PERM;
 	struct net_failover_info *nfo_info = netdev_priv(dev);
 	struct net_device *primary_dev, *standby_dev;
-	netdev_features_t vlan_features;
-	netdev_features_t enc_features;
-	netdev_features_t vlan_mask;
-	netdev_features_t enc_mask;
+	__DECLARE_NETDEV_FEATURE_MASK(vlan_features);
+	__DECLARE_NETDEV_FEATURE_MASK(enc_features);
+	__DECLARE_NETDEV_FEATURE_MASK(vlan_mask);
+	__DECLARE_NETDEV_FEATURE_MASK(enc_mask);
 
 	netdev_feature_zero(&vlan_features);
 	netdev_feature_set_bits(FAILOVER_VLAN_FEATURES & NETIF_F_ALL_FOR_ALL,
diff --git a/drivers/net/tap.c b/drivers/net/tap.c
index 03158fa9476c..49da4d101517 100644
--- a/drivers/net/tap.c
+++ b/drivers/net/tap.c
@@ -317,11 +317,11 @@ EXPORT_SYMBOL_GPL(tap_del_queues);
 
 rx_handler_result_t tap_handle_frame(struct sk_buff **pskb)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	struct sk_buff *skb = *pskb;
 	struct net_device *dev = skb->dev;
 	struct tap_dev *tap;
 	struct tap_queue *q;
-	netdev_features_t features;
 
 	netdev_feature_zero(&features);
 	netdev_feature_set_bits(TAP_FEATURES, &features);
@@ -923,9 +923,9 @@ static int tap_ioctl_set_queue(struct file *file, unsigned int flags)
 
 static int set_offload(struct tap_queue *q, unsigned long arg)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(feature_mask);
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	struct tap_dev *tap;
-	netdev_features_t features;
-	netdev_features_t feature_mask;
 
 	tap = rtnl_dereference(q->tap);
 	if (!tap)
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 207771e0d1c8..79171c8c7379 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -988,10 +988,10 @@ static void __team_compute_features(struct team *team)
 	unsigned short max_hard_header_len = ETH_HLEN;
 	unsigned int dst_release_flag = IFF_XMIT_DST_RELEASE |
 					IFF_XMIT_DST_RELEASE_PERM;
-	netdev_features_t vlan_features;
-	netdev_features_t enc_features;
-	netdev_features_t mask_vlan;
-	netdev_features_t mask_enc;
+	__DECLARE_NETDEV_FEATURE_MASK(vlan_features);
+	__DECLARE_NETDEV_FEATURE_MASK(enc_features);
+	__DECLARE_NETDEV_FEATURE_MASK(mask_vlan);
+	__DECLARE_NETDEV_FEATURE_MASK(mask_enc);
 
 	netdev_feature_zero(&vlan_features);
 	netdev_feature_set_bits(TEAM_VLAN_FEATURES & NETIF_F_ALL_FOR_ALL,
@@ -2010,7 +2010,7 @@ static void team_fix_features(struct net_device *dev,
 {
 	struct team_port *port;
 	struct team *team = netdev_priv(dev);
-	netdev_features_t mask;
+	__DECLARE_NETDEV_FEATURE_MASK(mask);
 
 	netdev_feature_copy(&mask, *features);
 	netdev_feature_clear_bits(NETIF_F_ONE_FOR_ALL, features);
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 9e9cbafc870b..66c566291b16 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -183,7 +183,7 @@ struct tun_struct {
 	kgid_t			group;
 
 	struct net_device	*dev;
-	netdev_features_t	set_features;
+	__DECLARE_NETDEV_FEATURE_MASK(set_features);
 #define TUN_USER_FEATURES (NETIF_F_HW_CSUM|NETIF_F_TSO_ECN|NETIF_F_TSO| \
 			  NETIF_F_TSO6)
 
@@ -1083,7 +1083,7 @@ static void tun_net_fix_features(struct net_device *dev,
 				 netdev_features_t *features)
 {
 	struct tun_struct *tun = netdev_priv(dev);
-	netdev_features_t tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 
 	netdev_feature_and(&tmp, *features, tun->set_features);
 	netdev_feature_clear_bits(TUN_USER_FEATURES, features);
@@ -2802,7 +2802,7 @@ static void tun_get_iff(struct tun_struct *tun, struct ifreq *ifr)
  * privs required. */
 static int set_offload(struct tun_struct *tun, unsigned long arg)
 {
-	netdev_features_t features;
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 
 	netdev_feature_zero(&features);
 
diff --git a/drivers/net/usb/aqc111.c b/drivers/net/usb/aqc111.c
index 1363f64f4c86..45305d74692e 100644
--- a/drivers/net/usb/aqc111.c
+++ b/drivers/net/usb/aqc111.c
@@ -567,7 +567,7 @@ static int aqc111_set_features(struct net_device *net,
 {
 	struct usbnet *dev = netdev_priv(net);
 	struct aqc111_data *aqc111_data = dev->driver_priv;
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	u16 reg16 = 0;
 	u8 reg8 = 0;
 
diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c
index 0099d55f9c90..b11b4bba443e 100644
--- a/drivers/net/usb/ax88179_178a.c
+++ b/drivers/net/usb/ax88179_178a.c
@@ -952,7 +952,7 @@ ax88179_set_features(struct net_device *net, netdev_features_t features)
 {
 	u8 tmp;
 	struct usbnet *dev = netdev_priv(net);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 
 	netdev_feature_xor(&changed, net->features, features);
 
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 31fb92ae23c2..61d2175c63d7 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -2092,9 +2092,9 @@ static void r8152_csum_workaround(struct r8152 *tp, struct sk_buff *skb,
 				  struct sk_buff_head *list)
 {
 	if (skb_shinfo(skb)->gso_size) {
+		__DECLARE_NETDEV_FEATURE_MASK(features);
 		struct sk_buff *segs, *seg, *next;
 		struct sk_buff_head seg_list;
-		netdev_features_t features;
 
 		netdev_feature_copy(&features, tp->netdev->features);
 		netdev_feature_clear_bits(NETIF_F_SG | NETIF_F_IPV6_CSUM |
@@ -3233,8 +3233,8 @@ static void rtl_rx_vlan_en(struct r8152 *tp, bool enable)
 static int rtl8152_set_features(struct net_device *dev,
 				netdev_features_t features)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	struct r8152 *tp = netdev_priv(dev);
-	netdev_features_t changed;
 	int ret;
 
 	ret = usb_autopm_get_interface(tp->intf);
diff --git a/drivers/net/veth.c b/drivers/net/veth.c
index 39bfa024861c..6603dcaf4c84 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -1407,7 +1407,7 @@ static int veth_set_features(struct net_device *dev,
 			     netdev_features_t features)
 {
 	struct veth_priv *priv = netdev_priv(dev);
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	int err;
 
 	netdev_feature_xor(&changed, features, dev->features);
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 5307bc4f3c99..96dc985a3fb0 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -3154,7 +3154,7 @@ static int virtnet_probe(struct virtio_device *vdev)
 		netdev_feature_set_bit(NETIF_F_GSO_ROBUST_BIT, &dev->features);
 
 		if (gso) {
-			netdev_features_t tmp;
+			__DECLARE_NETDEV_FEATURE_MASK(tmp);
 
 			netdev_feature_copy(&tmp, dev->hw_features);
 			netdev_feature_and_bits(NETIF_F_ALL_TSO, &tmp);
diff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c
index 05e422b48774..e9035e80d5ae 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethtool.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c
@@ -340,7 +340,7 @@ int vmxnet3_set_features(struct net_device *netdev, netdev_features_t features)
 	struct vmxnet3_adapter *adapter = netdev_priv(netdev);
 	u64 tun_offload_mask = NETIF_F_GSO_UDP_TUNNEL |
 				NETIF_F_GSO_UDP_TUNNEL_CSUM;
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	unsigned long flags;
 	u8 udp_tun_enabled;
 
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
index cfe0fcb1a0ba..aaf8c15a99ad 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
@@ -836,8 +836,8 @@ static int iwl_mvm_tx_tso(struct iwl_mvm *mvm, struct sk_buff *skb,
 	struct ieee80211_hdr *hdr = (void *)skb->data;
 	unsigned int mss = skb_shinfo(skb)->gso_size;
 	unsigned int num_subframes, tcp_payload_len, subf_len, max_amsdu_len;
+	__DECLARE_NETDEV_FEATURE_MASK(netdev_flags);
 	u16 snap_ip_tcp, pad;
-	netdev_features_t netdev_flags;
 	u8 tid;
 
 	netdev_feature_zero(&netdev_flags);
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index 00c30e6dbe7c..1c5b58ebe844 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -679,7 +679,7 @@ static netdev_tx_t xennet_start_xmit(struct sk_buff *skb, struct net_device *dev
 	struct netfront_queue *queue = NULL;
 	struct xennet_gnttab_make_txreq info = { };
 	unsigned int num_queues = dev->real_num_tx_queues;
-	netdev_features_t features;
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	u16 queue_index;
 	struct sk_buff *nskb;
 
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
index 21e4a356c717..82c4ae2ae064 100644
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -6833,8 +6833,8 @@ static int qeth_set_ipa_rx_csum(struct qeth_card *card, bool on)
  */
 void qeth_enable_hw_features(struct net_device *dev)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	struct qeth_card *card = dev->ml_priv;
-	netdev_features_t features;
 
 	netdev_feature_copy(&features, dev->features);
 	/* force-off any feature that might need an IPA sequence.
@@ -6860,8 +6860,8 @@ static void qeth_check_restricted_features(struct qeth_card *card,
 					   netdev_features_t changed,
 					   netdev_features_t actual)
 {
-	netdev_features_t ipv6_features;
-	netdev_features_t ipv4_features;
+	__DECLARE_NETDEV_FEATURE_MASK(ipv6_features);
+	__DECLARE_NETDEV_FEATURE_MASK(ipv4_features);
 
 	netdev_features_zero(&ipv6_features);
 	netdev_features_zero(&ipv4_features);
@@ -6975,7 +6975,7 @@ void qeth_features_check(struct sk_buff *skb, struct net_device *dev,
 	/* Traffic with local next-hop is not eligible for some offloads: */
 	if (skb->ip_summed == CHECKSUM_PARTIAL &&
 	    READ_ONCE(card->options.isolation) != ISOLATION_MODE_FWD) {
-		netdev_features_t restricted;
+		__DECLARE_NETDEV_FEATURE_MASK(restricted);
 
 		netdev_feature_zero(&restricted);
 		if (skb_is_gso(skb) && !netif_needs_gso(skb, *features))
diff --git a/drivers/staging/qlge/qlge_main.c b/drivers/staging/qlge/qlge_main.c
index efbeb0a1a601..61b7cb6d1396 100644
--- a/drivers/staging/qlge/qlge_main.c
+++ b/drivers/staging/qlge/qlge_main.c
@@ -2276,7 +2276,7 @@ static int qlge_update_hw_vlan_features(struct net_device *ndev,
 static int qlge_set_features(struct net_device *ndev,
 			     netdev_features_t features)
 {
-	netdev_features_t changed;
+	__DECLARE_NETDEV_FEATURE_MASK(changed);
 	int err;
 
 	netdev_feature_xor(&changed, ndev->features, features);
diff --git a/include/linux/if_macvlan.h b/include/linux/if_macvlan.h
index 10c94a3936ca..101be703a4db 100644
--- a/include/linux/if_macvlan.h
+++ b/include/linux/if_macvlan.h
@@ -26,7 +26,7 @@ struct macvlan_dev {
 
 	DECLARE_BITMAP(mc_filter, MACVLAN_MC_FILTER_SZ);
 
-	netdev_features_t	set_features;
+	__DECLARE_NETDEV_FEATURE_MASK(set_features);
 	enum macvlan_mode	mode;
 	u16			flags;
 	unsigned int		macaddr_count;
diff --git a/include/linux/if_tap.h b/include/linux/if_tap.h
index 915a187cfabd..e81070409f39 100644
--- a/include/linux/if_tap.h
+++ b/include/linux/if_tap.h
@@ -40,7 +40,7 @@ struct tap_dev {
 	struct list_head	queue_list;
 	int			numvtaps;
 	int			numqueues;
-	netdev_features_t	tap_features;
+	__DECLARE_NETDEV_FEATURE_MASK(tap_features);
 	int			minor;
 
 	void (*update_features)(struct tap_dev *tap, netdev_features_t features);
diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
index b3fa05c88eef..b5013b3e3e48 100644
--- a/include/linux/netdev_features.h
+++ b/include/linux/netdev_features.h
@@ -103,6 +103,9 @@ enum {
 
 #define NETDEV_FEATURE_DWORDS	DIV_ROUND_UP(NETDEV_FEATURE_COUNT, 64)
 
+#define __DECLARE_NETDEV_FEATURE_MASK(name)	\
+	netdev_features_t name
+
 /* copy'n'paste compression ;) */
 #define __NETIF_F_BIT(bit)	((netdev_features_t)1 << (bit))
 #define __NETIF_F(name)		__NETIF_F_BIT(NETIF_F_##name##_BIT)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 56e642a72997..4d36b747165c 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1995,13 +1995,13 @@ struct net_device {
 	unsigned short		needed_headroom;
 	unsigned short		needed_tailroom;
 
-	netdev_features_t	features;
-	netdev_features_t	hw_features;
-	netdev_features_t	wanted_features;
-	netdev_features_t	vlan_features;
-	netdev_features_t	hw_enc_features;
-	netdev_features_t	mpls_features;
-	netdev_features_t	gso_partial_features;
+	__DECLARE_NETDEV_FEATURE_MASK(features);
+	__DECLARE_NETDEV_FEATURE_MASK(hw_features);
+	__DECLARE_NETDEV_FEATURE_MASK(wanted_features);
+	__DECLARE_NETDEV_FEATURE_MASK(vlan_features);
+	__DECLARE_NETDEV_FEATURE_MASK(hw_enc_features);
+	__DECLARE_NETDEV_FEATURE_MASK(mpls_features);
+	__DECLARE_NETDEV_FEATURE_MASK(gso_partial_features);
 
 	unsigned int		min_mtu;
 	unsigned int		max_mtu;
@@ -5055,7 +5055,7 @@ void netdev_increment_features(netdev_features_t *ret, netdev_features_t all,
 static inline void netdev_add_tso_features(netdev_features_t *features,
 					   netdev_features_t mask)
 {
-	netdev_features_t one;
+	__DECLARE_NETDEV_FEATURE_MASK(one);
 
 	netdev_feature_zero(&one);
 	netdev_feature_set_bits(NETIF_F_ALL_TSO, &one);
@@ -5075,7 +5075,7 @@ void netif_skb_features(struct sk_buff *skb, netdev_features_t *features);
 
 static inline bool net_gso_ok(netdev_features_t features, int gso_type)
 {
-	netdev_features_t feature;
+	__DECLARE_NETDEV_FEATURE_MASK(feature);
 
 	/* check flags correspondence */
 	BUILD_BUG_ON(SKB_GSO_TCPV4   != (NETIF_F_TSO >> NETIF_F_GSO_SHIFT));
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index af0fc13cea34..683c56f8b8c3 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2624,7 +2624,7 @@ struct ieee80211_hw {
 		int units_pos;
 		s16 accuracy;
 	} radiotap_timestamp;
-	netdev_features_t netdev_features;
+	__DECLARE_NETDEV_FEATURE_MASK(netdev_features);
 	u8 uapsd_queues;
 	u8 uapsd_max_sp_len;
 	u8 n_cipher_schemes;
diff --git a/include/net/sock.h b/include/net/sock.h
index f7ba322c63bd..6107aa6731e6 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -451,9 +451,9 @@ struct sock {
 	unsigned long		sk_pacing_rate; /* bytes per second */
 	unsigned long		sk_max_pacing_rate;
 	struct page_frag	sk_frag;
-	netdev_features_t	sk_route_caps;
-	netdev_features_t	sk_route_nocaps;
-	netdev_features_t	sk_route_forced_caps;
+	__DECLARE_NETDEV_FEATURE_MASK(sk_route_caps);
+	__DECLARE_NETDEV_FEATURE_MASK(sk_route_nocaps);
+	__DECLARE_NETDEV_FEATURE_MASK(sk_route_forced_caps);
 	int			sk_gso_type;
 	unsigned int		sk_gso_max_size;
 	gfp_t			sk_allocation;
@@ -2056,7 +2056,7 @@ static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags)
 
 static inline void sk_nocaps_add_gso(struct sock *sk)
 {
-	netdev_features_t gso_flags;
+	__DECLARE_NETDEV_FEATURE_MASK(gso_flags);
 
 	netdev_feature_zero(&gso_flags);
 	netdev_feature_set_bits(NETIF_F_GSO_MASK, &gso_flags);
diff --git a/include/net/udp.h b/include/net/udp.h
index 3855b9775cbf..42681e7e2eba 100644
--- a/include/net/udp.h
+++ b/include/net/udp.h
@@ -481,7 +481,7 @@ void udpv6_encap_enable(void);
 static inline struct sk_buff *udp_rcv_segment(struct sock *sk,
 					      struct sk_buff *skb, bool ipv4)
 {
-	netdev_features_t features;
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	struct sk_buff *segs;
 
 	netdev_feature_zero(&features);
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index a010612cf27b..4062917584de 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -640,9 +640,9 @@ static void vlan_dev_fix_features(struct net_device *dev,
 				  netdev_features_t *features)
 {
 	struct net_device *real_dev = vlan_dev_priv(dev)->real_dev;
-	netdev_features_t lower_features;
-	netdev_features_t old_features;
-	netdev_features_t tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(lower_features);
+	__DECLARE_NETDEV_FEATURE_MASK(old_features);
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 
 	netdev_feature_copy(&tmp, real_dev->vlan_features);
 	netdev_feature_set_bit(NETIF_F_RXCSUM_BIT, &tmp);
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index c0a71fd6f772..d210031df22a 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -534,8 +534,8 @@ static void br_set_gso_limits(struct net_bridge *br)
  */
 void br_features_recompute(struct net_bridge *br, netdev_features_t *features)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(mask);
 	struct net_bridge_port *p;
-	netdev_features_t mask;
 
 	if (list_empty(&br->port_list))
 		return;
diff --git a/net/core/dev.c b/net/core/dev.c
index 17a93ec301b6..d0f04bdcc00e 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3183,7 +3183,7 @@ static u16 skb_tx_hash(const struct net_device *dev,
 
 static void skb_warn_bad_offload(const struct sk_buff *skb)
 {
-	static const netdev_features_t null_features;
+	static __DECLARE_NETDEV_FEATURE_MASK(null_features);
 	struct net_device *dev = skb->dev;
 	const char *name = "";
 
@@ -3382,7 +3382,7 @@ struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
 	 * work.
 	 */
 	if (netdev_feature_test_bit(NETIF_F_GSO_PARTIAL_BIT, features)) {
-		netdev_features_t partial_features;
+		__DECLARE_NETDEV_FEATURE_MASK(partial_features);
 		struct net_device *dev = skb->dev;
 
 		netdev_feature_and(&partial_features, dev->features,
@@ -3552,7 +3552,7 @@ void netif_skb_features(struct sk_buff *skb, netdev_features_t *features)
 		netdev_feature_and(features, *features, dev->hw_enc_features);
 
 	if (skb_vlan_tagged(skb)) {
-		netdev_features_t tmp;
+		__DECLARE_NETDEV_FEATURE_MASK(tmp);
 
 		netdev_feature_copy(&tmp, dev->vlan_features);
 		netdev_feature_set_bits(NETIF_F_HW_VLAN_CTAG_TX_BIT |
@@ -3649,7 +3649,7 @@ EXPORT_SYMBOL(skb_csum_hwoffload_help);
 
 static struct sk_buff *validate_xmit_skb(struct sk_buff *skb, struct net_device *dev, bool *again)
 {
-	netdev_features_t features;
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 
 	netif_skb_features(skb, &features);
 	skb = validate_xmit_vlan(skb, features);
@@ -9803,7 +9803,7 @@ static void netdev_sync_upper_features(struct net_device *lower,
 				       struct net_device *upper,
 				       netdev_features_t *features)
 {
-	netdev_features_t upper_disables;
+	__DECLARE_NETDEV_FEATURE_MASK(upper_disables);
 	int feature_bit;
 
 	netdev_feature_zero(&upper_disables);
@@ -9823,7 +9823,7 @@ static void netdev_sync_upper_features(struct net_device *lower,
 static void netdev_sync_lower_features(struct net_device *upper,
 	struct net_device *lower, netdev_features_t features)
 {
-	netdev_features_t upper_disables;
+	__DECLARE_NETDEV_FEATURE_MASK(upper_disables);
 	int feature_bit;
 
 	netdev_feature_zero(&upper_disables);
@@ -9953,8 +9953,8 @@ static void netdev_fix_features(struct net_device *dev,
 
 int __netdev_update_features(struct net_device *dev)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	struct net_device *upper, *lower;
-	netdev_features_t features;
 	struct list_head *iter;
 	int err = -1;
 
@@ -10001,7 +10001,7 @@ int __netdev_update_features(struct net_device *dev)
 		netdev_sync_lower_features(dev, lower, features);
 
 	if (!err) {
-		netdev_features_t diff;
+		__DECLARE_NETDEV_FEATURE_MASK(diff);
 
 		netdev_feature_xor(&diff, features, dev->features);
 
@@ -11373,7 +11373,7 @@ static int dev_cpu_dead(unsigned int oldcpu)
 void netdev_increment_features(netdev_features_t *ret, netdev_features_t all,
 			       netdev_features_t one, netdev_features_t mask)
 {
-	netdev_features_t tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 
 	if (netdev_feature_test_bit(NETIF_F_HW_CSUM_BIT, mask))
 		netdev_feature_set_bits(NETIF_F_CSUM_MASK, &mask);
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index d2fc92b89a5f..83cfc0c5a200 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -74,8 +74,8 @@ static netdev_tx_t netpoll_start_xmit(struct sk_buff *skb,
 				      struct net_device *dev,
 				      struct netdev_queue *txq)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	netdev_tx_t status = NETDEV_TX_OK;
-	netdev_features_t features;
 
 	netif_skb_features(skb, &features);
 
diff --git a/net/ethtool/features.c b/net/ethtool/features.c
index 1c9f4df273bd..93c6238c7ade 100644
--- a/net/ethtool/features.c
+++ b/net/ethtool/features.c
@@ -38,8 +38,8 @@ static int features_prepare_data(const struct ethnl_req_info *req_base,
 				 struct genl_info *info)
 {
 	struct features_reply_data *data = FEATURES_REPDATA(reply_base);
+	__DECLARE_NETDEV_FEATURE_MASK(all_features);
 	struct net_device *dev = reply_base->dev;
-	netdev_features_t all_features;
 
 	ethnl_features_to_bitmap32(data->hw, dev->hw_features);
 	ethnl_features_to_bitmap32(data->wanted, dev->wanted_features);
diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c
index 661b75dee9fd..0b2e98e97f58 100644
--- a/net/ethtool/ioctl.c
+++ b/net/ethtool/ioctl.c
@@ -232,8 +232,8 @@ static void ethtool_get_feature_mask(u32 eth_cmd, netdev_features_t *mask)
 static int ethtool_get_one_feature(struct net_device *dev,
 	char __user *useraddr, u32 ethcmd)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(mask);
 	struct ethtool_value edata;
-	netdev_features_t mask;
 
 	ethtool_get_feature_mask(ethcmd, &mask);
 	edata.cmd = ethcmd;
@@ -247,8 +247,8 @@ static int ethtool_get_one_feature(struct net_device *dev,
 static int ethtool_set_one_feature(struct net_device *dev,
 	void __user *useraddr, u32 ethcmd)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(mask);
 	struct ethtool_value edata;
-	netdev_features_t mask;
 
 	if (copy_from_user(&edata, useraddr, sizeof(edata)))
 		return -EFAULT;
@@ -2710,9 +2710,9 @@ static int ethtool_set_fecparam(struct net_device *dev, void __user *useraddr)
 int dev_ethtool(struct net *net, struct ifreq *ifr, void __user *useraddr)
 {
 	struct net_device *dev = __dev_get_by_name(net, ifr->ifr_name);
+	__DECLARE_NETDEV_FEATURE_MASK(old_features);
 	u32 ethcmd, sub_cmd;
 	int rc;
-	netdev_features_t old_features;
 
 	if (!dev)
 		return -ENODEV;
diff --git a/net/hsr/hsr_device.c b/net/hsr/hsr_device.c
index b7ba16bdb8e0..7a4c5e79eb5f 100644
--- a/net/hsr/hsr_device.c
+++ b/net/hsr/hsr_device.c
@@ -180,7 +180,7 @@ static int hsr_dev_close(struct net_device *dev)
 static void hsr_features_recompute(struct hsr_priv *hsr,
 				   netdev_features_t *features)
 {
-	netdev_features_t mask;
+	__DECLARE_NETDEV_FEATURE_MASK(mask);
 	struct hsr_port *port;
 
 	netdev_feature_copy(&mask, *features);
diff --git a/net/ipv4/esp4_offload.c b/net/ipv4/esp4_offload.c
index f7e77a9176d6..2c0b7a4e5489 100644
--- a/net/ipv4/esp4_offload.c
+++ b/net/ipv4/esp4_offload.c
@@ -190,7 +190,7 @@ static struct sk_buff *esp4_gso_segment(struct sk_buff *skb,
 	struct ip_esp_hdr *esph;
 	struct crypto_aead *aead;
 	struct xfrm_offload *xo = xfrm_offload(skb);
-	netdev_features_t esp_features;
+	__DECLARE_NETDEV_FEATURE_MASK(esp_features);
 	struct sec_path *sp;
 
 	if (!xo)
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
index 60a693c7ae79..8a065badcf2d 100644
--- a/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -233,8 +233,8 @@ static int ip_finish_output2(struct net *net, struct sock *sk, struct sk_buff *s
 static int ip_finish_output_gso(struct net *net, struct sock *sk,
 				struct sk_buff *skb, unsigned int mtu)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	struct sk_buff *segs, *nskb;
-	netdev_features_t features;
 	int ret = 0;
 
 	/* common case: seglen is <= mtu
diff --git a/net/ipv4/tcp_offload.c b/net/ipv4/tcp_offload.c
index 4bf0a0d382f6..2f4b7489f1a2 100644
--- a/net/ipv4/tcp_offload.c
+++ b/net/ipv4/tcp_offload.c
@@ -55,6 +55,7 @@ struct sk_buff *tcp_gso_segment(struct sk_buff *skb,
 				netdev_features_t features)
 {
 	struct sk_buff *segs = ERR_PTR(-EINVAL);
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 	unsigned int sum_truesize = 0;
 	struct tcphdr *th;
 	unsigned int thlen;
@@ -65,7 +66,6 @@ struct sk_buff *tcp_gso_segment(struct sk_buff *skb,
 	struct sk_buff *gso_skb = skb;
 	__sum16 newcheck;
 	bool ooo_okay, copy_destructor;
-	netdev_features_t tmp;
 
 	th = tcp_hdr(skb);
 	thlen = th->doff * 4;
diff --git a/net/ipv6/esp6_offload.c b/net/ipv6/esp6_offload.c
index 5c2e0da49804..3ce9360071f4 100644
--- a/net/ipv6/esp6_offload.c
+++ b/net/ipv6/esp6_offload.c
@@ -229,7 +229,7 @@ static struct sk_buff *esp6_gso_segment(struct sk_buff *skb,
 	struct ip_esp_hdr *esph;
 	struct crypto_aead *aead;
 	struct xfrm_offload *xo = xfrm_offload(skb);
-	netdev_features_t esp_features;
+	__DECLARE_NETDEV_FEATURE_MASK(esp_features);
 	struct sec_path *sp;
 
 	if (!xo)
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index c7e060064686..72acb065abc0 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -138,8 +138,8 @@ static int
 ip6_finish_output_gso_slowpath_drop(struct net *net, struct sock *sk,
 				    struct sk_buff *skb, unsigned int mtu)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	struct sk_buff *segs, *nskb;
-	netdev_features_t features;
 	int ret = 0;
 
 	/* Please see corresponding comment in ip_finish_output_gso
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 7e7431144727..fa5fc30db294 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -2034,7 +2034,7 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
 	ieee80211_setup_sdata(sdata, type);
 
 	if (ndev) {
-		netdev_features_t tmp;
+		__DECLARE_NETDEV_FEATURE_MASK(tmp);
 
 		ndev->ieee80211_ptr->use_4addr = params->use_4addr;
 		if (type == NL80211_IFTYPE_STATION)
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 06142de8f8db..0cc11097f3ae 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -911,7 +911,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
 	int channels, max_bitrates;
 	bool supp_ht, supp_vht, supp_he;
 	struct cfg80211_chan_def dflt_chandef = {};
-	netdev_features_t tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 
 	if (ieee80211_hw_check(hw, QUEUE_CONTROL) &&
 	    (local->hw.offchannel_tx_hw_queue == IEEE80211_INVAL_HW_QUEUE ||
diff --git a/net/mpls/mpls_gso.c b/net/mpls/mpls_gso.c
index 65994c68e126..8d733c4427bd 100644
--- a/net/mpls/mpls_gso.c
+++ b/net/mpls/mpls_gso.c
@@ -19,9 +19,9 @@
 static struct sk_buff *mpls_gso_segment(struct sk_buff *skb,
 				       netdev_features_t features)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(mpls_features);
 	struct sk_buff *segs = ERR_PTR(-EINVAL);
 	u16 mac_offset = skb->mac_header;
-	netdev_features_t mpls_features;
 	u16 mac_len = skb->mac_len;
 	__be16 mpls_protocol;
 	unsigned int mpls_hlen;
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index dfb69428c6b2..aad26e4cd2cb 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -318,9 +318,9 @@ static int queue_gso_packets(struct datapath *dp, struct sk_buff *skb,
 			     uint32_t cutlen)
 {
 	unsigned int gso_type = skb_shinfo(skb)->gso_type;
+	__DECLARE_NETDEV_FEATURE_MASK(feature);
 	struct sw_flow_key later_key;
 	struct sk_buff *segs, *nskb;
-	netdev_features_t feature;
 	int err;
 
 	BUILD_BUG_ON(sizeof(*OVS_CB(skb)) > SKB_GSO_CB_OFFSET);
diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c
index 5d783cd72290..fc45f242381e 100644
--- a/net/sched/sch_cake.c
+++ b/net/sched/sch_cake.c
@@ -1739,8 +1739,8 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch,
 		b->max_skblen = len;
 
 	if (skb_is_gso(skb) && q->rate_flags & CAKE_FLAG_SPLIT_GSO) {
+		__DECLARE_NETDEV_FEATURE_MASK(features);
 		struct sk_buff *segs, *nskb;
-		netdev_features_t features;
 		unsigned int slen = 0, numsegs = 0;
 
 		netif_skb_features(skb, &features);
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
index 4aabeb206777..313591a9c879 100644
--- a/net/sched/sch_netem.c
+++ b/net/sched/sch_netem.c
@@ -412,8 +412,8 @@ static void tfifo_enqueue(struct sk_buff *nskb, struct Qdisc *sch)
 static struct sk_buff *netem_segment(struct sk_buff *skb, struct Qdisc *sch,
 				     struct sk_buff **to_free)
 {
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	struct sk_buff *segs;
-	netdev_features_t features;
 
 	netif_skb_features(skb, &features);
 	netdev_feature_clear_bits(NETIF_F_GSO_MASK, &features);
diff --git a/net/sched/sch_taprio.c b/net/sched/sch_taprio.c
index e42deaf723b1..2ff999208324 100644
--- a/net/sched/sch_taprio.c
+++ b/net/sched/sch_taprio.c
@@ -453,7 +453,7 @@ static int taprio_enqueue(struct sk_buff *skb, struct Qdisc *sch,
 	 */
 	if (skb_is_gso(skb) && !FULL_OFFLOAD_IS_ENABLED(q->flags)) {
 		unsigned int slen = 0, numsegs = 0, len = qdisc_pkt_len(skb);
-		netdev_features_t features;
+		__DECLARE_NETDEV_FEATURE_MASK(features);
 		struct sk_buff *segs, *nskb;
 		int ret;
 
diff --git a/net/sched/sch_tbf.c b/net/sched/sch_tbf.c
index 8ac786f467a0..6b6b347da52f 100644
--- a/net/sched/sch_tbf.c
+++ b/net/sched/sch_tbf.c
@@ -191,8 +191,8 @@ static int tbf_segment(struct sk_buff *skb, struct Qdisc *sch,
 		       struct sk_buff **to_free)
 {
 	struct tbf_sched_data *q = qdisc_priv(sch);
+	__DECLARE_NETDEV_FEATURE_MASK(features);
 	struct sk_buff *segs, *nskb;
-	netdev_features_t features;
 	unsigned int len = 0, prev_len = qdisc_pkt_len(skb);
 	int ret, nb;
 
diff --git a/net/sctp/offload.c b/net/sctp/offload.c
index c49464811614..10d569bd9ef8 100644
--- a/net/sctp/offload.c
+++ b/net/sctp/offload.c
@@ -39,7 +39,7 @@ static struct sk_buff *sctp_gso_segment(struct sk_buff *skb,
 					netdev_features_t features)
 {
 	struct sk_buff *segs = ERR_PTR(-EINVAL);
-	netdev_features_t tmp;
+	__DECLARE_NETDEV_FEATURE_MASK(tmp);
 	struct sctphdr *sh;
 
 	if (!skb_is_gso_sctp(skb))
diff --git a/net/xfrm/xfrm_device.c b/net/xfrm/xfrm_device.c
index 7c167060d959..e3eeef8bfe89 100644
--- a/net/xfrm/xfrm_device.c
+++ b/net/xfrm/xfrm_device.c
@@ -105,8 +105,8 @@ struct sk_buff *validate_xmit_xfrm(struct sk_buff *skb, netdev_features_t featur
 	struct softnet_data *sd;
 	struct sk_buff *skb2, *nskb, *pskb = NULL;
 	struct xfrm_offload *xo = xfrm_offload(skb);
+	__DECLARE_NETDEV_FEATURE_MASK(esp_features);
 	struct net_device *dev = skb->dev;
-	netdev_features_t esp_features;
 	struct sec_path *sp;
 
 	if (!xo || (xo->flags & XFRM_XMIT))
-- 
2.33.0


  parent reply	other threads:[~2021-09-29 16:04 UTC|newest]

Thread overview: 181+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-29 15:50 [RFCv2 net-next 000/167] net: extend the netdev_features_t Jian Shen
2021-09-29 15:50 ` [RFCv2 net-next 001/167] net: convert the prototype of netdev_intersect_features Jian Shen
2021-09-29 15:50 ` [RFCv2 net-next 002/167] net: convert the prototype of netdev_get_wanted_features Jian Shen
2021-09-29 15:50 ` [RFCv2 net-next 003/167] net: convert the prototype of net_mpls_features Jian Shen
2021-09-29 15:50 ` [RFCv2 net-next 004/167] net: convert the prototype of harmonize_features Jian Shen
2021-09-29 15:50 ` [RFCv2 net-next 005/167] net: convert the prototype of gso_features_check Jian Shen
2021-09-29 15:50 ` [RFCv2 net-next 006/167] net: convert the prototype of vlan_features_check Jian Shen
2021-09-29 15:50 ` [RFCv2 net-next 007/167] net: convert the prototype of vxlan_features_check Jian Shen
2021-09-29 15:50 ` [RFCv2 net-next 008/167] net: convert the prototype of dflt_features_check Jian Shen
2021-09-29 15:50 ` [RFCv2 net-next 009/167] net: convert the prototype of ndo_features_check Jian Shen
2021-09-29 15:50 ` [RFCv2 net-next 010/167] net: convert the prototype of netif_skb_features Jian Shen
2021-09-29 15:50 ` [RFCv2 net-next 011/167] net: convert the prototype of ndo_fix_features Jian Shen
2021-09-29 15:50 ` [RFCv2 net-next 012/167] net: convert the prototype of netdev_fix_features Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 013/167] net: convert the prototype of netdev_sync_upper_features Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 014/167] net: convert the prototype of br_features_recompute Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 015/167] net: convert the prototype of netdev_add_tso_features Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 016/167] net: convert the prototype of netdev_increment_features Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 017/167] net: convert the prototype of hsr_features_recompute Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 018/167] net: mlx5: convert prototype of mlx5e_ipsec_feature_check, mlx5e_tunnel_features_check and mlx5e_fix_uplink_rep_features Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 019/167] net: sfc: convert the prototype of xxx_supported_features Jian Shen
2021-09-30  0:28   ` Edward Cree
2021-09-29 15:51 ` [RFCv2 net-next 020/167] net: qlogic: convert the prototype of qlcnic_process_flags Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 021/167] net: realtek: convert the prototype of rtl8168evl_fix_tso Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 022/167] ethtool: convert the prototype of ethtool_get_feature_mask Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 023/167] net: add netdev feature helpers Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 024/167] net: core: use " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 025/167] skbuff: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 026/167] net: vlan: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 027/167] bridge: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 028/167] ipvlan: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 029/167] veth: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 030/167] bonding: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 031/167] net: tun: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 032/167] net: tap: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 033/167] net: geneve: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 034/167] hv_netvsc: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 035/167] macvlan: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 036/167] macsec: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 037/167] net: tls: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 038/167] s390: qeth: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 039/167] dsa: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 040/167] macvtap: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 041/167] team: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 042/167] vmxnet3: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 043/167] net_failover: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 044/167] pktgen: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 045/167] net: sched: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 046/167] netdevsim: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 047/167] virtio_net: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 048/167] net: ipv4: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 049/167] net: ipv6: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 050/167] net: hsr: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 051/167] net: mpls: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 052/167] net: nsh: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 053/167] net: decnet: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 054/167] net: dccp: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 055/167] net: l2tp: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 056/167] net: ntb_netdev: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 057/167] net: thunderbolt: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 058/167] net: phonet: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 059/167] net: vrf: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 060/167] net: sctp: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 061/167] vxlan: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 062/167] xen-netback: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 063/167] xen-netfront: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 064/167] sock: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 065/167] sunrpc: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 066/167] net: caif: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 067/167] net: loopback: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 068/167] net: dummy: use netdev_feature helpers Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 069/167] net: mac80211: use netdev feature helpers Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 070/167] net: ifb: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 071/167] net: bareudp: " Jian Shen
2021-09-29 15:51 ` [RFCv2 net-next 072/167] net: rionet: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 073/167] net: gtp: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 074/167] net: vsockmon: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 075/167] net: nlmon: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 076/167] net: wireguard: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 077/167] net: can: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 078/167] net: ppp: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 079/167] net: ipa: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 080/167] net: fjes: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 081/167] net: usb: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 082/167] net: wireless: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 083/167] net: realtek: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 084/167] net: broadcom: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 085/167] net: intel: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 086/167] net: hisilicon: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 087/167] net: mellanox: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 088/167] net: atlantic: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 089/167] net: atheros: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 090/167] net: chelsio: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 091/167] net: davicom: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 092/167] net: freescale: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 093/167] net: synopsys: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 094/167] net: sfc: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 095/167] net: qualcomm: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 096/167] net: nvidia: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 097/167] net: faraday: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 098/167] net: google: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 099/167] net: hinic: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 100/167] net: ibm: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 101/167] net: ionic: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 102/167] net: jme: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 103/167] net: micrel: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 104/167] net: cavium: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 105/167] net: cadence: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 106/167] net: mediatek: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 107/167] net: marvell: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 108/167] net: socionext: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 109/167] net: qlogic: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 110/167] net: nfp: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 111/167] net: mscc: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 112/167] net: oki-semi: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 113/167] net: renesas: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 114/167] net: neterion: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 115/167] net: cortina: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 116/167] net: stmmac: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 117/167] net: sxgbe: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 118/167] net: xgmac: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 119/167] net: altera: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 120/167] net: ti: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 121/167] net: benet: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 122/167] net: amd: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 123/167] net: bna: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 124/167] net: enic: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 125/167] net: 3com: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 126/167] net: aeroflex: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 127/167] net: sun: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 128/167] net: mana: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 129/167] net: myricom: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 130/167] net: alacritech: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 131/167] net: toshiba: " Jian Shen
2021-09-29 15:52 ` [RFCv2 net-next 132/167] net: tehuti: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 133/167] net: alteon: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 134/167] net: ena: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 135/167] net: sgi: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 136/167] net: microchip: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 137/167] net: ni: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 138/167] net: apm: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 139/167] net: natsemi: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 140/167] net: xilinx: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 141/167] net: pasemi: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 142/167] net: rocker: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 143/167] net: silan: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 144/167] net: adaptec: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 145/167] net: tundra: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 146/167] net: via: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 147/167] net: wiznet: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 148/167] net: dnet: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 149/167] net: ethoc: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 150/167] RDMA: ipoib: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 151/167] um: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 152/167] scsi: fcoe: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 153/167] net: ipvs: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 154/167] net: xfrm: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 155/167] net: cirrus: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 156/167] net: ec_bhf: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 157/167] net: hamradio: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 158/167] net: batman: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 159/167] net: ieee802154: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 160/167] test_bpf: change the prototype of features Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 161/167] net: openvswitch: use netdev feature helpers Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 162/167] firewire: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 163/167] staging: qlge: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 164/167] staging: octeon: " Jian Shen
2021-09-29 15:53 ` [RFCv2 net-next 165/167] net: sock: add helper sk_nocaps_add_gso() Jian Shen
2021-09-29 15:53 ` Jian Shen [this message]
2021-09-29 15:53 ` [RFCv2 net-next 167/167] net: extend the type of netdev_features_t to bitmap Jian Shen
2021-09-29 17:15 ` [RFCv2 net-next 000/167] net: extend the netdev_features_t Andrew Lunn
2021-09-30  2:57   ` shenjian (K)
2021-09-30  0:55 ` Edward Cree
2021-09-30  3:15   ` shenjian (K)
2021-10-01 15:17 ` Alexander Lobakin
2021-10-04 14:59   ` Andrew Lunn
2021-10-04 22:30     ` Saeed Mahameed
2021-10-05 14:22       ` Alexander Lobakin
2021-10-08  2:54       ` shenjian (K)
2022-01-27  9:16 ` Leon Romanovsky
2022-01-27  9:40   ` shenjian (K)
2022-01-27  9:50     ` Leon Romanovsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210929155334.12454-167-shenjian15@huawei.com \
    --to=shenjian15@huawei.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=hkallweit1@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linuxarm@openeuler.org \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.