mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-18 21:28:02 +00:00
base-files: add ucidef_set_network_device_path_port function
The already existing uci function ucidef_set_network_device_path can be used to specify a unique PCI address to name a network interface. However, I noticed that some NIC ports share the same PCI address but are still distinguishable by the dev_port value of the network interface's sysfs entry. This commit adds a new uci function ucidef_set_network_device_path_port, which is similar to ucidef_set_network_device_path but takes an additional argument where the user can specify the dev_port value. The internal function preinit_config_port loops through all network interfaces at the given PCI address and chooses the one where the dev_port value matches. This was tested on an x86_64 device using a Mellanox ConnectX-3 card. Signed-off-by: Til Kaiser <mail@tk154.de> Link: https://github.com/openwrt/openwrt/pull/16560 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
0a47d518df
commit
503596b8ce
@ -122,6 +122,11 @@ ucidef_set_network_device_path() {
|
||||
_ucidef_set_network_device_common $1 path $2
|
||||
}
|
||||
|
||||
ucidef_set_network_device_path_port() {
|
||||
_ucidef_set_network_device_common $1 path $2
|
||||
_ucidef_set_network_device_common $1 port $3
|
||||
}
|
||||
|
||||
ucidef_set_network_device_gro() {
|
||||
_ucidef_set_network_device_common $1 gro $2
|
||||
}
|
||||
|
@ -65,12 +65,27 @@ preinit_config_switch() {
|
||||
|
||||
preinit_config_port() {
|
||||
local original
|
||||
local dev_port
|
||||
|
||||
local netdev="$1"
|
||||
local path="$2"
|
||||
local port="$3"
|
||||
|
||||
[ -d "/sys/devices/$path/net" ] || return
|
||||
original="$(ls "/sys/devices/$path/net" | head -1)"
|
||||
|
||||
if [ -z "$port" ]; then
|
||||
original="$(ls "/sys/devices/$path/net" | head -1)"
|
||||
else
|
||||
for device in /sys/devices/$path/net/*; do
|
||||
dev_port="$(cat "$device/dev_port")"
|
||||
if [ "$dev_port" = "$port" ]; then
|
||||
original="${device##*/}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
[ -z "$original" ] && return
|
||||
fi
|
||||
|
||||
[ "$netdev" = "$original" ] && return
|
||||
|
||||
@ -109,7 +124,8 @@ preinit_config_board() {
|
||||
json_select "network_device"
|
||||
json_select "$netdev"
|
||||
json_get_vars path path
|
||||
[ -n "$path" ] && preinit_config_port "$netdev" "$path"
|
||||
json_get_vars port port
|
||||
[ -n "$path" ] && preinit_config_port "$netdev" "$path" "$port"
|
||||
json_select ..
|
||||
json_select ..
|
||||
done
|
||||
|
Loading…
Reference in New Issue
Block a user