kernel: modules: add Mellanox Spectrum hotplug renaming script
authorTil Kaiser <[email protected]>
Mon, 16 Dec 2024 18:26:20 +0000 (19:26 +0100)
committerRobert Marko <[email protected]>
Mon, 6 Oct 2025 17:06:26 +0000 (19:06 +0200)
Currently, the interfaces of the Mellanox Spectrum Switch QSFP ports
are all labeled eth*. Their order doesn't match the faceplate and is
different for each model.

They could be named during boot, but this isn't sufficient because they
support port splitting. After such ports are split, their port naming
begins again with eth*, and the same is true after they are unsplit again.

A hotplug script is used here that reads from the sysfs file
phys_port_name, which contains p1, p2, p3, ... for unsplit ports
and p1s0, p1s1, p1s2 for split ports.

Signed-off-by: Til Kaiser <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/17251
Signed-off-by: Robert Marko <[email protected]>
package/kernel/linux/files/hotplug-mlxsw-spectrum-port-names.sh [new file with mode: 0644]
package/kernel/linux/modules/netdevices.mk

diff --git a/package/kernel/linux/files/hotplug-mlxsw-spectrum-port-names.sh b/package/kernel/linux/files/hotplug-mlxsw-spectrum-port-names.sh
new file mode 100644 (file)
index 0000000..7637725
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+if [ "$ACTION" = "add" ]; then
+       read -r board_name < "/tmp/sysinfo/board_name"
+
+       if [[ "$board_name" = "mellanox-technologies-ltd-msn*" ]]; then
+               read -r port_name < "/sys/class/net/$DEVICENAME/phys_port_name"
+               [ -n "$port_name" ] && ip link set "$DEVICENAME" name "sw$port_name"
+       fi
+fi
index 0aed1655a9278a0fe984999cffa968cc0cfea8c0..522e76d180561172490817b61d922088c7f121a0 100644 (file)
@@ -1972,6 +1972,13 @@ define KernelPackage/mlxsw-spectrum/description
   Spectrum/Spectrum-2/Spectrum-3/Spectrum-4 Ethernet Switch ASICs.
 endef
 
+define KernelPackage/mlxsw-spectrum/install
+       $(INSTALL_DIR) $(1)/etc/hotplug.d/net
+       $(INSTALL_DATA) \
+               ./files/hotplug-mlxsw-spectrum-port-names.sh \
+               $(1)/etc/hotplug.d/net/10-mlxsw-spectrum-port-names
+endef
+
 $(eval $(call KernelPackage,mlxsw-spectrum))