From: Peter Hunt <peter.hunt@opengear.com>
To: loic.poulain@oss.qualcomm.com, mani@kernel.org, ryazanov.s.a@gmail.com
Cc: johannes@sipsolutions.net, netdev@vger.kernel.org,
mhi@lists.linux.dev, linux-arm-msm@vger.kernel.org,
linux-kernel@vger.kernel.org,
Peter Hunt <peter.hunt@opengear.com>
Subject: [PATCH net-next v5 0/3] net: wwan: support DTR/RTS on AT ports via MHI IP_CTRL
Date: Thu, 20 Aug 2026 08:49:24 +1000 [thread overview]
Message-ID: <20260819224927.2274790-1-peter.hunt@opengear.com> (raw)
Qualcomm/Sierra SDX55/SDX65 modems (e.g. EM9291) withhold unsolicited AT
result codes until the host asserts DTR. The in-tree mhi_wwan_ctrl driver
exposed AT ports but never signalled DTR, so URCs never reached userspace.
Patch 1 extends the wwan core with an optional ->dtr_rts(port, mdmbits) port
op. The TIOCM bitmask state is tracked entirely in the wwan core; drivers
receive the full bitmask so they can drive DTR and RTS independently. The
core raises DTR/RTS on first open of any AT port whose driver implements
->dtr_rts and drops them on last close, mirroring TTY semantics. In the
ioctl path mdmbits is re-read under data_lock inside ops_lock so the value
passed always reflects the committed state and concurrent ioctls are
correctly ordered. wwan_remove_port() also de-asserts on hot-unplug.
Patch 2 enables the IP_CTRL MHI channel in the Sierra PCI table so that
the IP_CTRL driver (patch 3) is actually bound on those controllers.
Patch 3 adds a second mhi_driver that binds the IP_CTRL channel and
registers a ->dtr_rts op so that the wwan core's open/close DTR raise/drop
and userspace TIOCMSET calls both reach the modem. A single recycled sink
buffer keeps the IP_CTRL DL ring live so the modem's transmit path does not
stall. The existing AT/QMI/MBIM data path is untouched.
v4: https://lore.kernel.org/netdev/20260816121705.858013-1-peter.hunt@opengear.com/
v5:
- Change ->dtr_rts from bool to unsigned int mdmbits (patch 1 + 3): DTR and
RTS are now driven independently; fixes RTS inversion when TIOCMBIS/BIC
changed RTS with DTR in the opposite state
- Re-read mdmbits inside ops_lock in the ioctl path (patch 1): closes a
concurrent-ioctl ordering race where two racing TIOCM ioctls could leave
the modem line state inconsistent with TIOCMGET
- Add ->dtr_rts(port, 0) call in wwan_remove_port() (patch 1): ensures
DTR/RTS are de-asserted when a port is removed while an fd is still open
- Update kernel-doc to note ->dtr_rts is AT-only and describe mdmbits (patch 1)
- Pre-queue RX sink buffer in mhi_wwan_dtr_probe(), requeue in dl_xfer_cb
(patch 3): prevents IP_CTRL DL ring from running empty and stalling the
modem MHI transmit path
Peter Hunt (3):
net: wwan: core: propagate modem control signals to port drivers
bus: mhi: host: pci_generic: enumerate IP_CTRL channel for Sierra
EM919x/EM929x
net: wwan: mhi_wwan_ctrl: drive DTR/RTS via the IP_CTRL channel
drivers/bus/mhi/host/pci_generic.c | 2 +
drivers/net/wwan/mhi_wwan_ctrl.c | 190 ++++++++++++++++++++++++++++-
drivers/net/wwan/wwan_core.c | 40 +++++-
include/linux/wwan.h | 3 +
4 files changed, 233 insertions(+), 2 deletions(-)
--
2.43.0
next reply other threads:[~2026-08-19 22:49 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-19 22:49 Peter Hunt [this message]
2026-08-19 22:49 ` [PATCH net-next v5 1/3] net: wwan: core: propagate modem control signals to port drivers Peter Hunt
2026-08-19 22:49 ` [PATCH net-next v5 2/3] bus: mhi: host: pci_generic: enumerate IP_CTRL channel for Sierra EM919x/EM929x Peter Hunt
2026-08-19 22:49 ` [PATCH net-next v5 3/3] net: wwan: mhi_wwan_ctrl: drive DTR/RTS via the IP_CTRL channel Peter Hunt
2026-08-20 9:17 ` [PATCH net-next v5 0/3] net: wwan: support DTR/RTS on AT ports via MHI IP_CTRL Paolo Abeni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260819224927.2274790-1-peter.hunt@opengear.com \
--to=peter.hunt@opengear.com \
--cc=johannes@sipsolutions.net \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=loic.poulain@oss.qualcomm.com \
--cc=mani@kernel.org \
--cc=mhi@lists.linux.dev \
--cc=netdev@vger.kernel.org \
--cc=ryazanov.s.a@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.