97 lines
3.6 KiB
ReStructuredText
97 lines
3.6 KiB
ReStructuredText
|
.. SPDX-License-Identifier: GPL-2.0-only
|
||
|
|
||
|
.. Copyright (C) 2020-21 Intel Corporation
|
||
|
|
||
|
.. _iosm_driver_doc:
|
||
|
|
||
|
===========================================
|
||
|
IOSM Driver for Intel M.2 PCIe based Modems
|
||
|
===========================================
|
||
|
The IOSM (IPC over Shared Memory) driver is a WWAN PCIe host driver developed
|
||
|
for linux or chrome platform for data exchange over PCIe interface between
|
||
|
Host platform & Intel M.2 Modem. The driver exposes interface conforming to the
|
||
|
MBIM protocol [1]. Any front end application ( eg: Modem Manager) could easily
|
||
|
manage the MBIM interface to enable data communication towards WWAN.
|
||
|
|
||
|
Basic usage
|
||
|
===========
|
||
|
MBIM functions are inactive when unmanaged. The IOSM driver only provides a
|
||
|
userspace interface MBIM "WWAN PORT" representing MBIM control channel and does
|
||
|
not play any role in managing the functionality. It is the job of a userspace
|
||
|
application to detect port enumeration and enable MBIM functionality.
|
||
|
|
||
|
Examples of few such userspace application are:
|
||
|
- mbimcli (included with the libmbim [2] library), and
|
||
|
- Modem Manager [3]
|
||
|
|
||
|
Management Applications to carry out below required actions for establishing
|
||
|
MBIM IP session:
|
||
|
- open the MBIM control channel
|
||
|
- configure network connection settings
|
||
|
- connect to network
|
||
|
- configure IP network interface
|
||
|
|
||
|
Management application development
|
||
|
==================================
|
||
|
The driver and userspace interfaces are described below. The MBIM protocol is
|
||
|
described in [1] Mobile Broadband Interface Model v1.0 Errata-1.
|
||
|
|
||
|
MBIM control channel userspace ABI
|
||
|
----------------------------------
|
||
|
|
||
|
/dev/wwan0mbim0 character device
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
The driver exposes an MBIM interface to the MBIM function by implementing
|
||
|
MBIM WWAN Port. The userspace end of the control channel pipe is a
|
||
|
/dev/wwan0mbim0 character device. Application shall use this interface for
|
||
|
MBIM protocol communication.
|
||
|
|
||
|
Fragmentation
|
||
|
~~~~~~~~~~~~~
|
||
|
The userspace application is responsible for all control message fragmentation
|
||
|
and defragmentation as per MBIM specification.
|
||
|
|
||
|
/dev/wwan0mbim0 write()
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
The MBIM control messages from the management application must not exceed the
|
||
|
negotiated control message size.
|
||
|
|
||
|
/dev/wwan0mbim0 read()
|
||
|
~~~~~~~~~~~~~~~~~~~~~~
|
||
|
The management application must accept control messages of up the negotiated
|
||
|
control message size.
|
||
|
|
||
|
MBIM data channel userspace ABI
|
||
|
-------------------------------
|
||
|
|
||
|
wwan0-X network device
|
||
|
~~~~~~~~~~~~~~~~~~~~~~
|
||
|
The IOSM driver exposes IP link interface "wwan0-X" of type "wwan" for IP
|
||
|
traffic. Iproute network utility is used for creating "wwan0-X" network
|
||
|
interface and for associating it with MBIM IP session. The Driver supports
|
||
|
up to 8 IP sessions for simultaneous IP communication.
|
||
|
|
||
|
The userspace management application is responsible for creating new IP link
|
||
|
prior to establishing MBIM IP session where the SessionId is greater than 0.
|
||
|
|
||
|
For example, creating new IP link for a MBIM IP session with SessionId 1:
|
||
|
|
||
|
ip link add dev wwan0-1 parentdev-name wwan0 type wwan linkid 1
|
||
|
|
||
|
The driver will automatically map the "wwan0-1" network device to MBIM IP
|
||
|
session 1.
|
||
|
|
||
|
References
|
||
|
==========
|
||
|
[1] "MBIM (Mobile Broadband Interface Model) Errata-1"
|
||
|
- https://www.usb.org/document-library/
|
||
|
|
||
|
[2] libmbim - "a glib-based library for talking to WWAN modems and
|
||
|
devices which speak the Mobile Interface Broadband Model (MBIM)
|
||
|
protocol"
|
||
|
- http://www.freedesktop.org/wiki/Software/libmbim/
|
||
|
|
||
|
[3] Modem Manager - "a DBus-activated daemon which controls mobile
|
||
|
broadband (2G/3G/4G) devices and connections"
|
||
|
- http://www.freedesktop.org/wiki/Software/ModemManager/
|