Netdev List
 help / color / mirror / Atom feed
* [PATCH net-next v3 0/2] Improve wwan qcdm compatibility with user-space tools
@ 2026-07-24 14:28 Daniele Palmas
  2026-07-24 14:28 ` [PATCH net-next v3 1/2] net: wwan: add minimalistic IOCTls support also to QCDM port Daniele Palmas
  2026-07-24 14:28 ` [PATCH net-next v3 2/2] net: wwan: add exclusive open mode capability to AT and QCDM ports Daniele Palmas
  0 siblings, 2 replies; 3+ messages in thread
From: Daniele Palmas @ 2026-07-24 14:28 UTC (permalink / raw)
  To: Loic Poulain, Sergey Ryazanov, Johannes Berg, Andrew Lunn,
	David Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
  Cc: netdev, Daniele Palmas

Historically, Qualcomm diagnostic port was a serial device, so user-space
tools were developed using tty specific features. One of the most common
tool is, for example, ModemManager libqcdm, available at
https://gitlab.freedesktop.org/mobile-broadband/ModemManager
which requires tcgetattr/tcsetattr and the possibility to get exclusive
device access to properly work.

The wwan qcdm is not really a tty device, but, besides the lack of tty
functions, it behaves as a standard serial Qualcomm diagnostic port, so,
as c230035c2f2f ("net: wwan: core: implement terminal ioctls for AT port"),
this series add support for terminal ioctls also for qcdm ports and
implement the exclusive open mode feature to improve compatibility with
user-space tools.

This is an incremental change which should not affect the existing tools
using wwan which do not rely on the implemented features.

V2: fixed race condition highlighted by Sashiko at
https://sashiko.dev/#/patchset/20260717081935.2071083-1-dnlplm%40gmail.com
V3: simplified patch 2 according to Loic's comment at
https://lore.kernel.org/netdev/CAFEp6-2UiSja11A6nLKqRX8A1eE=P4euEs+fbpKZxPE8fTX2QQ@mail.gmail.com/#t

Daniele Palmas (2):
  net: wwan: add minimalistic IOCTls support also to QCDM port
  net: wwan: add exclusive open mode capability to AT and QCDM ports

 drivers/net/wwan/wwan_core.c | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH net-next v3 1/2] net: wwan: add minimalistic IOCTls support also to QCDM port
  2026-07-24 14:28 [PATCH net-next v3 0/2] Improve wwan qcdm compatibility with user-space tools Daniele Palmas
@ 2026-07-24 14:28 ` Daniele Palmas
  2026-07-24 14:28 ` [PATCH net-next v3 2/2] net: wwan: add exclusive open mode capability to AT and QCDM ports Daniele Palmas
  1 sibling, 0 replies; 3+ messages in thread
From: Daniele Palmas @ 2026-07-24 14:28 UTC (permalink / raw)
  To: Loic Poulain, Sergey Ryazanov, Johannes Berg, Andrew Lunn,
	David Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
  Cc: netdev, Daniele Palmas

Upstream libqcdm requires IOCTLs support to work, so add the current
AT minimalistic support also to the QCDM port.

Reviewed-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
---
 drivers/net/wwan/wwan_core.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wwan/wwan_core.c b/drivers/net/wwan/wwan_core.c
index ccce2ad74128..8168239e52c3 100644
--- a/drivers/net/wwan/wwan_core.c
+++ b/drivers/net/wwan/wwan_core.c
@@ -1046,7 +1046,8 @@ static long wwan_port_fops_ioctl(struct file *filp, unsigned int cmd,
 	struct wwan_port *port = filp->private_data;
 	int res;
 
-	if (port->type == WWAN_PORT_AT) {	/* AT port specific IOCTLs */
+	if (port->type == WWAN_PORT_AT || port->type == WWAN_PORT_QCDM) {
+		/* AT and QCDM port specific IOCTLs */
 		res = wwan_port_fops_at_ioctl(port, cmd, arg);
 		if (res != -ENOIOCTLCMD)
 			return res;
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH net-next v3 2/2] net: wwan: add exclusive open mode capability to AT and QCDM ports
  2026-07-24 14:28 [PATCH net-next v3 0/2] Improve wwan qcdm compatibility with user-space tools Daniele Palmas
  2026-07-24 14:28 ` [PATCH net-next v3 1/2] net: wwan: add minimalistic IOCTls support also to QCDM port Daniele Palmas
@ 2026-07-24 14:28 ` Daniele Palmas
  1 sibling, 0 replies; 3+ messages in thread
From: Daniele Palmas @ 2026-07-24 14:28 UTC (permalink / raw)
  To: Loic Poulain, Sergey Ryazanov, Johannes Berg, Andrew Lunn,
	David Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
  Cc: netdev, Daniele Palmas

Add exclusive open mode capability to AT and QCDM ports to improve
compatibility with user-space tools using the Qualcomm diagnostic
device (e.g. libqcdm).

Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
---
 drivers/net/wwan/wwan_core.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/drivers/net/wwan/wwan_core.c b/drivers/net/wwan/wwan_core.c
index 8168239e52c3..ffbcf11e4e68 100644
--- a/drivers/net/wwan/wwan_core.c
+++ b/drivers/net/wwan/wwan_core.c
@@ -42,6 +42,7 @@ static struct dentry *wwan_debugfs_dir;
 
 /* WWAN port flags */
 #define WWAN_PORT_TX_OFF	0
+#define WWAN_PORT_EXCLUSIVE	1
 
 /**
  * struct wwan_device - The structure that defines a WWAN device
@@ -748,6 +749,12 @@ static int wwan_port_op_start(struct wwan_port *port)
 		goto out_unlock;
 	}
 
+	if (test_bit(WWAN_PORT_EXCLUSIVE, &port->flags) &&
+	    !capable(CAP_SYS_ADMIN)) {
+		ret = -EBUSY;
+		goto out_unlock;
+	}
+
 	/* If port is already started, don't start again */
 	if (!port->start_count)
 		ret = port->ops->start(port);
@@ -769,6 +776,7 @@ static void wwan_port_op_stop(struct wwan_port *port)
 		if (port->ops)
 			port->ops->stop(port);
 		skb_queue_purge(&port->rxq);
+		clear_bit(WWAN_PORT_EXCLUSIVE, &port->flags);
 	}
 	mutex_unlock(&port->ops_lock);
 }
@@ -1031,6 +1039,22 @@ static long wwan_port_fops_at_ioctl(struct wwan_port *port, unsigned int cmd,
 		break;
 	}
 
+	case TIOCEXCL:
+		set_bit(WWAN_PORT_EXCLUSIVE, &port->flags);
+		break;
+
+	case TIOCNXCL:
+		clear_bit(WWAN_PORT_EXCLUSIVE, &port->flags);
+		break;
+
+	case TIOCGEXCL:
+	{
+		int excl = test_bit(WWAN_PORT_EXCLUSIVE, &port->flags);
+
+		ret = put_user(excl, (int __user *)arg);
+		break;
+	}
+
 	default:
 		ret = -ENOIOCTLCMD;
 	}
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-07-24 14:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-24 14:28 [PATCH net-next v3 0/2] Improve wwan qcdm compatibility with user-space tools Daniele Palmas
2026-07-24 14:28 ` [PATCH net-next v3 1/2] net: wwan: add minimalistic IOCTls support also to QCDM port Daniele Palmas
2026-07-24 14:28 ` [PATCH net-next v3 2/2] net: wwan: add exclusive open mode capability to AT and QCDM ports Daniele Palmas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox