netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "shenjian (K)" <shenjian15@huawei.com>
To: Alexander Lobakin <alexandr.lobakin@intel.com>
Cc: <davem@davemloft.net>, <kuba@kernel.org>, <andrew@lunn.ch>,
	<ecree.xilinx@gmail.com>, <hkallweit1@gmail.com>,
	<saeed@kernel.org>, <leon@kernel.org>, <netdev@vger.kernel.org>,
	<linuxarm@openeuler.org>
Subject: Re: [RFCv7 PATCH net-next 03/36] net: replace multiple feature bits with DECLARE_NETDEV_FEATURE_SET
Date: Wed, 10 Aug 2022 20:15:32 +0800	[thread overview]
Message-ID: <9186b4cd-cc0c-8848-9fdb-8a538c085bbe@huawei.com> (raw)
In-Reply-To: <20220810103743.1306052-1-alexandr.lobakin@intel.com>



在 2022/8/10 18:37, Alexander Lobakin 写道:
> From: Jian Shen <shenjian15@huawei.com>
> Date: Wed, 10 Aug 2022 11:05:51 +0800
>
>> There are many netdev_features bits group used in drivers, replace them
>> with DECLARE_NETDEV_FEATURE_SET, prepare to remove all the NETIF_F_XXX
>> macroes.
>>
>> Signed-off-by: Jian Shen <shenjian15@huawei.com>
>> ---
>>   arch/um/drivers/vector_transports.c           |  49 +++++--
>>   drivers/infiniband/ulp/ipoib/ipoib.h          |   1 +
>>   drivers/infiniband/ulp/ipoib/ipoib_main.c     |   8 +-
>>   drivers/net/amt.c                             |  16 ++-
>>   drivers/net/bareudp.c                         |  21 ++-
>>   drivers/net/bonding/bond_main.c               |  48 +++++--
>>   drivers/net/dsa/xrs700x/xrs700x.c             |  15 +-
>>   drivers/net/dummy.c                           |  11 +-
>>   drivers/net/ethernet/3com/typhoon.c           |  18 ++-
>>   drivers/net/ethernet/aeroflex/greth.c         |   9 +-
>>   drivers/net/ethernet/alteon/acenic.c          |  10 +-
>>   drivers/net/ethernet/amazon/ena/ena_netdev.c  |  13 +-
>>   drivers/net/ethernet/amd/xgbe/xgbe-main.c     |  59 ++++----
>>   .../net/ethernet/apm/xgene/xgene_enet_main.c  |  12 +-
>>   .../net/ethernet/aquantia/atlantic/aq_nic.c   |  14 +-
>>   drivers/net/ethernet/asix/ax88796c_main.c     |  21 ++-
>>   drivers/net/ethernet/atheros/alx/main.c       |  15 +-
>>   drivers/net/ethernet/atheros/atl1c/atl1c.h    |   1 +
>>   .../net/ethernet/atheros/atl1c/atl1c_main.c   |  14 +-
>>   drivers/net/ethernet/atheros/atl1e/atl1e.h    |   1 +
>>   .../net/ethernet/atheros/atl1e/atl1e_main.c   |  10 +-
>>   drivers/net/ethernet/atheros/atlx/atl1.c      |  22 ++-
>>   drivers/net/ethernet/broadcom/bcmsysport.c    |  24 +++-
>>   drivers/net/ethernet/broadcom/bgmac.c         |   9 +-
>>   drivers/net/ethernet/broadcom/bnx2.c          |  14 +-
>>   .../net/ethernet/broadcom/bnx2x/bnx2x_main.c  |  83 ++++++++---
>>   drivers/net/ethernet/broadcom/bnxt/bnxt.c     |  54 +++++--
>>   .../net/ethernet/broadcom/genet/bcmgenet.c    |  10 +-
>>   drivers/net/ethernet/brocade/bna/bnad.c       |  39 +++--
>>   drivers/net/ethernet/calxeda/xgmac.c          |  15 +-
>>   .../net/ethernet/cavium/liquidio/lio_main.c   |  42 ++++--
>>   .../ethernet/cavium/liquidio/lio_vf_main.c    |  40 ++++--
>>   .../ethernet/cavium/liquidio/octeon_network.h |   4 +-
>>   .../net/ethernet/cavium/thunder/nicvf_main.c  |  27 +++-
>>   drivers/net/ethernet/chelsio/cxgb/cxgb2.c     |  19 ++-
>>   .../net/ethernet/chelsio/cxgb3/cxgb3_main.c   |  29 +++-
>>   .../net/ethernet/chelsio/cxgb4/cxgb4_main.c   |  68 ++++++---
>>   .../ethernet/chelsio/cxgb4vf/cxgb4vf_main.c   |  39 ++++-
>>   drivers/net/ethernet/cirrus/ep93xx_eth.c      |   7 +-
>>   drivers/net/ethernet/cisco/enic/enic_main.c   |  19 ++-
>>   drivers/net/ethernet/cortina/gemini.c         |  22 ++-
>>   drivers/net/ethernet/emulex/benet/be_main.c   |  47 ++++--
>>   drivers/net/ethernet/faraday/ftgmac100.c      |  13 +-
>>   .../net/ethernet/freescale/dpaa/dpaa_eth.c    |  14 +-
>>   .../net/ethernet/freescale/dpaa2/dpaa2-eth.c  |  17 ++-
>>   .../ethernet/freescale/dpaa2/dpaa2-switch.c   |  10 +-
>>   .../ethernet/freescale/dpaa2/dpaa2-switch.h   |   1 +
>>   .../net/ethernet/freescale/enetc/enetc_pf.c   |  42 ++++--
>>   .../net/ethernet/freescale/enetc/enetc_vf.c   |  40 ++++--
>>   drivers/net/ethernet/freescale/fec_main.c     |  11 +-
>>   drivers/net/ethernet/freescale/gianfar.c      |  18 ++-
>>   .../ethernet/fungible/funeth/funeth_main.c    |  48 +++++--
>>   drivers/net/ethernet/google/gve/gve_main.c    |  21 +--
>>   drivers/net/ethernet/hisilicon/hns/hns_enet.c |  51 +++++--
>>   .../net/ethernet/hisilicon/hns3/hns3_enet.c   |  40 ++++--
>>   .../net/ethernet/huawei/hinic/hinic_main.c    |  37 +++--
>>   drivers/net/ethernet/ibm/ehea/ehea_main.c     |  34 +++--
>>   drivers/net/ethernet/ibm/emac/core.c          |   7 +-
>>   drivers/net/ethernet/ibm/ibmveth.c            |  11 +-
>>   drivers/net/ethernet/ibm/ibmvnic.c            |   8 +-
>>   drivers/net/ethernet/intel/e1000/e1000.h      |   1 +
>>   drivers/net/ethernet/intel/e1000/e1000_main.c |  33 +++--
>>   drivers/net/ethernet/intel/e1000e/netdev.c    |  46 ++++--
>>   .../net/ethernet/intel/fm10k/fm10k_netdev.c   |  37 +++--
>>   drivers/net/ethernet/intel/i40e/i40e_main.c   |  75 +++++-----
>>   drivers/net/ethernet/intel/iavf/iavf.h        |   1 +
>>   drivers/net/ethernet/intel/iavf/iavf_main.c   |  43 +++---
>>   drivers/net/ethernet/intel/ice/ice.h          |   1 +
>>   drivers/net/ethernet/intel/ice/ice_main.c     |  64 ++++++---
>>   drivers/net/ethernet/intel/igb/igb_main.c     |  74 ++++++----
>>   drivers/net/ethernet/intel/igbvf/netdev.c     |  76 ++++++----
>>   drivers/net/ethernet/intel/igc/igc_mac.c      |   1 +
>>   drivers/net/ethernet/intel/igc/igc_main.c     |  77 ++++++----
>>   drivers/net/ethernet/intel/ixgb/ixgb_main.c   |  15 +-
>>   drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 134 +++++++++++-------
>>   drivers/net/ethernet/intel/ixgbevf/ipsec.c    |  15 +-
>>   drivers/net/ethernet/intel/ixgbevf/ixgbevf.h  |   1 +
>>   .../net/ethernet/intel/ixgbevf/ixgbevf_main.c |  87 +++++++-----
>>   drivers/net/ethernet/jme.c                    |  34 +++--
>>   drivers/net/ethernet/marvell/mv643xx_eth.c    |   9 +-
>>   drivers/net/ethernet/marvell/mvneta.c         |  12 +-
>>   .../net/ethernet/marvell/mvpp2/mvpp2_main.c   |  19 ++-
>>   .../ethernet/marvell/octeontx2/nic/otx2_pf.c  |  17 ++-
>>   .../ethernet/marvell/octeontx2/nic/otx2_vf.c  |  17 ++-
>>   drivers/net/ethernet/marvell/skge.c           |   9 +-
>>   drivers/net/ethernet/marvell/sky2.c           |  19 ++-
>>   drivers/net/ethernet/mellanox/mlx4/en_main.c  |   1 +
>>   .../net/ethernet/mellanox/mlx4/en_netdev.c    |  75 ++++++----
>>   .../ethernet/mellanox/mlx5/core/ipoib/ipoib.c |  20 +--
>>   .../net/ethernet/mellanox/mlxsw/spectrum.c    |  16 ++-
>>   drivers/net/ethernet/micrel/ksz884x.c         |   9 +-
>>   drivers/net/ethernet/microchip/lan743x_main.c |   9 +-
>>   drivers/net/ethernet/microsoft/mana/mana_en.c |  15 +-
>>   drivers/net/ethernet/mscc/ocelot_net.c        |  14 +-
>>   .../net/ethernet/myricom/myri10ge/myri10ge.c  |  11 +-
>>   drivers/net/ethernet/neterion/s2io.c          |  24 +++-
>>   drivers/net/ethernet/nvidia/forcedeth.c       |  10 +-
>>   .../ethernet/oki-semi/pch_gbe/pch_gbe_main.c  |  10 +-
>>   drivers/net/ethernet/pasemi/pasemi_mac.c      |  11 +-
>>   .../net/ethernet/pensando/ionic/ionic_lif.c   |  23 +--
>>   .../ethernet/qlogic/netxen/netxen_nic_main.c  |  11 +-
>>   drivers/net/ethernet/qlogic/qede/qede_main.c  |  50 +++++--
>>   .../net/ethernet/qlogic/qlcnic/qlcnic_hw.c    |  29 ++--
>>   .../net/ethernet/qlogic/qlcnic/qlcnic_main.c  |  34 +++--
>>   drivers/net/ethernet/qualcomm/emac/emac.c     |  23 ++-
>>   .../net/ethernet/qualcomm/rmnet/rmnet_vnd.c   |  12 +-
>>   drivers/net/ethernet/realtek/8139cp.c         |  23 ++-
>>   drivers/net/ethernet/realtek/8139too.c        |   8 +-
>>   drivers/net/ethernet/realtek/r8169_main.c     |  18 ++-
>>   .../net/ethernet/samsung/sxgbe/sxgbe_main.c   |  15 +-
>>   drivers/net/ethernet/sfc/ef10.c               |  11 +-
>>   drivers/net/ethernet/sfc/ef100_netdev.c       |   9 +-
>>   drivers/net/ethernet/sfc/ef100_nic.c          |  15 +-
>>   drivers/net/ethernet/sfc/efx.c                |  21 ++-
>>   drivers/net/ethernet/sfc/falcon/efx.c         |  10 +-
>>   drivers/net/ethernet/sfc/falcon/net_driver.h  |   1 +
>>   drivers/net/ethernet/sfc/net_driver.h         |   1 +
>>   drivers/net/ethernet/sfc/siena/efx.c          |  22 ++-
>>   drivers/net/ethernet/sgi/ioc3-eth.c           |  13 +-
>>   drivers/net/ethernet/silan/sc92031.c          |  11 +-
>>   drivers/net/ethernet/socionext/netsec.c       |  11 +-
>>   .../net/ethernet/stmicro/stmmac/stmmac_main.c |  11 +-
>>   drivers/net/ethernet/sun/ldmvsw.c             |   7 +-
>>   drivers/net/ethernet/sun/niu.c                |   9 +-
>>   drivers/net/ethernet/sun/sungem.c             |   9 +-
>>   drivers/net/ethernet/sun/sunvnet.c            |  10 +-
>>   drivers/net/ethernet/tehuti/tehuti.c          |  25 +++-
>>   drivers/net/ethernet/tehuti/tehuti.h          |   1 +
>>   drivers/net/ethernet/ti/am65-cpsw-nuss.c      |  13 +-
>>   drivers/net/ethernet/ti/cpsw_new.c            |  11 +-
>>   drivers/net/ethernet/via/via-velocity.c       |  19 ++-
>>   drivers/net/geneve.c                          |  20 ++-
>>   drivers/net/hyperv/netvsc_drv.c               |  11 +-
>>   drivers/net/ifb.c                             |  20 ++-
>>   drivers/net/ipvlan/ipvlan_main.c              |  58 ++++++--
>>   drivers/net/ipvlan/ipvtap.c                   |  12 +-
>>   drivers/net/loopback.c                        |  25 ++--
>>   drivers/net/macsec.c                          |  22 ++-
>>   drivers/net/macvlan.c                         |  56 ++++++--
>>   drivers/net/macvtap.c                         |  12 +-
>>   drivers/net/net_failover.c                    |  23 +++
>>   drivers/net/netdevsim/ipsec.c                 |  13 +-
>>   drivers/net/netdevsim/netdev.c                |  14 +-
>>   drivers/net/netdevsim/netdevsim.h             |   1 +
>>   drivers/net/nlmon.c                           |  11 +-
>>   drivers/net/tap.c                             |  18 ++-
>>   drivers/net/team/team.c                       |  31 +++-
>>   drivers/net/thunderbolt.c                     |  11 +-
>>   drivers/net/tun.c                             |  28 +++-
>>   drivers/net/usb/aqc111.c                      |  38 ++++-
>>   drivers/net/usb/aqc111.h                      |  14 --
>>   drivers/net/usb/ax88179_178a.c                |  11 +-
>>   drivers/net/usb/lan78xx.c                     |   8 +-
>>   drivers/net/usb/r8152.c                       |  53 +++++--
>>   drivers/net/usb/smsc75xx.c                    |  10 +-
>>   drivers/net/veth.c                            |  27 ++--
>>   drivers/net/vmxnet3/vmxnet3_drv.c             |  36 +++--
>>   drivers/net/vmxnet3/vmxnet3_ethtool.c         |  35 +++--
>>   drivers/net/vmxnet3/vmxnet3_int.h             |   1 +
>>   drivers/net/vrf.c                             |  12 +-
>>   drivers/net/vsockmon.c                        |  11 +-
>>   drivers/net/vxlan/vxlan_core.c                |  20 ++-
>>   drivers/net/wireguard/device.c                |  20 ++-
>>   drivers/net/wireless/ath/wil6210/netdev.c     |  14 +-
>>   drivers/net/xen-netback/interface.c           |  14 +-
>>   drivers/net/xen-netfront.c                    |  20 ++-
>>   drivers/s390/net/qeth_l3_main.c               |  13 +-
>>   drivers/staging/qlge/qlge_main.c              |  21 +--
>>   include/net/bonding.h                         |   5 +-
>>   include/net/net_failover.h                    |   8 +-
>>   net/8021q/vlan_dev.c                          |  15 +-
>>   net/batman-adv/soft-interface.c               |   9 +-
>>   net/bridge/br_device.c                        |  25 +++-
>>   net/ethtool/ioctl.c                           |  17 ++-
>>   net/hsr/hsr_device.c                          |  13 +-
>>   net/ipv4/ip_gre.c                             |  19 +--
>>   net/ipv4/ipip.c                               |  19 ++-
>>   net/ipv6/ip6_gre.c                            |  15 +-
>>   net/ipv6/ip6_tunnel.c                         |  19 ++-
>>   net/ipv6/sit.c                                |  18 ++-
>>   net/mac80211/ieee80211_i.h                    |  13 +-
>>   net/mac80211/main.c                           |  24 ++++
>>   net/openvswitch/vport-internal_dev.c          |  13 +-
>>   net/xfrm/xfrm_interface.c                     |  16 ++-
>>   184 files changed, 2923 insertions(+), 1139 deletions(-)
> [...]
>
>> +static DECLARE_NETDEV_FEATURE_SET(bond_mpls_feature_set,
>> +				  NETIF_F_HW_CSUM_BIT,
>> +				  NETIF_F_SG_BIT);
>> +
>> +static netdev_features_t bond_vlan_features __ro_after_init;
>> +static netdev_features_t bond_enc_features __ro_after_init;
>> +static netdev_features_t bond_mpls_features __ro_after_init;
>>   /*-------------------------- Forward declarations ---------------------------*/
> Nit: any reason to not leave an empty space in between the
> declarations and that comment line?
ok, will fix it.

