Linuxarm
Threads by month
- ----- 2025 -----
- May
- April
- March
- 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
- 797 discussions

26 Aug '21
Both SKB_FRAG_PAGE_ORDER are defined to the same value in
net/core/sock.c and drivers/vhost/net.c.
Move the SKB_FRAG_PAGE_ORDER definition to net/core/sock.h,
as both net/core/sock.c and drivers/vhost/net.c include it,
and it seems a reasonable file to put the macro.
Signed-off-by: Yunsheng Lin <linyunsheng(a)huawei.com>
---
drivers/vhost/net.c | 2 --
include/net/sock.h | 1 +
net/core/sock.c | 1 -
3 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
index 6414bd5..3a249ee 100644
--- a/drivers/vhost/net.c
+++ b/drivers/vhost/net.c
@@ -643,8 +643,6 @@ static bool tx_can_batch(struct vhost_virtqueue *vq, size_t total_len)
!vhost_vq_avail_empty(vq->dev, vq);
}
-#define SKB_FRAG_PAGE_ORDER get_order(32768)
-
static bool vhost_net_page_frag_refill(struct vhost_net *net, unsigned int sz,
struct page_frag *pfrag, gfp_t gfp)
{
diff --git a/include/net/sock.h b/include/net/sock.h
index 95b2577..66a9a90 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -2717,6 +2717,7 @@ extern int sysctl_optmem_max;
extern __u32 sysctl_wmem_default;
extern __u32 sysctl_rmem_default;
+#define SKB_FRAG_PAGE_ORDER get_order(32768)
DECLARE_STATIC_KEY_FALSE(net_high_order_alloc_disable_key);
static inline int sk_get_wmem0(const struct sock *sk, const struct proto *proto)
diff --git a/net/core/sock.c b/net/core/sock.c
index 950f1e7..62627e8 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -2574,7 +2574,6 @@ static void sk_leave_memory_pressure(struct sock *sk)
}
}
-#define SKB_FRAG_PAGE_ORDER get_order(32768)
DEFINE_STATIC_KEY_FALSE(net_high_order_alloc_disable_key);
/**
--
2.7.4
3
2

26 Aug '21
This patchset adds the socket to netdev page frag recycling
support based on the busy polling and page pool infrastructure.
The profermance improve from 30Gbit to 41Gbit for one thread iperf
tcp flow, and the CPU usages decreases about 20% for four threads
iperf flow with 100Gb line speed in IOMMU strict mode.
The profermance improve about 2.5% for one thread iperf tcp flow
in IOMMU passthrough mode.
Yunsheng Lin (7):
page_pool: refactor the page pool to support multi alloc context
skbuff: add interface to manipulate frag count for tx recycling
net: add NAPI api to register and retrieve the page pool ptr
net: pfrag_pool: add pfrag pool support based on page pool
sock: support refilling pfrag from pfrag_pool
net: hns3: support tx recycling in the hns3 driver
sysctl_tcp_use_pfrag_pool
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 32 +++++----
include/linux/netdevice.h | 9 +++
include/linux/skbuff.h | 43 +++++++++++-
include/net/netns/ipv4.h | 1 +
include/net/page_pool.h | 15 ++++
include/net/pfrag_pool.h | 24 +++++++
include/net/sock.h | 1 +
net/core/Makefile | 1 +
net/core/dev.c | 34 ++++++++-
net/core/page_pool.c | 86 ++++++++++++-----------
net/core/pfrag_pool.c | 92 +++++++++++++++++++++++++
net/core/sock.c | 12 ++++
net/ipv4/sysctl_net_ipv4.c | 7 ++
net/ipv4/tcp.c | 34 ++++++---
14 files changed, 325 insertions(+), 66 deletions(-)
create mode 100644 include/net/pfrag_pool.h
create mode 100644 net/core/pfrag_pool.c
--
2.7.4
3
22

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