Wrong qmap multiplex kernel method if data aggregation protocol is already set once MM starts
With qmi_wwan + rmnet as the multiplexing method, if MM starts and the requested data aggregation protocol is already set (e.g. if MM has been stopped after a successful multiplex setup), after MM restart the qmi_wwan inbox qmap is used. E.g.
First MM run:
$ mmcli -L
/org/freedesktop/ModemManager1/Modem/0 [Telit] FN990A28
$ sudo mmcli -m 0 --create-bearer="apn=internet,ip-type=ipv4,multiplex=required"
Successfully created new bearer in modem:
/org/freedesktop/ModemManager1/Bearer/1
$ sudo mmcli -m 0 -b 1 --connect
successfully connected the bearer
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether d8:bb:c1:82:fa:64 brd ff:ff:ff:ff:ff:ff
altname enp0s31f6
433: wwan0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 16384 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
link/none
434: qmapmux0.0@wwan0: <> mtu 16380 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/[519]
MM stopped and restarted:
$ mmcli -L
/org/freedesktop/ModemManager1/Modem/0 [Telit] FN990A28
$ sudo mmcli -m 0 --create-bearer="apn=internet,ip-type=ipv4,multiplex=required"
Successfully created new bearer in modem:
/org/freedesktop/ModemManager1/Bearer/1
$ sudo mmcli -m 0 -b 1 --connect
successfully connected the bearer
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether d8:bb:c1:82:fa:64 brd ff:ff:ff:ff:ff:ff
altname enp0s31f6
433: wwan0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
link/none
435: qmimux0: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/none
436: qmimux1: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/none
437: qmimux2: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/none
438: qmimux3: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/none
Attached debug logs. qmap_rmnet_qmimux_switch.txt
A tentative fix is in commit !1043 (8d1e165c)