1. 14 Jun, 2021 34 commits
  2. 13 Jun, 2021 6 commits
    • David S. Miller's avatar
      Merge branch 'iosm-driver' · a212d9f3
      David S. Miller authored
      M Chetan Kumar says:
      
      ====================
      net: iosm: PCIe Driver for Intel M.2 Modem
      
      The IOSM (IPC over Shared Memory) driver is a PCIe host driver implemented
      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. Any front end application ( eg: Modem Manager) could
      easily manage the MBIM interface to enable data communication towards WWAN.
      
      Intel M.2 modem uses 2 BAR regions. The first region is dedicated to Doorbell
      register for IRQs and the second region is used as scratchpad area for book
      keeping modem execution stage details along with host system shared memory
      region context details. The upper edge of the driver exposes the control and
      data channels for user space application interaction. At lower edge these data
      and control channels are associated to pipes. The pipes are lowest level
      interfaces used over PCIe as a logical channel for message exchange. A single
      channel maps to UL and DL pipe and are initialized on device open.
      
      On UL path, driver copies application sent data to SKBs associate it with
      transfer descriptor and puts it on to ring buffer for DMA transfer. Once
      information has been updated in shared memory region, host gives a Doorbell
      to modem to perform DMA and modem uses MSI to communicate back to host.
      For receiving data in DL path, SKBs are pre-allocated during pipe open and
      transfer descriptors are given to modem for DMA transfer.
      
      The driver exposes two types of ports, namely "wwan0mbim0", a char device node
      which is used for MBIM control operation and "wwan0-x",(x = 0,1,2..7) network
      interfaces for IP data communication.
      1) MBIM Control Interface:
      This node exposes an interface between modem and application using char device
      exposed by "IOSM" driver to establish and manage the MBIM data communication
      with PCIe based Intel M.2 Modems.
      
      2) MBIM Data Interface:
      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.
      
      This applies on top of WWAN core rtnetlink series posted here:
      https://lore.kernel.org/netdev/1623486057-13075-1-git-send-email-loic.poulain@linaro.org/
      
      Also driver has been compiled and tested on top of netdev net-next tree.
      https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a212d9f3
    • M Chetan Kumar's avatar
      net: iosm: infrastructure · f7af616c
      M Chetan Kumar authored
      1) Kconfig & Makefile changes for IOSM Driver compilation.
      2) Add IOSM Driver documentation.
      3) Modified MAINTAINER file for IOSM Driver addition.
      Signed-off-by: default avatarM Chetan Kumar <m.chetan.kumar@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f7af616c
    • M Chetan Kumar's avatar
      net: iosm: net driver · 2a54f2c7
      M Chetan Kumar authored
      1) Create net device & implement net operations for data/IP communication.
      2) Bind IP Link to mux IP session for simultaneous IP traffic.
      Signed-off-by: default avatarM Chetan Kumar <m.chetan.kumar@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2a54f2c7
    • M Chetan Kumar's avatar
      net: iosm: uevent support · 110e6e02
      M Chetan Kumar authored
      Report modem status via uevent.
      Signed-off-by: default avatarM Chetan Kumar <m.chetan.kumar@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      110e6e02
    • M Chetan Kumar's avatar
      net: iosm: protocol operations · 64516f63
      M Chetan Kumar authored
      1) Update UL/DL transfer descriptors in message ring.
      2) Define message set for pipe/sleep protocol.
      Signed-off-by: default avatarM Chetan Kumar <m.chetan.kumar@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      64516f63
    • M Chetan Kumar's avatar
      net: iosm: shared memory protocol · faed4c6f
      M Chetan Kumar authored
      1) Defines messaging protocol for handling Transfer Descriptor
         in both UL/DL direction.
      2) Ring buffer management.
      Signed-off-by: default avatarM Chetan Kumar <m.chetan.kumar@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      faed4c6f