From: Michal Pecio <michal.pecio@gmail.com>
To: Oliver Neukum <oneukum@suse.com>
Cc: Alan Stern <stern@rowland.harvard.edu>,
yicongsrfy@163.com, andrew+netdev@lunn.ch, davem@davemloft.net,
edumazet@google.com, kuba@kernel.org, linux-usb@vger.kernel.org,
netdev@vger.kernel.org, oliver@neukum.org, pabeni@redhat.com
Subject: Re: [PATCH net v5 2/3] net: usb: ax88179_178a: add USB device driver for config selection
Date: Mon, 20 Oct 2025 17:59:21 +0200 [thread overview]
Message-ID: <20251020175921.37f35e5a.michal.pecio@gmail.com> (raw)
In-Reply-To: <2fae9966-5e3a-488b-8ab5-51d46488e097@suse.com>
On Mon, 20 Oct 2025 11:59:06 +0200, Oliver Neukum wrote:
> On 18.10.25 17:21, Michal Pecio wrote:
>
> > index e85105939af8..1d2c5ebc81ab 100644
> > --- a/include/linux/usb.h
> > +++ b/include/linux/usb.h
> > @@ -1202,6 +1202,8 @@ extern ssize_t usb_show_dynids(struct usb_dynids *dynids, char *buf);
> > * @post_reset: Called by usb_reset_device() after the device
> > * has been reset
> > * @shutdown: Called at shut-down time to quiesce the device.
> > + * @preferred: Check if this driver is preferred over generic class drivers
> > + * applicable to the device. May probe device with control transfers.
> > * @id_table: USB drivers use ID table to support hotplugging.
> > * Export this with MODULE_DEVICE_TABLE(usb,...). This must be set
> > * or your driver's probe function will never get called.
> > @@ -1255,6 +1257,8 @@ struct usb_driver {
> >
> > void (*shutdown)(struct usb_interface *intf);
> >
> > + bool (*preferred)(struct usb_device *udev);
>
> I am sorry, but this is a bit clunky. If you really want to
> introduce such a method, why not just return the preferred
> configuration?
Because I wanted to introduce exactly such a method, rather than one
which returns the configuration ;)
The point was to pull configuration selection *out* of those drivers.
They already do it, and it makes them copy-paste the same trivial loop
which iterates through configs until it finds the vendor interface.
The idea is to have a maximally simple check for a known-good vendor
interface driver before making unfounded assumptions like:
/* From the remaining configs, choose the first one whose
* first interface is for a non-vendor-specific class.
* Reason: Linux is more likely to have a class driver
* than a vendor-specific driver. */
Unfortunately, that's only half the battle. The other half is forcing
configuration reevaluation when such a driver is loaded. I hoped it
would be trivial, but so far it costs me a new bus_for_each_device()
and a whole nontrivial function, while cfgselectors have it for free.
I got my PoC up to feature parity with r8152-cfgselector and it adds
about as much code as it removes (uless more cfgselectors are added).
And of course it's dead weight for those with USB but not USBNET.
drivers/net/usb/r8152.c | 69 ++++++++-------------------------------------------------------------
drivers/usb/core/driver.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
drivers/usb/core/generic.c | 26 ++++++++++++++++----------
include/linux/usb.h | 11 ++++++-----
4 files changed, 78 insertions(+), 76 deletions(-)
So not sure if it's worth pursuing.
Regards,
Michal
next prev parent reply other threads:[~2025-10-20 15:59 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-11 7:53 [PATCH net v5 0/3] ax88179 driver optimization yicongsrfy
2025-10-11 7:53 ` [PATCH net v5 1/3] net: usb: support quirks in cdc_ncm yicongsrfy
2025-10-11 7:53 ` [PATCH net v5 2/3] net: usb: ax88179_178a: add USB device driver for config selection yicongsrfy
2025-10-13 9:07 ` Michal Pecio
2025-10-17 2:42 ` yicongsrfy
2025-10-17 13:10 ` Alan Stern
2025-10-17 17:15 ` Michal Pecio
2025-10-18 2:27 ` Alan Stern
2025-10-18 15:21 ` Michal Pecio
2025-10-18 15:36 ` Alan Stern
2025-10-18 15:56 ` Michal Pecio
2025-10-20 15:56 ` Alan Stern
2025-10-20 16:23 ` Michal Pecio
2025-10-20 16:59 ` Alan Stern
2025-10-21 9:13 ` Oliver Neukum
2025-10-21 16:33 ` Alan Stern
2025-10-22 7:58 ` Oliver Neukum
2025-10-22 14:28 ` Alan Stern
2025-10-21 2:29 ` Yi Cong
2025-10-21 2:59 ` Alan Stern
2025-10-21 6:26 ` Yi Cong
2025-10-21 16:26 ` Alan Stern
2025-10-20 9:59 ` Oliver Neukum
2025-10-20 10:48 ` Greg KH
2025-10-20 15:59 ` Michal Pecio [this message]
2025-10-21 9:02 ` Oliver Neukum
2025-10-20 10:27 ` Oliver Neukum
2025-10-11 7:53 ` [PATCH net v5 3/3] Revert "net: usb: ax88179_178a: Bind only to vendor-specific interface" yicongsrfy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251020175921.37f35e5a.michal.pecio@gmail.com \
--to=michal.pecio@gmail.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=oliver@neukum.org \
--cc=oneukum@suse.com \
--cc=pabeni@redhat.com \
--cc=stern@rowland.harvard.edu \
--cc=yicongsrfy@163.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.