From: Lech Perczak Date: Sat, 6 Nov 2021 15:01:02 +0000 (+0100) Subject: umbim: handle MTU configuration X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=e4db21b413e65bdfe0491a0ff5749d0bdfde04d4;p=openwrt%2Fstaging%2Fnbd.git umbim: handle MTU configuration Allow setting interface MTU through UCI. If this is not set, use MBIM-provided MTU, if provided through control channel. If separate MTUs are provided for IPv4 and IPv6, apply larger of them. This is very unlikely and possible only for IPv4v6 dual-stack configuration. Signed-off-by: Lech Perczak --- diff --git a/package/network/utils/umbim/files/lib/netifd/proto/mbim.sh b/package/network/utils/umbim/files/lib/netifd/proto/mbim.sh index eab5cf3de6..7ac3cb1c70 100755 --- a/package/network/utils/umbim/files/lib/netifd/proto/mbim.sh +++ b/package/network/utils/umbim/files/lib/netifd/proto/mbim.sh @@ -23,6 +23,7 @@ proto_mbim_init_config() { proto_config_add_boolean dhcp proto_config_add_boolean dhcpv6 proto_config_add_string pdptype + proto_config_add_int mtu proto_config_add_defaults } @@ -44,9 +45,9 @@ _proto_mbim_setup() { local ret local device apn pincode delay auth username password allow_roaming allow_partner - local dhcp dhcpv6 pdptype ip4table ip6table $PROTO_DEFAULT_OPTIONS + local dhcp dhcpv6 pdptype ip4table ip6table mtu $PROTO_DEFAULT_OPTIONS json_get_vars device apn pincode delay auth username password allow_roaming allow_partner - json_get_vars dhcp dhcpv6 pdptype ip4table ip6table $PROTO_DEFAULT_OPTIONS + json_get_vars dhcp dhcpv6 pdptype ip4table ip6table mtu $PROTO_DEFAULT_OPTIONS [ ! -e /proc/sys/net/ipv6 ] && ipv6=0 || json_get_var ipv6 ipv6 @@ -294,6 +295,19 @@ _proto_mbim_setup() { fi } + [ -z "$mtu" ] && { + local ipv4mtu=$(_proto_mbim_get_field ipv4mtu "$mbimconfig") + ipv4mtu="${ipv4mtu:-0}" + local ipv6mtu=$(_proto_mbim_get_field ipv6mtu "$mbimconfig") + ipv6mtu="${ipv6mtu:-0}" + + mtu=$((ipv6mtu > ipv4mtu ? ipv6mtu : ipv4mtu)) + } + [ -n "$mtu" -a "$mtu" != 0 ] && { + echo Setting MTU of $ifname to $mtu + /sbin/ip link set dev $ifname mtu $mtu + } + uci_set_state network $interface tid "$tid" }