qmap Linux qmi_wwan driver fixes

Two qmap Linux qmi_wwan driver fixes were recently included in kernel.

qmap Linuxqmap is Qualcomm technology for multiple data connection management in rmnet: qmap support in qmi_wwan was added with patch add qmap mux protocol support. Another implementation for qmap is available in the kernel (drivers / net / ethernet / qualcomm / rmnet), but it does not yet support qmi_wwan driver, needed if the physical link is the usb.

qmap Linux data aggregation issue

The first issue happens when configuring the modem to apply download data aggregation when qmap multiplexing is enabled: this can be done, for example, using libqmi wda-set-data-format request, e.g.

root@desktop:~# qmicli -d /dev/cdc-wdm0 --wda-set-data-format=link-layer-protocol=raw-ip,ul-protocol=qmap,dl-protocol=qmap,dl-max-datagrams=20
[/dev/cdc-wdm0] Successfully set data format
                        QoS flow header: no
                    Link layer protocol: 'raw-ip'
       Uplink data aggregation protocol: 'qmap'
     Downlink data aggregation protocol: 'qmap'
                          NDP signature: '0'
Downlink data aggregation max datagrams: '20'
     Downlink data aggregation max size: '16384'

The issue is related to qmap header retrieval in qmimux_rx_fixup and is fixed by patch Fix qmap header retrieval in qmimux_rx_fixup (available since v4.20).

Note also that, if you want to use download data aggregation this is not enough, since also rx_urb_size should be changed to the downlink data aggregation max size value. Currently the easiest way in user space is to change the lower network interface MTU value to the needed max size.

qmap Linux ipv6 address setting issue

The second issue happens when setting an ipv6 address to one of the qmap network interfaces: since the MTU default value is 0, the error returned is

RTNETLINK answers: No buffer space available

since IPv6 requires that every link in the internet have an MTU of 1280 octets or greater.

The patch add MTU default to qmap network interface solves the issue (available since v5.0-rc3), hard-coding a default MTU value. However there is room for improvement, as suggested by the maintainer (e.g. not simply hard-coding the value, but taking care to update also the underlying device settings).

Telit LN940 support added

On a side note, support for Telit LN940 was added with patch qmi_wwan: Added support for Telit LN940 series (available since v4.20)