Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Daniel Machon says: ==================== net: microchip: add FDMA library and use it for Sparx5 This patch series is the first of a 2-part series, 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 open-coded bookkeeping and duplicate code for the two drivers. Additionally, upstreaming efforts for a third chip, lan969x, will begin in the near future. This chip will use the new library too. In this first series, the FDMA library is introduced and used by the Sparx5 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 kernel-patches#1: introduces library and selects it for Sparx5. Patch kernel-patches#2: includes the fdma_api.h header and removes old symbols. Patch kernel-patches#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 kernel-patches#4: uses the library for allocation of rx buffers. This requires quite a bit of refactoring in this single patch. Patch kernel-patches#5: uses the library for adding DCB's in the rx path. Patch kernel-patches#6: uses the library for freeing rx buffers. Patch kernel-patches#7: uses the library helpers in the rx path. Patch kernel-patches#8: uses the library for allocation of tx buffers. This requires quite a bit of refactoring in this single patch. Patch kernel-patches#9: uses the library for adding DCB's in the tx path. Patch kernel-patches#10: uses the library helpers in the tx path. Patch kernel-patches#11: ditches the existing linked list for storing buffer addresses, and instead uses offsets into contiguous memory. Patch kernel-patches#12: modifies existing rx and tx functions to be direction independent. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information