mbox series

[iwl-next,v1,00/15] one by one port representors creation

Message ID 20231024110929.19423-1-michal.swiatkowski@linux.intel.com
Headers show
Series one by one port representors creation | expand

Message

Michal Swiatkowski Oct. 24, 2023, 11:09 a.m. UTC
Hi,

Currently ice supports creating port representors only for VFs. For that
use case they can be created and removed in one step.

This patchset is refactoring current flow to support port representor
creation also for subfunctions and SIOV. In this case port representors
need to be createad and removed one by one. Also, they can be added and
removed while other port representors are running.

To achieve that we need to change the switchdev configuration flow.
Three first patches are only cosmetic (renaming, removing not used code).
Next few ones are preparation for new flow. The most important one
is "add VF representor one by one". It fully implements new flow.

New type of port representor (for subfunction) will be introduced in
follow up patchset.

Michal Swiatkowski (15):
  ice: rename switchdev to eswitch
  ice: remove redundant max_vsi_num variable
  ice: remove unused control VSI parameter
  ice: track q_id in representor
  ice: use repr instead of vf->repr
  ice: track port representors in xarray
  ice: remove VF pointer reference in eswitch code
  ice: make representor code generic
  ice: return pointer to representor
  ice: allow changing SWITCHDEV_CTRL VSI queues
  ice: set Tx topology every time new repr is added
  ice: realloc VSI stats arrays
  ice: add VF representors one by one
  ice: adjust switchdev rebuild path
  ice: reserve number of CP queues

 drivers/net/ethernet/intel/ice/ice.h          |  13 +-
 drivers/net/ethernet/intel/ice/ice_devlink.c  |  29 +
 drivers/net/ethernet/intel/ice/ice_devlink.h  |   1 +
 drivers/net/ethernet/intel/ice/ice_eswitch.c  | 562 ++++++++++--------
 drivers/net/ethernet/intel/ice/ice_eswitch.h  |  22 +-
 .../net/ethernet/intel/ice/ice_eswitch_br.c   |  22 +-
 drivers/net/ethernet/intel/ice/ice_lib.c      |  81 ++-
 drivers/net/ethernet/intel/ice/ice_main.c     |   6 +-
 drivers/net/ethernet/intel/ice/ice_repr.c     | 195 +++---
 drivers/net/ethernet/intel/ice/ice_repr.h     |   9 +-
 drivers/net/ethernet/intel/ice/ice_sriov.c    |  20 +-
 drivers/net/ethernet/intel/ice/ice_tc_lib.c   |   4 +-
 drivers/net/ethernet/intel/ice/ice_vf_lib.c   |   9 +-
 drivers/net/ethernet/intel/ice/ice_vf_lib.h   |   2 +-
 14 files changed, 553 insertions(+), 422 deletions(-)

Comments

Jiri Pirko Oct. 24, 2023, 11:50 a.m. UTC | #1
Tue, Oct 24, 2023 at 01:09:14PM CEST, michal.swiatkowski@linux.intel.com wrote:
>Hi,
>
>Currently ice supports creating port representors only for VFs. For that
>use case they can be created and removed in one step.
>
>This patchset is refactoring current flow to support port representor
>creation also for subfunctions and SIOV. In this case port representors
>need to be createad and removed one by one. Also, they can be added and
>removed while other port representors are running.
>
>To achieve that we need to change the switchdev configuration flow.
>Three first patches are only cosmetic (renaming, removing not used code).
>Next few ones are preparation for new flow. The most important one
>is "add VF representor one by one". It fully implements new flow.
>
>New type of port representor (for subfunction) will be introduced in
>follow up patchset.

Examples please. Show new outputs of devlink commands.

Thanks!


