Linuxarm
Threads by month
- ----- 2025 -----
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
August 2021
- 18 participants
- 28 discussions

20 Aug '21
Some little fixes and add some modules support.
Xiaofei Tan (3):
rasdaemon: Fix the issue of command option -r for hip08
rasdaemon: Fix some print format issues for hisi common error section
rasdaemon: Add some modules supported by hisi common error section
non-standard-hisi_hip08.c | 6 +++---
non-standard-hisilicon.c | 32 +++++++++++++++++++++-----------
2 files changed, 24 insertions(+), 14 deletions(-)
--
2.8.1
1
3
In order to support some configuration in coalesce uAPI, this series
extend coalesce uAPI and add support for CQE mode.
Below is some test result with HNS3 driver:
1. old ethtool(ioctl) + new kernel:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: 0
sample-interval: 0
pkt-rate-low: 0
pkt-rate-high: 0
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: 0
rx-frames-irq: 0
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: 0
tx-frames-irq: 0
rx-usecs-low: 0
rx-frame-low: 0
tx-usecs-low: 0
tx-frame-low: 0
rx-usecs-high: 0
rx-frame-high: 0
tx-usecs-high: 0
tx-frame-high: 0
2. ethtool(netlink with cqe mode) + kernel without cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
CQE mode RX: n/a TX: n/a
3. ethool(netlink with cqe mode) + kernel with cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
CQE mode RX: off TX: off
4. ethool(netlink without cqe mode) + kernel with cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
Change log:
V1 -> V2:
1. fix compile error using allmodconfig in #2
2. move some property-related modifications from #2 to #1
for better review suggested by Jakub Kicinski.
Change log from RFC:
V3 -> V4:
add document explaining the difference between CQE and EQE
in #1 suggested by Jakub Kicinski.
V2 -> V3:
1. split #1 into adding new parameter and adding new attributes.
2. use NLA_POLICY_MAX(NLA_U8, 1) instead of NLA_U8.
3. modify the description of CQE in Document.
V1 -> V2:
refactor #1 in V1 suggestted by Jakub Kicinski.
Yufeng Mo (4):
ethtool: add two coalesce attributes for CQE mode
ethtool: extend coalesce setting uAPI with CQE mode
net: hns3: add support for EQE/CQE mode configuration
net: hns3: add ethtool support for CQE/EQE mode configuration
Documentation/networking/ethtool-netlink.rst | 15 +++++++
drivers/infiniband/ulp/ipoib/ipoib_ethtool.c | 8 +++-
drivers/net/ethernet/amazon/ena/ena_ethtool.c | 8 +++-
drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 8 +++-
.../net/ethernet/aquantia/atlantic/aq_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/bcmsysport.c | 8 +++-
drivers/net/ethernet/broadcom/bnx2.c | 12 ++++--
.../net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 +++-
drivers/net/ethernet/broadcom/tg3.c | 10 ++++-
drivers/net/ethernet/brocade/bna/bnad_ethtool.c | 12 ++++--
drivers/net/ethernet/cavium/liquidio/lio_ethtool.c | 8 +++-
.../net/ethernet/cavium/thunder/nicvf_ethtool.c | 4 +-
drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 8 +++-
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 8 +++-
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c | 8 +++-
.../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 8 +++-
drivers/net/ethernet/cisco/enic/enic_ethtool.c | 8 +++-
drivers/net/ethernet/cortina/gemini.c | 8 +++-
drivers/net/ethernet/emulex/benet/be_ethtool.c | 8 +++-
drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c | 8 +++-
.../net/ethernet/freescale/enetc/enetc_ethtool.c | 8 +++-
drivers/net/ethernet/freescale/fec_main.c | 14 ++++---
drivers/net/ethernet/freescale/gianfar_ethtool.c | 8 +++-
drivers/net/ethernet/hisilicon/hip04_eth.c | 8 +++-
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 8 +++-
drivers/net/ethernet/hisilicon/hns3/hnae3.h | 1 +
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 49 +++++++++++++++++++++-
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h | 11 +++++
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 26 ++++++++++--
.../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 1 +
.../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 1 +
drivers/net/ethernet/huawei/hinic/hinic_ethtool.c | 8 +++-
drivers/net/ethernet/intel/e1000/e1000_ethtool.c | 8 +++-
drivers/net/ethernet/intel/e1000e/ethtool.c | 8 +++-
drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c | 8 +++-
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 8 +++-
drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ice/ice_ethtool.c | 12 ++++--
drivers/net/ethernet/intel/igb/igb_ethtool.c | 8 +++-
drivers/net/ethernet/intel/igbvf/ethtool.c | 8 +++-
drivers/net/ethernet/intel/igc/igc_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ixgbevf/ethtool.c | 8 +++-
drivers/net/ethernet/jme.c | 12 ++++--
drivers/net/ethernet/marvell/mv643xx_eth.c | 12 ++++--
drivers/net/ethernet/marvell/mvneta.c | 14 +++++--
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 14 +++++--
.../ethernet/marvell/octeontx2/nic/otx2_ethtool.c | 8 +++-
drivers/net/ethernet/marvell/skge.c | 8 +++-
drivers/net/ethernet/marvell/sky2.c | 8 +++-
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 8 +++-
.../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 8 +++-
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 8 +++-
.../ethernet/mellanox/mlx5/core/ipoib/ethtool.c | 8 +++-
drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 12 ++++--
.../net/ethernet/netronome/nfp/nfp_net_ethtool.c | 8 +++-
drivers/net/ethernet/ni/nixge.c | 14 +++++--
.../net/ethernet/pensando/ionic/ionic_ethtool.c | 8 +++-
.../ethernet/qlogic/netxen/netxen_nic_ethtool.c | 8 +++-
drivers/net/ethernet/qlogic/qede/qede.h | 4 +-
drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 8 +++-
.../net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c | 8 +++-
drivers/net/ethernet/realtek/r8169_main.c | 10 ++++-
drivers/net/ethernet/samsung/sxgbe/sxgbe_ethtool.c | 8 +++-
drivers/net/ethernet/sfc/ethtool.c | 8 +++-
drivers/net/ethernet/sfc/falcon/ethtool.c | 8 +++-
drivers/net/ethernet/socionext/netsec.c | 10 +++--
.../net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 8 +++-
drivers/net/ethernet/synopsys/dwc-xlgmac-ethtool.c | 14 +++++--
drivers/net/ethernet/tehuti/tehuti.c | 12 ++++--
drivers/net/ethernet/ti/cpsw.c | 2 +-
drivers/net/ethernet/ti/cpsw_ethtool.c | 8 +++-
drivers/net/ethernet/ti/cpsw_new.c | 2 +-
drivers/net/ethernet/ti/cpsw_priv.h | 8 +++-
drivers/net/ethernet/ti/davinci_emac.c | 10 +++--
drivers/net/ethernet/via/via-velocity.c | 8 +++-
drivers/net/ethernet/xilinx/ll_temac_main.c | 14 +++++--
drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 14 +++++--
drivers/net/netdevsim/ethtool.c | 8 +++-
drivers/net/tun.c | 8 +++-
drivers/net/usb/r8152.c | 8 +++-
drivers/net/virtio_net.c | 8 +++-
drivers/net/vmxnet3/vmxnet3_ethtool.c | 12 ++++--
drivers/net/wireless/ath/wil6210/ethtool.c | 14 +++++--
drivers/s390/net/qeth_ethtool.c | 4 +-
drivers/staging/qlge/qlge_ethtool.c | 10 ++++-
include/linux/ethtool.h | 22 ++++++++--
include/uapi/linux/ethtool_netlink.h | 2 +
net/ethtool/coalesce.c | 29 ++++++++++---
net/ethtool/ioctl.c | 15 +++++--
net/ethtool/netlink.h | 2 +-
93 files changed, 679 insertions(+), 209 deletions(-)
--
2.8.1
3
6
For the prototype of netdev_features_t is u64, and the number
of netdevice feature bits is 64 now. So there is no space to
introduce new feature bit.
This patchset try to solve it by change the prototype of
netdev_features_t from u64 to bitmap. With this change,
it's neccessary to introduce a set of bitmap operation
helpers for netdev features. Meanwhile, the functions
which use netdev_features_t as return value are also
need to be changed, return the result as an output
parameter.
With above changes, it will affect hundreds of files,
and all the nic drivers. To make it easy to be reviewed,
split the changes to 124 patches to 6 parts.
patch 1: code optimization for hns3 driver
patch 2~23: convert the prototype which use netdev_features_t
as return value
patch 24: introduce fake helpers for bitmap operation
patch 25~141: use netdev_feature_xxx helpers
patch 142: use macro __DECLARE_NETDEV_FEATURE_MASK to replace
netdev_feature_t declaration.
patch 143: change the type of netdev_features_t to bitmap,
and rewrite the bitmap helpers.
Jian Shen (143):
net: hns3: refine function hns3_set_default_feature()
net: convert the prototype of netdev_intersect_features
net: convert the prototype of netdev_get_wanted_features
net: convert the prototype of net_mpls_features
net: convert the prototype of harmonize_features
net: convert the prototype of gso_features_check
net: convert the prototype of vlan_features_check
net: convert the prototype of vxlan_features_check
net: convert the prototype of dflt_features_check
net: convert the prototype of ndo_features_check
net: convert the prototype of netif_skb_features
net: convert the prototype of ndo_fix_features
net: convert the prototype of netdev_fix_features
net: convert the prototype of netdev_sync_upper_features
net: convert the prototype of br_features_recompute
net: convert the prototype of netdev_add_tso_features
net: convert the prototype of netdev_increment_features
net: convert the prototype of hsr_features_recompute
net: mlx5: convert prototype of mlx5e_ipsec_feature_check,
mlx5e_tunnel_features_check and mlx5e_fix_uplink_rep_features
net: sfc: convert the prototype of xxx_supported_features
net: qlogic: convert the prototype of qlcnic_process_flags
net: realtek: convert the prototype of rtl8168evl_fix_tso
ethtool: convert the prototype of ethtool_get_feature_mask
net: add netdev feature helpers
net: core: use netdev feature helpers
skbuff: use netdev feature helpers
net: vlan: use netdev feature helpers
bridge: use netdev feature helpers
ipvlan: use netdev feature helpers
veth: use netdev feature helpers
bonding: use netdev feature helpers
net: tun: use netdev feature helpers
net: tap: use netdev feature helpers
net: geneve: use netdev feature helpers
hv_netvsc: use netdev feature helpers
macvlan: use netdev feature helpers
macsec: use netdev feature helpers
s390: qeth: use netdev feature helpers
dsa: use netdev feature helpers
macvtap: use netdev feature helpers
team: use netdev feature helpers
vmxnet3: use netdev feature helpers
net_failover: use netdev feature helpers
pktgen: use netdev feature helpers
net: sched: use netdev feature helpers
netdevsim: use netdev feature helpers
virtio_net: use netdev feature helpers
net: ipv4: use netdev feature helpers
net: ipv6: use netdev feature helpers
net: hsr: use netdev feature helpers
net: nsh: use netdev feature helpers
vxlan: use netdev feature helpers
xen-netback: use netdev feature helpers
xen-netfront: use netdev feature helpers
sock: use netdev feature helpers
sunrpc: use netdev feature helpers
net: loopback: use netdev feature helpers
net: dummy: use netdev_feature helpers
net: mac80211: use netdev feature helpers
net: ifb: use netdev feature helpers
net: bareudp: use netdev feature helpers
net: gtp: use netdev feature helpers
net: nlmon: use netdev feature helpers
net: wireguard: use netdev feature helpers
net: can: use netdev feature helpers
net: ppp: use netdev feature helpers
net: ipa: use netdev feature helpers
net: fjes: use netdev feature helpers
net: usb: use netdev feature helpers
net: wireless: use netdev feature helpers
net: realtek: use netdev feature helpers
net: broadcom: use netdev feature helpers
net: intel: use netdev feature helpers
net: hisilicon: use netdev feature helpers
net: mellanox: use netdev feature helpers
net: atlantic: use netdev feature helpers
net: atheros: use netdev feature helpers
net: chelsio: use netdev feature helpers
net: davicom: use netdev feature helpers
net: freescale: use netdev feature helpers
net: synopsys: use netdev feature helpers
net: sfc: use netdev feature helpers
net: qualcomm: use netdev feature helpers
net: nvidia: use netdev feature helpers
net: faraday: use netdev feature helpers
net: google: use netdev feature helpers
net: hinic: use netdev feature helpers
net: ibm: use netdev feature helpers
net: ionic: use netdev feature helpers
net: jme: use netdev feature helpers
net: micrel: use netdev feature helpers
net: cavium: use netdev feature helpers
net: cadence: use netdev feature helpers
net: mediatek: use netdev feature helpers
net: marvell: use netdev feature helpers
net: socionext: use netdev feature helpers
net: qlogic: use netdev feature helpers
net: nfp: use netdev feature helpers
net: mscc: use netdev feature helpers
net: oki-semi: use netdev feature helpers
net: renesas: use netdev feature helpers
net: neterion: use netdev feature helpers
net: cortina: use netdev feature helpers
net: stmmac: use netdev feature helpers
net: sxgbe: use netdev feature helpers
net: xgmac: use netdev feature helpers
net: altera: use netdev feature helpers
net: ti: use netdev feature helpers
net: benet: use netdev feature helpers
net: amd: use netdev feature helpers
net: bna: use netdev feature helpers
net: enic: use netdev feature helpers
net: 3com: use netdev feature helpers
net: aeroflex: use netdev feature helpers
net: sun: use netdev feature helpers
net: mana: use netdev feature helpers
net: myricom: use netdev feature helpers
net: alacritech: use netdev feature helpers
net: toshiba: use netdev feature helpers
net: tehuti: use netdev feature helpers
net: alteon: use netdev feature helpers
net: ena: use netdev feature helpers
net: sgi: use netdev feature helpers
net: microchip: use netdev feature helpers
net: ni: use netdev feature helpers
net: apm: use netdev feature helpers
net: natsemi: use netdev feature helpers
net: xilinx: use netdev feature helpers
net: pasemi: use netdev feature helpers
net: rocker: use netdev feature helpers
net: silan: use netdev feature helpers
net: adaptec: use netdev feature helpers
net: tundra: use netdev feature helpers
net: via: use netdev feature helpers
net: wiznet: use netdev feature helpers
net: dnet: use netdev feature helpers
net: ethoc: use netdev feature helpers
RDMA: ipoib: use netdev feature helpers
um: use netdev feature helpers
staging: qlge: use netdev feature helpers
net: sock: add helper sk_nocaps_add_gso()
treewide: introduce macro __DECLARE_NETDEV_FEATURE_MASK
net: extend the type of netdev_features_t to bitmap
arch/um/drivers/vector_kern.c | 15 +-
drivers/infiniband/ulp/ipoib/ipoib_main.c | 21 +-
drivers/net/bareudp.c | 16 +-
drivers/net/bonding/bond_main.c | 137 ++++---
drivers/net/bonding/bond_options.c | 12 +-
drivers/net/can/dev/dev.c | 3 +-
drivers/net/can/slcan.c | 3 +-
drivers/net/dsa/xrs700x/xrs700x.c | 6 +-
drivers/net/dummy.c | 14 +-
drivers/net/ethernet/3com/3c59x.c | 9 +-
drivers/net/ethernet/3com/typhoon.c | 10 +-
drivers/net/ethernet/adaptec/starfire.c | 9 +-
drivers/net/ethernet/aeroflex/greth.c | 12 +-
drivers/net/ethernet/alacritech/slicoss.c | 5 +-
drivers/net/ethernet/alteon/acenic.c | 7 +-
drivers/net/ethernet/altera/altera_tse_main.c | 11 +-
drivers/net/ethernet/amazon/ena/ena_admin_defs.h | 2 +-
drivers/net/ethernet/amazon/ena/ena_netdev.c | 50 +--
drivers/net/ethernet/amd/amd8111e.c | 8 +-
drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 20 +-
drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 93 +++--
drivers/net/ethernet/amd/xgbe/xgbe-main.c | 68 ++--
drivers/net/ethernet/amd/xgbe/xgbe.h | 2 +-
drivers/net/ethernet/apm/xgene-v2/main.c | 5 +-
drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 21 +-
.../net/ethernet/aquantia/atlantic/aq_filters.c | 12 +-
drivers/net/ethernet/aquantia/atlantic/aq_macsec.c | 2 +-
drivers/net/ethernet/aquantia/atlantic/aq_main.c | 27 +-
drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 28 +-
drivers/net/ethernet/aquantia/atlantic/aq_nic.h | 2 +-
drivers/net/ethernet/aquantia/atlantic/aq_ring.c | 3 +-
.../ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c | 3 +-
drivers/net/ethernet/atheros/alx/main.c | 23 +-
drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 33 +-
drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 44 ++-
drivers/net/ethernet/atheros/atlx/atl1.c | 15 +-
drivers/net/ethernet/atheros/atlx/atl2.c | 27 +-
drivers/net/ethernet/atheros/atlx/atlx.c | 20 +-
drivers/net/ethernet/broadcom/b44.c | 2 +-
drivers/net/ethernet/broadcom/bcmsysport.c | 24 +-
drivers/net/ethernet/broadcom/bgmac.c | 8 +-
drivers/net/ethernet/broadcom/bnx2.c | 48 ++-
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 67 ++--
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h | 3 +-
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 93 +++--
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 171 +++++----
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c | 4 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_vfr.c | 11 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 3 +-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 12 +-
drivers/net/ethernet/broadcom/tg3.c | 62 +--
drivers/net/ethernet/brocade/bna/bnad.c | 48 ++-
drivers/net/ethernet/cadence/macb_main.c | 81 ++--
drivers/net/ethernet/calxeda/xgmac.c | 20 +-
drivers/net/ethernet/cavium/liquidio/lio_core.c | 6 +-
drivers/net/ethernet/cavium/liquidio/lio_main.c | 95 +++--
drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 79 ++--
drivers/net/ethernet/cavium/thunder/nicvf_main.c | 50 +--
drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 2 +-
drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 50 +--
drivers/net/ethernet/chelsio/cxgb/sge.c | 12 +-
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 60 +--
drivers/net/ethernet/chelsio/cxgb3/sge.c | 10 +-
drivers/net/ethernet/chelsio/cxgb4/cxgb4_fcoe.c | 16 +-
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 88 +++--
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_u32.h | 3 +-
drivers/net/ethernet/chelsio/cxgb4/sge.c | 14 +-
.../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 39 +-
drivers/net/ethernet/chelsio/cxgb4vf/sge.c | 8 +-
.../chelsio/inline_crypto/chtls/chtls_main.c | 3 +-
drivers/net/ethernet/cisco/enic/enic_main.c | 74 ++--
drivers/net/ethernet/cortina/gemini.c | 18 +-
drivers/net/ethernet/davicom/dm9000.c | 24 +-
drivers/net/ethernet/dnet.c | 2 +-
drivers/net/ethernet/emulex/benet/be_main.c | 68 ++--
drivers/net/ethernet/ethoc.c | 2 +-
drivers/net/ethernet/faraday/ftgmac100.c | 38 +-
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 23 +-
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 44 ++-
.../net/ethernet/freescale/dpaa2/dpaa2-switch.c | 5 +-
drivers/net/ethernet/freescale/enetc/enetc.c | 34 +-
drivers/net/ethernet/freescale/enetc/enetc_pf.c | 38 +-
drivers/net/ethernet/freescale/enetc/enetc_qos.c | 2 +-
drivers/net/ethernet/freescale/enetc/enetc_vf.c | 16 +-
drivers/net/ethernet/freescale/fec_main.c | 29 +-
.../net/ethernet/freescale/fs_enet/fs_enet-main.c | 2 +-
drivers/net/ethernet/freescale/gianfar.c | 39 +-
drivers/net/ethernet/freescale/gianfar_ethtool.c | 11 +-
drivers/net/ethernet/google/gve/gve_adminq.c | 6 +-
drivers/net/ethernet/google/gve/gve_main.c | 31 +-
drivers/net/ethernet/google/gve/gve_rx.c | 8 +-
drivers/net/ethernet/google/gve/gve_rx_dqo.c | 8 +-
drivers/net/ethernet/hisilicon/hix5hd2_gmac.c | 8 +-
drivers/net/ethernet/hisilicon/hns/hns_enet.c | 52 +--
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 159 ++++----
drivers/net/ethernet/huawei/hinic/hinic_main.c | 80 ++--
drivers/net/ethernet/huawei/hinic/hinic_rx.c | 5 +-
drivers/net/ethernet/ibm/ehea/ehea_main.c | 22 +-
drivers/net/ethernet/ibm/emac/core.c | 7 +-
drivers/net/ethernet/ibm/ibmveth.c | 76 ++--
drivers/net/ethernet/ibm/ibmvnic.c | 67 ++--
drivers/net/ethernet/intel/e100.c | 26 +-
drivers/net/ethernet/intel/e1000/e1000_main.c | 82 ++--
drivers/net/ethernet/intel/e1000e/netdev.c | 129 ++++---
drivers/net/ethernet/intel/fm10k/fm10k_main.c | 9 +-
drivers/net/ethernet/intel/fm10k/fm10k_netdev.c | 65 ++--
drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 11 +-
drivers/net/ethernet/intel/i40e/i40e_main.c | 122 +++---
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 9 +-
drivers/net/ethernet/intel/iavf/iavf_main.c | 153 ++++----
drivers/net/ethernet/intel/iavf/iavf_txrx.c | 12 +-
drivers/net/ethernet/intel/ice/ice_main.c | 177 +++++----
drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 9 +-
drivers/net/ethernet/intel/igb/igb_ethtool.c | 2 +-
drivers/net/ethernet/intel/igb/igb_main.c | 150 +++++---
drivers/net/ethernet/intel/igbvf/netdev.c | 86 +++--
drivers/net/ethernet/intel/igc/igc_ethtool.c | 3 +-
drivers/net/ethernet/intel/igc/igc_main.c | 122 +++---
drivers/net/ethernet/intel/ixgb/ixgb_main.c | 49 ++-
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c | 3 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 2 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c | 7 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c | 3 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 215 ++++++-----
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 6 +-
drivers/net/ethernet/intel/ixgbevf/ipsec.c | 9 +-
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 105 +++---
drivers/net/ethernet/jme.c | 49 +--
drivers/net/ethernet/marvell/mv643xx_eth.c | 14 +-
drivers/net/ethernet/marvell/mvneta.c | 22 +-
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 73 ++--
.../ethernet/marvell/octeontx2/nic/otx2_common.c | 3 +-
.../ethernet/marvell/octeontx2/nic/otx2_ethtool.c | 2 +-
.../net/ethernet/marvell/octeontx2/nic/otx2_pf.c | 74 ++--
.../net/ethernet/marvell/octeontx2/nic/otx2_txrx.c | 8 +-
.../net/ethernet/marvell/octeontx2/nic/otx2_vf.c | 22 +-
.../net/ethernet/marvell/prestera/prestera_main.c | 3 +-
drivers/net/ethernet/marvell/skge.c | 11 +-
drivers/net/ethernet/marvell/sky2.c | 75 ++--
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 56 +--
drivers/net/ethernet/mediatek/mtk_eth_soc.h | 2 +-
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 4 +-
drivers/net/ethernet/mellanox/mlx4/en_main.c | 8 +-
drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 198 ++++++----
drivers/net/ethernet/mellanox/mlx4/en_resources.c | 4 +-
drivers/net/ethernet/mellanox/mlx4/en_rx.c | 19 +-
drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 5 +-
drivers/net/ethernet/mellanox/mlx5/core/en.h | 5 +-
.../ethernet/mellanox/mlx5/core/en_accel/ipsec.c | 18 +-
.../mellanox/mlx5/core/en_accel/ipsec_rxtx.h | 15 +-
.../ethernet/mellanox/mlx5/core/en_accel/ktls.c | 14 +-
.../net/ethernet/mellanox/mlx5/core/en_accel/tls.c | 16 +-
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c | 6 +-
.../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 3 +-
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c | 3 +-
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 250 ++++++------
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 25 +-
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 9 +-
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 2 +-
.../net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 19 +-
drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 36 +-
drivers/net/ethernet/micrel/ksz884x.c | 10 +-
drivers/net/ethernet/microchip/lan743x_main.c | 7 +-
drivers/net/ethernet/microsoft/mana/mana_en.c | 20 +-
drivers/net/ethernet/mscc/ocelot.c | 3 +-
drivers/net/ethernet/mscc/ocelot_net.c | 18 +-
drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 31 +-
drivers/net/ethernet/natsemi/ns83820.c | 13 +-
drivers/net/ethernet/neterion/s2io.c | 32 +-
drivers/net/ethernet/neterion/vxge/vxge-main.c | 49 ++-
drivers/net/ethernet/netronome/nfp/crypto/tls.c | 12 +-
.../net/ethernet/netronome/nfp/nfp_net_common.c | 117 +++---
drivers/net/ethernet/netronome/nfp/nfp_net_repr.c | 76 ++--
drivers/net/ethernet/netronome/nfp/nfp_port.c | 3 +-
drivers/net/ethernet/ni/nixge.c | 3 +-
drivers/net/ethernet/nvidia/forcedeth.c | 66 ++--
.../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 13 +-
.../net/ethernet/oki-semi/pch_gbe/pch_gbe_param.c | 6 +-
drivers/net/ethernet/pasemi/pasemi_mac.c | 6 +-
drivers/net/ethernet/pensando/ionic/ionic_lif.c | 125 +++---
drivers/net/ethernet/pensando/ionic/ionic_txrx.c | 9 +-
.../net/ethernet/qlogic/netxen/netxen_nic_init.c | 3 +-
.../net/ethernet/qlogic/netxen/netxen_nic_main.c | 50 +--
drivers/net/ethernet/qlogic/qede/qede.h | 10 +-
drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 2 +-
drivers/net/ethernet/qlogic/qede/qede_filter.c | 19 +-
drivers/net/ethernet/qlogic/qede/qede_fp.c | 23 +-
drivers/net/ethernet/qlogic/qede/qede_main.c | 67 ++--
drivers/net/ethernet/qlogic/qla3xxx.c | 5 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic.h | 3 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c | 72 ++--
drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c | 3 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 57 +--
drivers/net/ethernet/qualcomm/emac/emac-mac.c | 6 +-
drivers/net/ethernet/qualcomm/emac/emac.c | 25 +-
.../net/ethernet/qualcomm/rmnet/rmnet_map_data.c | 11 +-
drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c | 10 +-
drivers/net/ethernet/realtek/8139cp.c | 36 +-
drivers/net/ethernet/realtek/8139too.c | 28 +-
drivers/net/ethernet/realtek/r8169_main.c | 85 +++--
drivers/net/ethernet/renesas/ravb_main.c | 24 +-
drivers/net/ethernet/renesas/sh_eth.c | 28 +-
drivers/net/ethernet/rocker/rocker_main.c | 3 +-
drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c | 19 +-
drivers/net/ethernet/sfc/ef10.c | 37 +-
drivers/net/ethernet/sfc/ef100_nic.c | 39 +-
drivers/net/ethernet/sfc/ef100_rx.c | 6 +-
drivers/net/ethernet/sfc/ef100_tx.c | 11 +-
drivers/net/ethernet/sfc/ef10_sriov.c | 6 +-
drivers/net/ethernet/sfc/efx.c | 30 +-
drivers/net/ethernet/sfc/efx_common.c | 41 +-
drivers/net/ethernet/sfc/efx_common.h | 4 +-
drivers/net/ethernet/sfc/falcon/efx.c | 43 ++-
drivers/net/ethernet/sfc/falcon/net_driver.h | 9 +-
drivers/net/ethernet/sfc/falcon/rx.c | 6 +-
drivers/net/ethernet/sfc/farch.c | 2 +-
drivers/net/ethernet/sfc/mcdi_filters.c | 21 +-
drivers/net/ethernet/sfc/mcdi_port_common.c | 3 +-
drivers/net/ethernet/sfc/net_driver.h | 9 +-
drivers/net/ethernet/sfc/rx.c | 3 +-
drivers/net/ethernet/sfc/rx_common.c | 3 +-
drivers/net/ethernet/sgi/ioc3-eth.c | 11 +-
drivers/net/ethernet/silan/sc92031.c | 6 +-
drivers/net/ethernet/socionext/netsec.c | 10 +-
drivers/net/ethernet/socionext/sni_ave.c | 6 +-
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c | 3 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 62 +--
.../net/ethernet/stmicro/stmmac/stmmac_selftests.c | 6 +-
drivers/net/ethernet/sun/cassini.c | 5 +-
drivers/net/ethernet/sun/ldmvsw.c | 5 +-
drivers/net/ethernet/sun/niu.c | 11 +-
drivers/net/ethernet/sun/sungem.c | 11 +-
drivers/net/ethernet/sun/sunhme.c | 14 +-
drivers/net/ethernet/sun/sunvnet.c | 8 +-
drivers/net/ethernet/sun/sunvnet_common.c | 5 +-
drivers/net/ethernet/synopsys/dwc-xlgmac-common.c | 45 ++-
drivers/net/ethernet/synopsys/dwc-xlgmac-hw.c | 20 +-
drivers/net/ethernet/synopsys/dwc-xlgmac-net.c | 41 +-
drivers/net/ethernet/synopsys/dwc-xlgmac.h | 2 +-
drivers/net/ethernet/tehuti/tehuti.c | 22 +-
drivers/net/ethernet/ti/am65-cpsw-nuss.c | 23 +-
drivers/net/ethernet/ti/cpsw.c | 6 +-
drivers/net/ethernet/ti/cpsw_new.c | 7 +-
drivers/net/ethernet/ti/netcp_core.c | 9 +-
drivers/net/ethernet/toshiba/ps3_gelic_net.c | 14 +-
drivers/net/ethernet/toshiba/spider_net.c | 12 +-
drivers/net/ethernet/tundra/tsi108_eth.c | 3 +-
drivers/net/ethernet/via/via-rhine.c | 10 +-
drivers/net/ethernet/via/via-velocity.c | 14 +-
drivers/net/ethernet/wiznet/w5100.c | 2 +-
drivers/net/ethernet/wiznet/w5300.c | 2 +-
drivers/net/ethernet/xilinx/ll_temac_main.c | 5 +-
drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 9 +-
drivers/net/fjes/fjes_main.c | 3 +-
drivers/net/geneve.c | 18 +-
drivers/net/gtp.c | 2 +-
drivers/net/hyperv/netvsc_bpf.c | 2 +-
drivers/net/hyperv/netvsc_drv.c | 46 +--
drivers/net/hyperv/rndis_filter.c | 30 +-
drivers/net/ifb.c | 12 +-
drivers/net/ipa/ipa_modem.c | 3 +-
drivers/net/ipvlan/ipvlan.h | 2 +-
drivers/net/ipvlan/ipvlan_main.c | 40 +-
drivers/net/ipvlan/ipvtap.c | 4 +-
drivers/net/loopback.c | 20 +-
drivers/net/macsec.c | 49 ++-
drivers/net/macvlan.c | 58 +--
drivers/net/macvtap.c | 5 +-
drivers/net/net_failover.c | 77 ++--
drivers/net/netdevsim/ipsec.c | 4 +-
drivers/net/netdevsim/netdev.c | 15 +-
drivers/net/nlmon.c | 5 +-
drivers/net/ppp/ppp_generic.c | 2 +-
drivers/net/tap.c | 38 +-
drivers/net/team/team.c | 90 +++--
drivers/net/tun.c | 53 ++-
drivers/net/usb/aqc111.c | 42 ++-
drivers/net/usb/ax88179_178a.c | 26 +-
drivers/net/usb/cdc-phonet.c | 2 +-
drivers/net/usb/cdc_mbim.c | 4 +-
drivers/net/usb/lan78xx.c | 46 +--
drivers/net/usb/r8152.c | 71 ++--
drivers/net/usb/smsc75xx.c | 14 +-
drivers/net/usb/smsc95xx.c | 18 +-
drivers/net/veth.c | 67 ++--
drivers/net/virtio_net.c | 51 ++-
drivers/net/vmxnet3/vmxnet3_drv.c | 78 ++--
drivers/net/vmxnet3/vmxnet3_ethtool.c | 88 +++--
drivers/net/vmxnet3/vmxnet3_int.h | 4 +-
drivers/net/vxlan.c | 21 +-
drivers/net/wireguard/device.c | 8 +-
drivers/net/wireless/ath/ath10k/mac.c | 7 +-
drivers/net/wireless/ath/ath11k/mac.c | 4 +-
drivers/net/wireless/ath/ath6kl/main.c | 15 +-
drivers/net/wireless/ath/ath6kl/txrx.c | 6 +-
drivers/net/wireless/ath/wil6210/netdev.c | 11 +-
.../wireless/broadcom/brcm80211/brcmfmac/core.c | 4 +-
drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c | 7 +-
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 17 +-
drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 2 +-
drivers/net/wireless/intel/iwlwifi/mvm/rx.c | 2 +-
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 3 +-
drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 8 +-
drivers/net/wireless/mediatek/mt76/mt7615/init.c | 3 +-
drivers/net/wireless/mediatek/mt76/mt7915/init.c | 3 +-
drivers/net/wireless/mediatek/mt76/mt7921/init.c | 3 +-
drivers/net/xen-netback/interface.c | 27 +-
drivers/net/xen-netfront.c | 52 +--
drivers/s390/net/qeth_core.h | 7 +-
drivers/s390/net/qeth_core_main.c | 129 ++++---
drivers/s390/net/qeth_l2_main.c | 44 ++-
drivers/s390/net/qeth_l3_main.c | 49 ++-
drivers/staging/qlge/qlge_main.c | 59 +--
include/linux/if_macvlan.h | 2 +-
include/linux/if_tap.h | 2 +-
include/linux/if_vlan.h | 22 +-
include/linux/netdev_features.h | 179 +++++++--
include/linux/netdevice.h | 122 +++---
include/linux/skbuff.h | 6 +-
include/net/mac80211.h | 2 +-
include/net/pkt_cls.h | 2 +-
include/net/sock.h | 22 +-
include/net/udp.h | 8 +-
include/net/udp_tunnel.h | 12 +-
include/net/vxlan.h | 13 +-
lib/test_bpf.c | 2 +-
lib/vsprintf.c | 4 +-
net/8021q/vlan.c | 11 +-
net/8021q/vlan.h | 22 +-
net/8021q/vlan_core.c | 6 +-
net/8021q/vlan_dev.c | 57 +--
net/bridge/br_device.c | 21 +-
net/bridge/br_if.c | 19 +-
net/bridge/br_private.h | 3 +-
net/core/dev.c | 418 ++++++++++++---------
net/core/netpoll.c | 4 +-
net/core/pktgen.c | 6 +-
net/core/skbuff.c | 10 +-
net/core/skmsg.c | 3 +-
net/core/sock.c | 17 +-
net/dsa/slave.c | 15 +-
net/ethtool/features.c | 94 ++---
net/ethtool/ioctl.c | 154 +++++---
net/hsr/hsr_device.c | 40 +-
net/ipv4/af_inet.c | 5 +-
net/ipv4/esp4_offload.c | 29 +-
net/ipv4/gre_offload.c | 8 +-
net/ipv4/ip_gre.c | 36 +-
net/ipv4/ip_output.c | 27 +-
net/ipv4/ip_tunnel.c | 4 +-
net/ipv4/ip_vti.c | 2 +-
net/ipv4/ipip.c | 6 +-
net/ipv4/ipmr.c | 2 +-
net/ipv4/tcp.c | 10 +-
net/ipv4/tcp_ipv4.c | 6 +-
net/ipv4/tcp_offload.c | 5 +-
net/ipv4/tcp_output.c | 2 +-
net/ipv4/udp_offload.c | 28 +-
net/ipv6/af_inet6.c | 2 +-
net/ipv6/esp6_offload.c | 19 +-
net/ipv6/inet6_connection_sock.c | 2 +-
net/ipv6/ip6_gre.c | 17 +-
net/ipv6/ip6_offload.c | 3 +-
net/ipv6/ip6_output.c | 24 +-
net/ipv6/ip6_tunnel.c | 9 +-
net/ipv6/ip6mr.c | 2 +-
net/ipv6/sit.c | 9 +-
net/ipv6/tcp_ipv6.c | 2 +-
net/ipv6/udp_offload.c | 2 +-
net/mac80211/iface.c | 10 +-
net/mac80211/main.c | 5 +-
net/nsh/nsh.c | 2 +-
net/sched/sch_cake.c | 4 +-
net/sched/sch_netem.c | 6 +-
net/sched/sch_taprio.c | 6 +-
net/sched/sch_tbf.c | 6 +-
net/sunrpc/sunrpc.h | 2 +-
net/wireless/core.c | 14 +-
378 files changed, 6367 insertions(+), 4344 deletions(-)
--
2.8.1
3
158

