From nobody Tue Jun 16 19:35:41 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF3393B19A6 for ; Wed, 29 Apr 2026 17:57:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777485472; cv=none; b=GKKatzT/mWrikQYwISHcF1DU/ojZV/wyICGzTpQc43f48krXWWA00ho6KBgQ96VuiwEkN3UldY1dBUP5stFMtwKywaZ+CCckJaGod/b7BrVtHMAlCulaTSCiptXfgqweDWKEo8rM1W/UqmAYhMKfw1VZdN44avGfdK4NHrxh9qY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777485472; c=relaxed/simple; bh=dYrR3MI17KQdoNiO5C9/uKZ1P7EdorGQm+mkjzWQP2M=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=ZKgnuBUOMzEUjwrdO5uVnHaktZhAsJMV3+uCWeNrL1YttG1M/15QFRP6gXm1RqsmH+FdjNVeE6aLEF25eSLimq6w/cpYpBEc2teS1Y1lZqy1PX0fOApAialnB37IYg560gACEuYDbeDCUx5nu+wTgmzH/Sm+JnZ0PDSc1PVtT/U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=exolabs.net; spf=pass smtp.mailfrom=exolabs.net; dkim=pass (2048-bit key) header.d=exolabs.net header.i=@exolabs.net header.b=esMDdbL9; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=exolabs.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=exolabs.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=exolabs.net header.i=@exolabs.net header.b="esMDdbL9" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-4891cd41959so225635e9.3 for ; Wed, 29 Apr 2026 10:57:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=exolabs.net; s=google; t=1777485469; x=1778090269; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=Zmj87Zm4VqL2ScecOeVCpF59dcRWY4w4mExIZWF3a7c=; b=esMDdbL9UPUGz6fKH/V4+1UdwFu5qGMGQObEd2diXP/KVLZ9tZtQV1hCU7O1ad1A1k j1XYYtVgJPHDaZYa6kP4m0M5s97RvB0WrX3QP0VZ4m6mEUqmzOyLYQHv10qNwCcJ3E/c qHU46KLAjq6xQV3JuEGXvndbCeMY0fA3GLV88MatJV1YtMlt2cKmXOAgVGJ3r7I4rKKe aVdkehck8Qdiet1CxdkAyzFLStyVz65F7+c1K2UcWZUJ24lHGxwThj2QnT6NFSZn4ESp nUfEh8JuNvKsQhGKnyf8bZH3c9KoJYG8GGaAWQ6qP6p+WrXWC0gSfcFa2P/T+F8hDG4O nP7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777485469; x=1778090269; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Zmj87Zm4VqL2ScecOeVCpF59dcRWY4w4mExIZWF3a7c=; b=X3NfEbrV8eLHeVtp2dJNKbRkA8Mo5OcATnATh2ohAAGrSlPeldgigm4/kGzMgm0USp Tzqv9vQT+O/0bGV6P2G6rsIIf6G3uaG8+mSSaRnZjNO2xhVtRtz3A81UV6cbYqcRaXCF GLdaA3f+rRL0Hic3UcMJz/+qzZqVviegqae8o+UBVpuVsSB3G9cyH1KmpZyee7bQ/+EO 6NKTM5CMDFgTw5Eun8MgUkG6WCGOSdztt1wFhirzlj7X08qD2jNm26Fqa6HNp9d7zfjP 3Jn+t/7w+8GeD9y+0633cycGYN0rj0CvT3+GA/uAGjBp63GNJO9cQFAgDbQ8DtiaPAcg +xYg== X-Forwarded-Encrypted: i=1; AFNElJ/CKzZVCHo+nmAGPMtVZbepD9XSDqBA/mogdeQ8qk0ABXOTM8HwOgYKo/Mhii60H3g6SgQDt8qxtQ7COVo=@vger.kernel.org X-Gm-Message-State: AOJu0YwD7o84TbrZc5h5yvsNIl/cEC+gqo8vtn1Y1v49fk5OCDfORe2W QuCrf3TzR3DvMyNh4LxpIhwXeUAvi+ZXk2VdnaDIOGh7YxS502QV0yiroT2Hq0k4fg4= X-Gm-Gg: AeBDievTvsOz81iwWWo5fqX2TBGlfk4O8pfbowGXjgHhiOH4KmROeWAqwr/vwMvRLX9 z41xmke0v3lhqiShHNgrZnOOk9Zb6ZO4HvtoteoCJhfnpOahpOmaIEYEVGRkcjWe7r6TSZX1Bi8 ulwihP/RDKNabD/cc7RMsey5Bta64hS+3Q7FE4k8YJ+SFtTLoPsub4Zn3fF2y346O7BysbKPgyX J9SWGJ0cqigXU6I1KxtU7c4tqk+rAWw4W+qQl47Dg0lNPHWK6BaNpw5fXLoI0PVL2QCVAZoU76U HrAL4DFiO8d9VX4C55MalXP8yj+2HB7zl+12HOnTBlQSx43ZuseYaUsNoFeDTMP9zGsYQfgSImV xz/d33Cu8U+HZrP3fcYrgY+O+stzUv2DBHodIkPbTeG/uqxXL+xZ5tu1OZc8CjlxztFN4vmn/MN 2R5/oWNbeFyQVjJsKcYD5LWeHd6yQGkck63XTO63HJj79a7fBRlp+0tKebW8mfiECbsbp48OFp X-Received: by 2002:a05:600c:a11:b0:489:1a3a:9e45 with SMTP id 5b1f17b1804b1-48a77b1b405mr144142895e9.26.1777485469018; Wed, 29 Apr 2026 10:57:49 -0700 (PDT) Received: from localhost ([62.64.187.118]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a81ed6bafsm11585895e9.2.2026.04.29.10.57.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 10:57:48 -0700 (PDT) From: Alex Cheema To: oliver@neukum.org Cc: bjorn@mork.no, oleavr@frida.re, kuba@kernel.org, pabeni@redhat.com, davem@davemloft.net, edumazet@google.com, andrew+netdev@lunn.ch, netdev@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next] net: usb: cdc_ncm: add Apple Mac USB-C direct networking quirk Date: Wed, 29 Apr 2026 18:57:39 +0100 Message-ID: <20260429175739.34426-1-alex@exolabs.net> X-Mailer: git-send-email 2.47.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Simon Horman --- 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[] =3D { .driver_info =3D (unsigned long)&apple_private_interface_info, }, =20 + /* Mac */ + { USB_DEVICE_INTERFACE_NUMBER(0x05ac, 0x1905, 0), + .driver_info =3D (unsigned long)&apple_private_interface_info, + }, + { USB_DEVICE_INTERFACE_NUMBER(0x05ac, 0x1905, 2), + .driver_info =3D (unsigned long)&apple_private_interface_info, + }, + /* Ericsson MBM devices like F5521gw */ { .match_flags =3D USB_DEVICE_ID_MATCH_INT_INFO | USB_DEVICE_ID_MATCH_VENDOR, --=20 2.47.1