public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next] net: usb: cdc_ncm: add Apple Mac USB-C direct networking quirk
@ 2026-04-29 17:57 Alex Cheema
  2026-05-01 14:29 ` Simon Horman
  2026-05-02  0:30 ` patchwork-bot+netdevbpf
  0 siblings, 2 replies; 3+ messages in thread
From: Alex Cheema @ 2026-04-29 17:57 UTC (permalink / raw)
  To: oliver
  Cc: bjorn, oleavr, kuba, pabeni, davem, edumazet, andrew+netdev,
	netdev, linux-usb, linux-kernel

Apple Silicon Macs expose two CDC NCM "private" data interfaces over
USB-C with VID:PID 0x05ac:0x1905 and product string "Mac". This is the
same protocol Apple already ships on iPhone (0x05ac:0x12a8) and iPad
(0x05ac:0x12ab) for RemoteXPC since iOS 17 -- both data interfaces lack
an interrupt status endpoint, so they rely on the FLAG_LINK_INTR-
conditional bind path introduced in commit 3ec8d7572a69 ("CDC-NCM: add
support for Apple's private interface").

The id_table currently has entries for iPhone and iPad but not for the
Mac. Without a match, cdc_ncm falls through to the generic CDC NCM
class-match entry, which uses the FLAG_LINK_INTR-having cdc_ncm_info
struct, so bind_common() fails on the missing status endpoint and no
netdev appears.

Add id_table entries for both interface numbers (0 and 2) of the Mac,
bound to the existing apple_private_interface_info driver_info.

Verified empirically on a Mac Studio M3 Ultra running macOS 26.5: when
a Mac is connected via USB-C, ioreg shows VID 0x05ac, PID 0x1905,
product string "Mac", with two NCM data interfaces at numbers 0 and 2.
The same PID is presented by all current Apple Silicon Mac models
(MacBook Pro/Air, Mac mini, Mac Studio across the M-series), mirroring
Apple's single-PID-per-family pattern from iPhone/iPad.

After this patch, plugging a Mac into a Linux host running the patched
kernel produces two enx... interfaces (one per data interface),
"ip -br link" lists them as UP, and standard userspace networking
(DHCP, NetworkManager shared mode, etc.) works without any modprobe
overrides or out-of-tree modules.

Signed-off-by: Alex Cheema <alex@exolabs.net>
---
 drivers/net/usb/cdc_ncm.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index bb9929727eb9..0223a172851e 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -2012,6 +2012,14 @@ static const struct usb_device_id cdc_devs[] = {
 		.driver_info = (unsigned long)&apple_private_interface_info,
 	},
 
+	/* Mac */
+	{ USB_DEVICE_INTERFACE_NUMBER(0x05ac, 0x1905, 0),
+		.driver_info = (unsigned long)&apple_private_interface_info,
+	},
+	{ USB_DEVICE_INTERFACE_NUMBER(0x05ac, 0x1905, 2),
+		.driver_info = (unsigned long)&apple_private_interface_info,
+	},
+
 	/* Ericsson MBM devices like F5521gw */
 	{ .match_flags = USB_DEVICE_ID_MATCH_INT_INFO
 		| USB_DEVICE_ID_MATCH_VENDOR,
-- 
2.47.1


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

* Re: [PATCH net-next] net: usb: cdc_ncm: add Apple Mac USB-C direct networking quirk
  2026-04-29 17:57 [PATCH net-next] net: usb: cdc_ncm: add Apple Mac USB-C direct networking quirk Alex Cheema
@ 2026-05-01 14:29 ` Simon Horman
  2026-05-02  0:30 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 3+ messages in thread
From: Simon Horman @ 2026-05-01 14:29 UTC (permalink / raw)
  To: Alex Cheema
  Cc: oliver, bjorn, oleavr, kuba, pabeni, davem, edumazet,
	andrew+netdev, netdev, linux-usb, linux-kernel

On Wed, Apr 29, 2026 at 06:57:39PM +0100, Alex Cheema wrote:
> Apple Silicon Macs expose two CDC NCM "private" data interfaces over
> USB-C with VID:PID 0x05ac:0x1905 and product string "Mac". This is the
> same protocol Apple already ships on iPhone (0x05ac:0x12a8) and iPad
> (0x05ac:0x12ab) for RemoteXPC since iOS 17 -- both data interfaces lack
> an interrupt status endpoint, so they rely on the FLAG_LINK_INTR-
> conditional bind path introduced in commit 3ec8d7572a69 ("CDC-NCM: add
> support for Apple's private interface").
> 
> The id_table currently has entries for iPhone and iPad but not for the
> Mac. Without a match, cdc_ncm falls through to the generic CDC NCM
> class-match entry, which uses the FLAG_LINK_INTR-having cdc_ncm_info
> struct, so bind_common() fails on the missing status endpoint and no
> netdev appears.
> 
> Add id_table entries for both interface numbers (0 and 2) of the Mac,
> bound to the existing apple_private_interface_info driver_info.
> 
> Verified empirically on a Mac Studio M3 Ultra running macOS 26.5: when
> a Mac is connected via USB-C, ioreg shows VID 0x05ac, PID 0x1905,
> product string "Mac", with two NCM data interfaces at numbers 0 and 2.
> The same PID is presented by all current Apple Silicon Mac models
> (MacBook Pro/Air, Mac mini, Mac Studio across the M-series), mirroring
> Apple's single-PID-per-family pattern from iPhone/iPad.
> 
> After this patch, plugging a Mac into a Linux host running the patched
> kernel produces two enx... interfaces (one per data interface),
> "ip -br link" lists them as UP, and standard userspace networking
> (DHCP, NetworkManager shared mode, etc.) works without any modprobe
> overrides or out-of-tree modules.
> 
> Signed-off-by: Alex Cheema <alex@exolabs.net>

Reviewed-by: Simon Horman <horms@kernel.org>


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

* Re: [PATCH net-next] net: usb: cdc_ncm: add Apple Mac USB-C direct networking quirk
  2026-04-29 17:57 [PATCH net-next] net: usb: cdc_ncm: add Apple Mac USB-C direct networking quirk Alex Cheema
  2026-05-01 14:29 ` Simon Horman
@ 2026-05-02  0:30 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-05-02  0:30 UTC (permalink / raw)
  To: Alex Cheema
  Cc: oliver, bjorn, oleavr, kuba, pabeni, davem, edumazet,
	andrew+netdev, netdev, linux-usb, linux-kernel

Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Wed, 29 Apr 2026 18:57:39 +0100 you wrote:
> Apple Silicon Macs expose two CDC NCM "private" data interfaces over
> USB-C with VID:PID 0x05ac:0x1905 and product string "Mac". This is the
> same protocol Apple already ships on iPhone (0x05ac:0x12a8) and iPad
> (0x05ac:0x12ab) for RemoteXPC since iOS 17 -- both data interfaces lack
> an interrupt status endpoint, so they rely on the FLAG_LINK_INTR-
> conditional bind path introduced in commit 3ec8d7572a69 ("CDC-NCM: add
> support for Apple's private interface").
> 
> [...]

Here is the summary with links:
  - [net-next] net: usb: cdc_ncm: add Apple Mac USB-C direct networking quirk
    https://git.kernel.org/netdev/net/c/a5148bc2fa27

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

end of thread, other threads:[~2026-05-02  0:30 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-29 17:57 [PATCH net-next] net: usb: cdc_ncm: add Apple Mac USB-C direct networking quirk Alex Cheema
2026-05-01 14:29 ` Simon Horman
2026-05-02  0:30 ` patchwork-bot+netdevbpf

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