modemmanager: do not disable modem on reconnect

If the modem loses the connection, an attempt is made to re-establish the
connection via the report-down script.

Until now, the modem was disabled when the modem processed the teardown of
the modemmanager protohandler. The immediate up events of netifd renables
the modem right away. This takes time, which is not necessary.

This commit changes the behavior so that the modem is not disabled when
the modemmanager is disconnected via the report-down script.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
This commit is contained in:
Florian Eckert
2025-02-04 12:36:51 +01:00
committed by Florian Eckert
parent f9dbeea92b
commit 434c353e62
3 changed files with 13 additions and 3 deletions

View File

@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=modemmanager PKG_NAME:=modemmanager
PKG_VERSION:=1.22.0 PKG_VERSION:=1.22.0
PKG_RELEASE:=20 PKG_RELEASE:=21
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git

View File

@@ -869,8 +869,17 @@ proto_modemmanager_teardown() {
mmcli --modem="${device}" --simple-disconnect || mmcli --modem="${device}" --simple-disconnect ||
proto_notify_error "${interface}" DISCONNECT_FAILED proto_notify_error "${interface}" DISCONNECT_FAILED
# disable # reading variable from var state which was set in
mmcli --modem="${device}" --disable # '/usr/lib/ModemManager/connection.d/10-report-down'
# because of a reconnect event.
# The modem therefore does not need to be disabled.
local disable="$(uci_get_state network "$interface" disable_modem "1")"
if [ "${disable}" -eq 0 ]; then
echo "Skipping modem disable"
uci_revert_state network "${interface}" disable_modem
else
mmcli --modem="${device}" --disable
fi
# low power, only if requested # low power, only if requested
[ "${lowpower:-0}" -lt 1 ] || [ "${lowpower:-0}" -lt 1 ] ||

View File

@@ -32,6 +32,7 @@ IFUP=$(ifstatus "${CFG}" | jsonfilter -e "@.up")
[ "${IFUP}" = "true" ] && { [ "${IFUP}" = "true" ] && {
mm_log "info" "Reconnecting '${CFG}' on '${STATE}' event" mm_log "info" "Reconnecting '${CFG}' on '${STATE}' event"
uci_toggle_state network "${CFG}" disable_modem "0"
ubus call network.interface down "{ 'interface': '${CFG}'}" ubus call network.interface down "{ 'interface': '${CFG}'}"
ubus call network.interface up "{ 'interface': '${CFG}'}" ubus call network.interface up "{ 'interface': '${CFG}'}"
} }