umbim: fail connect step immediately
authorLech Perczak <lech.perczak@gmail.com>
Mon, 9 Jan 2023 21:08:07 +0000 (22:08 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 29 Apr 2023 19:33:04 +0000 (21:33 +0200)
Subsequent calls to 'umbim connect' do not have any effect if a failure
occured, and in such case an infinite loop without timeout is created,
leading to possibility of interface stuck at connecting forever.
Drop this loop, and issue MBIM disconnect properly, so netifd can
restart from scratch.
This issue can be observed with Sierra EM7455 at changing APN, which
causes network re-registration by default, and a MBIM transaction
timeout, which is resolved on next interface bringup by netifd.

Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
package/network/utils/umbim/files/lib/netifd/proto/mbim.sh

index 08f95ddc6f2089f926cadb46e7b16f8cdee69338..c6fa6665ef399b36ca8988801800bb3accf7749b 100755 (executable)
@@ -152,10 +152,13 @@ _proto_mbim_setup() {
        [ "$pdptype" = "ipv4" -o "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] || pdptype="ipv4v6"
 
        echo "mbim[$$]" "Connect to network"
-       while ! umbim $DBG -n -t $tid -d $device connect "$pdptype:$apn" "$auth" "$username" "$password"; do
+       umbim $DBG -n -t $tid -d $device connect "$pdptype:$apn" "$auth" "$username" "$password" || {
+               echo "mbim[$$]" "Failed to connect bearer"
                tid=$((tid + 1))
-               sleep 1;
-       done
+               umbim $DBG -t $tid -d "$device" disconnect
+               proto_notify_error "$interface" CONNECT_FAILED
+               return 1
+       }
        tid=$((tid + 1))
 
        echo "mbim[$$]" "Connected"