Messages in this thread | | | Subject | Re: [PATCH] usbnet: ipheth: Simplify device detection | From | Guenter Roeck <> | Date | Fri, 26 Apr 2019 05:13:17 -0700 |
| |
On 4/26/19 4:27 AM, Simon Horman wrote: > On Wed, Apr 24, 2019 at 10:58:24AM -0700, Guenter Roeck wrote: >> All Apple products use the same protocol for tethering over USB. >> To simplify the code and make it future proof, use >> USB_VENDOR_AND_INTERFACE_INFO() instead of >> USB_DEVICE_AND_INTERFACE_INFO() to automatically detect and support >> all existing and future Apple products using the same interface. > > What if future Apple products behave differently? >
Sure, Apple may decide to use the same device/class/subclass/protocol identifier for a different protocol. That is unlikely but possible.
If the associated risk is considered higher than the benefit of supporting new devices announcing the same protocol with a different product id, please feel free to ignore (or nack) this patch.
Thanks, Guenter
>> Signed-off-by: Guenter Roeck <linux@roeck-us.net> >> --- >> Tested with various iPads and iPhones up to X. iPhone 6 and later >> up to and including X all use product ID 0x12a8, so this patch is >> not strictly required, but it does simplify the code. >> >> drivers/net/usb/ipheth.c | 58 +++--------------------------------------------- >> 1 file changed, 3 insertions(+), 55 deletions(-) >> >> diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c >> index 3d8a70d3ea9b..a01a71a7e48d 100644 >> --- a/drivers/net/usb/ipheth.c >> +++ b/drivers/net/usb/ipheth.c >> @@ -54,17 +54,6 @@ >> #include <linux/workqueue.h> >> >> #define USB_VENDOR_APPLE 0x05ac >> -#define USB_PRODUCT_IPHONE 0x1290 >> -#define USB_PRODUCT_IPHONE_3G 0x1292 >> -#define USB_PRODUCT_IPHONE_3GS 0x1294 >> -#define USB_PRODUCT_IPHONE_4 0x1297 >> -#define USB_PRODUCT_IPAD 0x129a >> -#define USB_PRODUCT_IPAD_2 0x12a2 >> -#define USB_PRODUCT_IPAD_3 0x12a6 >> -#define USB_PRODUCT_IPAD_MINI 0x12ab >> -#define USB_PRODUCT_IPHONE_4_VZW 0x129c >> -#define USB_PRODUCT_IPHONE_4S 0x12a0 >> -#define USB_PRODUCT_IPHONE_5 0x12a8 >> >> #define IPHETH_USBINTF_CLASS 255 >> #define IPHETH_USBINTF_SUBCLASS 253 >> @@ -88,50 +77,9 @@ >> #define IPHETH_CARRIER_ON 0x04 >> >> static const struct usb_device_id ipheth_table[] = { >> - { USB_DEVICE_AND_INTERFACE_INFO( >> - USB_VENDOR_APPLE, USB_PRODUCT_IPHONE, >> - IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, >> - IPHETH_USBINTF_PROTO) }, >> - { USB_DEVICE_AND_INTERFACE_INFO( >> - USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_3G, >> - IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, >> - IPHETH_USBINTF_PROTO) }, >> - { USB_DEVICE_AND_INTERFACE_INFO( >> - USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_3GS, >> - IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, >> - IPHETH_USBINTF_PROTO) }, >> - { USB_DEVICE_AND_INTERFACE_INFO( >> - USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4, >> - IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, >> - IPHETH_USBINTF_PROTO) }, >> - { USB_DEVICE_AND_INTERFACE_INFO( >> - USB_VENDOR_APPLE, USB_PRODUCT_IPAD, >> - IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, >> - IPHETH_USBINTF_PROTO) }, >> - { USB_DEVICE_AND_INTERFACE_INFO( >> - USB_VENDOR_APPLE, USB_PRODUCT_IPAD_2, >> - IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, >> - IPHETH_USBINTF_PROTO) }, >> - { USB_DEVICE_AND_INTERFACE_INFO( >> - USB_VENDOR_APPLE, USB_PRODUCT_IPAD_3, >> - IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, >> - IPHETH_USBINTF_PROTO) }, >> - { USB_DEVICE_AND_INTERFACE_INFO( >> - USB_VENDOR_APPLE, USB_PRODUCT_IPAD_MINI, >> - IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, >> - IPHETH_USBINTF_PROTO) }, >> - { USB_DEVICE_AND_INTERFACE_INFO( >> - USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4_VZW, >> - IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, >> - IPHETH_USBINTF_PROTO) }, >> - { USB_DEVICE_AND_INTERFACE_INFO( >> - USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4S, >> - IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, >> - IPHETH_USBINTF_PROTO) }, >> - { USB_DEVICE_AND_INTERFACE_INFO( >> - USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_5, >> - IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, >> - IPHETH_USBINTF_PROTO) }, >> + { USB_VENDOR_AND_INTERFACE_INFO(USB_VENDOR_APPLE, IPHETH_USBINTF_CLASS, >> + IPHETH_USBINTF_SUBCLASS, >> + IPHETH_USBINTF_PROTO) }, >> { } >> }; >> MODULE_DEVICE_TABLE(usb, ipheth_table); >> -- >> 2.7.4 >> >
| |