mbox series

[net-next,v5,00/15,pull,request] ice: support devlink subfunction

Message ID 20240906223010.2194591-1-anthony.l.nguyen@intel.com (mailing list archive)
Headers show
Series ice: support devlink subfunction | expand

Message

Tony Nguyen Sept. 6, 2024, 10:29 p.m. UTC
Michal Swiatkowski says:

Currently ice driver does not allow creating more than one networking
device per physical function. The only way to have more hardware backed
netdev is to use SR-IOV.

Following patchset adds support for devlink port API. For each new
pcisf type port, driver allocates new VSI, configures all resources
needed, including dynamically MSIX vectors, program rules and registers
new netdev.

This series supports only one Tx/Rx queue pair per subfunction.

Example commands:
devlink port add pci/0000:31:00.1 flavour pcisf pfnum 1 sfnum 1000
devlink port function set pci/0000:31:00.1/1 hw_addr 00:00:00:00:03:14
devlink port function set pci/0000:31:00.1/1 state active
devlink port function del pci/0000:31:00.1/1

Make the port representor and eswitch code generic to support
subfunction representor type.

VSI configuration is slightly different between VF and SF. It needs to
be reflected in the code.
---
v5:
- drop reviewed-by tag on patch 03/15
- move out changing devlink physical port number 03/15
  https://lore.kernel.org/netdev/20240820215620.1245310-5-anthony.l.nguyen@intel.com/

v4: https://lore.kernel.org/netdev/20240813215005.3647350-1-anthony.l.nguyen@intel.com/
- fix dev warn message when index isn't supported
- change pf->hw.bus.func to internal pf id
- use devl_register instead of locking version
- rephrase last commit message

v3: https://lore.kernel.org/netdev/20240808173104.385094-1-anthony.l.nguyen@intel.com/
- move active checking into functions where it is set
- move devlink port creation for subfunction into patchset where it is
  used
- change error message in subfunction activation to be consistent
- remove leftover from patch 5 (sorry Simon that I missed your comment
  previously)
- add support for xsk ZC multi-buffer for subfunction netdev

v2: https://lore.kernel.org/netdev/20240731221028.965449-1-anthony.l.nguyen@intel.com/
- Add more recipients

v1: https://lore.kernel.org/netdev/20240729223431.681842-1-anthony.l.nguyen@intel.com/

iwl-next: https://lore.kernel.org/intel-wired-lan/20240606112503.1939759-1-michal.swiatkowski@linux.intel.com/

The following are changes since commit dd1bf9f9df156b43e5122f90d97ac3f59a1a5621:

The following are changes since commit 52fc70a32573707f70d6b1b5c5fe85cc91457393:
  Merge branch 'rx-sw-tstamp-for-all'
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 100GbE

Michal Swiatkowski (8):
  ice: treat subfunction VSI the same as PF VSI
  ice: make representor code generic
  ice: create port representor for SF
  ice: don't set target VSI for subfunction
  ice: check if SF is ready in ethtool ops
  ice: implement netdevice ops for SF representor
  ice: support subfunction devlink Tx topology
  ice: basic support for VLAN in subfunctions