>
>Michal Swiatkowski (15):
>  ice: rename switchdev to eswitch
>  ice: remove redundant max_vsi_num variable
>  ice: remove unused control VSI parameter
>  ice: track q_id in representor
>  ice: use repr instead of vf->repr
>  ice: track port representors in xarray
>  ice: remove VF pointer reference in eswitch code
>  ice: make representor code generic
>  ice: return pointer to representor
>  ice: allow changing SWITCHDEV_CTRL VSI queues
>  ice: set Tx topology every time new repr is added
>  ice: realloc VSI stats arrays
>  ice: add VF representors one by one
>  ice: adjust switchdev rebuild path
>  ice: reserve number of CP queues
>
> drivers/net/ethernet/intel/ice/ice.h          |  13 +-
> drivers/net/ethernet/intel/ice/ice_devlink.c  |  29 +
> drivers/net/ethernet/intel/ice/ice_devlink.h  |   1 +
> drivers/net/ethernet/intel/ice/ice_eswitch.c  | 562 ++++++++++--------
> drivers/net/ethernet/intel/ice/ice_eswitch.h  |  22 +-
> .../net/ethernet/intel/ice/ice_eswitch_br.c   |  22 +-
> drivers/net/ethernet/intel/ice/ice_lib.c      |  81 ++-
> drivers/net/ethernet/intel/ice/ice_main.c     |   6 +-
> drivers/net/ethernet/intel/ice/ice_repr.c     | 195 +++---
> drivers/net/ethernet/intel/ice/ice_repr.h     |   9 +-
> drivers/net/ethernet/intel/ice/ice_sriov.c    |  20 +-
> drivers/net/ethernet/intel/ice/ice_tc_lib.c   |   4 +-
> drivers/net/ethernet/intel/ice/ice_vf_lib.c   |   9 +-
> drivers/net/ethernet/intel/ice/ice_vf_lib.h   |   2 +-
> 14 files changed, 553 insertions(+), 422 deletions(-)
>
>-- 
>2.41.0
>
>
Michal Swiatkowski Oct. 24, 2023, 1:10 p.m. UTC | #2
On Tue, Oct 24, 2023 at 01:50:16PM +0200, Jiri Pirko wrote:
> Tue, Oct 24, 2023 at 01:09:14PM CEST, michal.swiatkowski@linux.intel.com wrote:
> >Hi,
> >
> >Currently ice supports creating port representors only for VFs. For that
> >use case they can be created and removed in one step.
> >
> >This patchset is refactoring current flow to support port representor
> >creation also for subfunctions and SIOV. In this case port representors
> >need to be createad and removed one by one. Also, they can be added and
> >removed while other port representors are running.
> >
> >To achieve that we need to change the switchdev configuration flow.
> >Three first patches are only cosmetic (renaming, removing not used code).
> >Next few ones are preparation for new flow. The most important one
> >is "add VF representor one by one". It fully implements new flow.
> >
> >New type of port representor (for subfunction) will be introduced in
> >follow up patchset.
> 
> Examples please. Show new outputs of devlink commands.
> 
> Thanks!
>

If you mean outputs after refactor to one by one solution nothing
has changed:

# devlink port show (after creating 4 VFs in switchdev mode)
pci/0000:18:00.0/0: type eth netdev ens785f0np0 flavour physical port 0 splittable true lanes 8
pci/0000:18:00.0/2: type eth netdev ens785f0np0_0 flavour pcivf controller 0 pfnum 0 vfnum 0 external false splittable false
pci/0000:18:00.0/4: type eth netdev ens785f0np0_3 flavour pcivf controller 0 pfnum 0 vfnum 3 external false splittable false
pci/0000:18:00.0/5: type eth netdev ens785f0np0_1 flavour pcivf controller 0 pfnum 0 vfnum 1 external false splittable false
pci/0000:18:00.0/6: type eth netdev ens785f0np0_2 flavour pcivf controller 0 pfnum 0 vfnum 2 external false splittable false

According subfunction, it will also be in cover latter for patchset that
is implementing subfunction.

Commands:
# devlink dev eswitch set pci/0000:18:00.0 mode switchdev
# devlink port add pci/0000:18:00.0 flavour pcisf pfnum 0 sfnum 1000
# devlink port function set pci/0000:18:00.0/3 state active

Outputs:
Don't have it saved, will send it here after rebasing subfunction of top
of this one.

Thanks,
Michal

