Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp3669707iog; Tue, 21 Jun 2022 03:36:50 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uXdXm2Nhl3+w3DCWH4oINyi4NeeLiobtjqlCKasct3SBmUMW+bGH+pxs+/Dfzk23Mz7Ttb X-Received: by 2002:a17:907:7745:b0:6f3:674a:339 with SMTP id kx5-20020a170907774500b006f3674a0339mr25313668ejc.207.1655807809918; Tue, 21 Jun 2022 03:36:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655807809; cv=none; d=google.com; s=arc-20160816; b=n2+6noTkD8u1C1YeaGMaXeW2ACxEndgTZhGC7jFFidp80Z++JJ5i+lTw0LAIqKXoF8 pN0CEi4idvtliXLdDrQILHRlchKxkwAVaAKt9EmIItTudhF8S6LnyvNoEZbXH20tjsJB v1ZunMRRtR569MiOAGr3uc10W803b7QU2EtvzuIWP46WLCPdyJiMB6UIhU8sCvB2+1nE Ex83QcvS3u6qoHzqKCTdWxX9ofJTdR70SetjZf8HF7sz7vzTGSuFydo3G2h8r/m70di5 t0NibxxyAEssSzXFouZHVjIEVv879fhxfjCjlowfeJX3UU2Nn/1b04g/OQyRvB2Mcxrf 3ZBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=nNa3kQOrgZrQIVoIIP/SDTew2KFzW4Z1Mlr3bulLSAg=; b=RlAJuDo2j6P/JVq49/oJp92pm8w9iXWywrXKjZYgK5JhJcBEGm1vaGjjczLpf/B6L4 6ZVEZC1zsvk6RoNX1BFT4yjSRTMCEefnVMRciv/YLOpCoCIiw6S7lz3J7BNhkCjj7CnL 1Y0Ic8sPqfYwbDDR7tr40+2qB0EtUm6aYNUG22CwqPR0lQjZsQpfcZYfq8qWVWUS3BVS t9eM5MrDmPqFBol+58fOSkPW5hE8H2yB6RyNpW1uXTH00G2IkTSq+DXTNS6Smz0kxplg P2VnowIVbQfYRCNvvFDFADS/55Aayv8WzWDhA5kAPigsK+P0QzJ0CJnPNreYZ1nbO5Ua KLpw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marcan.st header.s=default header.b=JrFJGsd3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=marcan.st Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dm15-20020a170907948f00b007122fe7f49csi10328693ejc.424.2022.06.21.03.36.23; Tue, 21 Jun 2022 03:36:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@marcan.st header.s=default header.b=JrFJGsd3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=marcan.st Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346667AbiFUKWK (ORCPT + 99 others); Tue, 21 Jun 2022 06:22:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54846 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229497AbiFUKWJ (ORCPT ); Tue, 21 Jun 2022 06:22:09 -0400 Received: from mail.marcansoft.com (marcansoft.com [212.63.210.85]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 670F42872D for ; Tue, 21 Jun 2022 03:22:08 -0700 (PDT) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hector@marcansoft.com) by mail.marcansoft.com (Postfix) with ESMTPSA id 2E632419C2; Tue, 21 Jun 2022 10:22:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=marcan.st; s=default; t=1655806926; bh=pafEXRxpxS9FRvzCx01u+dGd5pnrVKa0D5+ebH8kZzo=; h=From:To:Cc:Subject:Date; b=JrFJGsd3j2Nf1OJEpB8OHGAWfJUUxhFV7TMD8md4C97koAS9rDShp9YO9dPj1IicB dmiL5adAhcHxqtE8txC1E8Pbt3XZW+/mF0F52oD2XMelDPnvdQENCibQldiY/khRfi z1gEFXteqAoGlOzPG22wlyLh+HkcZmCQFdbdXcnMfBP5+i1Mi270nsD1iZ1TqzG7dt XXtMRoyoRPhWy235cuFcC/IilLQ5b/axImPiVxNJ5VJs5RhWYFenYG0wxLBU08FSHl wiqNxkpY6Jzu1PTLZLn4sNXuPoY1ToU4JtaMZYnIiN1PVgzJ2BleZ9nBl7N9SQRN8a +8aJYzMa0hbOA== From: Hector Martin To: Jacky Chou , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: linux-usb@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Hector Martin Subject: [PATCH v3] net: usb: ax88179_178a: Bind only to vendor-specific interface Date: Tue, 21 Jun 2022 19:21:50 +0900 Message-Id: <20220621102150.202475-1-marcan@marcan.st> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The Anker PowerExpand USB-C to Gigabit Ethernet adapter uses this chipset, but exposes CDC Ethernet configurations as well as the vendor specific one. This driver ends up binding first to both CDC interfaces, tries to instantiate two Ethernet interfaces talking to the same device, and the result is a nice fireworks show. Change all the ID matches to specifically match the vendor-specific interface. By default the device comes up in CDC mode and is bound by that driver (which works fine); users may switch it to the vendor interface using sysfs to set bConfigurationValue, at which point the device actually goes through a reconnect cycle and comes back as a vendor specific only device, and then this driver binds and works too. The affected device uses VID/PID 0b95:1790, but we might as well change all of them for good measure, since there is no good reason for this driver to bind to standard CDC Ethernet interfaces. v3: Added VID/PID info to commit message Signed-off-by: Hector Martin --- drivers/net/usb/ax88179_178a.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c index e2fa56b92685..7c7c2f31d9f1 100644 --- a/drivers/net/usb/ax88179_178a.c +++ b/drivers/net/usb/ax88179_178a.c @@ -1914,55 +1914,55 @@ static const struct driver_info at_umc2000sp_info = { static const struct usb_device_id products[] = { { /* ASIX AX88179 10/100/1000 */ - USB_DEVICE(0x0b95, 0x1790), + USB_DEVICE_AND_INTERFACE_INFO(0x0b95, 0x1790, 0xff, 0xff, 0), .driver_info = (unsigned long)&ax88179_info, }, { /* ASIX AX88178A 10/100/1000 */ - USB_DEVICE(0x0b95, 0x178a), + USB_DEVICE_AND_INTERFACE_INFO(0x0b95, 0x178a, 0xff, 0xff, 0), .driver_info = (unsigned long)&ax88178a_info, }, { /* Cypress GX3 SuperSpeed to Gigabit Ethernet Bridge Controller */ - USB_DEVICE(0x04b4, 0x3610), + USB_DEVICE_AND_INTERFACE_INFO(0x04b4, 0x3610, 0xff, 0xff, 0), .driver_info = (unsigned long)&cypress_GX3_info, }, { /* D-Link DUB-1312 USB 3.0 to Gigabit Ethernet Adapter */ - USB_DEVICE(0x2001, 0x4a00), + USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x4a00, 0xff, 0xff, 0), .driver_info = (unsigned long)&dlink_dub1312_info, }, { /* Sitecom USB 3.0 to Gigabit Adapter */ - USB_DEVICE(0x0df6, 0x0072), + USB_DEVICE_AND_INTERFACE_INFO(0x0df6, 0x0072, 0xff, 0xff, 0), .driver_info = (unsigned long)&sitecom_info, }, { /* Samsung USB Ethernet Adapter */ - USB_DEVICE(0x04e8, 0xa100), + USB_DEVICE_AND_INTERFACE_INFO(0x04e8, 0xa100, 0xff, 0xff, 0), .driver_info = (unsigned long)&samsung_info, }, { /* Lenovo OneLinkDock Gigabit LAN */ - USB_DEVICE(0x17ef, 0x304b), + USB_DEVICE_AND_INTERFACE_INFO(0x17ef, 0x304b, 0xff, 0xff, 0), .driver_info = (unsigned long)&lenovo_info, }, { /* Belkin B2B128 USB 3.0 Hub + Gigabit Ethernet Adapter */ - USB_DEVICE(0x050d, 0x0128), + USB_DEVICE_AND_INTERFACE_INFO(0x050d, 0x0128, 0xff, 0xff, 0), .driver_info = (unsigned long)&belkin_info, }, { /* Toshiba USB 3.0 GBit Ethernet Adapter */ - USB_DEVICE(0x0930, 0x0a13), + USB_DEVICE_AND_INTERFACE_INFO(0x0930, 0x0a13, 0xff, 0xff, 0), .driver_info = (unsigned long)&toshiba_info, }, { /* Magic Control Technology U3-A9003 USB 3.0 Gigabit Ethernet Adapter */ - USB_DEVICE(0x0711, 0x0179), + USB_DEVICE_AND_INTERFACE_INFO(0x0711, 0x0179, 0xff, 0xff, 0), .driver_info = (unsigned long)&mct_info, }, { /* Allied Telesis AT-UMC2000 USB 3.0/USB 3.1 Gen 1 to Gigabit Ethernet Adapter */ - USB_DEVICE(0x07c9, 0x000e), + USB_DEVICE_AND_INTERFACE_INFO(0x07c9, 0x000e, 0xff, 0xff, 0), .driver_info = (unsigned long)&at_umc2000_info, }, { /* Allied Telesis AT-UMC200 USB 3.0/USB 3.1 Gen 1 to Fast Ethernet Adapter */ - USB_DEVICE(0x07c9, 0x000f), + USB_DEVICE_AND_INTERFACE_INFO(0x07c9, 0x000f, 0xff, 0xff, 0), .driver_info = (unsigned long)&at_umc200_info, }, { /* Allied Telesis AT-UMC2000/SP USB 3.0/USB 3.1 Gen 1 to Gigabit Ethernet Adapter */ - USB_DEVICE(0x07c9, 0x0010), + USB_DEVICE_AND_INTERFACE_INFO(0x07c9, 0x0010, 0xff, 0xff, 0), .driver_info = (unsigned long)&at_umc2000sp_info, }, { }, -- 2.35.1