[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