[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20241123235432.821220-6-forst@pen.gy>
Date: Sun, 24 Nov 2024 00:54:32 +0100
From: Foster Snowhill <forst@....gy>
To: "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>
Cc: Georgi Valkov <gvalkov@...il.com>,
Simon Horman <horms@...nel.org>,
Oliver Neukum <oneukum@...e.com>,
netdev@...r.kernel.org,
linux-usb@...r.kernel.org
Subject: [PATCH net v3 6/6] usbnet: ipheth: document scope of NCM implementation
Clarify that the "NCM" implementation in `ipheth` is very limited, as
iOS devices aren't compatible with the CDC NCM specification in regular
tethering mode.
For a standards-compliant implementation, one shall turn to
the `cdc_ncm` module.
Signed-off-by: Foster Snowhill <forst@....gy>
---
v3:
This comment was part of the commit message for v2. With v3, given
how the patches are split up, it makes more sense to add the comment
directly in code.
v2: https://lore.kernel.org/netdev/20240912211817.1707844-1-forst@pen.gy/
No code changes. Update commit message to further clarify that
`ipheth` is not and does not aim to be a complete or spec-compliant
CDC NCM implementation.
v1: n/a
---
drivers/net/usb/ipheth.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c
index 122557b5e5a9..e906ec4b7969 100644
--- a/drivers/net/usb/ipheth.c
+++ b/drivers/net/usb/ipheth.c
@@ -218,6 +218,14 @@ static int ipheth_rcvbulk_callback_legacy(struct urb *urb)
return ipheth_consume_skb(buf, len, dev);
}
+/* In "NCM mode", the iOS device encapsulates RX (phone->computer) traffic
+ * in NCM Transfer Blocks (similarly to CDC NCM). However, unlike reverse
+ * tethering (handled by the `cdc_ncm` driver), regular tethering is not
+ * compliant with the CDC NCM spec, as the device is missing the necessary
+ * descriptors, and TX (computer->phone) traffic is not encapsulated
+ * at all. Thus `ipheth` implements a very limited subset of the spec with
+ * the sole purpose of parsing RX URBs.
+ */
static int ipheth_rcvbulk_callback_ncm(struct urb *urb)
{
struct usb_cdc_ncm_nth16 *ncmh;
--
2.45.1
Powered by blists - more mailing lists