[openwrt/openwrt] umbim: handle MTU configuration

LEDE Commits lede-commits at lists.infradead.org
Sat Apr 29 12:39:20 PDT 2023


hauke pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/e4db21b413e65bdfe0491a0ff5749d0bdfde04d4

commit e4db21b413e65bdfe0491a0ff5749d0bdfde04d4
Author: Lech Perczak <lech.perczak at gmail.com>
AuthorDate: Sat Nov 6 16:01:02 2021 +0100

    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 <lech.perczak at gmail.com>
---
 .../network/utils/umbim/files/lib/netifd/proto/mbim.sh | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

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"
 }
 




More information about the lede-commits mailing list