Merge pull request #22486 from osedl/modemmanager-improve-cleanup
modemmanager improve cleanup
This commit is contained in:
commit
ac9973bc11
4 changed files with 15 additions and 24 deletions
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=modemmanager
|
PKG_NAME:=modemmanager
|
||||||
PKG_SOURCE_VERSION:=1.22.0
|
PKG_SOURCE_VERSION:=1.22.0
|
||||||
PKG_RELEASE:=3
|
PKG_RELEASE:=5
|
||||||
|
|
||||||
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
|
||||||
|
|
|
@ -235,24 +235,20 @@ mm_report_modem_wait() {
|
||||||
# Cleanup interfaces
|
# Cleanup interfaces
|
||||||
|
|
||||||
mm_cleanup_interfaces() {
|
mm_cleanup_interfaces() {
|
||||||
local modemlist modemlength idx modeminfo modemsysfspath
|
local sysfs_path status
|
||||||
|
|
||||||
modemlist=$(mmcli --list-modems --output-keyvalue)
|
# Do nothing if there is no sysfs cache
|
||||||
[ -n "${modemlist}" ] || return 0
|
[ -f "${MODEMMANAGER_SYSFS_CACHE}" ] || return
|
||||||
|
|
||||||
modemlength=$(modemmanager_get_field "${modemlist}" "modem-list.length")
|
while IFS= read -r sysfs_cache_line; do
|
||||||
|
sysfs_path=$(echo "${sysfs_cache_line}" | awk '{print $1}')
|
||||||
|
status=$(echo "${sysfs_cache_line}" | awk '{print $2}')
|
||||||
|
|
||||||
# do nothing if no modem reported
|
if [ "${status}" = "processed" ]; then
|
||||||
[ -n "${modemlength}" ] && [ "${modemlength}" -ge 1 ] && {
|
mm_log "debug" "call cleanup for: ${sysfs_path}"
|
||||||
idx=1
|
mm_cleanup_interface_by_sysfspath "${sysfs_path}"
|
||||||
while [ $idx -le "$modemlength" ]; do
|
fi
|
||||||
modempath=$(modemmanager_get_field "${modemlist}" "modem-list.value\[$idx\]")
|
done < ${MODEMMANAGER_SYSFS_CACHE}
|
||||||
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() {
|
mm_cleanup_interface_by_sysfspath() {
|
||||||
|
|
|
@ -6,13 +6,6 @@ START=70
|
||||||
|
|
||||||
LOG_LEVEL="INFO"
|
LOG_LEVEL="INFO"
|
||||||
|
|
||||||
stop_service() {
|
|
||||||
# Load common utils
|
|
||||||
. /usr/share/ModemManager/modemmanager.common
|
|
||||||
# Set all configured interfaces as unavailable
|
|
||||||
mm_cleanup_interfaces
|
|
||||||
}
|
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
# Setup ModemManager service
|
# Setup ModemManager service
|
||||||
#
|
#
|
||||||
|
|
|
@ -20,7 +20,6 @@ main() {
|
||||||
|
|
||||||
mkdir -p "${MODEMMANAGER_RUNDIR}"
|
mkdir -p "${MODEMMANAGER_RUNDIR}"
|
||||||
chmod 0755 "${MODEMMANAGER_RUNDIR}"
|
chmod 0755 "${MODEMMANAGER_RUNDIR}"
|
||||||
mm_cleanup_interfaces
|
|
||||||
|
|
||||||
/usr/sbin/ModemManager "$@" 1>/dev/null 2>/dev/null &
|
/usr/sbin/ModemManager "$@" 1>/dev/null 2>/dev/null &
|
||||||
CHILD="$!"
|
CHILD="$!"
|
||||||
|
@ -28,6 +27,9 @@ main() {
|
||||||
mm_report_events_from_cache
|
mm_report_events_from_cache
|
||||||
|
|
||||||
wait "$CHILD"
|
wait "$CHILD"
|
||||||
|
|
||||||
|
# Set all configured interfaces as unavailable
|
||||||
|
mm_cleanup_interfaces
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|
Loading…
Reference in a new issue