18 Aug '21
在 2021/8/11 22:46, Jian Shen 写道:
> Use netdev_feature_xxx helpers to replace the logical operation
> for netdev features.
>
> Signed-off-by: Jian Shen <shenjian15(a)huawei.com>
> ---
> drivers/net/ethernet/sun/cassini.c | 5 +++--
> drivers/net/ethernet/sun/ldmvsw.c | 5 +++--
> drivers/net/ethernet/sun/niu.c | 11 +++++++----
> drivers/net/ethernet/sun/sungem.c | 11 +++++++----
> drivers/net/ethernet/sun/sunhme.c | 14 ++++++++++----
> drivers/net/ethernet/sun/sunvnet.c | 8 +++++---
> drivers/net/ethernet/sun/sunvnet_common.c | 5 ++++-
> 7 files changed, 39 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/net/ethernet/sun/cassini.c b/drivers/net/ethernet/sun/cassini.c
> index 287ae4c..785e11f 100644
> --- a/drivers/net/ethernet/sun/cassini.c
> +++ b/drivers/net/ethernet/sun/cassini.c
> @@ -5084,10 +5084,11 @@ static int cas_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
>
> /* Cassini features. */
> if ((cp->cas_flags & CAS_FLAG_NO_HW_CSUM) == 0)
> - dev->features |= NETIF_F_HW_CSUM | NETIF_F_SG;
> + netdev_feature_set_bits(NETIF_F_HW_CSUM | NETIF_F_SG,
> + &dev->features);
>
> if (pci_using_dac)
> - dev->features |= NETIF_F_HIGHDMA;
> + netdev_feature_set_bit(NETIF_F_HIGHDMA_BIT, &dev->features);
>
> /* MTU range: 60 - varies or 9000 */
> dev->min_mtu = CAS_MIN_MTU;
> diff --git a/drivers/net/ethernet/sun/ldmvsw.c b/drivers/net/ethernet/sun/ldmvsw.c
> index 50bd4e3..7c32d54 100644
> --- a/drivers/net/ethernet/sun/ldmvsw.c
> +++ b/drivers/net/ethernet/sun/ldmvsw.c
> @@ -249,8 +249,9 @@ static struct net_device *vsw_alloc_netdev(u8 hwaddr[],
> dev->ethtool_ops = &vsw_ethtool_ops;
> dev->watchdog_timeo = VSW_TX_TIMEOUT;
>
> - dev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG;
> - dev->features = dev->hw_features;
> + netdev_feature_zero(&dev->hw_features);
> + netdev_feature_set_bits(NETIF_F_HW_CSUM | NETIF_F_SG, &dev->features);
it should be "dev->hw_features", not "dev->features"
> + netdev_feature_copy(&dev->features, dev->hw_features);
>
> /* MTU range: 68 - 65535 */
> dev->min_mtu = ETH_MIN_MTU;
> diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
> index 1501e890..97f62ec 100644
> --- a/drivers/net/ethernet/sun/niu.c
> +++ b/drivers/net/ethernet/sun/niu.c
> @@ -3472,7 +3472,7 @@ static int niu_process_rx_pkt(struct napi_struct *napi, struct niu *np,
> __pskb_pull_tail(skb, len);
>
> rh = (struct rx_pkt_hdr1 *) skb->data;
> - if (np->dev->features & NETIF_F_RXHASH)
> + if (netdev_feature_test_bit(NETIF_F_RXHASH_BIT, np->dev->features))
> skb_set_hash(skb,
> ((u32)rh->hashval2_0 << 24 |
> (u32)rh->hashval2_1 << 16 |
> @@ -9711,8 +9711,11 @@ static void niu_device_announce(struct niu *np)
>
> static void niu_set_basic_features(struct net_device *dev)
> {
> - dev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXHASH;
> - dev->features |= dev->hw_features | NETIF_F_RXCSUM;
> + netdev_feature_zero(&dev->hw_features);
> + netdev_feature_set_bits(NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXHASH,
> + &dev->hw_features);
> + netdev_feature_or(&dev->features, dev->features, dev->hw_features);
> + netdev_feature_set_bit(NETIF_F_RXCSUM_BIT, &dev->features);
> }
>
> static int niu_pci_init_one(struct pci_dev *pdev,
> @@ -9780,7 +9783,7 @@ static int niu_pci_init_one(struct pci_dev *pdev,
> dma_mask = DMA_BIT_MASK(44);
> err = pci_set_dma_mask(pdev, dma_mask);
> if (!err) {
> - dev->features |= NETIF_F_HIGHDMA;
> + netdev_feature_set_bit(NETIF_F_HIGHDMA_BIT, &dev->features);
> err = pci_set_consistent_dma_mask(pdev, dma_mask);
> if (err) {
> dev_err(&pdev->dev, "Unable to obtain 44 bit DMA for consistent allocations, aborting\n");
> diff --git a/drivers/net/ethernet/sun/sungem.c b/drivers/net/ethernet/sun/sungem.c
> index d72018a..79b2435 100644
> --- a/drivers/net/ethernet/sun/sungem.c
> +++ b/drivers/net/ethernet/sun/sungem.c
> @@ -843,7 +843,8 @@ static int gem_rx(struct gem *gp, int work_to_do)
> skb = copy_skb;
> }
>
> - if (likely(dev->features & NETIF_F_RXCSUM)) {
> + if (likely(netdev_feature_test_bit(NETIF_F_RXCSUM_BIT,
> + dev->features))) {
> __sum16 csum;
>
> csum = (__force __sum16)htons((status & RXDCTRL_TCPCSUM) ^ 0xffff);
> @@ -2987,10 +2988,12 @@ static int gem_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
> pci_set_drvdata(pdev, dev);
>
> /* We can do scatter/gather and HW checksum */
> - dev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM;
> - dev->features = dev->hw_features;
> + netdev_feature_zero(&dev->hw_features);
> + netdev_feature_set_bits(NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM,
> + &dev->hw_features);
> + netdev_feature_copy(&dev->features, dev->hw_features);
> if (pci_using_dac)
> - dev->features |= NETIF_F_HIGHDMA;
> + netdev_feature_set_bit(NETIF_F_HIGHDMA_BIT, &dev->features);
>
> /* MTU range: 68 - 1500 (Jumbo mode is broken) */
> dev->min_mtu = GEM_MIN_MTU;
> diff --git a/drivers/net/ethernet/sun/sunhme.c b/drivers/net/ethernet/sun/sunhme.c
> index a2c1a40..22de1ad 100644
> --- a/drivers/net/ethernet/sun/sunhme.c
> +++ b/drivers/net/ethernet/sun/sunhme.c
> @@ -2825,8 +2825,11 @@ static int happy_meal_sbus_probe_one(struct platform_device *op, int is_qfe)
> dev->ethtool_ops = &hme_ethtool_ops;
>
> /* Happy Meal can do it all... */
> - dev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM;
> - dev->features |= dev->hw_features | NETIF_F_RXCSUM;
> + netdev_feature_zero(&dev->hw_features);
> + netdev_feature_set_bits(NETIF_F_SG | NETIF_F_HW_CSUM,
> + &dev->hw_features);
> + netdev_feature_or(&dev->features, dev->features, dev->hw_features);
> + netdev_feature_set_bit(NETIF_F_RXCSUM_BIT, &dev->features);
>
> hp->irq = op->archdata.irqs[0];
>
> @@ -3140,8 +3143,11 @@ static int happy_meal_pci_probe(struct pci_dev *pdev,
> dev->ethtool_ops = &hme_ethtool_ops;
>
> /* Happy Meal can do it all... */
> - dev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM;
> - dev->features |= dev->hw_features | NETIF_F_RXCSUM;
> + netdev_feature_zero(&dev->hw_features);
> + netdev_feature_set_bits(NETIF_F_SG | NETIF_F_HW_CSUM,
> + &dev->hw_features);
> + netdev_feature_or(&dev->features, dev->features, dev->hw_features);
> + netdev_feature_set_bit(NETIF_F_RXCSUM_BIT, &dev->features);
>
> #if defined(CONFIG_SBUS) && defined(CONFIG_PCI)
> /* Hook up PCI register/descriptor accessors. */
> diff --git a/drivers/net/ethernet/sun/sunvnet.c b/drivers/net/ethernet/sun/sunvnet.c
> index 58ee892..1c5c858 100644
> --- a/drivers/net/ethernet/sun/sunvnet.c
> +++ b/drivers/net/ethernet/sun/sunvnet.c
> @@ -312,9 +312,11 @@ static struct vnet *vnet_new(const u64 *local_mac,
> dev->ethtool_ops = &vnet_ethtool_ops;
> dev->watchdog_timeo = VNET_TX_TIMEOUT;
>
> - dev->hw_features = NETIF_F_TSO | NETIF_F_GSO | NETIF_F_ALL_TSO |
> - NETIF_F_HW_CSUM | NETIF_F_SG;
> - dev->features = dev->hw_features;
> + netdev_feature_zero(&dev->hw_features);
> + netdev_feature_set_bits(NETIF_F_TSO | NETIF_F_GSO | NETIF_F_ALL_TSO |
> + NETIF_F_HW_CSUM | NETIF_F_SG,
> + &dev->hw_features);
> + netdev_feature_copy(&dev->features, dev->hw_features);
>
> /* MTU range: 68 - 65535 */
> dev->min_mtu = ETH_MIN_MTU;
> diff --git a/drivers/net/ethernet/sun/sunvnet_common.c b/drivers/net/ethernet/sun/sunvnet_common.c
> index 80fde5f..44f4bff 100644
> --- a/drivers/net/ethernet/sun/sunvnet_common.c
> +++ b/drivers/net/ethernet/sun/sunvnet_common.c
> @@ -1224,6 +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;
> int maclen, datalen;
> int status;
> int gso_size, gso_type, gso_segs;
> @@ -1274,7 +1275,9 @@ vnet_handle_offloads(struct vnet_port *port, struct sk_buff *skb,
> skb_shinfo(skb)->gso_size = datalen;
> skb_shinfo(skb)->gso_segs = gso_segs;
> }
> - segs = skb_gso_segment(skb, dev->features & ~NETIF_F_TSO);
> + netdev_feature_copy(&tmp, dev->features);
> + netdev_feature_clear_bit(NETIF_F_TSO_BIT, &tmp);
> + segs = skb_gso_segment(skb, tmp);
> if (IS_ERR(segs))
> goto out_dropped;
>
1
0

18 Aug '21
在 2021/8/11 22:46, Jian Shen 写道:
> Use netdev_feature_xxx helpers to replace the logical operation
> for netdev features.
>
> Signed-off-by: Jian Shen <shenjian15(a)huawei.com>
> ---
> drivers/net/ethernet/amd/amd8111e.c | 8 +++-
> drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 20 ++++++---
> drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 72 ++++++++++++++++++++-----------
> drivers/net/ethernet/amd/xgbe/xgbe-main.c | 68 ++++++++++++++++-------------
> 4 files changed, 103 insertions(+), 65 deletions(-)
>
> diff --git a/drivers/net/ethernet/amd/amd8111e.c b/drivers/net/ethernet/amd/amd8111e.c
> index 92e4246..1757eac 100644
> --- a/drivers/net/ethernet/amd/amd8111e.c
> +++ b/drivers/net/ethernet/amd/amd8111e.c
> @@ -1790,7 +1790,9 @@ static int amd8111e_probe_one(struct pci_dev *pdev,
> SET_NETDEV_DEV(dev, &pdev->dev);
>
> #if AMD8111E_VLAN_TAG_USED
> - dev->features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX;
> + netdev_feature_set_bits(NETIF_F_HW_VLAN_CTAG_TX |
> + NETIF_F_HW_VLAN_CTAG_RX,
> + &dev->features);
> #endif
>
> lp = netdev_priv(dev);
> @@ -1829,7 +1831,9 @@ static int amd8111e_probe_one(struct pci_dev *pdev,
> netif_napi_add(dev, &lp->napi, amd8111e_rx_poll, 32);
>
> #if AMD8111E_VLAN_TAG_USED
> - dev->features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX;
> + netdev_feature_set_bits(NETIF_F_HW_VLAN_CTAG_TX |
> + NETIF_F_HW_VLAN_CTAG_RX,
> + &dev->features);
> #endif
> /* Probe the external PHY */
> amd8111e_probe_ext_phy(dev);
> diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
> index d5fd49d..6e1a5fb 100644
> --- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
> +++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
> @@ -449,7 +449,8 @@ static void xgbe_config_rss(struct xgbe_prv_data *pdata)
> if (!pdata->hw_feat.rss)
> return;
>
> - if (pdata->netdev->features & NETIF_F_RXHASH)
> + if (netdev_feature_test_bit(NETIF_F_RXHASH_BIT,
> + pdata->netdev->features))
> ret = xgbe_enable_rss(pdata);
> else
> ret = xgbe_disable_rss(pdata);
> @@ -948,7 +949,8 @@ static int xgbe_set_promiscuous_mode(struct xgbe_prv_data *pdata,
> if (enable) {
> xgbe_disable_rx_vlan_filtering(pdata);
> } else {
> - if (pdata->netdev->features & NETIF_F_HW_VLAN_CTAG_FILTER)
> + if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_FILTER_BIT,
> + pdata->netdev->features))
> xgbe_enable_rx_vlan_filtering(pdata);
> }
>
> @@ -1990,7 +1992,7 @@ static int xgbe_dev_read(struct xgbe_channel *channel)
> rdata->rx.len = XGMAC_GET_BITS_LE(rdesc->desc3, RX_NORMAL_DESC3, PL);
>
> /* Set checksum done indicator as appropriate */
> - if (netdev->features & NETIF_F_RXCSUM) {
> + if (netdev_feature_test_bit(NETIF_F_RXCSUM_BIT, netdev->features)) {
> XGMAC_SET_BITS(packet->attributes, RX_PACKET_ATTRIBUTES,
> CSUM_DONE, 1);
> XGMAC_SET_BITS(packet->attributes, RX_PACKET_ATTRIBUTES,
> @@ -2021,7 +2023,8 @@ static int xgbe_dev_read(struct xgbe_channel *channel)
> if (!err || !etlt) {
> /* No error if err is 0 or etlt is 0 */
> if ((etlt == 0x09) &&
> - (netdev->features & NETIF_F_HW_VLAN_CTAG_RX)) {
> + (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT,
> + netdev->features))) {
> XGMAC_SET_BITS(packet->attributes, RX_PACKET_ATTRIBUTES,
> VLAN_CTAG, 1);
> packet->vlan_ctag = XGMAC_GET_BITS_LE(rdesc->desc0,
> @@ -2823,7 +2826,8 @@ static void xgbe_config_mac_speed(struct xgbe_prv_data *pdata)
>
> static void xgbe_config_checksum_offload(struct xgbe_prv_data *pdata)
> {
> - if (pdata->netdev->features & NETIF_F_RXCSUM)
> + if (netdev_feature_test_bit(NETIF_F_RXCSUM_BIT,
> + pdata->netdev->features))
> xgbe_enable_rx_csum(pdata);
> else
> xgbe_disable_rx_csum(pdata);
> @@ -2838,12 +2842,14 @@ static void xgbe_config_vlan_support(struct xgbe_prv_data *pdata)
> /* Set the current VLAN Hash Table register value */
> xgbe_update_vlan_hash_table(pdata);
>
> - if (pdata->netdev->features & NETIF_F_HW_VLAN_CTAG_FILTER)
> + if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_FILTER_BIT,
> + pdata->netdev->features))
> xgbe_enable_rx_vlan_filtering(pdata);
> else
> xgbe_disable_rx_vlan_filtering(pdata);
>
> - if (pdata->netdev->features & NETIF_F_HW_VLAN_CTAG_RX)
> + if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT,
> + pdata->netdev->features))
> xgbe_enable_rx_vlan_stripping(pdata);
> else
> xgbe_disable_rx_vlan_stripping(pdata);
> diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
> index dff9eec..cbf23e0 100644
> --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
> +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
> @@ -2188,37 +2188,46 @@ static void xgbe_fix_features(struct net_device *netdev,
> struct xgbe_prv_data *pdata = netdev_priv(netdev);
> netdev_features_t vxlan_base;
>
> - vxlan_base = NETIF_F_GSO_UDP_TUNNEL | NETIF_F_RX_UDP_TUNNEL_PORT;
> + netdev_feature_zero(&vxlan_base);
> + netdev_feature_set_bits(NETIF_F_GSO_UDP_TUNNEL |
> + NETIF_F_RX_UDP_TUNNEL_PORT,
> + &vxlan_base);
>
> if (!pdata->hw_feat.vxn)
> return;
>
> /* VXLAN CSUM requires VXLAN base */
> - if ((*features & NETIF_F_GSO_UDP_TUNNEL_CSUM) &&
> - !(*features & NETIF_F_GSO_UDP_TUNNEL)) {
> + if (netdev_feature_test_bit(NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT,
> + *features) &&
> + !netdev_feature_test_bit(NETIF_F_GSO_UDP_TUNNEL_BIT, *features)) {
> netdev_notice(netdev,
> "forcing tx udp tunnel support\n");
> - *features |= NETIF_F_GSO_UDP_TUNNEL;
> + netdev_feature_set_bit(NETIF_F_GSO_UDP_TUNNEL_BIT, features);
> }
>
> /* Can't do one without doing the other */
> - if ((*features & vxlan_base) != vxlan_base) {
> + if (!netdev_feature_subset(*features, vxlan_base)) {
> netdev_notice(netdev,
> "forcing both tx and rx udp tunnel support\n");
> - *features |= vxlan_base;
> + netdev_feature_or(features, *features, vxlan_base);
> }
>
> - if (*features & (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM)) {
> - if (!(*features & NETIF_F_GSO_UDP_TUNNEL_CSUM)) {
> + if (netdev_feature_test_bits(NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM,
> + *features)) {
> + if (!netdev_feature_test_bit(NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT,
> + *features)) {
> netdev_notice(netdev,
> "forcing tx udp tunnel checksumming on\n");
> - *features |= NETIF_F_GSO_UDP_TUNNEL_CSUM;
> + netdev_feature_set_bit(NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT,
> + features);
> }
> } else {
> - if (*features & NETIF_F_GSO_UDP_TUNNEL_CSUM) {
> + if (netdev_feature_test_bit(NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT,
> + *features)) {
> netdev_notice(netdev,
> "forcing tx udp tunnel checksumming off\n");
> - *features &= ~NETIF_F_GSO_UDP_TUNNEL_CSUM;
> + netdev_feature_clear_bit(NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT,
> + features);
> }
> }
> }
> @@ -2228,37 +2237,47 @@ static int xgbe_set_features(struct net_device *netdev,
> {
> struct xgbe_prv_data *pdata = netdev_priv(netdev);
> struct xgbe_hw_if *hw_if = &pdata->hw_if;
> - netdev_features_t rxhash, rxcsum, rxvlan, rxvlan_filter;
> + bool rxhash, rxcsum, rxvlan, rxvlan_filter;
> int ret = 0;
>
> - rxhash = pdata->netdev_features & NETIF_F_RXHASH;
> - rxcsum = pdata->netdev_features & NETIF_F_RXCSUM;
> - rxvlan = pdata->netdev_features & NETIF_F_HW_VLAN_CTAG_RX;
> - rxvlan_filter = pdata->netdev_features & NETIF_F_HW_VLAN_CTAG_FILTER;
> + rxhash = netdev_feature_test_bit(NETIF_F_RXHASH_BIT,
> + pdata->netdev_features);
> + rxcsum = netdev_feature_test_bit(NETIF_F_RXCSUM_BIT,
> + pdata->netdev_features);
> + rxvlan = netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT,
> + pdata->netdev_features);
> + rxvlan_filter = netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_FILTER_BIT,
> + pdata->netdev_features);
>
> - if ((features & NETIF_F_RXHASH) && !rxhash)
> + if (netdev_feature_test_bit(NETIF_F_RXHASH_BIT, features) && !rxhash)
> ret = hw_if->enable_rss(pdata);
> - else if (!(features & NETIF_F_RXHASH) && rxhash)
> + else if (!netdev_feature_test_bit(NETIF_F_RXHASH_BIT, features) &&
> + rxhash)
> ret = hw_if->disable_rss(pdata);
> if (ret)
> return ret;
>
> - if ((features & NETIF_F_RXCSUM) && !rxcsum)
> + if (netdev_feature_test_bit(NETIF_F_RXCSUM_BIT, features) && !rxcsum)
> hw_if->enable_rx_csum(pdata);
> - else if (!(features & NETIF_F_RXCSUM) && rxcsum)
> + else if (!netdev_feature_test_bit(NETIF_F_RXCSUM_BIT, features) &&
> + rxcsum)
> hw_if->disable_rx_csum(pdata);
>
> - if ((features & NETIF_F_HW_VLAN_CTAG_RX) && !rxvlan)
> + if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT, features) &&
> + !rxvlan)
> hw_if->enable_rx_vlan_stripping(pdata);
> - else if (!(features & NETIF_F_HW_VLAN_CTAG_RX) && rxvlan)
> + else if (!netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT,
> + features) && rxvlan)
> hw_if->disable_rx_vlan_stripping(pdata);
>
> - if ((features & NETIF_F_HW_VLAN_CTAG_FILTER) && !rxvlan_filter)
> + if (netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_FILTER_BIT,
> + features) && !rxvlan_filter)
> hw_if->enable_rx_vlan_filtering(pdata);
> - else if (!(features & NETIF_F_HW_VLAN_CTAG_FILTER) && rxvlan_filter)
> + else if (!netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_FILTER_BIT,
> + features) && rxvlan_filter)
> hw_if->disable_rx_vlan_filtering(pdata);
>
> - pdata->netdev_features = features;
> + netdev_feature_copy(&features, pdata->netdev_features);
it shoule be "netdev_feature_copy(pdata->netdev_features, &features);"
>
> DBGPR("<--xgbe_set_features\n");
>
> @@ -2584,7 +2603,8 @@ static int xgbe_rx_poll(struct xgbe_channel *channel, int budget)
>
> /* Be sure we don't exceed the configured MTU */
> max_len = netdev->mtu + ETH_HLEN;
> - if (!(netdev->features & NETIF_F_HW_VLAN_CTAG_RX) &&
> + if (!netdev_feature_test_bit(NETIF_F_HW_VLAN_CTAG_RX_BIT,
> + netdev->features) &&
> (skb->protocol == htons(ETH_P_8021Q)))
> max_len += VLAN_HLEN;
>
> diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-main.c b/drivers/net/ethernet/amd/xgbe/xgbe-main.c
> index a218dc6..ace7324 100644
> --- a/drivers/net/ethernet/amd/xgbe/xgbe-main.c
> +++ b/drivers/net/ethernet/amd/xgbe/xgbe-main.c
> @@ -342,45 +342,53 @@ int xgbe_config_netdev(struct xgbe_prv_data *pdata)
> #endif
>
> /* Set device features */
> - netdev->hw_features = NETIF_F_SG |
> - NETIF_F_IP_CSUM |
> - NETIF_F_IPV6_CSUM |
> - NETIF_F_RXCSUM |
> - NETIF_F_TSO |
> - NETIF_F_TSO6 |
> - NETIF_F_GRO |
> - NETIF_F_HW_VLAN_CTAG_RX |
> - NETIF_F_HW_VLAN_CTAG_TX |
> - NETIF_F_HW_VLAN_CTAG_FILTER;
> + netdev_feature_zero(&netdev->hw_features);
> + netdev_feature_set_bits(NETIF_F_SG |
> + NETIF_F_IP_CSUM |
> + NETIF_F_IPV6_CSUM |
> + NETIF_F_RXCSUM |
> + NETIF_F_TSO |
> + NETIF_F_TSO6 |
> + NETIF_F_GRO |
> + NETIF_F_HW_VLAN_CTAG_RX |
> + NETIF_F_HW_VLAN_CTAG_TX |
> + NETIF_F_HW_VLAN_CTAG_FILTER,
> + &netdev->hw_features);
>
> if (pdata->hw_feat.rss)
> - netdev->hw_features |= NETIF_F_RXHASH;
> + netdev_feature_set_bit(NETIF_F_RXHASH_BIT,
> + &netdev->hw_features);
>
> if (pdata->hw_feat.vxn) {
> - netdev->hw_enc_features = NETIF_F_SG |
> - NETIF_F_IP_CSUM |
> - NETIF_F_IPV6_CSUM |
> - NETIF_F_RXCSUM |
> - NETIF_F_TSO |
> - NETIF_F_TSO6 |
> - NETIF_F_GRO |
> - NETIF_F_GSO_UDP_TUNNEL |
> - NETIF_F_GSO_UDP_TUNNEL_CSUM;
> -
> - netdev->hw_features |= NETIF_F_GSO_UDP_TUNNEL |
> - NETIF_F_GSO_UDP_TUNNEL_CSUM;
> + netdev_feature_zero(&netdev->hw_enc_features);
> + netdev_feature_set_bits(NETIF_F_SG |
> + NETIF_F_IP_CSUM |
> + NETIF_F_IPV6_CSUM |
> + NETIF_F_RXCSUM |
> + NETIF_F_TSO |
> + NETIF_F_TSO6 |
> + NETIF_F_GRO |
> + NETIF_F_GSO_UDP_TUNNEL |
> + NETIF_F_GSO_UDP_TUNNEL_CSUM,
> + &netdev->hw_enc_features);
> +
> + netdev_feature_set_bits(NETIF_F_GSO_UDP_TUNNEL |
> + NETIF_F_GSO_UDP_TUNNEL_CSUM,
> + &netdev->hw_features);
>
> netdev->udp_tunnel_nic_info = xgbe_get_udp_tunnel_info();
> }
>
> - netdev->vlan_features |= NETIF_F_SG |
> - NETIF_F_IP_CSUM |
> - NETIF_F_IPV6_CSUM |
> - NETIF_F_TSO |
> - NETIF_F_TSO6;
> + netdev_feature_set_bits(NETIF_F_SG |
> + NETIF_F_IP_CSUM |
> + NETIF_F_IPV6_CSUM |
> + NETIF_F_TSO |
> + NETIF_F_TSO6,
> + &netdev->vlan_features);
>
> - netdev->features |= netdev->hw_features;
> - pdata->netdev_features = netdev->features;
> + netdev_feature_or(&netdev->features, netdev->features,
> + netdev->hw_features);
> + netdev_feature_copy(&pdata->netdev_features, netdev->features);
>
> netdev->priv_flags |= IFF_UNICAST_FLT;
> netdev->min_mtu = 0;
1
0
In order to support some configuration in coalesce uAPI, this RFC
extends coalesce uAPI and add support for CQE mode.
Below is some test result with HNS3 driver:
1. old ethtool(ioctl) + new kernel:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: 0
sample-interval: 0
pkt-rate-low: 0
pkt-rate-high: 0
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: 0
rx-frames-irq: 0
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: 0
tx-frames-irq: 0
rx-usecs-low: 0
rx-frame-low: 0
tx-usecs-low: 0
tx-frame-low: 0
rx-usecs-high: 0
rx-frame-high: 0
tx-usecs-high: 0
tx-frame-high: 0
2. ethtool(netlink with cqe mode) + kernel without cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
CQE mode RX: n/a TX: n/a
3. ethool(netlink with cqe mode) + kernel with cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
CQE mode RX: off TX: off
4. ethool(netlink without cqe mode) + kernel with cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
Change log from RFC:
V3 -> V4:
add document explaining the difference between CQE and EQE
in #1 suggested by Jakub Kicinski.
V2 -> V3:
1. split #1 into adding new parameter and adding new attributes.
2. use NLA_POLICY_MAX(NLA_U8, 1) instead of NLA_U8.
3. modify the description of CQE in Document.
V1 -> V2:
refactor #1 in V1 suggestted by Jakub Kicinski.
Yufeng Mo (4):
ethtool: add two coalesce attributes for CQE mode
ethtool: extend coalesce setting uAPI with CQE mode
net: hns3: add support for EQE/CQE mode configuration
net: hns3: add ethtool support for CQE/EQE mode configuration
Documentation/networking/ethtool-netlink.rst | 15 +++++++
drivers/infiniband/ulp/ipoib/ipoib_ethtool.c | 8 +++-
drivers/net/ethernet/amazon/ena/ena_ethtool.c | 8 +++-
drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 8 +++-
.../net/ethernet/aquantia/atlantic/aq_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/bcmsysport.c | 8 +++-
drivers/net/ethernet/broadcom/bnx2.c | 12 ++++--
.../net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 +++-
drivers/net/ethernet/broadcom/tg3.c | 10 ++++-
drivers/net/ethernet/brocade/bna/bnad_ethtool.c | 12 ++++--
drivers/net/ethernet/cavium/liquidio/lio_ethtool.c | 8 +++-
.../net/ethernet/cavium/thunder/nicvf_ethtool.c | 4 +-
drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 8 +++-
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 8 +++-
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c | 8 +++-
.../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 8 +++-
drivers/net/ethernet/cisco/enic/enic_ethtool.c | 8 +++-
drivers/net/ethernet/cortina/gemini.c | 8 +++-
drivers/net/ethernet/emulex/benet/be_ethtool.c | 8 +++-
drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c | 8 +++-
.../net/ethernet/freescale/enetc/enetc_ethtool.c | 8 +++-
drivers/net/ethernet/freescale/fec_main.c | 14 ++++---
drivers/net/ethernet/freescale/gianfar_ethtool.c | 8 +++-
drivers/net/ethernet/hisilicon/hip04_eth.c | 8 +++-
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 8 +++-
drivers/net/ethernet/hisilicon/hns3/hnae3.h | 1 +
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 49 +++++++++++++++++++++-
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h | 11 +++++
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 26 ++++++++++--
.../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 1 +
.../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 1 +
drivers/net/ethernet/huawei/hinic/hinic_ethtool.c | 8 +++-
drivers/net/ethernet/intel/e1000/e1000_ethtool.c | 8 +++-
drivers/net/ethernet/intel/e1000e/ethtool.c | 8 +++-
drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c | 8 +++-
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 8 +++-
drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ice/ice_ethtool.c | 12 ++++--
drivers/net/ethernet/intel/igb/igb_ethtool.c | 8 +++-
drivers/net/ethernet/intel/igbvf/ethtool.c | 8 +++-
drivers/net/ethernet/intel/igc/igc_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ixgbevf/ethtool.c | 8 +++-
drivers/net/ethernet/jme.c | 12 ++++--
drivers/net/ethernet/marvell/mv643xx_eth.c | 12 ++++--
drivers/net/ethernet/marvell/mvneta.c | 14 +++++--
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 14 +++++--
.../ethernet/marvell/octeontx2/nic/otx2_ethtool.c | 8 +++-
drivers/net/ethernet/marvell/skge.c | 8 +++-
drivers/net/ethernet/marvell/sky2.c | 8 +++-
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 8 +++-
.../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 8 +++-
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 8 +++-
.../ethernet/mellanox/mlx5/core/ipoib/ethtool.c | 8 +++-
drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 12 ++++--
.../net/ethernet/netronome/nfp/nfp_net_ethtool.c | 8 +++-
drivers/net/ethernet/ni/nixge.c | 14 +++++--
.../net/ethernet/pensando/ionic/ionic_ethtool.c | 8 +++-
.../ethernet/qlogic/netxen/netxen_nic_ethtool.c | 8 +++-
drivers/net/ethernet/qlogic/qede/qede.h | 4 +-
drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 8 +++-
.../net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c | 8 +++-
drivers/net/ethernet/realtek/r8169_main.c | 10 ++++-
drivers/net/ethernet/samsung/sxgbe/sxgbe_ethtool.c | 8 +++-
drivers/net/ethernet/sfc/ethtool.c | 8 +++-
drivers/net/ethernet/sfc/falcon/ethtool.c | 8 +++-
drivers/net/ethernet/socionext/netsec.c | 10 +++--
.../net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 8 +++-
drivers/net/ethernet/synopsys/dwc-xlgmac-ethtool.c | 14 +++++--
drivers/net/ethernet/tehuti/tehuti.c | 12 ++++--
drivers/net/ethernet/ti/cpsw.c | 2 +-
drivers/net/ethernet/ti/cpsw_ethtool.c | 8 +++-
drivers/net/ethernet/ti/cpsw_new.c | 2 +-
drivers/net/ethernet/ti/cpsw_priv.h | 8 +++-
drivers/net/ethernet/ti/davinci_emac.c | 8 +++-
drivers/net/ethernet/via/via-velocity.c | 8 +++-
drivers/net/ethernet/xilinx/ll_temac_main.c | 14 +++++--
drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 14 +++++--
drivers/net/netdevsim/ethtool.c | 8 +++-
drivers/net/tun.c | 8 +++-
drivers/net/usb/r8152.c | 8 +++-
drivers/net/virtio_net.c | 8 +++-
drivers/net/vmxnet3/vmxnet3_ethtool.c | 12 ++++--
drivers/net/wireless/ath/wil6210/ethtool.c | 14 +++++--
drivers/s390/net/qeth_ethtool.c | 4 +-
drivers/staging/qlge/qlge_ethtool.c | 10 ++++-
include/linux/ethtool.h | 22 ++++++++--
include/uapi/linux/ethtool_netlink.h | 2 +
net/ethtool/coalesce.c | 29 ++++++++++---
net/ethtool/ioctl.c | 15 +++++--
net/ethtool/netlink.h | 2 +-
93 files changed, 678 insertions(+), 208 deletions(-)
--
2.8.1
3
8
In order to support some configuration in coalesce uAPI, this RFC
extends coalesce uAPI and add support for CQE mode.
Below is some test result with HNS3 driver:
1. old ethtool(ioctl) + new kernel:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: 0
sample-interval: 0
pkt-rate-low: 0
pkt-rate-high: 0
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: 0
rx-frames-irq: 0
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: 0
tx-frames-irq: 0
rx-usecs-low: 0
rx-frame-low: 0
tx-usecs-low: 0
tx-frame-low: 0
rx-usecs-high: 0
rx-frame-high: 0
tx-usecs-high: 0
tx-frame-high: 0
2. ethtool(netlink with cqe mode) + kernel without cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
CQE mode RX: n/a TX: n/a
3. ethool(netlink with cqe mode) + kernel with cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
CQE mode RX: off TX: off
4. ethool(netlink without cqe mode) + kernel with cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
Change log:
V3 -> V4:
add document explaining the difference between CQE and EQE
in #1 suggested by Jakub Kicinski.
V2 -> V3:
1. split #1 into adding new parameter and adding new attributes.
2. use NLA_POLICY_MAX(NLA_U8, 1) instead of NLA_U8.
3. modify the description of CQE in Document.
V1 -> V2:
refactor #1 in V1 suggestted by Jakub Kicinski.
Yufeng Mo (4):
ethtool: add two coalesce attributes for CQE mode
ethtool: extend coalesce setting uAPI with CQE mode
net: hns3: add support for EQE/CQE mode configuration
net: hns3: add ethtool support for CQE/EQE mode configuration
Documentation/networking/ethtool-netlink.rst | 15 +++++++
drivers/infiniband/ulp/ipoib/ipoib_ethtool.c | 8 +++-
drivers/net/ethernet/amazon/ena/ena_ethtool.c | 8 +++-
drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 8 +++-
.../net/ethernet/aquantia/atlantic/aq_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/bcmsysport.c | 8 +++-
drivers/net/ethernet/broadcom/bnx2.c | 12 ++++--
.../net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 +++-
drivers/net/ethernet/broadcom/tg3.c | 10 ++++-
drivers/net/ethernet/brocade/bna/bnad_ethtool.c | 12 ++++--
drivers/net/ethernet/cavium/liquidio/lio_ethtool.c | 8 +++-
.../net/ethernet/cavium/thunder/nicvf_ethtool.c | 4 +-
drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 8 +++-
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 8 +++-
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c | 8 +++-
.../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 8 +++-
drivers/net/ethernet/cisco/enic/enic_ethtool.c | 8 +++-
drivers/net/ethernet/cortina/gemini.c | 8 +++-
drivers/net/ethernet/emulex/benet/be_ethtool.c | 8 +++-
drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c | 8 +++-
.../net/ethernet/freescale/enetc/enetc_ethtool.c | 8 +++-
drivers/net/ethernet/freescale/fec_main.c | 14 ++++---
drivers/net/ethernet/freescale/gianfar_ethtool.c | 8 +++-
drivers/net/ethernet/hisilicon/hip04_eth.c | 8 +++-
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 8 +++-
drivers/net/ethernet/hisilicon/hns3/hnae3.h | 1 +
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 49 +++++++++++++++++++++-
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h | 11 +++++
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 26 ++++++++++--
.../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 1 +
.../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 1 +
drivers/net/ethernet/huawei/hinic/hinic_ethtool.c | 8 +++-
drivers/net/ethernet/intel/e1000/e1000_ethtool.c | 8 +++-
drivers/net/ethernet/intel/e1000e/ethtool.c | 8 +++-
drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c | 8 +++-
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 8 +++-
drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ice/ice_ethtool.c | 12 ++++--
drivers/net/ethernet/intel/igb/igb_ethtool.c | 8 +++-
drivers/net/ethernet/intel/igbvf/ethtool.c | 8 +++-
drivers/net/ethernet/intel/igc/igc_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ixgbevf/ethtool.c | 8 +++-
drivers/net/ethernet/jme.c | 12 ++++--
drivers/net/ethernet/marvell/mv643xx_eth.c | 12 ++++--
drivers/net/ethernet/marvell/mvneta.c | 14 +++++--
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 14 +++++--
.../ethernet/marvell/octeontx2/nic/otx2_ethtool.c | 8 +++-
drivers/net/ethernet/marvell/skge.c | 8 +++-
drivers/net/ethernet/marvell/sky2.c | 8 +++-
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 8 +++-
.../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 8 +++-
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 8 +++-
.../ethernet/mellanox/mlx5/core/ipoib/ethtool.c | 8 +++-
drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 12 ++++--
.../net/ethernet/netronome/nfp/nfp_net_ethtool.c | 8 +++-
drivers/net/ethernet/ni/nixge.c | 14 +++++--
.../net/ethernet/pensando/ionic/ionic_ethtool.c | 8 +++-
.../ethernet/qlogic/netxen/netxen_nic_ethtool.c | 8 +++-
drivers/net/ethernet/qlogic/qede/qede.h | 4 +-
drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 8 +++-
.../net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c | 8 +++-
drivers/net/ethernet/realtek/r8169_main.c | 10 ++++-
drivers/net/ethernet/samsung/sxgbe/sxgbe_ethtool.c | 8 +++-
drivers/net/ethernet/sfc/ethtool.c | 8 +++-
drivers/net/ethernet/sfc/falcon/ethtool.c | 8 +++-
drivers/net/ethernet/socionext/netsec.c | 10 +++--
.../net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 8 +++-
drivers/net/ethernet/synopsys/dwc-xlgmac-ethtool.c | 14 +++++--
drivers/net/ethernet/tehuti/tehuti.c | 12 ++++--
drivers/net/ethernet/ti/cpsw.c | 2 +-
drivers/net/ethernet/ti/cpsw_ethtool.c | 8 +++-
drivers/net/ethernet/ti/cpsw_new.c | 2 +-
drivers/net/ethernet/ti/cpsw_priv.h | 8 +++-
drivers/net/ethernet/ti/davinci_emac.c | 8 +++-
drivers/net/ethernet/via/via-velocity.c | 8 +++-
drivers/net/ethernet/xilinx/ll_temac_main.c | 14 +++++--
drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 14 +++++--
drivers/net/netdevsim/ethtool.c | 8 +++-
drivers/net/tun.c | 8 +++-
drivers/net/usb/r8152.c | 8 +++-
drivers/net/virtio_net.c | 8 +++-
drivers/net/vmxnet3/vmxnet3_ethtool.c | 12 ++++--
drivers/net/wireless/ath/wil6210/ethtool.c | 14 +++++--
drivers/s390/net/qeth_ethtool.c | 4 +-
drivers/staging/qlge/qlge_ethtool.c | 10 ++++-
include/linux/ethtool.h | 22 ++++++++--
include/uapi/linux/ethtool_netlink.h | 2 +
net/ethtool/coalesce.c | 29 ++++++++++---
net/ethtool/ioctl.c | 15 +++++--
net/ethtool/netlink.h | 2 +-
93 files changed, 678 insertions(+), 208 deletions(-)
--
2.8.1
1
4
In order to support some configuration in coalesce uAPI, this RFC
extends coalesce uAPI and add support for CQE mode.
Below is some test result with HNS3 driver:
1. old ethtool(ioctl) + new kernel:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: 0
sample-interval: 0
pkt-rate-low: 0
pkt-rate-high: 0
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: 0
rx-frames-irq: 0
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: 0
tx-frames-irq: 0
rx-usecs-low: 0
rx-frame-low: 0
tx-usecs-low: 0
tx-frame-low: 0
rx-usecs-high: 0
rx-frame-high: 0
tx-usecs-high: 0
tx-frame-high: 0
2. ethtool(netlink with cqe mode) + kernel without cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
CQE mode RX: n/a TX: n/a
3. ethool(netlink with cqe mode) + kernel with cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
CQE mode RX: off TX: off
4. ethool(netlink without cqe mode) + kernel with cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
Change log:
V2 -> V3:
1. split #1 into adding new parameter and adding new attributes.
2. use NLA_POLICY_MAX(NLA_U8, 1) instead of NLA_U8.
3. modify the description of CQE in Document.
V1 -> V2:
refactor #1 in V1 suggestted by Jakub Kicinski.
Yufeng Mo (4):
ethtool: add two coalesce attributes for CQE mode
ethtool: extend coalesce setting uAPI with CQE mode
net: hns3: add support for EQE/CQE mode configuration
net: hns3: add ethtool support for CQE/EQE mode configuration
Documentation/networking/ethtool-netlink.rst | 8 ++++
drivers/infiniband/ulp/ipoib/ipoib_ethtool.c | 8 +++-
drivers/net/ethernet/amazon/ena/ena_ethtool.c | 8 +++-
drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 8 +++-
.../net/ethernet/aquantia/atlantic/aq_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/bcmsysport.c | 8 +++-
drivers/net/ethernet/broadcom/bnx2.c | 12 ++++--
.../net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 +++-
drivers/net/ethernet/broadcom/tg3.c | 10 ++++-
drivers/net/ethernet/brocade/bna/bnad_ethtool.c | 12 ++++--
drivers/net/ethernet/cavium/liquidio/lio_ethtool.c | 8 +++-
.../net/ethernet/cavium/thunder/nicvf_ethtool.c | 4 +-
drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 8 +++-
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 8 +++-
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c | 8 +++-
.../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 8 +++-
drivers/net/ethernet/cisco/enic/enic_ethtool.c | 8 +++-
drivers/net/ethernet/cortina/gemini.c | 8 +++-
drivers/net/ethernet/emulex/benet/be_ethtool.c | 8 +++-
drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c | 8 +++-
.../net/ethernet/freescale/enetc/enetc_ethtool.c | 8 +++-
drivers/net/ethernet/freescale/fec_main.c | 14 ++++---
drivers/net/ethernet/freescale/gianfar_ethtool.c | 8 +++-
drivers/net/ethernet/hisilicon/hip04_eth.c | 8 +++-
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 8 +++-
drivers/net/ethernet/hisilicon/hns3/hnae3.h | 1 +
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 49 +++++++++++++++++++++-
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h | 11 +++++
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 26 ++++++++++--
.../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 1 +
.../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 1 +
drivers/net/ethernet/huawei/hinic/hinic_ethtool.c | 8 +++-
drivers/net/ethernet/intel/e1000/e1000_ethtool.c | 8 +++-
drivers/net/ethernet/intel/e1000e/ethtool.c | 8 +++-
drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c | 8 +++-
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 8 +++-
drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ice/ice_ethtool.c | 12 ++++--
drivers/net/ethernet/intel/igb/igb_ethtool.c | 8 +++-
drivers/net/ethernet/intel/igbvf/ethtool.c | 8 +++-
drivers/net/ethernet/intel/igc/igc_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ixgbevf/ethtool.c | 8 +++-
drivers/net/ethernet/jme.c | 12 ++++--
drivers/net/ethernet/marvell/mv643xx_eth.c | 12 ++++--
drivers/net/ethernet/marvell/mvneta.c | 14 +++++--
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 14 +++++--
.../ethernet/marvell/octeontx2/nic/otx2_ethtool.c | 8 +++-
drivers/net/ethernet/marvell/skge.c | 8 +++-
drivers/net/ethernet/marvell/sky2.c | 8 +++-
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 8 +++-
.../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 8 +++-
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 8 +++-
.../ethernet/mellanox/mlx5/core/ipoib/ethtool.c | 8 +++-
drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 12 ++++--
.../net/ethernet/netronome/nfp/nfp_net_ethtool.c | 8 +++-
drivers/net/ethernet/ni/nixge.c | 14 +++++--
.../net/ethernet/pensando/ionic/ionic_ethtool.c | 8 +++-
.../ethernet/qlogic/netxen/netxen_nic_ethtool.c | 8 +++-
drivers/net/ethernet/qlogic/qede/qede.h | 4 +-
drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 8 +++-
.../net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c | 8 +++-
drivers/net/ethernet/realtek/r8169_main.c | 10 ++++-
drivers/net/ethernet/samsung/sxgbe/sxgbe_ethtool.c | 8 +++-
drivers/net/ethernet/sfc/ethtool.c | 8 +++-
drivers/net/ethernet/sfc/falcon/ethtool.c | 8 +++-
drivers/net/ethernet/socionext/netsec.c | 10 +++--
.../net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 8 +++-
drivers/net/ethernet/synopsys/dwc-xlgmac-ethtool.c | 14 +++++--
drivers/net/ethernet/tehuti/tehuti.c | 12 ++++--
drivers/net/ethernet/ti/cpsw.c | 2 +-
drivers/net/ethernet/ti/cpsw_ethtool.c | 8 +++-
drivers/net/ethernet/ti/cpsw_new.c | 2 +-
drivers/net/ethernet/ti/cpsw_priv.h | 8 +++-
drivers/net/ethernet/ti/davinci_emac.c | 8 +++-
drivers/net/ethernet/via/via-velocity.c | 8 +++-
drivers/net/ethernet/xilinx/ll_temac_main.c | 14 +++++--
drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 14 +++++--
drivers/net/netdevsim/ethtool.c | 8 +++-
drivers/net/tun.c | 8 +++-
drivers/net/usb/r8152.c | 8 +++-
drivers/net/virtio_net.c | 8 +++-
drivers/net/vmxnet3/vmxnet3_ethtool.c | 12 ++++--
drivers/net/wireless/ath/wil6210/ethtool.c | 14 +++++--
drivers/s390/net/qeth_ethtool.c | 4 +-
drivers/staging/qlge/qlge_ethtool.c | 10 ++++-
include/linux/ethtool.h | 22 ++++++++--
include/uapi/linux/ethtool_netlink.h | 2 +
net/ethtool/coalesce.c | 29 ++++++++++---
net/ethtool/ioctl.c | 15 +++++--
net/ethtool/netlink.h | 2 +-
93 files changed, 671 insertions(+), 208 deletions(-)
--
2.8.1
3
6
My good friend,
I just want to know if you, can help me to transfer the amount of
($6Million). After the transfer we have to share it, 50% for me, and
50% for you. Please let me know if you can help me for more
information in regards with the transfer. I hope you can work with me
honestly?
Thanks.
Godwin Peter,
1
0
In order to support some configuration in coalesce uAPI, this RFC
extends coalesce uAPI and add support for CQE mode.
Below is some test result with HNS3 driver:
1. old ethtool(ioctl) + new kernel:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: 0
sample-interval: 0
pkt-rate-low: 0
pkt-rate-high: 0
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: 0
rx-frames-irq: 0
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: 0
tx-frames-irq: 0
rx-usecs-low: 0
rx-frame-low: 0
tx-usecs-low: 0
tx-frame-low: 0
rx-usecs-high: 0
rx-frame-high: 0
tx-usecs-high: 0
tx-frame-high: 0
2. ethtool(netlink with cqe mode) + kernel without cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
CQE mode RX: n/a TX: n/a
3. ethool(netlink with cqe mode) + kernel with cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
CQE mode RX: off TX: off
4. ethool(netlink without cqe mode) + kernel with cqe mode:
estuary:/$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: on TX: on
stats-block-usecs: n/a
sample-interval: n/a
pkt-rate-low: n/a
pkt-rate-high: n/a
rx-usecs: 20
rx-frames: 0
rx-usecs-irq: n/a
rx-frames-irq: n/a
tx-usecs: 20
tx-frames: 0
tx-usecs-irq: n/a
tx-frames-irq: n/a
rx-usecs-low: n/a
rx-frame-low: n/a
tx-usecs-low: n/a
tx-frame-low: n/a
rx-usecs-high: 0
rx-frame-high: n/a
tx-usecs-high: 0
tx-frame-high: n/a
Change log:
V2 -> V3:
1. split #1 into adding new parameter and adding new attributes.
2. use NLA_POLICY_MAX(NLA_U8, 1) instead of NLA_U8.
3. modify the description of CQE in Document.
V1 -> V2:
refactor #1 in V1 suggestted by Jakub Kicinski.
Yufeng Mo (4):
ethtool: add two coalesce attributes for CQE mode
ethtool: extend coalesce setting uAPI with CQE mode
net: hns3: add support for EQE/CQE mode configuration
net: hns3: add ethtool support for CQE/EQE mode configuration
Documentation/networking/ethtool-netlink.rst | 8 ++++
drivers/infiniband/ulp/ipoib/ipoib_ethtool.c | 8 +++-
drivers/net/ethernet/amazon/ena/ena_ethtool.c | 8 +++-
drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 8 +++-
.../net/ethernet/aquantia/atlantic/aq_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/bcmsysport.c | 8 +++-
drivers/net/ethernet/broadcom/bnx2.c | 12 ++++--
.../net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 8 +++-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 +++-
drivers/net/ethernet/broadcom/tg3.c | 10 ++++-
drivers/net/ethernet/brocade/bna/bnad_ethtool.c | 12 ++++--
drivers/net/ethernet/cavium/liquidio/lio_ethtool.c | 8 +++-
.../net/ethernet/cavium/thunder/nicvf_ethtool.c | 4 +-
drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 8 +++-
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 8 +++-
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c | 8 +++-
.../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 8 +++-
drivers/net/ethernet/cisco/enic/enic_ethtool.c | 8 +++-
drivers/net/ethernet/cortina/gemini.c | 8 +++-
drivers/net/ethernet/emulex/benet/be_ethtool.c | 8 +++-
drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c | 8 +++-
.../net/ethernet/freescale/enetc/enetc_ethtool.c | 8 +++-
drivers/net/ethernet/freescale/fec_main.c | 14 ++++---
drivers/net/ethernet/freescale/gianfar_ethtool.c | 8 +++-
drivers/net/ethernet/hisilicon/hip04_eth.c | 8 +++-
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 8 +++-
drivers/net/ethernet/hisilicon/hns3/hnae3.h | 1 +
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 49 +++++++++++++++++++++-
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h | 11 +++++
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 26 ++++++++++--
.../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 1 +
.../ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 1 +
drivers/net/ethernet/huawei/hinic/hinic_ethtool.c | 8 +++-
drivers/net/ethernet/intel/e1000/e1000_ethtool.c | 8 +++-
drivers/net/ethernet/intel/e1000e/ethtool.c | 8 +++-
drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c | 8 +++-
drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 8 +++-
drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ice/ice_ethtool.c | 12 ++++--
drivers/net/ethernet/intel/igb/igb_ethtool.c | 8 +++-
drivers/net/ethernet/intel/igbvf/ethtool.c | 8 +++-
drivers/net/ethernet/intel/igc/igc_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 8 +++-
drivers/net/ethernet/intel/ixgbevf/ethtool.c | 8 +++-
drivers/net/ethernet/jme.c | 12 ++++--
drivers/net/ethernet/marvell/mv643xx_eth.c | 12 ++++--
drivers/net/ethernet/marvell/mvneta.c | 14 +++++--
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 14 +++++--
.../ethernet/marvell/octeontx2/nic/otx2_ethtool.c | 8 +++-
drivers/net/ethernet/marvell/skge.c | 8 +++-
drivers/net/ethernet/marvell/sky2.c | 8 +++-
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 8 +++-
.../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 8 +++-
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 8 +++-
.../ethernet/mellanox/mlx5/core/ipoib/ethtool.c | 8 +++-
drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 12 ++++--
.../net/ethernet/netronome/nfp/nfp_net_ethtool.c | 8 +++-
drivers/net/ethernet/ni/nixge.c | 14 +++++--
.../net/ethernet/pensando/ionic/ionic_ethtool.c | 8 +++-
.../ethernet/qlogic/netxen/netxen_nic_ethtool.c | 8 +++-
drivers/net/ethernet/qlogic/qede/qede.h | 4 +-
drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 8 +++-
.../net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c | 8 +++-
drivers/net/ethernet/realtek/r8169_main.c | 10 ++++-
drivers/net/ethernet/samsung/sxgbe/sxgbe_ethtool.c | 8 +++-
drivers/net/ethernet/sfc/ethtool.c | 8 +++-
drivers/net/ethernet/sfc/falcon/ethtool.c | 8 +++-
drivers/net/ethernet/socionext/netsec.c | 10 +++--
.../net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 8 +++-
drivers/net/ethernet/synopsys/dwc-xlgmac-ethtool.c | 14 +++++--
drivers/net/ethernet/tehuti/tehuti.c | 12 ++++--
drivers/net/ethernet/ti/cpsw.c | 2 +-
drivers/net/ethernet/ti/cpsw_ethtool.c | 8 +++-
drivers/net/ethernet/ti/cpsw_new.c | 2 +-
drivers/net/ethernet/ti/cpsw_priv.h | 8 +++-
drivers/net/ethernet/ti/davinci_emac.c | 8 +++-
drivers/net/ethernet/via/via-velocity.c | 8 +++-
drivers/net/ethernet/xilinx/ll_temac_main.c | 14 +++++--
drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 14 +++++--
drivers/net/netdevsim/ethtool.c | 8 +++-
drivers/net/tun.c | 8 +++-
drivers/net/usb/r8152.c | 8 +++-
drivers/net/virtio_net.c | 8 +++-
drivers/net/vmxnet3/vmxnet3_ethtool.c | 12 ++++--
drivers/net/wireless/ath/wil6210/ethtool.c | 14 +++++--
drivers/s390/net/qeth_ethtool.c | 4 +-
drivers/staging/qlge/qlge_ethtool.c | 10 ++++-
include/linux/ethtool.h | 22 ++++++++--
include/uapi/linux/ethtool_netlink.h | 2 +
net/ethtool/coalesce.c | 29 ++++++++++---
net/ethtool/ioctl.c | 15 +++++--
net/ethtool/netlink.h | 2 +-
93 files changed, 671 insertions(+), 208 deletions(-)
--
2.8.1
1
4