net: iosm: infrastructure
1) Kconfig & Makefile changes for IOSM Driver compilation. 2) Add IOSM Driver documentation. 3) Modified MAINTAINER file for IOSM Driver addition. Signed-off-by: M Chetan Kumar <m.chetan.kumar@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2a54f2c779
commit
f7af616c63
@ -18,6 +18,7 @@ Contents:
|
||||
qlogic/index
|
||||
wan/index
|
||||
wifi/index
|
||||
wwan/index
|
||||
|
||||
.. only:: subproject and html
|
||||
|
||||
|
18
Documentation/networking/device_drivers/wwan/index.rst
Normal file
18
Documentation/networking/device_drivers/wwan/index.rst
Normal file
@ -0,0 +1,18 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
WWAN Device Drivers
|
||||
===================
|
||||
|
||||
Contents:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
iosm
|
||||
|
||||
.. only:: subproject and html
|
||||
|
||||
Indices
|
||||
=======
|
||||
|
||||
* :ref:`genindex`
|
96
Documentation/networking/device_drivers/wwan/iosm.rst
Normal file
96
Documentation/networking/device_drivers/wwan/iosm.rst
Normal file
@ -0,0 +1,96 @@
|
||||
.. 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
|
||||
upto 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/
|
@ -9453,6 +9453,13 @@ L: Dell.Client.Kernel@dell.com
|
||||
S: Maintained
|
||||
F: drivers/platform/x86/intel-wmi-thunderbolt.c
|
||||
|
||||
INTEL WWAN IOSM DRIVER
|
||||
M: M Chetan Kumar <m.chetan.kumar@intel.com>
|
||||
M: Intel Corporation <linuxwwan@intel.com>
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/net/wwan/iosm/
|
||||
|
||||
INTEL(R) TRACE HUB
|
||||
M: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||
S: Supported
|
||||
|
@ -44,4 +44,16 @@ config MHI_WWAN_CTRL
|
||||
To compile this driver as a module, choose M here: the module will be
|
||||
called mhi_wwan_ctrl.
|
||||
|
||||
config IOSM
|
||||
tristate "IOSM Driver for Intel M.2 WWAN Device"
|
||||
select WWAN_CORE
|
||||
depends on INTEL_IOMMU
|
||||
help
|
||||
This driver enables Intel M.2 WWAN Device communication.
|
||||
|
||||
If you have one of those Intel M.2 WWAN Modules and wish to use it in
|
||||
Linux say Y/M here.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
endif # WWAN
|
||||
|
@ -9,3 +9,4 @@ wwan-objs += wwan_core.o
|
||||
obj-$(CONFIG_WWAN_HWSIM) += wwan_hwsim.o
|
||||
|
||||
obj-$(CONFIG_MHI_WWAN_CTRL) += mhi_wwan_ctrl.o
|
||||
obj-$(CONFIG_IOSM) += iosm/
|
||||
|
26
drivers/net/wwan/iosm/Makefile
Normal file
26
drivers/net/wwan/iosm/Makefile
Normal file
@ -0,0 +1,26 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only)
|
||||
#
|
||||
# Copyright (C) 2020-21 Intel Corporation.
|
||||
#
|
||||
|
||||
iosm-y = \
|
||||
iosm_ipc_task_queue.o \
|
||||
iosm_ipc_imem.o \
|
||||
iosm_ipc_imem_ops.o \
|
||||
iosm_ipc_mmio.o \
|
||||
iosm_ipc_port.o \
|
||||
iosm_ipc_wwan.o \
|
||||
iosm_ipc_uevent.o \
|
||||
iosm_ipc_pm.o \
|
||||
iosm_ipc_pcie.o \
|
||||
iosm_ipc_irq.o \
|
||||
iosm_ipc_chnl_cfg.o \
|
||||
iosm_ipc_protocol.o \
|
||||
iosm_ipc_protocol_ops.o \
|
||||
iosm_ipc_mux.o \
|
||||
iosm_ipc_mux_codec.o
|
||||
|
||||
obj-$(CONFIG_IOSM) := iosm.o
|
||||
|
||||
# compilation flags
|
||||
ccflags-y += -DDEBUG
|
Loading…
Reference in New Issue
Block a user