[PATCH net-next 00/12] net: lan966x: use the newly introduced FDMA library

From: Daniel Machon
Date: Thu Sep 05 2024 - 04:09:21 EST


This patch series is the second of a 2-part series [1], that adds a new
common FDMA library for Microchip switch chips Sparx5 and lan966x. These
chips share the same FDMA engine, and as such will benefit from a common
library with a common implementation. This also has the benefit of
removing a lot of open-coded bookkeeping and duplicate code for the two
drivers.

In this second series, the FDMA library will be taken into use by the
lan966x switch driver.

###################
# Example of use: #
###################

- Initialize the rx and tx fdma structs with values for: number of
DCB's, number of DB's, channel ID, DB size (data buffer size), and
total size of the requested memory. Also provide two callbacks:
nextptr_cb() and dataptr_cb() for getting the nextptr and dataptr.

- Allocate memory using fdma_alloc_phys() or fdma_alloc_coherent().

- Initialize the DCB's with fdma_dcb_init().

- Add new DCB's with fdma_dcb_add().

- Free memory with fdma_free_phys() or fdma_free_coherent().

#####################
# Patch breakdown: #
#####################

Patch #1: select FDMA library for lan966x.

Patch #2: includes the fdma_api.h header and removes old symbols.

Patch #3: replaces old rx and tx variables with equivalent ones from the
fdma struct. Only the variables that can be changed without
breaking traffic is changed in this patch.

Patch #4: uses the library for allocation of rx buffers. This requires
quite a bit of refactoring in this single patch.

Patch #5: uses the library for adding DCB's in the rx path.

Patch #6: uses the library for freeing rx buffers.

Patch #7: uses the library for allocation of tx buffers. This requires
quite a bit of refactoring in this single patch.

Patch #8: uses the library for adding DCB's in the tx path.

Patch #9: uses the library helpers in the tx path.

Patch #10: ditch last_in_use variable and use library instead.

Patch #11: uses library helpers throughout.

Patch #12: refactor lan966x_fdma_reload() function.

[1] https://lore.kernel.org/netdev/20240902-fdma-sparx5-v1-0-1e7d5e5a9f34@xxxxxxxxxxxxx/

Signed-off-by: Daniel Machon <daniel.machon@xxxxxxxxxxxxx>
---
Daniel Machon (12):
net: lan966x: select FDMA library
net: lan966x: use FDMA library symbols
net: lan966x: replace a few variables with new equivalent ones
net: lan966x: use the FDMA library for allocation of rx buffers
net: lan966x: use FDMA library for adding DCB's in the rx path
net: lan966x: use library helper for freeing rx buffers
net: lan966x: use the FDMA library for allocation of tx buffers
net: lan966x: use FDMA library for adding DCB's in the tx path
net: lan966x: use library helper for freeing tx buffers
net: lan966x: ditch tx->last_in_use variable
net: lan966x: use a few FDMA helpers throughout
net: lan966x: refactor buffer reload function

drivers/net/ethernet/microchip/lan966x/Kconfig | 1 +
drivers/net/ethernet/microchip/lan966x/Makefile | 1 +
.../net/ethernet/microchip/lan966x/lan966x_fdma.c | 409 ++++++++-------------
.../net/ethernet/microchip/lan966x/lan966x_main.h | 58 +--
4 files changed, 164 insertions(+), 305 deletions(-)
---
base-commit: ff09bc366fc45861b35dfeac97baadee16f65aec
change-id: 20240904-fdma-lan966x-04281c53952b

Best regards,
--
Daniel Machon <daniel.machon@xxxxxxxxxxxxx>