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
|
qlogic/index
|
||||||
wan/index
|
wan/index
|
||||||
wifi/index
|
wifi/index
|
||||||
|
wwan/index
|
||||||
|
|
||||||
.. only:: subproject and html
|
.. 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
|
S: Maintained
|
||||||
F: drivers/platform/x86/intel-wmi-thunderbolt.c
|
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
|
INTEL(R) TRACE HUB
|
||||||
M: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
M: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -44,4 +44,16 @@ config MHI_WWAN_CTRL
|
|||||||
To compile this driver as a module, choose M here: the module will be
|
To compile this driver as a module, choose M here: the module will be
|
||||||
called mhi_wwan_ctrl.
|
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
|
endif # WWAN
|
||||||
|
@ -9,3 +9,4 @@ wwan-objs += wwan_core.o
|
|||||||
obj-$(CONFIG_WWAN_HWSIM) += wwan_hwsim.o
|
obj-$(CONFIG_WWAN_HWSIM) += wwan_hwsim.o
|
||||||
|
|
||||||
obj-$(CONFIG_MHI_WWAN_CTRL) += mhi_wwan_ctrl.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