> >
> >Michal Swiatkowski (15):
> >  ice: rename switchdev to eswitch
> >  ice: remove redundant max_vsi_num variable
> >  ice: remove unused control VSI parameter
> >  ice: track q_id in representor
> >  ice: use repr instead of vf->repr
> >  ice: track port representors in xarray
> >  ice: remove VF pointer reference in eswitch code
> >  ice: make representor code generic
> >  ice: return pointer to representor
> >  ice: allow changing SWITCHDEV_CTRL VSI queues
> >  ice: set Tx topology every time new repr is added
> >  ice: realloc VSI stats arrays
> >  ice: add VF representors one by one
> >  ice: adjust switchdev rebuild path
> >  ice: reserve number of CP queues
> >
> > drivers/net/ethernet/intel/ice/ice.h          |  13 +-
> > drivers/net/ethernet/intel/ice/ice_devlink.c  |  29 +
> > drivers/net/ethernet/intel/ice/ice_devlink.h  |   1 +
> > drivers/net/ethernet/intel/ice/ice_eswitch.c  | 562 ++++++++++--------
> > drivers/net/ethernet/intel/ice/ice_eswitch.h  |  22 +-
> > .../net/ethernet/intel/ice/ice_eswitch_br.c   |  22 +-
> > drivers/net/ethernet/intel/ice/ice_lib.c      |  81 ++-
> > drivers/net/ethernet/intel/ice/ice_main.c     |   6 +-
> > drivers/net/ethernet/intel/ice/ice_repr.c     | 195 +++---
> > drivers/net/ethernet/intel/ice/ice_repr.h     |   9 +-
> > drivers/net/ethernet/intel/ice/ice_sriov.c    |  20 +-
> > drivers/net/ethernet/intel/ice/ice_tc_lib.c   |   4 +-
> > drivers/net/ethernet/intel/ice/ice_vf_lib.c   |   9 +-
> > drivers/net/ethernet/intel/ice/ice_vf_lib.h   |   2 +-
> > 14 files changed, 553 insertions(+), 422 deletions(-)
> >
> >-- 
> >2.41.0
> >
> >
Jiri Pirko Oct. 24, 2023, 1:59 p.m. UTC | #3
Tue, Oct 24, 2023 at 03:10:46PM CEST, michal.swiatkowski@linux.intel.com wrote:
>On Tue, Oct 24, 2023 at 01:50:16PM +0200, Jiri Pirko wrote:
>> Tue, Oct 24, 2023 at 01:09:14PM CEST, michal.swiatkowski@linux.intel.com wrote:
>> >Hi,
>> >
>> >Currently ice supports creating port representors only for VFs. For that
>> >use case they can be created and removed in one step.
>> >
>> >This patchset is refactoring current flow to support port representor
>> >creation also for subfunctions and SIOV. In this case port representors
>> >need to be createad and removed one by one. Also, they can be added and
>> >removed while other port representors are running.
>> >
>> >To achieve that we need to change the switchdev configuration flow.
>> >Three first patches are only cosmetic (renaming, removing not used code).
>> >Next few ones are preparation for new flow. The most important one
>> >is "add VF representor one by one". It fully implements new flow.
>> >
>> >New type of port representor (for subfunction) will be introduced in
>> >follow up patchset.
>> 
>> Examples please. Show new outputs of devlink commands.
>> 
>> Thanks!
>>
>
>If you mean outputs after refactor to one by one solution nothing
>has changed:
>
># devlink port show (after creating 4 VFs in switchdev mode)
>pci/0000:18:00.0/0: type eth netdev ens785f0np0 flavour physical port 0 splittable true lanes 8
>pci/0000:18:00.0/2: type eth netdev ens785f0np0_0 flavour pcivf controller 0 pfnum 0 vfnum 0 external false splittable false
>pci/0000:18:00.0/4: type eth netdev ens785f0np0_3 flavour pcivf controller 0 pfnum 0 vfnum 3 external false splittable false
>pci/0000:18:00.0/5: type eth netdev ens785f0np0_1 flavour pcivf controller 0 pfnum 0 vfnum 1 external false splittable false
>pci/0000:18:00.0/6: type eth netdev ens785f0np0_2 flavour pcivf controller 0 pfnum 0 vfnum 2 external false splittable false
>
>According subfunction, it will also be in cover latter for patchset that
>is implementing subfunction.
>
>Commands:
># devlink dev eswitch set pci/0000:18:00.0 mode switchdev
># devlink port add pci/0000:18:00.0 flavour pcisf pfnum 0 sfnum 1000
># devlink port function set pci/0000:18:00.0/3 state active
>
>Outputs:
>Don't have it saved, will send it here after rebasing subfunction of top
>of this one.

Ah, I was under impression it is part of this set. Sorry.


>
>Thanks,
>Michal
>
>> >
>> >Michal Swiatkowski (15):
>> >  ice: rename switchdev to eswitch
>> >  ice: remove redundant max_vsi_num variable
>> >  ice: remove unused control VSI parameter
>> >  ice: track q_id in representor
>> >  ice: use repr instead of vf->repr
>> >  ice: track port representors in xarray
>> >  ice: remove VF pointer reference in eswitch code
>> >  ice: make representor code generic
>> >  ice: return pointer to representor
>> >  ice: allow changing SWITCHDEV_CTRL VSI queues
>> >  ice: set Tx topology every time new repr is added
>> >  ice: realloc VSI stats arrays
>> >  ice: add VF representors one by one
>> >  ice: adjust switchdev rebuild path
>> >  ice: reserve number of CP queues
>> >
>> > drivers/net/ethernet/intel/ice/ice.h          |  13 +-
>> > drivers/net/ethernet/intel/ice/ice_devlink.c  |  29 +
>> > drivers/net/ethernet/intel/ice/ice_devlink.h  |   1 +
>> > drivers/net/ethernet/intel/ice/ice_eswitch.c  | 562 ++++++++++--------
>> > drivers/net/ethernet/intel/ice/ice_eswitch.h  |  22 +-
>> > .../net/ethernet/intel/ice/ice_eswitch_br.c   |  22 +-
>> > drivers/net/ethernet/intel/ice/ice_lib.c      |  81 ++-
>> > drivers/net/ethernet/intel/ice/ice_main.c     |   6 +-
>> > drivers/net/ethernet/intel/ice/ice_repr.c     | 195 +++---
>> > drivers/net/ethernet/intel/ice/ice_repr.h     |   9 +-
>> > drivers/net/ethernet/intel/ice/ice_sriov.c    |  20 +-
>> > drivers/net/ethernet/intel/ice/ice_tc_lib.c   |   4 +-
>> > drivers/net/ethernet/intel/ice/ice_vf_lib.c   |   9 +-
>> > drivers/net/ethernet/intel/ice/ice_vf_lib.h   |   2 +-
>> > 14 files changed, 553 insertions(+), 422 deletions(-)
>> >
>> >-- 
>> >2.41.0
>> >
>> >