[PATCH 00/23] Subject: [PATCH net-next 00/23] net/hpe: add HPE Slingshot NIC drivers
flat view
HOTtoday
From: Doug Ledford <hidden>
Date: 2026-10-30 21:00:16
Also in:
linux-kbuild, lkml
Subsystem:
kernel build + files below scripts/ (unless maintained elsewhere), networking drivers, the rest · Maintainers:
Nathan Chancellor, Nicolas Schier, Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds
To: Slingshot Open Source Team <redacted> To: Nathan Chancellor <nathan@kernel.org> To: Nicolas Schier <nsc@kernel.org> To: Richard Cochran <richardcochran@gmail.com> To: Andrew Lunn <andrew+netdev@lunn.ch> To: "David S. Miller" <davem@davemloft.net> To: Eric Dumazet <edumazet@kernel.org> To: Jakub Kicinski <kuba@kernel.org> To: Paolo Abeni <pabeni@redhat.com> To: Sumit Semwal <sumit.semwal@linaro.org> To: Christian König <christian.koenig@amd.com> To: Guenter Roeck <linux@roeck-us.net> Cc: <redacted> Cc: <redacted> Cc: <redacted> This series adds the Linux drivers for the HPE Slingshot Cassini network interface controller, the NIC used in HPE Slingshot high-performance computing systems (Cassini 1 with 200 Gb/s links and Cassini 2 with 400 Gb/s links). The hardware is reached through three layered drivers: - cxi-sbl (Slingshot Base Link): SerDes, PML, link state machine and media handling for 200 Gb/s links (patches 2-8) - cxi-sl (Slingshot Link): the link layer for 400 Gb/s links, with its control layer, media and cable handling and sysfs interface (patches 9-15) - cxi-ss1 (Cassini core): the PCI driver that owns the device, its address translation, event and command queues, communication profiles, resource groups, QoS and services, plus cxi-eth, an Ethernet personality on top of it (patches 1 and 16-22) Patch 23 adds Kconfig, Makefile and MAINTAINERS. Until that patch the new driver sources are not compiled; only the new UAPI headers are built, by the UAPI header test. The core driver exposes an in-kernel CXI interface (cxi.h) to client drivers through the auxiliary bus. The Ethernet personality in this series is one such client; the RDMA driver is another. Series size ----------- We know this is longer than the usual netdev limit of about 15 patches. The three drivers depend on each other: cxi-ss1 selects cxi-sbl or cxi-sl at run time according to the NIC generation, and a single Kconfig/Makefile patch enables all three. Posting only part of them would add code that cannot be built or used. Within the series, each patch adds one layer so that it can be reviewed on its own. If you would prefer a different split, for example the two link drivers first and the core driver after them, please tell us and we will restructure V2. Driver Structure ---------------- The main reason for sending this patchset now, given that there are still a few issues unresolved and over 16,000 checkpatch warnings for line length (we're working through the tools that generate these files to fix that up) is to get input on several overall design issues: 1) We are an Ethernet driver structured over a Portals 4.0 API hardware device. That means that our Ethernet implementation is complex, much like combined Ethernet/RoCE devices. We have chosen, as a design decision, to keep the driver mostly in one place and the RDMA portion of the driver is just a thin layer that routes things like memory registrations and what not to our Ethernet driver core. In addition, the Ethernet support needs many of those same things anyway, and the driver's RDMA aspect uses a plain socket connection to the fabric manager in order to get the configuration it needs to run. It is possible that the driver could be re-architected to be an RDMA driver first, and just provide a thin shim layer in the net/ethernet area instead. This would be considerable work, and very likely result in the sl and sbl drivers still belonging more in the netdev area (or maybe the phy subsystem, but I think these drivers are more than your generic phy) so we didn't pre-emptively undertake that task. In addition, moving entirely over to the RDMA subsystem would invert the normal order of bring up between shared ethernet/RDMA devices. One of our engineers opined that such a suggestion would be anathema to the netdev community. 2) Our sysfs usage. We have extensive elements that we populate in sysfs related to the hardware. Initial comments were that we were likely over-using/abusing sysfs, so we have already removed the sysfs telemetry support we used to have, reducing our sysfs elements by 1,925 items (those items are now accessed via the RDMA stack's hw counters support). There are still a significant number of sysfs elements exported, especially from the sl driver. Dependencies ------------ This series has no dependencies and applies to net-next. Two later submissions to linux-rdma depend on it: - "RDMA/cxi: add the HPE Cassini verbs driver" (kernel, linux-rdma), which also depends on the UET RDMA core series [PATCH rdma-next v2 00/13] RDMA/core: Ultra Ethernet transport verbs https://lore.kernel.org/linux-rdma/20261019-uet-ib-core-v2-0-8bd654f25370@broadcom.com/T/#t (local) - the cxiverbs rdma-core provider (rdma-core pull request), which also depends on the UET rdma-core series libibverbs: Ultra Ethernet reliable unconnected verbs https://github.com/linux-rdma/rdma-core/pull/1829 Known open issues ----------------- Every patch with a known unresolved issue says so in its commit message. In summary: - SR-IOV: patches 1, 16, 17, 19, 20, 21 and 22 carry virtual-function code from an older, incomplete version of the Cassini SR-IOV support. V2 will include the updated SR-IOV implementation, so please ignore issues in the VF paths for now. Specific known VF issues are listed in patches 17 and 19. - Patch 11 (SL core link state machines): sl_core_hw_pcs_keep_all_lanes_active_set() is an empty hook with a TODO. It belongs to graceful lane-degrade support, which SL does not implement yet. - Patch 14 (SL sysfs): about 378 SL attributes (and 23 in cxi-ss1) have no Documentation/ABI entries yet. We are working with the hardware engineers to decide which attributes are stable interfaces and which belong in debugfs; the documentation will be in V2. - Patch 17 (datapath, open hardware question): DMAC transfers are bounded, and the engine is disabled and its interrupt drained before the completion descriptor is read. We are confirming with the hardware engineers that clearing C_PI_CFG_DMAC ENABLE guarantees no further host writes. Current callers keep their DMA buffers for the lifetime of the device. checkpatch ---------- checkpatch --strict (100 columns) still reports issues in most patches; each patch lists its own types and counts. Most come from the generated hardware headers in patches 1 and 9 (for example, 19058 LEADING_SPACE warnings in patch 9 alone) and from long lines. This code is also maintained in internal HPE repositories, from which the generated headers come, so the remaining fixes need coordination with those repositories and will be made in V2. The 25 remaining ERRORs are SPACING, CODE_INDENT, COMPLEX_MACRO and FLEXIBLE_ARRAY in the header patches 1, 2, 9 and 16. Those issues will be addressed by humans with actual thought and coordinated between the internal repos and this submission. Some UAPI headers in this series (for example sbl-abi.h) also have copies in out-of-tree HPE packages; those copies will be synchronized with this series over time. Review and testing ------------------ Before posting, the series was reviewed with the Sashiko AI code review tool and checkpatch. All valid findings are fixed, except the open items listed above. Tool use: GitHub Copilot, an AI coding assistant, was used under our direction to write many of the review fixes, to fold them into these patches, to write commit messages and to run the build and hardware tests. Every change was reviewed by the submitter, who takes responsibility for it as for any other patch. - every patch builds incrementally, without compiler warnings, with an x86_64 configuration that enables these drivers and the UAPI header test - with exactly this series, the cxiverbs series and the rdma-core provider, booted on two Cassini 2 x86_64 nodes, the complete stack passed a full test matrix on both nodes: module identity and signatures, link bring-up and a 60-second link-stability check, the rdma-core Python suite (434 tests; tests that need features this device lacks are skipped), resource and VNI isolation tests in default and indexed addressing modes, including wrong-VNI rejection, privileged and unprivileged CSR access tests, and 36 two-node ping-pong and RMA traffic cases (polling and event modes) in each direction, 72 in total. Native NIC resource accounting was identical before and after the traffic, and the kernel logs had no WARN, BUG or oops reports and no module load errors. - targeted user space models of the functions changed by the review fixes pass under AddressSanitizer and UndefinedBehaviorSanitizer. Co-developed by Sandeep Bhoot, Mamila Santosh and Iraimani P, as shown by the trailers on each patch. Doug Ledford (23): net: hpe: ss1: add the Cassini headers net: hpe: sbl: add the Slingshot Base Link headers net: hpe: sbl: add the core instance and configuration layer net: hpe: sbl: add the SerDes layer net: hpe: sbl: add the PML link layer net: hpe: sbl: add link state management net: hpe: sbl: add the SBM serial bus layer net: hpe: sbl: add media, FEC and counter support net: hpe: sl: add the Slingshot Link headers net: hpe: sl: add the module entry points net: hpe: sl: add the core link state machines net: hpe: sl: add the control layer net: hpe: sl: add media and cable handling net: hpe: sl: add the sysfs interface net: hpe: sl: add the NIC binding and logging helpers net: hpe: ss1: add the Cassini core device layer net: hpe: ss1: add the datapath and memory translation layers net: hpe: ss1: add the link layer glue net: hpe: ss1: add SR-IOV support net: hpe: ss1: add the CXI core interfaces net: hpe: ss1: add resource groups, QoS and services net: hpe: ss1: add the Ethernet personality net: hpe: wire up the Slingshot NIC drivers 416 files changed, 185139 insertions(+) Signed-off-by: Doug Ledford <redacted> --- Doug Ledford (23): net: hpe: ss1: add the Cassini headers net: hpe: sbl: add the Slingshot Base Link headers net: hpe: sbl: add the core instance and configuration layer net: hpe: sbl: add the SerDes layer net: hpe: sbl: add the PML link layer net: hpe: sbl: add link state management net: hpe: sbl: add the SBM serial bus layer net: hpe: sbl: add media, FEC and counter support net: hpe: sl: add the Slingshot Link headers net: hpe: sl: add the module entry points net: hpe: sl: add the core link state machines net: hpe: sl: add the control layer net: hpe: sl: add media and cable handling net: hpe: sl: add the sysfs interface net: hpe: sl: add the NIC binding and logging helpers net: hpe: ss1: add the Cassini core device layer net: hpe: ss1: add the datapath and memory translation layers net: hpe: ss1: add the link layer glue net: hpe: ss1: add SR-IOV support net: hpe: ss1: add the CXI core interfaces net: hpe: ss1: add resource groups, QoS and services net: hpe: ss1: add the Ethernet personality net: hpe: wire up the Slingshot NIC drivers MAINTAINERS | 7 + drivers/net/ethernet/Kconfig | 1 + drivers/net/ethernet/Makefile | 1 + drivers/net/ethernet/hpe/Kconfig | 26 + drivers/net/ethernet/hpe/Makefile | 8 + drivers/net/ethernet/hpe/sbl/Kconfig | 15 + drivers/net/ethernet/hpe/sbl/Makefile | 21 + drivers/net/ethernet/hpe/sbl/sbl_config_list.h | 61 + drivers/net/ethernet/hpe/sbl/sbl_constants.h | 352 + drivers/net/ethernet/hpe/sbl/sbl_counters.c | 137 + drivers/net/ethernet/hpe/sbl/sbl_debug.c | 167 + drivers/net/ethernet/hpe/sbl/sbl_fec.c | 971 ++ drivers/net/ethernet/hpe/sbl/sbl_fec_nic.c | 36 + drivers/net/ethernet/hpe/sbl/sbl_inst.c | 529 + drivers/net/ethernet/hpe/sbl/sbl_inst_nic.c | 70 + drivers/net/ethernet/hpe/sbl/sbl_internal.c | 23 + drivers/net/ethernet/hpe/sbl/sbl_internal.h | 279 + drivers/net/ethernet/hpe/sbl/sbl_link.c | 1739 +++ drivers/net/ethernet/hpe/sbl/sbl_link.h | 44 + drivers/net/ethernet/hpe/sbl/sbl_link_an.c | 1010 ++ drivers/net/ethernet/hpe/sbl/sbl_link_an_nic.c | 111 + drivers/net/ethernet/hpe/sbl/sbl_link_nic.c | 196 + drivers/net/ethernet/hpe/sbl/sbl_media.c | 482 + drivers/net/ethernet/hpe/sbl/sbl_media_nic.c | 47 + drivers/net/ethernet/hpe/sbl/sbl_misc.c | 505 + drivers/net/ethernet/hpe/sbl/sbl_module_nic.c | 132 + drivers/net/ethernet/hpe/sbl/sbl_platform.h | 35 + drivers/net/ethernet/hpe/sbl/sbl_pml.c | 787 + drivers/net/ethernet/hpe/sbl/sbl_pml_fn.h | 132 + drivers/net/ethernet/hpe/sbl/sbl_pml_llr.c | 736 + drivers/net/ethernet/hpe/sbl/sbl_pml_llr_nic.c | 34 + drivers/net/ethernet/hpe/sbl/sbl_pml_mac.c | 220 + drivers/net/ethernet/hpe/sbl/sbl_pml_pcs.c | 1085 ++ drivers/net/ethernet/hpe/sbl/sbl_pml_pcs_nic.c | 53 + drivers/net/ethernet/hpe/sbl/sbl_pml_serdes_op.c | 145 + drivers/net/ethernet/hpe/sbl/sbl_sbm.h | 73 + drivers/net/ethernet/hpe/sbl/sbl_sbm_serdes.c | 1114 ++ drivers/net/ethernet/hpe/sbl/sbl_sbm_serdes.h | 152 + drivers/net/ethernet/hpe/sbl/sbl_sbm_serdes_nic.c | 138 + drivers/net/ethernet/hpe/sbl/sbl_serdes.c | 1117 ++ drivers/net/ethernet/hpe/sbl/sbl_serdes.h | 94 + drivers/net/ethernet/hpe/sbl/sbl_serdes_fn.c | 4310 ++++++ drivers/net/ethernet/hpe/sbl/sbl_serdes_fn.h | 151 + drivers/net/ethernet/hpe/sbl/sbl_serdes_map.h | 10 + drivers/net/ethernet/hpe/sbl/sbl_test.c | 406 + drivers/net/ethernet/hpe/sbl/sbl_timers.c | 228 + drivers/net/ethernet/hpe/sl/Kconfig | 15 + drivers/net/ethernet/hpe/sl/Makefile | 140 + .../net/ethernet/hpe/sl/core/base/sl_core_log.h | 70 + .../ethernet/hpe/sl/core/base/sl_core_timer_link.c | 109 + .../ethernet/hpe/sl/core/base/sl_core_timer_link.h | 41 + .../ethernet/hpe/sl/core/base/sl_core_timer_llr.c | 84 + .../ethernet/hpe/sl/core/base/sl_core_timer_llr.h | 37 + .../ethernet/hpe/sl/core/base/sl_core_work_link.h | 41 + .../ethernet/hpe/sl/core/base/sl_core_work_llr.h | 19 + .../hpe/sl/core/data/nic/sl_core_data_link.c | 11 + .../hpe/sl/core/data/nic/sl_core_data_mac.c | 11 + .../ethernet/hpe/sl/core/data/sl_core_data_ldev.c | 122 + .../ethernet/hpe/sl/core/data/sl_core_data_ldev.h | 19 + .../ethernet/hpe/sl/core/data/sl_core_data_lgrp.c | 351 + .../ethernet/hpe/sl/core/data/sl_core_data_lgrp.h | 26 + .../hpe/sl/core/data/sl_core_data_lgrp_trace.c | 50 + .../hpe/sl/core/data/sl_core_data_lgrp_trace.h | 13 + .../ethernet/hpe/sl/core/data/sl_core_data_link.c | 1343 ++ .../ethernet/hpe/sl/core/data/sl_core_data_link.h | 91 + .../ethernet/hpe/sl/core/data/sl_core_data_llr.c | 526 + .../ethernet/hpe/sl/core/data/sl_core_data_llr.h | 49 + .../ethernet/hpe/sl/core/data/sl_core_data_mac.c | 273 + .../ethernet/hpe/sl/core/data/sl_core_data_mac.h | 24 + .../ethernet/hpe/sl/core/hw/nic/sl_core_hw_an.c | 26 + .../ethernet/hpe/sl/core/hw/nic/sl_core_hw_fec.c | 113 + .../hpe/sl/core/hw/nic/sl_core_hw_intr_flgs.h | 70 + .../hpe/sl/core/hw/nic/sl_core_hw_intr_flgs_llr.h | 37 + .../ethernet/hpe/sl/core/hw/nic/sl_core_hw_llr.c | 44 + .../ethernet/hpe/sl/core/hw/nic/sl_core_hw_mac.c | 32 + .../ethernet/hpe/sl/core/hw/nic/sl_core_hw_pcs.c | 14 + .../sl/core/hw/nic/sl_core_hw_serdes_firmware.h | 11 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_an.c | 602 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_an.h | 112 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_an_lp.c | 254 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_an_lp.h | 23 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_an_up.c | 270 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_an_up.h | 15 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_fec.h | 23 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_intr.c | 222 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_intr.h | 52 + .../ethernet/hpe/sl/core/hw/sl_core_hw_intr_llr.c | 181 + .../ethernet/hpe/sl/core/hw/sl_core_hw_intr_llr.h | 48 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_io.h | 308 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_link.c | 2172 +++ .../net/ethernet/hpe/sl/core/hw/sl_core_hw_link.h | 35 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_llr.c | 905 ++ .../net/ethernet/hpe/sl/core/hw/sl_core_hw_llr.h | 38 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_mac.c | 172 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_mac.h | 20 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_pcs.c | 365 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_pcs.h | 25 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_pmi.c | 54 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_pmi.h | 43 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_reset.c | 67 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_reset.h | 13 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_sbus.c | 125 + .../net/ethernet/hpe/sl/core/hw/sl_core_hw_sbus.h | 52 + .../ethernet/hpe/sl/core/hw/sl_core_hw_sbus_pmi.c | 112 + .../ethernet/hpe/sl/core/hw/sl_core_hw_sbus_pmi.h | 28 + .../ethernet/hpe/sl/core/hw/sl_core_hw_serdes.c | 212 + .../ethernet/hpe/sl/core/hw/sl_core_hw_serdes.h | 23 + .../hpe/sl/core/hw/sl_core_hw_serdes_addrs.h | 87 + .../hpe/sl/core/hw/sl_core_hw_serdes_condor.h | 12 + .../hpe/sl/core/hw/sl_core_hw_serdes_core.c | 439 + .../hpe/sl/core/hw/sl_core_hw_serdes_core.h | 12 + .../ethernet/hpe/sl/core/hw/sl_core_hw_serdes_fw.c | 191 + .../ethernet/hpe/sl/core/hw/sl_core_hw_serdes_fw.h | 15 + .../hpe/sl/core/hw/sl_core_hw_serdes_lane.c | 1085 ++ .../hpe/sl/core/hw/sl_core_hw_serdes_lane.h | 125 + .../hpe/sl/core/hw/sl_core_hw_serdes_lane_rx.c | 241 + .../hpe/sl/core/hw/sl_core_hw_serdes_lane_tx.c | 394 + .../hpe/sl/core/hw/sl_core_hw_serdes_link.c | 349 + .../hpe/sl/core/hw/sl_core_hw_serdes_link.h | 13 + .../hpe/sl/core/hw/sl_core_hw_serdes_osprey.h | 89 + .../ethernet/hpe/sl/core/hw/sl_core_hw_settings.h | 40 + .../ethernet/hpe/sl/core/hw/sl_core_hw_uc_ram.c | 84 + .../ethernet/hpe/sl/core/hw/sl_core_hw_uc_ram.h | 28 + drivers/net/ethernet/hpe/sl/core/hw/ucode/octet.h | 9605 ++++++++++++ drivers/net/ethernet/hpe/sl/core/hw/ucode/quad.h | 9410 ++++++++++++ drivers/net/ethernet/hpe/sl/core/sl_core_ldev.c | 192 + drivers/net/ethernet/hpe/sl/core/sl_core_ldev.h | 73 + drivers/net/ethernet/hpe/sl/core/sl_core_lgrp.c | 659 + drivers/net/ethernet/hpe/sl/core/sl_core_lgrp.h | 214 + drivers/net/ethernet/hpe/sl/core/sl_core_link.c | 623 + drivers/net/ethernet/hpe/sl/core/sl_core_link.h | 534 + drivers/net/ethernet/hpe/sl/core/sl_core_link_an.c | 166 + drivers/net/ethernet/hpe/sl/core/sl_core_link_an.h | 31 + .../net/ethernet/hpe/sl/core/sl_core_link_fec.c | 233 + .../net/ethernet/hpe/sl/core/sl_core_link_fec.h | 45 + drivers/net/ethernet/hpe/sl/core/sl_core_llr.c | 350 + drivers/net/ethernet/hpe/sl/core/sl_core_llr.h | 138 + drivers/net/ethernet/hpe/sl/core/sl_core_mac.c | 183 + drivers/net/ethernet/hpe/sl/core/sl_core_mac.h | 62 + drivers/net/ethernet/hpe/sl/core/sl_core_str.c | 283 + drivers/net/ethernet/hpe/sl/core/sl_core_str.h | 28 + .../net/ethernet/hpe/sl/ctrl/base/sl_ctrl_log.h | 34 + .../ethernet/hpe/sl/ctrl/data/sl_ctrl_data_lgrp.c | 164 + .../ethernet/hpe/sl/ctrl/data/sl_ctrl_data_lgrp.h | 20 + .../hpe/sl/ctrl/data/sl_ctrl_data_lgrp_trace.c | 50 + .../hpe/sl/ctrl/data/sl_ctrl_data_lgrp_trace.h | 13 + .../ethernet/hpe/sl/ctrl/data/sl_ctrl_data_link.c | 424 + .../ethernet/hpe/sl/ctrl/data/sl_ctrl_data_link.h | 48 + .../ethernet/hpe/sl/ctrl/data/sl_ctrl_data_llr.c | 64 + .../ethernet/hpe/sl/ctrl/data/sl_ctrl_data_llr.h | 15 + drivers/net/ethernet/hpe/sl/ctrl/sl_ctrl_ldev.c | 290 + drivers/net/ethernet/hpe/sl/ctrl/sl_ctrl_ldev.h | 91 + drivers/net/ethernet/hpe/sl/ctrl/sl_ctrl_lgrp.c | 351 + drivers/net/ethernet/hpe/sl/ctrl/sl_ctrl_lgrp.h | 93 + .../net/ethernet/hpe/sl/ctrl/sl_ctrl_lgrp_notif.c | 258 + .../net/ethernet/hpe/sl/ctrl/sl_ctrl_lgrp_notif.h | 40 + drivers/net/ethernet/hpe/sl/ctrl/sl_ctrl_link.c | 1230 ++ drivers/net/ethernet/hpe/sl/ctrl/sl_ctrl_link.h | 161 + .../ethernet/hpe/sl/ctrl/sl_ctrl_link_counters.c | 388 + .../ethernet/hpe/sl/ctrl/sl_ctrl_link_counters.h | 125 + .../net/ethernet/hpe/sl/ctrl/sl_ctrl_link_fec.c | 202 + .../net/ethernet/hpe/sl/ctrl/sl_ctrl_link_fec.h | 33 + .../ethernet/hpe/sl/ctrl/sl_ctrl_link_fec_priv.c | 539 + .../ethernet/hpe/sl/ctrl/sl_ctrl_link_fec_priv.h | 94 + .../net/ethernet/hpe/sl/ctrl/sl_ctrl_link_priv.c | 865 ++ .../net/ethernet/hpe/sl/ctrl/sl_ctrl_link_priv.h | 47 + drivers/net/ethernet/hpe/sl/ctrl/sl_ctrl_llr.c | 630 + drivers/net/ethernet/hpe/sl/ctrl/sl_ctrl_llr.h | 69 + .../ethernet/hpe/sl/ctrl/sl_ctrl_llr_counters.c | 136 + .../ethernet/hpe/sl/ctrl/sl_ctrl_llr_counters.h | 57 + drivers/net/ethernet/hpe/sl/ctrl/sl_ctrl_mac.c | 536 + drivers/net/ethernet/hpe/sl/ctrl/sl_ctrl_mac.h | 57 + .../ethernet/hpe/sl/ctrl/sl_ctrl_mac_counters.c | 56 + .../ethernet/hpe/sl/ctrl/sl_ctrl_mac_counters.h | 43 + .../ethernet/hpe/sl/ctrl/sl_ctrl_media_counters.c | 157 + .../ethernet/hpe/sl/ctrl/sl_ctrl_media_counters.h | 53 + drivers/net/ethernet/hpe/sl/log/sl_log.c | 566 + drivers/net/ethernet/hpe/sl/log/sl_log.h | 67 + .../ethernet/hpe/sl/media/base/sl_media_eeprom.c | 611 + .../ethernet/hpe/sl/media/base/sl_media_eeprom.h | 16 + .../net/ethernet/hpe/sl/media/base/sl_media_log.h | 36 + .../net/ethernet/hpe/sl/media/base/sl_media_work.h | 13 + .../hpe/sl/media/data/nic/sl_media_data_jack.c | 496 + .../hpe/sl/media/data/nic/sl_media_data_jack_emu.c | 38 + .../hpe/sl/media/data/nic/sl_media_data_ldev.c | 30 + .../hpe/sl/media/data/sl_media_data_cable_db.h | 6896 +++++++++ .../hpe/sl/media/data/sl_media_data_cable_db_ops.c | 111 + .../hpe/sl/media/data/sl_media_data_cable_db_ops.h | 13 + .../hpe/sl/media/data/sl_media_data_jack.c | 344 + .../hpe/sl/media/data/sl_media_data_jack.h | 92 + .../hpe/sl/media/data/sl_media_data_ldev.c | 115 + .../hpe/sl/media/data/sl_media_data_ldev.h | 20 + .../hpe/sl/media/data/sl_media_data_lgrp.c | 127 + .../hpe/sl/media/data/sl_media_data_lgrp.h | 20 + .../hpe/sl/media/data/sl_media_data_lgrp_trace.c | 31 + .../hpe/sl/media/data/sl_media_data_lgrp_trace.h | 12 + .../net/ethernet/hpe/sl/media/nic/sl_media_io.c | 63 + .../net/ethernet/hpe/sl/media/nic/sl_media_jack.c | 315 + .../net/ethernet/hpe/sl/media/nic/sl_media_ldev.c | 13 + drivers/net/ethernet/hpe/sl/media/sl_media_io.h | 17 + drivers/net/ethernet/hpe/sl/media/sl_media_jack.c | 1067 ++ drivers/net/ethernet/hpe/sl/media/sl_media_jack.h | 319 + drivers/net/ethernet/hpe/sl/media/sl_media_ldev.c | 22 + drivers/net/ethernet/hpe/sl/media/sl_media_ldev.h | 33 + drivers/net/ethernet/hpe/sl/media/sl_media_lgrp.c | 498 + drivers/net/ethernet/hpe/sl/media/sl_media_lgrp.h | 99 + drivers/net/ethernet/hpe/sl/nic/sl_asic.h | 35 + drivers/net/ethernet/hpe/sl/nic/sl_asic_csrs.h | 215 + drivers/net/ethernet/hpe/sl/nic/sl_ldev.c | 147 + drivers/net/ethernet/hpe/sl/nic/sl_media.c | 53 + drivers/net/ethernet/hpe/sl/sl.h | 14 + drivers/net/ethernet/hpe/sl/sl_fec.c | 68 + drivers/net/ethernet/hpe/sl/sl_ldev.c | 133 + drivers/net/ethernet/hpe/sl/sl_ldev.h | 25 + drivers/net/ethernet/hpe/sl/sl_lgrp.c | 409 + drivers/net/ethernet/hpe/sl/sl_lgrp.h | 21 + drivers/net/ethernet/hpe/sl/sl_link.c | 632 + drivers/net/ethernet/hpe/sl/sl_link.h | 22 + drivers/net/ethernet/hpe/sl/sl_llr.c | 289 + drivers/net/ethernet/hpe/sl/sl_llr.h | 20 + drivers/net/ethernet/hpe/sl/sl_mac.c | 220 + drivers/net/ethernet/hpe/sl/sl_mac.h | 20 + drivers/net/ethernet/hpe/sl/sl_media.c | 356 + drivers/net/ethernet/hpe/sl/sl_media_nic.c | 23 + drivers/net/ethernet/hpe/sl/sl_module.c | 129 + drivers/net/ethernet/hpe/sl/sl_module.h | 14 + drivers/net/ethernet/hpe/sl/sl_platform.h | 16 + drivers/net/ethernet/hpe/sl/sl_test_common.h | 105 + drivers/net/ethernet/hpe/sl/sysfs/sl_sysfs.h | 116 + drivers/net/ethernet/hpe/sl/sysfs/sl_sysfs_ldev.c | 410 + drivers/net/ethernet/hpe/sl/sysfs/sl_sysfs_lgrp.c | 98 + .../ethernet/hpe/sl/sysfs/sl_sysfs_lgrp_config.c | 438 + .../ethernet/hpe/sl/sysfs/sl_sysfs_lgrp_policy.c | 53 + drivers/net/ethernet/hpe/sl/sysfs/sl_sysfs_link.c | 830 ++ .../net/ethernet/hpe/sl/sysfs/sl_sysfs_link_caps.c | 303 + .../ethernet/hpe/sl/sysfs/sl_sysfs_link_config.c | 388 + .../ethernet/hpe/sl/sysfs/sl_sysfs_link_counters.c | 1498 ++ .../ethernet/hpe/sl/sysfs/sl_sysfs_link_degrade.c | 336 + .../net/ethernet/hpe/sl/sysfs/sl_sysfs_link_fec.c | 148 + .../net/ethernet/hpe/sl/sysfs/sl_sysfs_link_fec.h | 12 + .../hpe/sl/sysfs/sl_sysfs_link_fec_current.c | 336 + .../hpe/sl/sysfs/sl_sysfs_link_fec_current.h | 12 + .../ethernet/hpe/sl/sysfs/sl_sysfs_link_fec_down.c | 316 + .../ethernet/hpe/sl/sysfs/sl_sysfs_link_fec_down.h | 12 + .../hpe/sl/sysfs/sl_sysfs_link_fec_mon_check.c | 195 + .../hpe/sl/sysfs/sl_sysfs_link_fec_mon_check.h | 12 + .../ethernet/hpe/sl/sysfs/sl_sysfs_link_fec_up.c | 299 + .../ethernet/hpe/sl/sysfs/sl_sysfs_link_fec_up.h | 12 + .../hpe/sl/sysfs/sl_sysfs_link_fec_up_check.c | 137 + .../hpe/sl/sysfs/sl_sysfs_link_fec_up_check.h | 12 + .../ethernet/hpe/sl/sysfs/sl_sysfs_link_pml_rec.c | 193 + .../ethernet/hpe/sl/sysfs/sl_sysfs_link_policy.c | 261 + drivers/net/ethernet/hpe/sl/sysfs/sl_sysfs_llr.c | 221 + .../ethernet/hpe/sl/sysfs/sl_sysfs_llr_config.c | 140 + .../ethernet/hpe/sl/sysfs/sl_sysfs_llr_counters.c | 397 + .../ethernet/hpe/sl/sysfs/sl_sysfs_llr_loop_time.c | 221 + .../ethernet/hpe/sl/sysfs/sl_sysfs_llr_policy.c | 74 + drivers/net/ethernet/hpe/sl/sysfs/sl_sysfs_mac.c | 192 + .../ethernet/hpe/sl/sysfs/sl_sysfs_mac_counters.c | 339 + drivers/net/ethernet/hpe/sl/sysfs/sl_sysfs_media.c | 1274 ++ .../hpe/sl/sysfs/sl_sysfs_media_counters.c | 599 + drivers/net/ethernet/hpe/sl/sysfs/sl_sysfs_pmi.c | 80 + .../net/ethernet/hpe/sl/sysfs/sl_sysfs_pmi_rd.c | 197 + .../net/ethernet/hpe/sl/sysfs/sl_sysfs_pmi_wr.c | 220 + drivers/net/ethernet/hpe/sl/sysfs/sl_sysfs_sbus.c | 89 + .../net/ethernet/hpe/sl/sysfs/sl_sysfs_sbus_pmi.c | 80 + .../ethernet/hpe/sl/sysfs/sl_sysfs_sbus_pmi_rd.c | 244 + .../ethernet/hpe/sl/sysfs/sl_sysfs_sbus_pmi_wr.c | 244 + .../net/ethernet/hpe/sl/sysfs/sl_sysfs_sbus_rd.c | 197 + .../net/ethernet/hpe/sl/sysfs/sl_sysfs_sbus_rst.c | 105 + .../net/ethernet/hpe/sl/sysfs/sl_sysfs_sbus_wr.c | 197 + .../net/ethernet/hpe/sl/sysfs/sl_sysfs_serdes.c | 302 + .../ethernet/hpe/sl/sysfs/sl_sysfs_serdes_eye.c | 197 + .../ethernet/hpe/sl/sysfs/sl_sysfs_serdes_eye.h | 12 + .../ethernet/hpe/sl/sysfs/sl_sysfs_serdes_lol.c | 141 + .../ethernet/hpe/sl/sysfs/sl_sysfs_serdes_lol.h | 12 + .../ethernet/hpe/sl/sysfs/sl_sysfs_serdes_los.c | 142 + .../ethernet/hpe/sl/sysfs/sl_sysfs_serdes_los.h | 12 + .../hpe/sl/sysfs/sl_sysfs_serdes_settings.c | 506 + .../hpe/sl/sysfs/sl_sysfs_serdes_settings.h | 12 + .../ethernet/hpe/sl/sysfs/sl_sysfs_serdes_state.c | 121 + .../ethernet/hpe/sl/sysfs/sl_sysfs_serdes_state.h | 12 + .../hpe/sl/sysfs/sl_sysfs_serdes_swizzle.c | 126 + .../hpe/sl/sysfs/sl_sysfs_serdes_swizzle.h | 14 + drivers/net/ethernet/hpe/ss1/Kconfig | 35 + drivers/net/ethernet/hpe/ss1/Makefile | 28 + drivers/net/ethernet/hpe/ss1/cass_ats.c | 299 + drivers/net/ethernet/hpe/ss1/cass_ats_inval.c | 79 + drivers/net/ethernet/hpe/ss1/cass_atu.c | 2072 +++ drivers/net/ethernet/hpe/ss1/cass_cable.c | 702 + drivers/net/ethernet/hpe/ss1/cass_cable.h | 157 + drivers/net/ethernet/hpe/ss1/cass_core.c | 1564 ++ drivers/net/ethernet/hpe/ss1/cass_core.h | 1472 ++ drivers/net/ethernet/hpe/ss1/cass_cpt.c | 585 + drivers/net/ethernet/hpe/ss1/cass_cq.c | 1243 ++ drivers/net/ethernet/hpe/ss1/cass_ct.c | 639 + drivers/net/ethernet/hpe/ss1/cass_dev_info.c | 60 + drivers/net/ethernet/hpe/ss1/cass_dma_buf.c | 256 + drivers/net/ethernet/hpe/ss1/cass_dmac.c | 597 + drivers/net/ethernet/hpe/ss1/cass_eq.c | 1518 ++ drivers/net/ethernet/hpe/ss1/cass_errors.c | 1155 ++ drivers/net/ethernet/hpe/ss1/cass_eth.c | 702 + drivers/net/ethernet/hpe/ss1/cass_hmm.c | 320 + drivers/net/ethernet/hpe/ss1/cass_hni.c | 370 + drivers/net/ethernet/hpe/ss1/cass_irq.c | 210 + drivers/net/ethernet/hpe/ss1/cass_ixe.c | 348 + drivers/net/ethernet/hpe/ss1/cass_link.c | 192 + drivers/net/ethernet/hpe/ss1/cass_link_misc.c | 159 + drivers/net/ethernet/hpe/ss1/cass_lmon.c | 573 + drivers/net/ethernet/hpe/ss1/cass_lni.c | 404 + drivers/net/ethernet/hpe/ss1/cass_nta.c | 1996 +++ drivers/net/ethernet/hpe/ss1/cass_odp_decouple.c | 599 + drivers/net/ethernet/hpe/ss1/cass_p2p.c | 321 + drivers/net/ethernet/hpe/ss1/cass_p2p.h | 69 + drivers/net/ethernet/hpe/ss1/cass_pcie_mon.c | 288 + drivers/net/ethernet/hpe/ss1/cass_phy.c | 224 + drivers/net/ethernet/hpe/ss1/cass_port_misc.c | 68 + drivers/net/ethernet/hpe/ss1/cass_pt.c | 1255 ++ drivers/net/ethernet/hpe/ss1/cass_ptp.c | 304 + drivers/net/ethernet/hpe/ss1/cass_rgid.c | 293 + drivers/net/ethernet/hpe/ss1/cass_rgroup.c | 281 + drivers/net/ethernet/hpe/ss1/cass_rgroup.h | 30 + drivers/net/ethernet/hpe/ss1/cass_rmu.c | 376 + drivers/net/ethernet/hpe/ss1/cass_rmu_eth.c | 1017 ++ drivers/net/ethernet/hpe/ss1/cass_rx_tx_profile.c | 104 + drivers/net/ethernet/hpe/ss1/cass_rx_tx_profile.h | 15 + drivers/net/ethernet/hpe/ss1/cass_sbl.c | 1706 +++ drivers/net/ethernet/hpe/ss1/cass_sbl.h | 581 + drivers/net/ethernet/hpe/ss1/cass_sbus.c | 172 + drivers/net/ethernet/hpe/ss1/cass_sl.c | 1524 ++ drivers/net/ethernet/hpe/ss1/cass_sl.h | 95 + drivers/net/ethernet/hpe/ss1/cass_sl_io.c | 368 + drivers/net/ethernet/hpe/ss1/cass_sl_io.h | 19 + drivers/net/ethernet/hpe/ss1/cass_sriov.c | 1274 ++ drivers/net/ethernet/hpe/ss1/cass_ss1_debugfs.c | 824 + drivers/net/ethernet/hpe/ss1/cass_ss1_debugfs.h | 86 + drivers/net/ethernet/hpe/ss1/cass_svc.c | 2011 +++ drivers/net/ethernet/hpe/ss1/cass_sysfs.c | 849 ++ drivers/net/ethernet/hpe/ss1/cass_tc.c | 2780 ++++ drivers/net/ethernet/hpe/ss1/cass_telem.c | 309 + drivers/net/ethernet/hpe/ss1/cass_telem_tables.h | 3874 +++++ drivers/net/ethernet/hpe/ss1/cass_trace.h | 60 + drivers/net/ethernet/hpe/ss1/cass_uc.c | 1933 +++ drivers/net/ethernet/hpe/ss1/cass_vf.c | 58 + drivers/net/ethernet/hpe/ss1/cass_vf.h | 59 + drivers/net/ethernet/hpe/ss1/cass_vf_notif.c | 51 + drivers/net/ethernet/hpe/ss1/cass_vf_notif.h | 34 + drivers/net/ethernet/hpe/ss1/cuc_cxi.h | 370 + drivers/net/ethernet/hpe/ss1/cxi_ac_entry_list.c | 499 + drivers/net/ethernet/hpe/ss1/cxi_ac_entry_list.h | 20 + drivers/net/ethernet/hpe/ss1/cxi_aux_dev.c | 137 + drivers/net/ethernet/hpe/ss1/cxi_aux_dev.h | 14 + drivers/net/ethernet/hpe/ss1/cxi_config.c | 2990 ++++ drivers/net/ethernet/hpe/ss1/cxi_config.h | 234 + drivers/net/ethernet/hpe/ss1/cxi_configuration.h | 332 + drivers/net/ethernet/hpe/ss1/cxi_core.c | 281 + drivers/net/ethernet/hpe/ss1/cxi_core.h | 434 + drivers/net/ethernet/hpe/ss1/cxi_eth.c | 443 + drivers/net/ethernet/hpe/ss1/cxi_eth.h | 352 + drivers/net/ethernet/hpe/ss1/cxi_eth_debugfs.c | 206 + drivers/net/ethernet/hpe/ss1/cxi_eth_debugfs.h | 26 + drivers/net/ethernet/hpe/ss1/cxi_eth_ioctl.c | 44 + drivers/net/ethernet/hpe/ss1/cxi_eth_ops.c | 2367 +++ drivers/net/ethernet/hpe/ss1/cxi_ethtool.c | 916 ++ drivers/net/ethernet/hpe/ss1/cxi_ethtool.h | 26 + drivers/net/ethernet/hpe/ss1/cxi_ethtool_names.h | 110 + drivers/net/ethernet/hpe/ss1/cxi_internal.h | 39 + drivers/net/ethernet/hpe/ss1/cxi_link.c | 227 + drivers/net/ethernet/hpe/ss1/cxi_link.h | 65 + drivers/net/ethernet/hpe/ss1/cxi_qos_profiles.c | 722 + drivers/net/ethernet/hpe/ss1/cxi_qos_profiles.h | 149 + drivers/net/ethernet/hpe/ss1/cxi_rgroup.c | 1791 +++ drivers/net/ethernet/hpe/ss1/cxi_rgroup.h | 68 + drivers/net/ethernet/hpe/ss1/cxi_rx_profile.c | 833 ++ drivers/net/ethernet/hpe/ss1/cxi_rxtx_profile.c | 418 + drivers/net/ethernet/hpe/ss1/cxi_rxtx_profile.h | 135 + .../net/ethernet/hpe/ss1/cxi_rxtx_profile_list.c | 249 + .../net/ethernet/hpe/ss1/cxi_rxtx_profile_list.h | 53 + drivers/net/ethernet/hpe/ss1/cxi_tx_profile.c | 819 + drivers/net/ethernet/hpe/ss1/cxi_vf_cmd.h | 52 + drivers/net/ethernet/hpe/ss1/pldm_cxi.h | 374 + include/linux/hpe/cxi/cassini_cntr_defs.h | 2888 ++++ include/linux/hpe/cxi/cassini_csr_defaults.h | 703 + include/linux/hpe/cxi/cassini_error_defs.h | 9091 +++++++++++ include/linux/hpe/cxi/cxi.h | 611 + include/linux/hpe/cxi/cxi_defs.h | 1506 ++ include/linux/hpe/cxi/cxi_prov_hw.h | 1875 +++ include/linux/hpe/cxi/driver.h | 102 + include/linux/hpe/cxi/libcassini.h | 1252 ++ include/linux/hpe/sbl/sbl.h | 436 + include/linux/hpe/sbl/sbl_an.h | 174 + include/linux/hpe/sbl/sbl_csr_common.h | 63 + include/linux/hpe/sbl/sbl_fec.h | 88 + include/linux/hpe/sbl/sbl_kconfig.h | 33 + include/linux/hpe/sbl/sbl_mb.h | 77 + include/linux/hpe/sbl/sbl_platform.h | 35 + include/linux/hpe/sbl/sbl_pml.h | 1081 ++ include/linux/hpe/sbl/sbl_test.h | 20 + include/linux/hpe/sl/sl_fec.h | 39 + include/linux/hpe/sl/sl_ldev.h | 140 + include/linux/hpe/sl/sl_lgrp.h | 213 + include/linux/hpe/sl/sl_link.h | 244 + include/linux/hpe/sl/sl_llr.h | 84 + include/linux/hpe/sl/sl_mac.h | 32 + include/linux/hpe/sl/sl_media.h | 191 + include/uapi/ethernet/cassini_user_defs.h | 14936 +++++++++++++++++++ include/uapi/ethernet/sbl-abi.h | 648 + include/uapi/ethernet/sbl_cassini.h | 21 + include/uapi/ethernet/sbl_counters.h | 152 + include/uapi/ethernet/sbl_platform_config.h | 13 + include/uapi/ethernet/sbl_sbm_constants.h | 330 + include/uapi/ethernet/sbl_serdes.h | 390 + include/uapi/ethernet/sbl_serdes_defaults.h | 66 + include/uapi/ethernet/sbl_serdes_map.h | 41 + include/uapi/ethernet/sbl_serdes_map_init.h | 65 + usr/include/Makefile | 5 + 416 files changed, 185137 insertions(+) --- base-commit: 734bef548a96e8774d6eef5dfa2026c6edc4e80b change-id: 20261029-cxi-netdev-submission-673053a5d05e Best regards, -- Doug Ledford [off-list ref]