[RFC V3 net-next 0/4] ethtool: extend coalesce uAPI
flat view
STALE1897d
SUPERSEDED
From: Yufeng Mo <hidden>
Date: 2021-08-13 01:49:24
Also in:
linux-wireless
Subsystem:
8169 10/100/1000 gigabit ethernet driver, amazon ethernet drivers, amd xgbe driver, aquantia ethernet driver (atlantic), arm/cavium thunder network driver, arm/cortina systems gemini arm architecture, atheros ath generic utilities, broadcom bnx2 gigabit ethernet driver, broadcom bnx2x 10 gigabit ethernet driver, broadcom bnxt_en 50 gigabit ethernet driver, broadcom genet ethernet driver, broadcom systemport ethernet driver, broadcom tg3 gigabit ethernet driver, brocade bna 10 gigabit ethernet driver, cavium liquidio network driver, cisco vic ethernet nic driver, cxgb3 ethernet driver (cxgb3), cxgb4 ethernet driver (cxgb4), cxgb4vf ethernet driver (cxgb4vf), documentation, emulex 10gbps nic be2, be3-r, lancer, skyhawk-r driver (be2net), freescale enetc ethernet drivers, freescale imx / mxc fec driver, freescale etsec ethernet driver (gianfar), hisilicon network subsystem 3 driver (hns3), hisilicon network subsystem driver, huawei ethernet driver, infiniband subsystem, intel ethernet drivers, jme network driver, marvell gigabit ethernet drivers (skge/sky2), marvell mv643xx ethernet driver, marvell mvneta ethernet driver, marvell mvpp2 ethernet driver, marvell octeontx2 physical function driver, mellanox ethernet driver (mlx4_en), mellanox ethernet driver (mlx5e), mellanox mlx4 core vpi driver, mellanox mlx5 core vpi driver, myricom myri-10g 10gbe driver (myri10ge), netdevsim, netronome ethernet drivers, networking drivers, networking [ethtool], networking [general], netxen (1/10) gbe support, pensando ethernet drivers, qlogic ql4xxx ethernet driver, qlogic qlcnic (1/10)gb ethernet driver, s390 architecture, s390 network drivers, samsung sxgbe drivers, sfc network driver, socionext (sni) netsec network driver, staging subsystem, stmmac ethernet driver, synopsys designware enterprise ethernet driver, tehuti ethernet driver, the rest, ti ethernet switch driver (cpsw), tun/tap driver, usb networking drivers, via velocity network driver, virtio net driver, vmware vmxnet3 ethernet driver, wilocity wil6210 wireless driver, xilinx axi ethernet driver, xilinx ll temac ethernet driver · Maintainers:
Heiner Kallweit, Arthur Kiyanovski, David Arinzon, Raju Rangoju, Prashanth Kumar K R, Sukhdeep Singh, Sunil Goutham, Hans Ulli Kroll, Linus Walleij, Jeff Johnson, Rasesh Mody, Sudarsana Kalluru, Manish Chopra, Michael Chan, Pavan Chebbi, Doug Berger, Florian Fainelli, Nicolai Buchwitz, Satish Kharat, Potnuri Bharat Teja, Jonathan Corbet, Ajit Khaparde, Sriharsha Basavapatna, Claudiu Manoil, Vladimir Oltean, Wei Fang, Clark Wang, Jian Shen, Jijie Shao, Cai Huoqing, Jason Gunthorpe, Leon Romanovsky, Tony Nguyen, Przemek Kitszel, Guo-Fu Tseng, Sebastian Hesselbarth, Marcin Wojtas, Russell King, Geetha sowjanya, Ratheesh Kannoth, Subbaraya Sundeep, Bharat Bhushan, Tariq Toukan, Saeed Mahameed, Mark Bloch, Jakub Kicinski, Andrew Lunn, "David S. Miller", Eric Dumazet, Paolo Abeni, Andrew Lunn, Rahul Verma, Brett Creeley, Shahed Shaikh, Heiko Carstens, Vasily Gorbik, Alexander Gordeev, Alexandra Winter, Aswin Karuvally, Byungho An, Edward Cree, Ilias Apalodimas, Masahisa Kojima, Greg Kroah-Hartman, Maxime Chevallier, Jose Abreu, Andy Gospodarek, Linus Torvalds, Willem de Bruijn, Jason Wang, Francois Romieu, "Michael S. Tsirkin", Eugenio Pérez, Ronak Doshi, Radhey Shyam Pandey
Status: Superseded by v4 (posted 2021-08-16). [go to v4]
Revision v3 (4 revisions archived).
Revisions (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