Piotr Raczynski (7):
  ice: add new VSI type for subfunctions
  ice: export ice ndo_ops functions
  ice: add basic devlink subfunctions support
  ice: allocate devlink for subfunction
  ice: base subfunction aux driver
  ice: implement netdev for subfunction
  ice: subfunction activation and base devlink ops

 drivers/net/ethernet/intel/ice/Makefile       |   2 +
 .../net/ethernet/intel/ice/devlink/devlink.c  |  46 ++
 .../net/ethernet/intel/ice/devlink/devlink.h  |   1 +
 .../ethernet/intel/ice/devlink/devlink_port.c | 506 ++++++++++++++++++
 .../ethernet/intel/ice/devlink/devlink_port.h |  46 ++
 drivers/net/ethernet/intel/ice/ice.h          |  19 +-
 drivers/net/ethernet/intel/ice/ice_base.c     |   5 +-
 drivers/net/ethernet/intel/ice/ice_dcb_lib.c  |   1 +
 drivers/net/ethernet/intel/ice/ice_eswitch.c  | 111 +++-
 drivers/net/ethernet/intel/ice/ice_eswitch.h  |  22 +-
 drivers/net/ethernet/intel/ice/ice_ethtool.c  |   7 +-
 drivers/net/ethernet/intel/ice/ice_lib.c      |  50 +-
 drivers/net/ethernet/intel/ice/ice_lib.h      |   3 +
 drivers/net/ethernet/intel/ice/ice_main.c     |  64 ++-
 drivers/net/ethernet/intel/ice/ice_repr.c     | 211 ++++++--
 drivers/net/ethernet/intel/ice/ice_repr.h     |  22 +-
 drivers/net/ethernet/intel/ice/ice_sf_eth.c   | 329 ++++++++++++
 drivers/net/ethernet/intel/ice/ice_sf_eth.h   |  33 ++
 .../ethernet/intel/ice/ice_sf_vsi_vlan_ops.c  |  21 +
 .../ethernet/intel/ice/ice_sf_vsi_vlan_ops.h  |  13 +
 drivers/net/ethernet/intel/ice/ice_sriov.c    |   4 +-
 drivers/net/ethernet/intel/ice/ice_txrx.c     |   2 +-
 drivers/net/ethernet/intel/ice/ice_type.h     |   1 +
 drivers/net/ethernet/intel/ice/ice_vf_lib.c   |   4 +-
 .../net/ethernet/intel/ice/ice_vsi_vlan_ops.c |   4 +
 drivers/net/ethernet/intel/ice/ice_xsk.c      |   2 +-
 26 files changed, 1394 insertions(+), 135 deletions(-)
 create mode 100644 drivers/net/ethernet/intel/ice/ice_sf_eth.c
 create mode 100644 drivers/net/ethernet/intel/ice/ice_sf_eth.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_sf_vsi_vlan_ops.c
 create mode 100644 drivers/net/ethernet/intel/ice/ice_sf_vsi_vlan_ops.h

Comments

patchwork-bot+netdevbpf@kernel.org Sept. 11, 2024, 3:10 a.m. UTC | #1
Hello:

This series was applied to netdev/net-next.git (main)
by Tony Nguyen <anthony.l.nguyen@intel.com>:

On Fri,  6 Sep 2024 15:29:51 -0700 you wrote:
> Michal Swiatkowski says:
> 
> Currently ice driver does not allow creating more than one networking
> device per physical function. The only way to have more hardware backed
> netdev is to use SR-IOV.
> 
> Following patchset adds support for devlink port API. For each new
> pcisf type port, driver allocates new VSI, configures all resources
> needed, including dynamically MSIX vectors, program rules and registers
> new netdev.
> 
> [...]

Here is the summary with links:
  - [net-next,v5,01/15] ice: add new VSI type for subfunctions
    https://git.kernel.org/netdev/net-next/c/597b8af58bb2
  - [net-next,v5,02/15] ice: export ice ndo_ops functions
    https://git.kernel.org/netdev/net-next/c/004688c4cb5b
  - [net-next,v5,03/15] ice: add basic devlink subfunctions support
    https://git.kernel.org/netdev/net-next/c/eda69d654c7e
  - [net-next,v5,04/15] ice: treat subfunction VSI the same as PF VSI
    https://git.kernel.org/netdev/net-next/c/747967b0bbfa
  - [net-next,v5,05/15] ice: allocate devlink for subfunction
    https://git.kernel.org/netdev/net-next/c/f43e3be662e6
  - [net-next,v5,06/15] ice: base subfunction aux driver
    https://git.kernel.org/netdev/net-next/c/177ef7f1e2a0
  - [net-next,v5,07/15] ice: implement netdev for subfunction
    https://git.kernel.org/netdev/net-next/c/8f9b681adb44
  - [net-next,v5,08/15] ice: make representor code generic
    https://git.kernel.org/netdev/net-next/c/415db8399d06
  - [net-next,v5,09/15] ice: create port representor for SF
    https://git.kernel.org/netdev/net-next/c/977514fb0fa8
  - [net-next,v5,10/15] ice: don't set target VSI for subfunction
    https://git.kernel.org/netdev/net-next/c/ef2509037172
  - [net-next,v5,11/15] ice: check if SF is ready in ethtool ops
    https://git.kernel.org/netdev/net-next/c/0f00a897c9fc
  - [net-next,v5,12/15] ice: implement netdevice ops for SF representor
    https://git.kernel.org/netdev/net-next/c/54f077123952
  - [net-next,v5,13/15] ice: support subfunction devlink Tx topology
    https://git.kernel.org/netdev/net-next/c/7cde47431df5
  - [net-next,v5,14/15] ice: basic support for VLAN in subfunctions
    https://git.kernel.org/netdev/net-next/c/0c6a3cb6f181
  - [net-next,v5,15/15] ice: subfunction activation and base devlink ops
    https://git.kernel.org/netdev/net-next/c/13acc5c4cdbe

You are awesome, thank you!