mbox series

[net-next,0/7] mlxsw: Use page pool for Rx buffers allocation

Message ID cover.1718709196.git.petrm@nvidia.com (mailing list archive)
Headers show
Series mlxsw: Use page pool for Rx buffers allocation | expand

Message

Petr Machata June 18, 2024, 11:34 a.m. UTC
Amit Cohen  writes:

After using NAPI to process events from hardware, the next step is to
use page pool for Rx buffers allocation, which is also enhances
performance.

To simplify this change, first use page pool to allocate one continuous
buffer for each packet, later memory consumption can be improved by using
fragmented buffers.

This set significantly enhances mlxsw driver performance, CPU can handle
about 370% of the packets per second it previously handled.

The next planned improvement is using XDP to optimize telemetry.

Patch set overview:
Patches #1-#2 are small preparations for page pool usage
Patch #3 initializes page pool, but do not use it
Patch #4 converts the driver to use page pool for buffers allocations
Patch #5 is an optimization for buffer access
Patch #6 cleans up an unused structure
Patch #7 uses napi_consume_skb() as part of Tx completion

Amit Cohen (7):
  mlxsw: pci: Split NAPI setup/teardown into two steps
  mlxsw: pci: Store CQ pointer as part of RDQ structure
  mlxsw: pci: Initialize page pool per CQ
  mlxsw: pci: Use page pool for Rx buffers allocation
  mlxsw: pci: Optimize data buffer access
  mlxsw: pci: Do not store SKB for RDQ elements
  mlxsw: pci: Use napi_consume_skb() to free SKB as part of Tx
    completion

 drivers/net/ethernet/mellanox/mlxsw/Kconfig |   1 +
 drivers/net/ethernet/mellanox/mlxsw/pci.c   | 199 ++++++++++++++------
 2 files changed, 142 insertions(+), 58 deletions(-)

Comments

Jiri Pirko June 18, 2024, 2:01 p.m. UTC | #1
Tue, Jun 18, 2024 at 01:34:39PM CEST, petrm@nvidia.com wrote:
>Amit Cohen  writes:
>
>After using NAPI to process events from hardware, the next step is to
>use page pool for Rx buffers allocation, which is also enhances
>performance.
>
>To simplify this change, first use page pool to allocate one continuous
>buffer for each packet, later memory consumption can be improved by using
>fragmented buffers.
>
>This set significantly enhances mlxsw driver performance, CPU can handle
>about 370% of the packets per second it previously handled.
>
>The next planned improvement is using XDP to optimize telemetry.
>
>Patch set overview:
>Patches #1-#2 are small preparations for page pool usage
>Patch #3 initializes page pool, but do not use it
>Patch #4 converts the driver to use page pool for buffers allocations
>Patch #5 is an optimization for buffer access
>Patch #6 cleans up an unused structure
>Patch #7 uses napi_consume_skb() as part of Tx completion
>
>Amit Cohen (7):
>  mlxsw: pci: Split NAPI setup/teardown into two steps
>  mlxsw: pci: Store CQ pointer as part of RDQ structure
>  mlxsw: pci: Initialize page pool per CQ
>  mlxsw: pci: Use page pool for Rx buffers allocation
>  mlxsw: pci: Optimize data buffer access
>  mlxsw: pci: Do not store SKB for RDQ elements
>  mlxsw: pci: Use napi_consume_skb() to free SKB as part of Tx
>    completion

set-
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
patchwork-bot+netdevbpf@kernel.org June 20, 2024, 12:50 a.m. UTC | #2
Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Tue, 18 Jun 2024 13:34:39 +0200 you wrote:
> Amit Cohen  writes:
> 
> After using NAPI to process events from hardware, the next step is to
> use page pool for Rx buffers allocation, which is also enhances
> performance.
> 
> To simplify this change, first use page pool to allocate one continuous
> buffer for each packet, later memory consumption can be improved by using
> fragmented buffers.
> 
> [...]

Here is the summary with links:
  - [net-next,1/7] mlxsw: pci: Split NAPI setup/teardown into two steps
    https://git.kernel.org/netdev/net-next/c/39fa294f580a
  - [net-next,2/7] mlxsw: pci: Store CQ pointer as part of RDQ structure
    https://git.kernel.org/netdev/net-next/c/7555b7f3385f
  - [net-next,3/7] mlxsw: pci: Initialize page pool per CQ
    https://git.kernel.org/netdev/net-next/c/5642c6a08693
  - [net-next,4/7] mlxsw: pci: Use page pool for Rx buffers allocation
    https://git.kernel.org/netdev/net-next/c/b5b60bb491b2
  - [net-next,5/7] mlxsw: pci: Optimize data buffer access
    https://git.kernel.org/netdev/net-next/c/0f3cd437a1d8
  - [net-next,6/7] mlxsw: pci: Do not store SKB for RDQ elements
    https://git.kernel.org/netdev/net-next/c/e8441b1f6b64
  - [net-next,7/7] mlxsw: pci: Use napi_consume_skb() to free SKB as part of Tx completion
    https://git.kernel.org/netdev/net-next/c/d94ae6415bec

You are awesome, thank you!