modemmanager: Remove hardcoded proto check

Modified the code to correctly determine modem availability based on the
sysfs path provided in the 'device' option, instead of relying  on the
'proto' value. This ensures proper configuration for custom-made protos
that do not match the "modemmanager" identifier.

Signed-off-by: Oliver Sedlbauer <osedlbauer@tdt.de>
This commit is contained in:
Oliver Sedlbauer 2023-08-11 12:18:32 +02:00
parent 4299e892de
commit 29590e5d6d
2 changed files with 20 additions and 17 deletions

View file

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=modemmanager
PKG_SOURCE_VERSION:=1.20.6
PKG_RELEASE:=12
PKG_RELEASE:=13
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git

View file

@ -6,6 +6,7 @@
. /lib/functions.sh
. /lib/netifd/netifd-proto.sh
INCLUDE_ONLY=1 . /lib/netifd/proto/modemmanager.sh
################################################################################
# Runtime state
@ -139,10 +140,6 @@ mm_get_modem_config_foreach_cb() {
local cfg="$1"
local sysfspath="$2"
local proto
config_get proto "${cfg}" proto
[ "${proto}" = modemmanager ] || return 0
local dev
dev=$(uci_get network "${cfg}" device)
[ "${dev}" = "${sysfspath}" ] || return 0
@ -237,19 +234,25 @@ mm_report_modem_wait() {
################################################################################
# Cleanup interfaces
mm_cleanup_interface_cb() {
local cfg="$1"
local proto
config_get proto "${cfg}" proto
[ "${proto}" = modemmanager ] || return 0
proto_set_available "${cfg}" 0
}
mm_cleanup_interfaces() {
config_load network
config_foreach mm_cleanup_interface_cb interface
local modemlist modemlength idx modeminfo modemsysfspath
modemlist=$(mmcli --list-modems --output-keyvalue)
[ -n "${modemlist}" ] || return 0
modemlength=$(modemmanager_get_field "${modemlist}" "modem-list.length")
# do nothing if no modem reported
[ -n "${modemlength}" ] && [ "${modemlength}" -ge 1 ] && {
idx=1
while [ $idx -le "$modemlength" ]; do
modempath=$(modemmanager_get_field "${modemlist}" "modem-list.value\[$idx\]")
modeminfo=$(mmcli --modem "${modempath}" --output-keyvalue)
modemsysfspath=$(modemmanager_get_field "${modeminfo}" "modem.generic.device")
mm_cleanup_interface_by_sysfspath "${modemsysfspath}"
idx=$((idx + 1))
done
}
}
mm_cleanup_interface_by_sysfspath() {