Data not passing when using qmi_wwan + rmnet and QMAPv5/v4
When using modems that accept QMAPv5/v4 as the data aggregation protocol through qmi_wwan + rmnet the data is not properly managed by the network interface:
$ 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
$ sudo mmcli -m 0 -b 1
---------------------------------
General | path: /org/freedesktop/ModemManager1/Bearer/1
| type: default
---------------------------------
Status | connected: yes
| suspended: no
| multiplexed: yes
| interface: qmapmux0.0
| ip timeout: 20
---------------------------------
Properties | apn: internet
| roaming: allowed
| ip type: ipv4
---------------------------------
IPv4 configuration | method: static
| address: 192.168.3.6
| prefix: 30
| gateway: 192.168.3.5
| dns: 8.8.8.8, 8.8.4.4
| mtu: 1500
---------------------------------
Statistics | start date: 2023-07-14T06:38:30Z
| attempts: 1
$ sudo ip addr add 192.168.3.6/30 dev qmapmux0.0
$ sudo ip link set qmapmux0.0 up
$ sudo 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
429: wwan0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 16384 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
link/none
430: qmapmux0.0@wwan0: <UP,LOWER_UP> mtu 16380 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
link/[519]
$ sudo ip route add 8.8.8.8 via 192.168.3.5
$ ping 8.8.8.8 -I qmapmux0.0
PING 8.8.8.8 (8.8.8.8) from 192.168.3.6 qmapmux0.0: 56(84) bytes of data.
^C
--- 8.8.8.8 ping statistics ---
9 packets transmitted, 0 received, 100% packet loss, time 8187ms
This seems because QMAPv5/v4 is automatically enabling also checksum on the modem side, and it needs to be set also in the rmnet netlink flags when creating the netdevice.
I was not able to find a specific statement in Qualcomm docs, nor I was able to find a qmi request/tlv of an already supported request related to checksum enablement, so I'm not completely sure that all the modems behave in this way.
However I've tested with SDX65/62/55/20 and with those chipsets this behavior seems to be verified, but I've opened this issue to see if anyone has additional insight.
There's a possible fix in commit !1043 (66687952)
Attached debug logs for the issue. qmap_checksum.txt