The Linux Kernel Continues Crafting A WWAN Subsystem
Linaro continues leading the effort on a Wireless WAN (WWAN) subsystem/framework for the Linux kernel.
The framework aims to deal with at least in part the complexity and heterogeneity of Wireless WAN hardware. The Linux WWAN subsystem in proposed form is summed up as:
This initial version adds the concept of WWAN port, which is a logical pipe to a modem control protocol. The protocols are rawly exposed to user via character device, allowing straigthforward support in existing tools (ModemManager, ofono...). The WWAN core takes care of the generic part, including character device management, and relies on port driver operations to receive/submit protocol data.
Since the different devices exposing protocols for a same WWAN hardware do not necessarily know about each others (e.g. two different USB interfaces, PCI/MHI channel devices...) and can be created/removed in different orders, the WWAN core ensures that all WAN ports contributing to the 'whole' WWAN feature are grouped under the same virtual WWAN device, relying on the provided parent device (e.g. mhi controller, USB device). It's a 'trick' I copied from Johannes's earlier WWAN subsystem proposal.
This initial version is purposely minimalist, it's essentially moving the generic part of the previously proposed mhi_wwan_ctrl driver inside a common WWAN framework, but the implementation is open and flexible enough to allow extension for further drivers.
This Linux WWAN code is being led by Linaro's Loic Poulain and today marks its latest spin up on the kernel mailing list. Besides working on the generic subsystem itself, driving this along and initial "user" is a Qualcomm MHI WWAN control driver for their PCI Express modems. This new Qualcomm open-source WWAN modem driver in turn will expose different modem control protocols/ports to user-space. Among the protocols exposed to user-space with the driver are AT, MBIM, QMI, QCOM, and FIREHOSE.