Thread (35 messages) 35 messages, 6 authors, 2025-10-13

Re: [PATCH v3 3/3] net: usb: ax88179_178a: add USB device driver for config selection

From: Oliver Neukum <oneukum@suse.com>
Date: 2025-09-29 11:20:25
Also in: linux-usb

Hi,

On 29.09.25 09:54, yicongsrfy@163.com wrote:
quoted hunk ↗ jump to hunk
From: Yi Cong <redacted>

A similar reason was raised in commit ec51fbd1b8a2 ("r8152: add USB
device driver for config selection"):
Linux prioritizes probing non-vendor-specific configurations.

Referring to the implementation of this patch, cfgselect is also
used for ax88179 to override the default configuration selection.

v2: fix warning from checkpatch

Signed-off-by: Yi Cong <redacted>
---
  drivers/net/usb/ax88179_178a.c | 70 ++++++++++++++++++++++++++++++++--
  1 file changed, 67 insertions(+), 3 deletions(-)
diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c
index 29cbe9ddd610..f2e86b9256dc 100644
--- a/drivers/net/usb/ax88179_178a.c
+++ b/drivers/net/usb/ax88179_178a.c
@@ -14,6 +14,7 @@
  #include <uapi/linux/mdio.h>
  #include <linux/mdio.h>
  
+#define MODULENAME "ax88179_178a"
  #define AX88179_PHY_ID				0x03
  #define AX_EEPROM_LEN				0x100
  #define AX88179_EEPROM_MAGIC			0x17900b95
@@ -1713,6 +1714,14 @@ static int ax88179_stop(struct usbnet *dev)
  	return 0;
  }
  
+static int ax88179_probe(struct usb_interface *intf, const struct usb_device_id *i)
+{
+	if (intf->cur_altsetting->desc.bInterfaceClass != USB_CLASS_VENDOR_SPEC)
+		return -ENODEV;
And here you need to work around the problem the
first patch in the series creates. The solution
in this case is to drop it.
quoted hunk ↗ jump to hunk
+
+	return usbnet_probe(intf, i);
+}
+
  static const struct driver_info ax88179_info = {
  	.description = "ASIX AX88179 USB 3.0 Gigabit Ethernet",
  	.bind = ax88179_bind,
@@ -1941,9 +1950,9 @@ static const struct usb_device_id products[] = {
  MODULE_DEVICE_TABLE(usb, products);
  
  static struct usb_driver ax88179_178a_driver = {
-	.name =		"ax88179_178a",
+	.name =		MODULENAME,
  	.id_table =	products,
-	.probe =	usbnet_probe,
+	.probe =	ax88179_probe,
  	.suspend =	ax88179_suspend,
  	.resume =	ax88179_resume,
  	.reset_resume =	ax88179_resume,
@@ -1952,7 +1961,62 @@ static struct usb_driver ax88179_178a_driver = {
  	.disable_hub_initiated_lpm = 1,
  };
  
-module_usb_driver(ax88179_178a_driver);
+static int ax88179_cfgselector_probe(struct usb_device *udev)
And this should run only if you match the device ID and the generic
class.

That is, if you want this approach at all. If this should o into
kernel space at all, it blongs into usbcore.

	Regards
		Oliver
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help