[SRU v2][F/gcp][PULL] gvnic update
Khaled Elmously
khalid.elmously at canonical.com
Wed Feb 16 06:12:28 UTC 2022
BugLink: http://bugs.launchpad.net/bugs/1953575
This patchset updates the gvnic driver code (GVE) to bring it up to parity with the 5.16 kernel. Note the addition of more patches compared to v1. Those patches were found to be needed during testing.
Please note the patch that I reverted "gve: Check TX QPL was actually assigned" came from linux-stable. However the rest of the GVE code did not not come with it, and that was causing code conflicts. I reverted the patch and then re-applied at the right position in the list of GVE patches. This allowed me to avoid code-conflicts entirely. None of the other patches had conflicts either.
These changes have been fully tested and approved by the GCP gvnic team.
Thanks
The following changes since commit e43bb4e9176a04609b806c58c6fd317beec79b98:
UBUNTU: Ubuntu-gcp-5.4.0-1063.67 (2022-01-18 06:32:53 -0300)
are available in the Git repository at:
git+ssh://git.launchpad.net/~kmously/ubuntu/+source/linux/+git/focal gvnic2
for you to fetch changes up to 32686cc99fedd7c55462ad0fb960d4be288d69d9:
gve: Use kvcalloc() instead of kvzalloc() (2022-02-16 00:56:21 -0500)
----------------------------------------------------------------
Ameer Hamza (1):
gve: fix for null pointer dereference.
Arnd Bergmann (1):
gve: DQO: avoid unused variable warnings
Bailey Forrest (17):
gve: Move some static functions to a common file
gve: gve_rx_copy: Move padding to an argument
gve: Make gve_rx_slot_page_info.page_offset an absolute offset
gve: Introduce a new model for device options
gve: Introduce per netdev `enum gve_queue_format`
gve: adminq: DQO specific device descriptor logic
gve: Add support for DQO RX PTYPE map
gve: Add dqo descriptors
gve: Add DQO fields for core data structures
gve: Update adminq commands to support DQO queues
gve: DQO: Add core netdev features
gve: DQO: Add ring allocation and initialization
gve: DQO: Configure interrupts on device up
gve: DQO: Add TX path
gve: DQO: Add RX path
gve: Fix warnings reported for DQO patchset
gve: DQO: Remove incorrect prefetch
Catherine Sullivan (13):
gve: Use dev_info/err instead of netif_info/err.
gve: Add support for raw addressing device option
gve: Add support for raw addressing to the rx path
gve: Add support for raw addressing in the tx path
gve: Check TX QPL was actually assigned
gve: Properly handle errors in gve_assign_qpl
gve: Add rx buffer pagecnt bias
gve: Add netif_set_xps_queue call
gve: Track RX buffer allocation failures
gve: Move the irq db indexes out of the ntfy block struct
gve: Update gve_free_queue_page_list signature
gve: remove memory barrier around seqno
gve: Implement suspend/resume/shutdown
Christophe JAILLET (2):
gve: Propagate error codes to caller
gve: Simplify code and axe the use of a deprecated API
Dan Carpenter (3):
gve: DQO: Fix off by one in gve_rx_dqo()
gve: Fix off by one in gve_tx_timeout()
gve: fix unmatched u64_stats_update_end()
Daode Huang (2):
net: gve: convert strlcpy to strscpy
net: gve: remove duplicated allowed
David Awogbemila (5):
gve: NIC stats for report-stats and for ethtool
gve: Enable Link Speed Reporting in the driver.
gve: Rx Buffer Recycling
gve: Add RX context.
gve: Implement packet continuation for RX.
Eric Dumazet (1):
gve: report 64bit tx_bytes counter from gve_handle_report_stats()
Gustavo A. R. Silva (2):
gve: Replace zero-length array with flexible-array member
gve: Use kvcalloc() instead of kvzalloc()
Haiyue Wang (1):
gve: fix the wrong AdminQ buffer overflow check
Jeroen de Borst (1):
gve: Correct order of processing device options
John Fraker (1):
gve: Recover from queue stall due to missed IRQ
Jordan Kim (2):
gve: Allow pageflips on larger pages
gve: Add consumed counts to ethtool stats
Khalid Elmously (2):
Revert "gve: Check TX QPL was actually assigned"
UBUNTU: SAUCE: Update get/set coalesce functions to match 5.4 ABI
Kuo Zhao (3):
gve: Get and set Rx copybreak via ethtool
gve: Add stats for gve.
gve: Add Gvnic stats AQ command and ethtool show/set-priv-flags.
Michael S. Tsirkin (1):
netdev: pass the stuck queue to the timeout handler
Patricio Noyola (1):
gve: Use link status register to report link status
Sagi Shahar (1):
gve: Batch AQ commands for creating and destroying queues.
Shailend Chand (1):
gve: Add a jumbo-frame device option.
Tao Liu (3):
gve: Avoid freeing NULL pointer
gve: Do lazy cleanup in TX path
gve: Add tx|rx-coalesce-usec for DQO
Willem de Bruijn (1):
gve: Add optional metadata descriptor type GVE_TXD_MTD
Yangchun Fu (1):
gve: Switch to use napi_complete_done
arch/m68k/emu/nfeth.c | 2 +-
arch/um/drivers/net_kern.c | 2 +-
arch/um/drivers/vector_kern.c | 2 +-
arch/xtensa/platforms/iss/network.c | 2 +-
drivers/char/pcmcia/synclink_cs.c | 2 +-
drivers/infiniband/ulp/ipoib/ipoib_main.c | 2 +-
drivers/message/fusion/mptlan.c | 2 +-
drivers/misc/sgi-xp/xpnet.c | 2 +-
drivers/net/appletalk/cops.c | 4 +-
drivers/net/arcnet/arcdevice.h | 2 +-
drivers/net/arcnet/arcnet.c | 2 +-
drivers/net/ethernet/3com/3c509.c | 4 +-
drivers/net/ethernet/3com/3c515.c | 4 +-
drivers/net/ethernet/3com/3c574_cs.c | 4 +-
drivers/net/ethernet/3com/3c589_cs.c | 4 +-
drivers/net/ethernet/3com/3c59x.c | 4 +-
drivers/net/ethernet/3com/typhoon.c | 2 +-
drivers/net/ethernet/8390/8390.c | 4 +-
drivers/net/ethernet/8390/8390.h | 4 +-
drivers/net/ethernet/8390/8390p.c | 4 +-
drivers/net/ethernet/8390/axnet_cs.c | 4 +-
drivers/net/ethernet/8390/lib8390.c | 2 +-
drivers/net/ethernet/adaptec/starfire.c | 4 +-
drivers/net/ethernet/agere/et131x.c | 2 +-
drivers/net/ethernet/allwinner/sun4i-emac.c | 2 +-
drivers/net/ethernet/alteon/acenic.c | 4 +-
drivers/net/ethernet/amazon/ena/ena_netdev.c | 2 +-
drivers/net/ethernet/amd/7990.c | 2 +-
drivers/net/ethernet/amd/7990.h | 2 +-
drivers/net/ethernet/amd/a2065.c | 2 +-
drivers/net/ethernet/amd/am79c961a.c | 2 +-
drivers/net/ethernet/amd/amd8111e.c | 2 +-
drivers/net/ethernet/amd/ariadne.c | 2 +-
drivers/net/ethernet/amd/atarilance.c | 4 +-
drivers/net/ethernet/amd/au1000_eth.c | 2 +-
drivers/net/ethernet/amd/declance.c | 2 +-
drivers/net/ethernet/amd/lance.c | 4 +-
drivers/net/ethernet/amd/ni65.c | 4 +-
drivers/net/ethernet/amd/nmclan_cs.c | 4 +-
drivers/net/ethernet/amd/pcnet32.c | 4 +-
drivers/net/ethernet/amd/sunlance.c | 2 +-
drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 2 +-
drivers/net/ethernet/apm/xgene-v2/main.c | 2 +-
drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 2 +-
drivers/net/ethernet/apple/macmace.c | 4 +-
drivers/net/ethernet/atheros/ag71xx.c | 2 +-
drivers/net/ethernet/atheros/alx/main.c | 2 +-
drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 2 +-
drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 2 +-
drivers/net/ethernet/atheros/atlx/atl2.c | 2 +-
drivers/net/ethernet/atheros/atlx/atlx.c | 2 +-
drivers/net/ethernet/broadcom/b44.c | 2 +-
drivers/net/ethernet/broadcom/bcmsysport.c | 2 +-
drivers/net/ethernet/broadcom/bnx2.c | 2 +-
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 2 +-
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h | 2 +-
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 +-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 2 +-
drivers/net/ethernet/broadcom/sb1250-mac.c | 4 +-
drivers/net/ethernet/broadcom/tg3.c | 2 +-
drivers/net/ethernet/calxeda/xgmac.c | 2 +-
drivers/net/ethernet/cavium/liquidio/lio_main.c | 2 +-
drivers/net/ethernet/cavium/liquidio/lio_vf_main.c | 2 +-
drivers/net/ethernet/cavium/liquidio/lio_vf_rep.c | 4 +-
drivers/net/ethernet/cavium/thunder/nicvf_main.c | 2 +-
drivers/net/ethernet/cirrus/cs89x0.c | 2 +-
drivers/net/ethernet/cisco/enic/enic_main.c | 2 +-
drivers/net/ethernet/cortina/gemini.c | 2 +-
drivers/net/ethernet/davicom/dm9000.c | 2 +-
drivers/net/ethernet/dec/tulip/de2104x.c | 2 +-
drivers/net/ethernet/dec/tulip/tulip_core.c | 4 +-
drivers/net/ethernet/dec/tulip/winbond-840.c | 4 +-
drivers/net/ethernet/dlink/dl2k.c | 4 +-
drivers/net/ethernet/dlink/sundance.c | 4 +-
drivers/net/ethernet/emulex/benet/be_main.c | 2 +-
drivers/net/ethernet/ethoc.c | 2 +-
drivers/net/ethernet/faraday/ftgmac100.c | 2 +-
drivers/net/ethernet/fealnx.c | 4 +-
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 2 +-
drivers/net/ethernet/freescale/fec_main.c | 2 +-
drivers/net/ethernet/freescale/fec_mpc52xx.c | 2 +-
.../net/ethernet/freescale/fs_enet/fs_enet-main.c | 2 +-
drivers/net/ethernet/freescale/gianfar.c | 2 +-
drivers/net/ethernet/freescale/ucc_geth.c | 2 +-
drivers/net/ethernet/fujitsu/fmvj18x_cs.c | 4 +-
drivers/net/ethernet/google/Kconfig | 2 +-
drivers/net/ethernet/google/gve/Makefile | 2 +-
drivers/net/ethernet/google/gve/gve.h | 502 +++++++++-
drivers/net/ethernet/google/gve/gve_adminq.c | 677 +++++++++++--
drivers/net/ethernet/google/gve/gve_adminq.h | 194 +++-
drivers/net/ethernet/google/gve/gve_desc.h | 52 +-
drivers/net/ethernet/google/gve/gve_desc_dqo.h | 256 +++++
drivers/net/ethernet/google/gve/gve_dqo.h | 93 ++
drivers/net/ethernet/google/gve/gve_ethtool.c | 462 ++++++++-
drivers/net/ethernet/google/gve/gve_main.c | 818 +++++++++++++---
drivers/net/ethernet/google/gve/gve_register.h | 1 +
drivers/net/ethernet/google/gve/gve_rx.c | 643 +++++++++---
drivers/net/ethernet/google/gve/gve_rx_dqo.c | 756 +++++++++++++++
drivers/net/ethernet/google/gve/gve_tx.c | 358 +++++--
drivers/net/ethernet/google/gve/gve_tx_dqo.c | 1022 ++++++++++++++++++++
drivers/net/ethernet/google/gve/gve_utils.c | 99 ++
drivers/net/ethernet/google/gve/gve_utils.h | 28 +
drivers/net/ethernet/hisilicon/hip04_eth.c | 2 +-
drivers/net/ethernet/hisilicon/hix5hd2_gmac.c | 2 +-
drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +-
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 2 +-
drivers/net/ethernet/huawei/hinic/hinic_main.c | 2 +-
drivers/net/ethernet/i825xx/82596.c | 4 +-
drivers/net/ethernet/i825xx/ether1.c | 4 +-
drivers/net/ethernet/i825xx/lib82596.c | 4 +-
drivers/net/ethernet/i825xx/sun3_82586.c | 4 +-
drivers/net/ethernet/ibm/ehea/ehea_main.c | 2 +-
drivers/net/ethernet/ibm/emac/core.c | 2 +-
drivers/net/ethernet/ibm/ibmvnic.c | 2 +-
drivers/net/ethernet/intel/e100.c | 2 +-
drivers/net/ethernet/intel/e1000/e1000_main.c | 4 +-
drivers/net/ethernet/intel/e1000e/netdev.c | 2 +-
drivers/net/ethernet/intel/fm10k/fm10k_netdev.c | 2 +-
drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
drivers/net/ethernet/intel/iavf/iavf_main.c | 2 +-
drivers/net/ethernet/intel/ice/ice_main.c | 2 +-
drivers/net/ethernet/intel/igb/igb_main.c | 4 +-
drivers/net/ethernet/intel/igbvf/netdev.c | 2 +-
drivers/net/ethernet/intel/ixgb/ixgb_main.c | 4 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.c | 4 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +-
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 2 +-
drivers/net/ethernet/jme.c | 2 +-
drivers/net/ethernet/korina.c | 2 +-
drivers/net/ethernet/lantiq_etop.c | 2 +-
drivers/net/ethernet/marvell/mv643xx_eth.c | 2 +-
drivers/net/ethernet/marvell/pxa168_eth.c | 2 +-
drivers/net/ethernet/marvell/skge.c | 2 +-
drivers/net/ethernet/marvell/sky2.c | 2 +-
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 2 +-
drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 2 +-
drivers/net/ethernet/micrel/ks8842.c | 2 +-
drivers/net/ethernet/micrel/ksz884x.c | 2 +-
drivers/net/ethernet/microchip/enc28j60.c | 2 +-
drivers/net/ethernet/microchip/encx24j600.c | 2 +-
drivers/net/ethernet/natsemi/natsemi.c | 4 +-
drivers/net/ethernet/natsemi/ns83820.c | 4 +-
drivers/net/ethernet/natsemi/sonic.c | 2 +-
drivers/net/ethernet/natsemi/sonic.h | 2 +-
drivers/net/ethernet/neterion/s2io.c | 2 +-
drivers/net/ethernet/neterion/s2io.h | 2 +-
drivers/net/ethernet/neterion/vxge/vxge-main.c | 2 +-
.../net/ethernet/netronome/nfp/nfp_net_common.c | 2 +-
drivers/net/ethernet/nvidia/forcedeth.c | 2 +-
.../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 2 +-
drivers/net/ethernet/packetengines/hamachi.c | 4 +-
drivers/net/ethernet/packetengines/yellowfin.c | 4 +-
drivers/net/ethernet/pensando/ionic/ionic_lif.c | 2 +-
.../net/ethernet/qlogic/netxen/netxen_nic_main.c | 4 +-
drivers/net/ethernet/qlogic/qla3xxx.c | 2 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 4 +-
drivers/net/ethernet/qualcomm/emac/emac.c | 2 +-
drivers/net/ethernet/qualcomm/qca_spi.c | 2 +-
drivers/net/ethernet/qualcomm/qca_uart.c | 2 +-
drivers/net/ethernet/rdc/r6040.c | 2 +-
drivers/net/ethernet/realtek/8139cp.c | 2 +-
drivers/net/ethernet/realtek/8139too.c | 4 +-
drivers/net/ethernet/realtek/atp.c | 4 +-
drivers/net/ethernet/realtek/r8169_main.c | 2 +-
drivers/net/ethernet/renesas/ravb_main.c | 2 +-
drivers/net/ethernet/renesas/sh_eth.c | 2 +-
drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c | 2 +-
drivers/net/ethernet/seeq/ether3.c | 4 +-
drivers/net/ethernet/seeq/sgiseeq.c | 2 +-
drivers/net/ethernet/sfc/efx.c | 2 +-
drivers/net/ethernet/sfc/falcon/efx.c | 2 +-
drivers/net/ethernet/sgi/ioc3-eth.c | 4 +-
drivers/net/ethernet/sgi/meth.c | 4 +-
drivers/net/ethernet/silan/sc92031.c | 2 +-
drivers/net/ethernet/sis/sis190.c | 2 +-
drivers/net/ethernet/sis/sis900.c | 4 +-
drivers/net/ethernet/smsc/epic100.c | 4 +-
drivers/net/ethernet/smsc/smc911x.c | 2 +-
drivers/net/ethernet/smsc/smc9194.c | 4 +-
drivers/net/ethernet/smsc/smc91c92_cs.c | 4 +-
drivers/net/ethernet/smsc/smc91x.c | 2 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
drivers/net/ethernet/sun/cassini.c | 2 +-
drivers/net/ethernet/sun/niu.c | 2 +-
drivers/net/ethernet/sun/sunbmac.c | 2 +-
drivers/net/ethernet/sun/sungem.c | 2 +-
drivers/net/ethernet/sun/sunhme.c | 2 +-
drivers/net/ethernet/sun/sunqe.c | 2 +-
drivers/net/ethernet/sun/sunvnet_common.c | 2 +-
drivers/net/ethernet/sun/sunvnet_common.h | 2 +-
drivers/net/ethernet/synopsys/dwc-xlgmac-net.c | 2 +-
drivers/net/ethernet/ti/cpmac.c | 2 +-
drivers/net/ethernet/ti/davinci_emac.c | 2 +-
drivers/net/ethernet/ti/netcp_core.c | 2 +-
drivers/net/ethernet/ti/tlan.c | 6 +-
drivers/net/ethernet/toshiba/ps3_gelic_net.c | 2 +-
drivers/net/ethernet/toshiba/ps3_gelic_net.h | 2 +-
drivers/net/ethernet/toshiba/spider_net.c | 2 +-
drivers/net/ethernet/toshiba/tc35815.c | 4 +-
drivers/net/ethernet/via/via-rhine.c | 4 +-
drivers/net/ethernet/wiznet/w5100.c | 2 +-
drivers/net/ethernet/wiznet/w5300.c | 2 +-
drivers/net/ethernet/xilinx/xilinx_emaclite.c | 2 +-
drivers/net/ethernet/xircom/xirc2ps_cs.c | 4 +-
drivers/net/fjes/fjes_main.c | 4 +-
drivers/net/slip/slip.c | 2 +-
drivers/net/usb/catc.c | 2 +-
drivers/net/usb/hso.c | 2 +-
drivers/net/usb/ipheth.c | 2 +-
drivers/net/usb/kaweth.c | 2 +-
drivers/net/usb/lan78xx.c | 2 +-
drivers/net/usb/pegasus.c | 2 +-
drivers/net/usb/r8152.c | 2 +-
drivers/net/usb/rtl8150.c | 2 +-
drivers/net/usb/usbnet.c | 2 +-
drivers/net/vmxnet3/vmxnet3_drv.c | 2 +-
drivers/net/wan/cosa.c | 4 +-
drivers/net/wan/farsync.c | 2 +-
drivers/net/wan/fsl_ucc_hdlc.c | 2 +-
drivers/net/wan/lmc/lmc_main.c | 4 +-
drivers/net/wan/x25_asy.c | 2 +-
drivers/net/wimax/i2400m/netdev.c | 2 +-
drivers/net/wireless/intel/ipw2x00/ipw2100.c | 2 +-
drivers/net/wireless/intersil/hostap/hostap_main.c | 2 +-
drivers/net/wireless/intersil/orinoco/main.c | 2 +-
drivers/net/wireless/intersil/orinoco/orinoco.h | 2 +-
drivers/net/wireless/intersil/prism54/islpci_eth.c | 2 +-
drivers/net/wireless/intersil/prism54/islpci_eth.h | 2 +-
drivers/net/wireless/marvell/mwifiex/main.c | 2 +-
drivers/net/wireless/quantenna/qtnfmac/core.c | 2 +-
drivers/net/wireless/wl3501_cs.c | 2 +-
drivers/net/wireless/zydas/zd1201.c | 2 +-
drivers/s390/net/qeth_core.h | 2 +-
drivers/s390/net/qeth_core_main.c | 2 +-
drivers/staging/ks7010/ks_wlan_net.c | 4 +-
drivers/staging/qlge/qlge_main.c | 2 +-
drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 2 +-
drivers/staging/rtl8192u/r8192U_core.c | 2 +-
drivers/staging/unisys/visornic/visornic_main.c | 2 +-
drivers/staging/wlan-ng/p80211netdev.c | 4 +-
drivers/tty/n_gsm.c | 2 +-
drivers/tty/synclink.c | 2 +-
drivers/tty/synclink_gt.c | 2 +-
drivers/tty/synclinkmp.c | 2 +-
include/linux/netdevice.h | 5 +-
include/linux/usb/usbnet.h | 2 +-
net/atm/lec.c | 2 +-
net/bluetooth/bnep/netdev.c | 2 +-
net/sched/sch_generic.c | 2 +-
250 files changed, 5676 insertions(+), 876 deletions(-)
create mode 100644 drivers/net/ethernet/google/gve/gve_desc_dqo.h
create mode 100644 drivers/net/ethernet/google/gve/gve_dqo.h
create mode 100644 drivers/net/ethernet/google/gve/gve_rx_dqo.c
create mode 100644 drivers/net/ethernet/google/gve/gve_tx_dqo.c
create mode 100644 drivers/net/ethernet/google/gve/gve_utils.c
create mode 100644 drivers/net/ethernet/google/gve/gve_utils.h
More information about the kernel-team
mailing list