>>   
>>   static int bond_init(struct net_device *bond_dev);
>> @@ -1421,16 +1441,11 @@ static netdev_features_t bond_fix_features(struct net_device *dev,
>>   	return features;
>>   }
> [...]
>
>>   /**
>>    * struct gmac_queue_page - page buffer per-page info
>> @@ -2610,6 +2618,12 @@ static struct platform_driver gemini_ethernet_driver = {
>>   	.remove = gemini_ethernet_remove,
>>   };
>>   
>> +static void __init gmac_netdev_features_init(void)
>> +{
>> +	netdev_features_set_array(&gmac_offload_feature_set,
>> +				  &gmac_offload_features);
>> +}
> I'd say it's not worth it to create a new function for a one-liner.
ok,  will  move it into gemini_ethernet_module_init().

>> +
>>   static int __init gemini_ethernet_module_init(void)
>>   {
>>   	int ret;
>> @@ -2624,6 +2638,8 @@ static int __init gemini_ethernet_module_init(void)
>>   		return ret;
>>   	}
>>   
>> +	gmac_netdev_features_init();
>> +
>>   	return 0;
>>   }
>>   module_init(gemini_ethernet_module_init);
> [...]
>
>> @@ -120,16 +144,12 @@ static void enetc_vf_netdev_setup(struct enetc_si *si, struct net_device *ndev,
>>   	ndev->watchdog_timeo = 5 * HZ;
>>   	ndev->max_mtu = ENETC_MAX_MTU;
>>   
>> -	ndev->hw_features = NETIF_F_SG | NETIF_F_RXCSUM |
>> -			    NETIF_F_HW_VLAN_CTAG_TX |
>> -			    NETIF_F_HW_VLAN_CTAG_RX |
>> -			    NETIF_F_HW_CSUM | NETIF_F_TSO | NETIF_F_TSO6;
>> -	ndev->features = NETIF_F_HIGHDMA | NETIF_F_SG | NETIF_F_RXCSUM |
>> -			 NETIF_F_HW_VLAN_CTAG_TX |
>> -			 NETIF_F_HW_VLAN_CTAG_RX |
>> -			 NETIF_F_HW_CSUM | NETIF_F_TSO | NETIF_F_TSO6;
>> -	ndev->vlan_features = NETIF_F_SG | NETIF_F_HW_CSUM |
>> -			      NETIF_F_TSO | NETIF_F_TSO6;
>> +	netdev_hw_features_zero(ndev);
>> +	netdev_hw_features_set_array(ndev, &enetc_vf_hw_feature_set);
> Hmm, I see that pattern
>
> netdev*_features_zero();
> netdev*_features_set_array();
>
> pretty often, maybe create a couple static inlines like
> 'netdev*_features_from_array'? And use it for initializing
> shared/exported netdev_features as well? Otherwise, sooner or later,
> but someone will forget to zero the features before setting them and
> will get a garbage and some hard-to-track bugs %)
Make sense, this also trouble me too. I will add it.
BTW, I want to add a netdev*_features_from_bit too, for there
are many places use "xxx_features = NET_IF_F_XXX".


>> +	netdev_active_features_zero(ndev);
>> +	netdev_active_features_set_array(ndev, &enetc_vf_feature_set);
>> +	netdev_vlan_features_zero(ndev);
>> +	netdev_vlan_features_set_array(ndev, &enetc_vf_vlan_feature_set);
>>   
>>   	if (si->num_rss)
>>   		ndev->hw_features |= NETIF_F_RXHASH;
>> diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
>> index e8e2aa1e7f01..49850ee91d4e 100644
>> --- a/drivers/net/ethernet/freescale/fec_main.c
>> +++ b/drivers/net/ethernet/freescale/fec_main.c
> [...]
>
>> +static DECLARE_NETDEV_FEATURE_SET(fun_vlan_feature_set,
>> +				  NETIF_F_SG_BIT,
>> +				  NETIF_F_HW_CSUM_BIT,
>> +				  NETIF_F_HIGHDMA_BIT);
>> +
>>   static int fun_create_netdev(struct fun_ethdev *ed, unsigned int portid)
>>   {
>> +	netdev_features_t gso_encap_flags = netdev_empty_features;
>> +	netdev_features_t tso_flags = netdev_empty_features;
> Same here as I mentioned previously, direct assignments wouldn't
> work here later for bitmaps. So it's rather bitmap_copy(), i.e.
> netdev_features_copy(), or am I missing something?
netdev_features_t will be converted from u64 to structure below:

	typedef struct {

		DECLARE_BITMAP(bits, NETDEV_FEATURE_COUNT);

	} netdev_features_t;

So directly assignement is ok

>>   	struct fun_dev *fdev = &ed->fdev;
>> +	netdev_features_t vlan_feat;
>>   	struct net_device *netdev;
>>   	struct funeth_priv *fp;
>>   	unsigned int ntx, nrx;
> [...]
>
>> @@ -1265,6 +1266,13 @@ static void ax88179_get_mac_addr(struct usbnet *dev)
>>   			  dev->net->dev_addr);
>>   }
>>   
>> +DECLARE_NETDEV_FEATURE_SET(ax88179_feature_set,
> static?
> You can use sparse to detect such places (`make C=1`).
Right, I will check it.

>> +			   NETIF_F_SG_BIT,
>> +			   NETIF_F_IP_CSUM_BIT,
>> +			   NETIF_F_IPV6_CSUM_BIT,
>> +			   NETIF_F_RXCSUM_BIT,
>> +			   NETIF_F_TSO_BIT);
> [...]
>
>> -- 
>> 2.33.0
> Thanks,
> Olek
>
> .

Thanks,
Jian

  reply	other threads:[~2022-08-10 12:15 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-10  3:05 [RFCv7 PATCH net-next 00/36] net: extend the type of netdev_features_t to bitmap Jian Shen
2022-08-10  3:05 ` [RFCv7 PATCH net-next 01/36] net: introduce operation helpers for netdev features Jian Shen
2022-08-10  9:43   ` Alexander Lobakin
2022-08-10 11:32     ` shenjian (K)
2022-08-11 10:49       ` Alexander Lobakin
2022-08-12  2:39         ` shenjian (K)
2022-08-10  3:05 ` [RFCv7 PATCH net-next 02/36] net: replace general features macroes with global netdev_features variables Jian Shen
2022-08-10  9:58   ` Alexander Lobakin
2022-08-10 12:01     ` shenjian (K)
2022-08-11 11:05       ` Alexander Lobakin
2022-08-12 10:58         ` shenjian (K)
2022-08-10  3:05 ` [RFCv7 PATCH net-next 03/36] net: replace multiple feature bits with DECLARE_NETDEV_FEATURE_SET Jian Shen
2022-08-10 10:37   ` Alexander Lobakin
2022-08-10 12:15     ` shenjian (K) [this message]
2022-08-10  3:05 ` [RFCv7 PATCH net-next 04/36] net: sfc: replace const features initialization " Jian Shen
2022-08-10  3:05 ` [RFCv7 PATCH net-next 05/36] net: atlantic: replace const features initialization with NETDEV_FEATURE_SET Jian Shen
2022-08-10  3:05 ` [RFCv7 PATCH net-next 06/36] iwlwifi: " Jian Shen
2022-08-10  3:05 ` [RFCv7 PATCH net-next 07/36] net: ethernet: mtk_eth_soc: " Jian Shen
2022-08-10  3:05 ` [RFCv7 PATCH net-next 08/36] ravb: " Jian Shen
2022-08-10  3:05 ` [RFCv7 PATCH net-next 09/36] test_bpf: " Jian Shen
2022-08-10  3:05 ` [RFCv7 PATCH net-next 10/36] treewide: replace NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK by netdev_csum_gso_features_mask Jian Shen
2022-08-10  3:05 ` [RFCv7 PATCH net-next 11/36] treewide: replace NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM by netdev_ip_csum_features Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 12/36] treewide: replace NETIF_F_TSO | NETIF_F_TSO6 by netdev_general_tso_features Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 13/36] treewide: replace VLAN tag feature array by const vlan features Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 14/36] net: simplify the netdev features expressions for xxx_gso_segment Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 15/36] treewide: simplify the netdev features expression Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 16/36] treewide: use replace features '0' by netdev_empty_features Jian Shen
2022-08-10 10:48   ` Alexander Lobakin
2022-08-10 12:25     ` shenjian (K)
2022-08-11 12:35       ` Alexander Lobakin
2022-08-10  3:06 ` [RFCv7 PATCH net-next 17/36] treewide: adjust features initialization Jian Shen
2022-08-10 10:58   ` Alexander Lobakin
2022-08-10 14:06     ` shenjian (K)
2022-08-10  3:06 ` [RFCv7 PATCH net-next 18/36] net: mlx4: adjust the net device feature relative macroes Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 19/36] net: mlx5e: adjust " Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 20/36] net: mlxsw: adjust input parameter for function mlxsw_sp_handle_feature Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 21/36] net: iavf: adjust net device features relative macroes Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 22/36] net: core: adjust netdev_sync_xxx_features Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 23/36] net: adjust the build check for net_gso_ok() Jian Shen
2022-08-10 11:09   ` Alexander Lobakin
2022-08-10 14:41     ` shenjian (K)
2022-08-10  3:06 ` [RFCv7 PATCH net-next 24/36] treewide: use netdev_feature_add helpers Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 25/36] treewide: use netdev_features_or/set helpers Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 26/36] treewide: use netdev_feature_change helpers Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 27/36] treewide: use netdev_feature_del helpers Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 28/36] treewide: use netdev_features_andnot and netdev_features_clear helpers Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 29/36] treewide: use netdev_features_xor helpers Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 30/36] treewide: use netdev_feature_test helpers Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 31/36] treewide: use netdev_features_intersects helpers Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 32/36] net: use netdev_features_and and netdev_features_mask helpers Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 33/36] treewide: use netdev_features_subset helpers Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 34/36] treewide: use netdev_features_equal helpers Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 35/36] treewide: use netdev_features_empty helpers Jian Shen
2022-08-10  3:06 ` [RFCv7 PATCH net-next 36/36] net: redefine the prototype of netdev_features_t Jian Shen
2022-08-10 11:35   ` Alexander Lobakin
     [not found]     ` <3df89822-7dec-c01e-0df9-15b8e6f7d4e5@huawei.com>
2022-08-11 13:07       ` Alexander Lobakin
2022-08-11 15:13         ` Jakub Kicinski
2022-08-12 11:43           ` shenjian (K)
2022-08-12 11:30         ` shenjian (K)

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=9186b4cd-cc0c-8848-9fdb-8a538c085bbe@huawei.com \
    --to=shenjian15@huawei.com \
    --cc=alexandr.lobakin@intel.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=ecree.xilinx@gmail.com \
    --cc=hkallweit1@gmail.com \
    --cc=kuba@kernel.org \
    --cc=leon@kernel.org \
    --cc=linuxarm@openeuler.org \
    --cc=netdev@vger.kernel.org \
    --cc=saeed@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).