This RFC series introduces a poll mode driver for Altera Multi-Channel Direct Memory Access (MCDMA) PCI devices. The driver exposes host-to-device and device-to-host descriptor queues as standard DPDK Ethernet ports for custom FPGA datapaths.
While the MCDMA IP supports multiple PFs and VFs per PF, this RFC implements single PF with multiple VFs; each function exposes multiple Rx/Tx queue pairs backed by H2D/D2H descriptor rings and per-queue QCSR. User guide reference: https://docs.altera.com/r/docs/683821/25.3.1/multi-channel-dma-ip-for-pci-express-user-guide/before-you-begin The series is split for review as follows: 1. Core driver skeleton, queue management, documentation, and features matrix, excluding datapath bursts, debug dumps, and PIO APIs. 2. Rx and Tx packet burst handlers. 3. Experimental PIO BAR access APIs. 4. Experimental QCSR inspection and dump APIs. Functional testing was performed on Linux with vfio-pci, using DPDK pktgen on a single PF and VF configuration. The attached user logic was adapted as needed for validation. We would appreciate feedback on the ethdev design, the experimental PIO APIs, and PF/VF devargs. Subhransu S. Prusty (4): net/mcdma: add Altera MCDMA poll mode driver skeleton net/mcdma: add Rx and Tx packet burst paths net/mcdma: add experimental PIO access APIs net/mcdma: add experimental QCSR dump APIs MAINTAINERS | 4 + doc/guides/nics/features/mcdma.ini | 17 + doc/guides/nics/index.rst | 1 + doc/guides/nics/mcdma.rst | 147 +++ drivers/net/altera/mcdma/mcdma_config_csr.h | 201 +++++ drivers/net/altera/mcdma/mcdma_eth.c | 323 +++++++ drivers/net/altera/mcdma/mcdma_eth.h | 335 +++++++ drivers/net/altera/mcdma/mcdma_eth_ops.c | 933 ++++++++++++++++++++ drivers/net/altera/mcdma/mcdma_eth_rxtx.c | 401 +++++++++ drivers/net/altera/mcdma/meson.build | 16 + drivers/net/altera/mcdma/rte_pmd_mcdma.c | 284 ++++++ drivers/net/altera/mcdma/rte_pmd_mcdma.h | 140 +++ drivers/net/meson.build | 1 + usertools/dpdk-devbind.py | 1 + 14 files changed, 2804 insertions(+) create mode 100644 doc/guides/nics/features/mcdma.ini create mode 100644 doc/guides/nics/mcdma.rst create mode 100644 drivers/net/altera/mcdma/mcdma_config_csr.h create mode 100644 drivers/net/altera/mcdma/mcdma_eth.c create mode 100644 drivers/net/altera/mcdma/mcdma_eth.h create mode 100644 drivers/net/altera/mcdma/mcdma_eth_ops.c create mode 100644 drivers/net/altera/mcdma/mcdma_eth_rxtx.c create mode 100644 drivers/net/altera/mcdma/meson.build create mode 100644 drivers/net/altera/mcdma/rte_pmd_mcdma.c create mode 100644 drivers/net/altera/mcdma/rte_pmd_mcdma.h -- 2.34.1

