net-next/yunsilicon: ADD Yunsilicon XSC Ethernet Driver
From: | Xin Tian <tianx-AT-yunsilicon.com> | |
To: | <netdev-AT-vger.kernel.org> | |
Subject: | [PATCH v1 00/16] net-next/yunsilicon: ADD Yunsilicon XSC Ethernet Driver | |
Date: | Wed, 18 Dec 2024 18:51:01 +0800 | |
Message-ID: | <20241218105023.2237645-1-tianx@yunsilicon.com> | |
Cc: | <andrew+netdev-AT-lunn.ch>, <kuba-AT-kernel.org>, <pabeni-AT-redhat.com>, <edumazet-AT-google.com>, <davem-AT-davemloft.net>, <jeff.johnson-AT-oss.qualcomm.com>, <przemyslaw.kitszel-AT-intel.com>, <weihg-AT-yunsilicon.com>, <wanry-AT-yunsilicon.com> | |
Archive-link: | Article |
The patch series adds the xsc driver, which will support the Yuncilicon MS/MC/MV series of network devices. The Yunsilicon MS/MC/MV series network cards provide support for both Ethernet and RDMA functionalities. This submission is the first phase, which includes the PF-based Ethernet transmit and receive functionality. Once this is merged, we will submit additional patches to implement support for other features, such as SR-IOV, ethtool support, and a new RDMA driver. Changes v0->v1: 1. name xsc_core_device as xdev instead of dev 2. modify Signed-off-by tag to Co-developed-by 3. remove some obvious comments 4. remove unnecessary zero-init and NULL-init 5. modify bad-named goto labels 6. reordered variable declarations according to the RCT rule - Przemek Kitszel comments 7. add MODULE_DESCRIPTION() - Jeff Johnson comments 8. remove unnecessary dev_info logs 9. replace these magic numbers with #defines in xsc_eth_common.h 10. move code to right place 11. delete unlikely() used in probe 12. remove unnecessary reboot callbacks - Andrew Lunn comments Xin Tian (16): net-next/yunsilicon: Add yunsilicon xsc driver basic framework net-next/yunsilicon: Enable CMDQ net-next/yunsilicon: Add hardware setup APIs net-next/yunsilicon: Add qp and cq management net-next/yunsilicon: Add eq and alloc net-next/yunsilicon: Add pci irq net-next/yunsilicon: Device and interface management net-next/yunsilicon: Add ethernet interface net-next/yunsilicon: Init net device net-next/yunsilicon: Add eth needed qp and cq apis net-next/yunsilicon: ndo_open and ndo_stop net-next/yunsilicon: Add ndo_start_xmit net-next/yunsilicon: Add eth rx net-next/yunsilicon: add ndo_get_stats64 net-next/yunsilicon: Add ndo_set_mac_address net-next/yunsilicon: Add change mtu drivers/net/ethernet/Kconfig | 1 + drivers/net/ethernet/Makefile | 1 + drivers/net/ethernet/yunsilicon/Kconfig | 26 + drivers/net/ethernet/yunsilicon/Makefile | 8 + .../yunsilicon/xsc/common/xsc_auto_hw.h | 94 + .../ethernet/yunsilicon/xsc/common/xsc_cmd.h | 2513 +++++++++++++++++ .../ethernet/yunsilicon/xsc/common/xsc_cmdq.h | 218 ++ .../ethernet/yunsilicon/xsc/common/xsc_core.h | 647 +++++ .../yunsilicon/xsc/common/xsc_device.h | 77 + .../yunsilicon/xsc/common/xsc_driver.h | 25 + .../ethernet/yunsilicon/xsc/common/xsc_pp.h | 38 + .../net/ethernet/yunsilicon/xsc/net/Kconfig | 16 + .../net/ethernet/yunsilicon/xsc/net/Makefile | 9 + .../net/ethernet/yunsilicon/xsc/net/main.c | 2180 ++++++++++++++ .../net/ethernet/yunsilicon/xsc/net/xsc_eth.h | 58 + .../yunsilicon/xsc/net/xsc_eth_common.h | 239 ++ .../ethernet/yunsilicon/xsc/net/xsc_eth_rx.c | 608 ++++ .../yunsilicon/xsc/net/xsc_eth_stats.c | 42 + .../yunsilicon/xsc/net/xsc_eth_stats.h | 33 + .../ethernet/yunsilicon/xsc/net/xsc_eth_tx.c | 310 ++ .../yunsilicon/xsc/net/xsc_eth_txrx.c | 185 ++ .../yunsilicon/xsc/net/xsc_eth_txrx.h | 90 + .../ethernet/yunsilicon/xsc/net/xsc_eth_wq.c | 109 + .../ethernet/yunsilicon/xsc/net/xsc_eth_wq.h | 207 ++ .../net/ethernet/yunsilicon/xsc/net/xsc_pph.h | 176 ++ .../ethernet/yunsilicon/xsc/net/xsc_queue.h | 230 ++ .../net/ethernet/yunsilicon/xsc/pci/Kconfig | 16 + .../net/ethernet/yunsilicon/xsc/pci/Makefile | 10 + .../net/ethernet/yunsilicon/xsc/pci/alloc.c | 225 ++ .../net/ethernet/yunsilicon/xsc/pci/alloc.h | 15 + .../net/ethernet/yunsilicon/xsc/pci/cmdq.c | 2000 +++++++++++++ drivers/net/ethernet/yunsilicon/xsc/pci/cq.c | 151 + drivers/net/ethernet/yunsilicon/xsc/pci/cq.h | 14 + drivers/net/ethernet/yunsilicon/xsc/pci/eq.c | 345 +++ drivers/net/ethernet/yunsilicon/xsc/pci/eq.h | 46 + drivers/net/ethernet/yunsilicon/xsc/pci/hw.c | 269 ++ drivers/net/ethernet/yunsilicon/xsc/pci/hw.h | 18 + .../net/ethernet/yunsilicon/xsc/pci/intf.c | 279 ++ .../net/ethernet/yunsilicon/xsc/pci/intf.h | 22 + .../net/ethernet/yunsilicon/xsc/pci/main.c | 426 +++ .../net/ethernet/yunsilicon/xsc/pci/pci_irq.c | 427 +++ .../net/ethernet/yunsilicon/xsc/pci/pci_irq.h | 14 + drivers/net/ethernet/yunsilicon/xsc/pci/qp.c | 189 ++ drivers/net/ethernet/yunsilicon/xsc/pci/qp.h | 15 + .../net/ethernet/yunsilicon/xsc/pci/vport.c | 102 + 45 files changed, 12723 insertions(+) create mode 100644 drivers/net/ethernet/yunsilicon/Kconfig create mode 100644 drivers/net/ethernet/yunsilicon/Makefile create mode 100644 drivers/net/ethernet/yunsilicon/xsc/common/xsc_auto_hw.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/common/xsc_cmd.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/common/xsc_cmdq.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/common/xsc_core.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/common/xsc_device.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/common/xsc_driver.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/common/xsc_pp.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/Kconfig create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/Makefile create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/main.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/xsc_eth.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/xsc_eth_common.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/xsc_eth_rx.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/xsc_eth_stats.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/xsc_eth_stats.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/xsc_eth_tx.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/xsc_eth_txrx.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/xsc_eth_txrx.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/xsc_eth_wq.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/xsc_eth_wq.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/xsc_pph.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/net/xsc_queue.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/Kconfig create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/Makefile create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/alloc.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/alloc.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/cmdq.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/cq.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/cq.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/eq.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/eq.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/hw.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/hw.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/intf.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/intf.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/main.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/pci_irq.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/pci_irq.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/qp.c create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/qp.h create mode 100644 drivers/net/ethernet/yunsilicon/xsc/pci/vport.c -- 2.43.0