* [PATCH v4] net: usb: r8152: Add in new Devices that are supported for Mac-Passthru
@ 2022-05-13 12:49 David Ober
2022-05-13 23:55 ` Jakub Kicinski
0 siblings, 1 reply; 2+ messages in thread
From: David Ober @ 2022-05-13 12:49 UTC (permalink / raw)
To: linux-usb, netdev, davem, hayeswang, aaron.ma
Cc: markpearson, dober, David Ober
Lenovo Thunderbolt 4 Dock, and other Lenovo USB Docks are using the
original Realtek USB ethernet Vendor and Product IDs
If the Network device is Realtek verify that it is on a Lenovo USB hub
before enabling the passthru feature
This also adds in the device IDs for the Lenovo USB Dongle and one other
USB-C dock
V2 fix formating of code
V3 remove Generic define for Device ID 0x8153 and change it to use value
V4 rearrange defines and case statement to put them in better order
Signed-off-by: David Ober <dober6023@gmail.com>
---
drivers/net/usb/r8152.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index c2da3438387c..d8f2d4b85db4 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -771,7 +771,9 @@ enum rtl8152_flags {
};
#define DEVICE_ID_THINKPAD_THUNDERBOLT3_DOCK_GEN2 0x3082
+#define DEVICE_ID_THINKPAD_USB_C_DONGLE 0x720c
#define DEVICE_ID_THINKPAD_USB_C_DOCK_GEN2 0xa387
+#define DEVICE_ID_THINKPAD_USB_C_DOCK_GEN3 0x3062
struct tally_counter {
__le64 tx_packets;
@@ -9646,6 +9648,14 @@ static int rtl8152_probe(struct usb_interface *intf,
switch (le16_to_cpu(udev->descriptor.idProduct)) {
case DEVICE_ID_THINKPAD_THUNDERBOLT3_DOCK_GEN2:
case DEVICE_ID_THINKPAD_USB_C_DOCK_GEN2:
+ case DEVICE_ID_THINKPAD_USB_C_DOCK_GEN3:
+ case DEVICE_ID_THINKPAD_USB_C_DONGLE:
+ tp->lenovo_macpassthru = 1;
+ }
+ } else if ((le16_to_cpu(udev->descriptor.idVendor) == VENDOR_ID_REALTEK) &&
+ (le16_to_cpu(udev->parent->descriptor.idVendor) == VENDOR_ID_LENOVO)) {
+ switch (le16_to_cpu(udev->descriptor.idProduct)) {
+ case 0x8153:
tp->lenovo_macpassthru = 1;
}
}
--
2.30.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v4] net: usb: r8152: Add in new Devices that are supported for Mac-Passthru
2022-05-13 12:49 [PATCH v4] net: usb: r8152: Add in new Devices that are supported for Mac-Passthru David Ober
@ 2022-05-13 23:55 ` Jakub Kicinski
0 siblings, 0 replies; 2+ messages in thread
From: Jakub Kicinski @ 2022-05-13 23:55 UTC (permalink / raw)
To: David Ober
Cc: linux-usb, netdev, davem, hayeswang, aaron.ma, markpearson, dober
On Fri, 13 May 2022 08:49:06 -0400 David Ober wrote:
> Lenovo Thunderbolt 4 Dock, and other Lenovo USB Docks are using the
> original Realtek USB ethernet Vendor and Product IDs
> If the Network device is Realtek verify that it is on a Lenovo USB hub
> before enabling the passthru feature
>
> This also adds in the device IDs for the Lenovo USB Dongle and one other
> USB-C dock
>
> V2 fix formating of code
> V3 remove Generic define for Device ID 0x8153 and change it to use value
> V4 rearrange defines and case statement to put them in better order
>
> Signed-off-by: David Ober <dober6023@gmail.com>
> ---
> drivers/net/usb/r8152.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
> index c2da3438387c..d8f2d4b85db4 100644
> --- a/drivers/net/usb/r8152.c
> +++ b/drivers/net/usb/r8152.c
> @@ -771,7 +771,9 @@ enum rtl8152_flags {
> };
>
> #define DEVICE_ID_THINKPAD_THUNDERBOLT3_DOCK_GEN2 0x3082
> +#define DEVICE_ID_THINKPAD_USB_C_DONGLE 0x720c
> #define DEVICE_ID_THINKPAD_USB_C_DOCK_GEN2 0xa387
> +#define DEVICE_ID_THINKPAD_USB_C_DOCK_GEN3 0x3062
>
> struct tally_counter {
> __le64 tx_packets;
> @@ -9646,6 +9648,14 @@ static int rtl8152_probe(struct usb_interface *intf,
> switch (le16_to_cpu(udev->descriptor.idProduct)) {
> case DEVICE_ID_THINKPAD_THUNDERBOLT3_DOCK_GEN2:
> case DEVICE_ID_THINKPAD_USB_C_DOCK_GEN2:
> + case DEVICE_ID_THINKPAD_USB_C_DOCK_GEN3:
> + case DEVICE_ID_THINKPAD_USB_C_DONGLE:
> + tp->lenovo_macpassthru = 1;
> + }
> + } else if ((le16_to_cpu(udev->descriptor.idVendor) == VENDOR_ID_REALTEK) &&
> + (le16_to_cpu(udev->parent->descriptor.idVendor) == VENDOR_ID_LENOVO)) {
The parenthesis around the condition are unnecessary. If the compiler
does not warn it's okay to skip parenthesis. checkpatch should warn
about this. We assume kernel developers know the C operator precedence.
I think you should factor these checks out to a separate helper tho.
Create a helper like:
static bool rtl8152_needs_lenovo_macpassthru(dev)
that can use local variables to avoid the tediously long and repeated
le16_to_cpu(...) lines. Then just assign:
tp->lenovo_macpassthru = rtl8152_needs_lenovo_macpassthru(dev);
Please CC Bjørn Mork <bjorn@mork.no> since he commented on the previous
version. I'd personally also love to see this solved in user space...
but have no clear idea how.
> + switch (le16_to_cpu(udev->descriptor.idProduct)) {
> + case 0x8153:
> tp->lenovo_macpassthru = 1;
> }
> }
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-05-14 1:54 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-05-13 12:49 [PATCH v4] net: usb: r8152: Add in new Devices that are supported for Mac-Passthru David Ober
2022-05-13 23:55 ` Jakub Kicinski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).