From b77e4685595c81a25a05346e2074daed32d05651 Mon Sep 17 00:00:00 2001 From: Vincent Jardin Date: Mon, 3 Feb 2025 19:00:24 +0100 Subject: [PATCH] board/nvidia/bf3: set eth names according to doc Set the names of the Ethernet interfaces that are exposed from a first boot so they are aligned with those described by Mellanox/NVIDIA documentation for the BF3. Those tmfifo and oob interface names are describeded at: https://docs.nvidia.com/networking/display/bluefielddpuosv460/host-side+interface+configuration When running the native Ubuntu on the BF3 board, the following udev rules are set: $ cat /etc/udev/rules.d/91-tmfifo_net.rules SUBSYSTEM=="net", ACTION=="add", DEVPATH=="/devices/platform/MLNXBF01:00/virtio1/net/eth[0-9]", NAME="tmfifo_net0" $ cat /etc/udev/rules.d/92-oob_net.rules SUBSYSTEM=="net", ACTION=="add", DEVPATH=="/devices/platform/MLNXBF17:00/net/e*", NAME="oob_net0", RUN+="/sbin/sysctl -w net.ipv4.conf.oob_net0.arp_notify=1" The default CX ports of the BF3 are: ubuntu@bf$ ip link show p0 4: p0: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether a0:88:c2:xx:xx:xx brd ff:ff:ff:ff:ff:ff altname enp3s0f0np0 ubuntu@bf$ ip link show p1 5: p1: mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether a0:88:c2:xx:xx:xx brd ff:ff:ff:ff:ff:ff altname enp3s0f1np1 Signed-off-by: Vincent Jardin Signed-off-by: Julien Olivain --- .../bf3/rootfs_overlay/etc/init.d/S04ifnames | 66 +++++++++++++++++++ configs/nvidia_bf3_defconfig | 3 + 2 files changed, 69 insertions(+) create mode 100755 board/nvidia/bf3/rootfs_overlay/etc/init.d/S04ifnames diff --git a/board/nvidia/bf3/rootfs_overlay/etc/init.d/S04ifnames b/board/nvidia/bf3/rootfs_overlay/etc/init.d/S04ifnames new file mode 100755 index 0000000000..88c03fd044 --- /dev/null +++ b/board/nvidia/bf3/rootfs_overlay/etc/init.d/S04ifnames @@ -0,0 +1,66 @@ +#!/bin/sh +# Rename the board's interfaces according to Mellanox/NVIDIA's documentation + +DESC="bf3 interface renaming" +DAEMON=ifnames + +rename_interface() { + bus_info=$1 + new_name=$2 + alt_name=$3 + + # Find the current interface name based on bus-info + iface=$(find /sys/class/net -type l -exec sh -c ' + for i; do + [ "$(basename "$(readlink -f "$i"/device)")" = "$0" ] && basename "$i" + done + ' "$bus_info" {} +) + + # Rename the interface if found + if [ -n "$iface" ]; then + ip link set "$iface" name "$new_name" + printf "%s to %s" "$iface" "$new_name" + + # Set altname if provided + if [ -n "$alt_name" ]; then + ip link property add dev "$new_name" altname "$alt_name" + printf "/%s" "$alt_name" + fi + printf "; " + else + echo "$bus_info not found" + fi +} + +case "$1" in + start) + printf "Starting %s [%s]: " "$DESC" "$DAEMON" + # Initialize success flag + rename_allok=0 + rename_interface "0000:03:00.0" "p0" "enp3s0f0np0" || rename_allok=1 + rename_interface "0000:03:00.1" "p1" "enp3s0f1np1" || rename_allok=1 + rename_interface "MLNXBF17:00" "oob_net0" "enamlnxbf17i0" || rename_allok=1 + rename_interface "virtio1" "tmfifo_net0" || rename_allok=1 + + if [ "$rename_allok" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + ;; + + stop) ;; + + restart) + # Optional: Handle restart by calling start after stop + $0 stop + $0 start + ;; + + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac + +exit 0 diff --git a/configs/nvidia_bf3_defconfig b/configs/nvidia_bf3_defconfig index e44bb55a3a..42bcb1299d 100644 --- a/configs/nvidia_bf3_defconfig +++ b/configs/nvidia_bf3_defconfig @@ -3,11 +3,14 @@ BR2_cortex_a78=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_11=y BR2_GLOBAL_PATCH_DIR="board/nvidia/bf3/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_ROOTFS_OVERLAY="board/nvidia/bf3/rootfs_overlay" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.11.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/nvidia/bf3/linux.config" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_LIBMNL=y +BR2_PACKAGE_IPROUTE2=y BR2_TARGET_ROOTFS_INITRAMFS=y # BR2_TARGET_ROOTFS_TAR is not set