Subject: [pull request][net-next 00/15] mlx5 updates 2023-08-07

From: Saeed Mahameed <[email-masked]>
Date: Mon, 7 Aug 2023 10:56:27 -0700

From: Saeed Mahameed <[email-masked]>

This series provides some minor cleanup and Dynamic completion EQ
allocation mechanism in the mlx5 driver.

For more information please see tag log below.

Please pull and let me know if there is any problem.

Thanks,
Saeed.

The following changes since commit cc97777c80fdfabe12997581131872a03fdcf683:

  udp/udplite: Remove unused function declarations udp{,lite}_get_port() (2023-08-07 08:53:55 +0100)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/mlx5-updates-2023-08-07

for you to fetch changes up to b56fb19c337951fc4daba646fab2c50bb4c41c58:

  net/mlx5: Bridge, Only handle registered netdev bridge events (2023-08-07 10:53:52 -0700)

----------------------------------------------------------------
mlx5-updates-2023-08-07
1) Few cleanups

2) Dynamic completion EQs

The driver creates completion EQs for all vectors directly on driver
load, even if those EQs will not be utilized later on.

To allow more flexibility in managing completion EQs and to reduce the
memory overhead of driver load, this series will adjust completion EQs
creation to be dynamic. Meaning, completion EQs will be created only
when needed.

Patch #1 introduces a counter for tracking the current number of
completion EQs.
Patches #2-6 refactor the existing infrastructure of managing completion
EQs and completion IRQs to be compatible with per-vector
allocation/release requests.
Patches #7-8 modify the CPU-to-IRQ affinity calculation to be resilient
in case the affinity is requested but completion IRQ is not allocated yet.
Patch #9 function rename.
Patch #10 handles the corner case of SF performing an IRQ request when no
SF IRQ pool is found, and no PF IRQ exists for the same vector.
Patch #11 modify driver to use dynamically allocate completion EQs.

----------------------------------------------------------------
Gal Pressman (1):
      net/mlx5: Fix typo reminder -> remainder

Maher Sanalla (11):
      net/mlx5: Track the current number of completion EQs
      net/mlx5: Refactor completion IRQ request/release API
      net/mlx5: Use xarray to store and manage completion IRQs
      net/mlx5: Refactor completion IRQ request/release handlers in EQ layer
      net/mlx5: Use xarray to store and manage completion EQs
      net/mlx5: Implement single completion EQ create/destroy methods
      net/mlx5: Introduce mlx5_cpumask_default_spread
      net/mlx5: Add IRQ vector to CPU lookup function
      net/mlx5: Rename mlx5_comp_vectors_count() to mlx5_comp_vectors_max()
      net/mlx5: Handle SF IRQ request in the absence of SF IRQ pool
      net/mlx5: Allocate completion EQs dynamically

Roi Dayan (2):
      net/mlx5: E-Switch, Remove redundant arg ignore_flow_lvl
      net/mlx5: Bridge, Only handle registered netdev bridge events

Ruan Jinjie (1):
      net/mlx5: remove many unnecessary NULL values

 drivers/infiniband/hw/mlx5/cq.c                    |   2 +-
 drivers/infiniband/hw/mlx5/devx.c                  |   2 +-
 drivers/infiniband/hw/mlx5/main.c                  |   2 +-
 drivers/net/ethernet/mellanox/mlx5/core/en.h       |   2 +-
 .../ethernet/mellanox/mlx5/core/en/rep/bridge.c    |   4 +
 drivers/net/ethernet/mellanox/mlx5/core/en/trap.c  |   2 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c  |  10 +-
 drivers/net/ethernet/mellanox/mlx5/core/eq.c       | 360 ++++++++++++---------
 drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c  |   6 +-
 .../ethernet/mellanox/mlx5/core/eswitch_offloads.c |   6 +-
 .../net/ethernet/mellanox/mlx5/core/fpga/conn.c    |   2 +-
 .../net/ethernet/mellanox/mlx5/core/fpga/core.c    |   4 +-
 .../net/ethernet/mellanox/mlx5/core/irq_affinity.c |  78 ++---
 drivers/net/ethernet/mellanox/mlx5/core/lib/aso.c  |   2 +-
 drivers/net/ethernet/mellanox/mlx5/core/lib/eq.h   |   2 +-
 .../net/ethernet/mellanox/mlx5/core/lib/hv_vhca.c  |   2 +-
 drivers/net/ethernet/mellanox/mlx5/core/mlx5_irq.h |  26 +-
 drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c  |  60 ++--
 .../ethernet/mellanox/mlx5/core/steering/dr_send.c |   4 +-
 drivers/vdpa/mlx5/net/mlx5_vnet.c                  |   2 +-
 drivers/vfio/pci/mlx5/cmd.c                        |   4 +-
 include/linux/mlx5/driver.h                        |   7 +-
 22 files changed, 309 insertions(+), 280 deletions(-)