lkml.org 
[lkml]   [2021]   [Jan]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RESEND PATCH v18 0/3] userspace MHI client interface driver
    Hi Greg,

    On Wed, Jan 06, 2021 at 10:44:13AM -0800, Hemant Kumar wrote:
    > This patch series adds support for UCI driver. UCI driver enables userspace
    > clients to communicate to external MHI devices like modem. UCI driver probe
    > creates standard character device file nodes for userspace clients to
    > perform open, read, write, poll and release file operations. These file
    > operations call MHI core layer APIs to perform data transfer using MHI bus
    > to communicate with MHI device.
    >
    > This interface allows exposing modem control channel(s) such as QMI, MBIM,
    > or AT commands to userspace which can be used to configure the modem using
    > tools such as libqmi, ModemManager, minicom (for AT), etc over MHI. This is
    > required as there are no kernel APIs to access modem control path for device
    > configuration. Data path transporting the network payload (IP), however, is
    > routed to the Linux network via the mhi-net driver. Currently driver supports
    > QMI channel. libqmi is userspace MHI client which communicates to a QMI
    > service using QMI channel. Please refer to
    > https://www.freedesktop.org/wiki/Software/libqmi/ for additional information
    > on libqmi.
    >
    > Patch is tested using arm64 and x86 based platform.
    >

    This series looks good to me and I'd like to merge it into mhi-next. You
    shared your reviews on the previous revisions, so I'd like to get your
    opinion first.

    Thanks,
    Mani

    > V18:
    > - Updated commit text for UCI to clarify why this driver is required for QMI
    > over MHI. Also updated cover letter with same information.
    >
    > v17:
    > - Updated commit text for UCI driver by mentioning about libqmi open-source
    > userspace program that will be talking to this UCI kernel driver.
    > - UCI driver depends upon patch "bus: mhi: core: Add helper API to return number
    > of free TREs".
    >
    > v16:
    > - Removed reference of WLAN as an external MHI device in documentation and
    > cover letter.
    >
    > v15:
    > - Updated documentation related to poll and release operations.
    >
    > V14:
    > - Fixed device file node format to /dev/<mhi_dev_name> instead of
    > /dev/mhi_<mhi_dev_name> because "mhi" is already part of mhi device name.
    > For example old format: /dev/mhi_mhi0_QMI new format: /dev/mhi0_QMI.
    > - Updated MHI documentation to reflect index mhi controller name in
    > QMI usage example.
    >
    > V13:
    > - Removed LOOPBACK channel from mhi_device_id table from this patch series.
    > Pushing a new patch series to add support for LOOPBACK channel and the user
    > space test application. Also removed the description from kernel documentation.
    > - Added QMI channel to mhi_device_id table. QMI channel has existing libqmi
    > support from user space.
    > - Updated kernel Documentation for QMI channel and provided external reference
    > for libqmi.
    > - Updated device file node name by appending mhi device name only, which already
    > includes mhi controller device name.
    >
    > V12:
    > - Added loopback test driver under selftest/drivers/mhi. Updated kernel
    > documentation for the usage of the loopback test application.
    > - Addressed review comments for renaming variable names, updated inline
    > comments and removed two redundant dev_dbg.
    >
    > V11:
    > - Fixed review comments for UCI documentation by expanding TLAs and rewording
    > some sentences.
    >
    > V10:
    > - Replaced mutex_lock with mutex_lock_interruptible in read() and write() file
    > ops call back.
    >
    > V9:
    > - Renamed dl_lock to dl_pending _lock and pending list to dl_pending for
    > clarity.
    > - Used read lock to protect cur_buf.
    > - Change transfer status check logic and only consider 0 and -EOVERFLOW as
    > only success.
    > - Added __int to module init function.
    > - Print channel name instead of minor number upon successful probe.
    >
    > V8:
    > - Fixed kernel test robot compilation error by changing %lu to %zu for
    > size_t.
    > - Replaced uci with UCI in Kconfig, commit text, and comments in driver
    > code.
    > - Fixed minor style related comments.
    >
    > V7:
    > - Decoupled uci device and uci channel objects. uci device is
    > associated with device file node. uci channel is associated
    > with MHI channels. uci device refers to uci channel to perform
    > MHI channel operations for device file operations like read()
    > and write(). uci device increments its reference count for
    > every open(). uci device calls mhi_uci_dev_start_chan() to start
    > the MHI channel. uci channel object is tracking number of times
    > MHI channel is referred. This allows to keep the MHI channel in
    > start state until last release() is called. After that uci channel
    > reference count goes to 0 and uci channel clean up is performed
    > which stops the MHI channel. After the last call to release() if
    > driver is removed uci reference count becomes 0 and uci object is
    > cleaned up.
    > - Use separate uci channel read and write lock to fine grain locking
    > between reader and writer.
    > - Use uci device lock to synchronize open, release and driver remove.
    > - Optimize for downlink only or uplink only UCI device.
    >
    > V6:
    > - Moved uci.c to mhi directory.
    > - Updated Kconfig to add module information.
    > - Updated Makefile to rename uci object file name as mhi_uci
    > - Removed kref for open count
    >
    > V5:
    > - Removed mhi_uci_drv structure.
    > - Used idr instead of creating global list of uci devices.
    > - Used kref instead of local ref counting for uci device and
    > open count.
    > - Removed unlikely macro.
    >
    > V4:
    > - Fix locking to protect proper struct members.
    > - Updated documentation describing uci client driver use cases.
    > - Fixed uci ref counting in mhi_uci_open for error case.
    > - Addressed style related review comments.
    >
    > V3: Added documentation for MHI UCI driver.
    >
    > V2:
    > - Added mutex lock to prevent multiple readers to access same
    > - mhi buffer which can result into use after free.
    >
    > Hemant Kumar (3):
    > bus: mhi: core: Move MHI_MAX_MTU to external header file
    > docs: Add documentation for userspace client interface
    > bus: mhi: Add userspace client interface driver
    >
    > Documentation/mhi/index.rst | 1 +
    > Documentation/mhi/uci.rst | 95 ++++++
    > drivers/bus/mhi/Kconfig | 13 +
    > drivers/bus/mhi/Makefile | 3 +
    > drivers/bus/mhi/core/internal.h | 1 -
    > drivers/bus/mhi/uci.c | 664 ++++++++++++++++++++++++++++++++++++++++
    > include/linux/mhi.h | 3 +
    > 7 files changed, 779 insertions(+), 1 deletion(-)
    > create mode 100644 Documentation/mhi/uci.rst
    > create mode 100644 drivers/bus/mhi/uci.c
    >
    > --
    > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
    > a Linux Foundation Collaborative Project
    >

    \
     
     \ /
      Last update: 2021-01-13 16:30    [W:3.810 / U:1.620 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site