mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* Option.c blacklist not functioning as I expected
@ 2010-07-21 11:15 Andrew Bird (Sphere Systems)
  2010-07-21 11:53 ` Andrew Bird (Sphere Systems)
  0 siblings, 1 reply; 2+ messages in thread
From: Andrew Bird (Sphere Systems) @ 2010-07-21 11:15 UTC (permalink / raw)
  To: linux-kernel; +Cc: ajb

Guys,
     I wanted to blacklist a network interface that has class 0xff / subclass 
0xff from the Option usb serial driver for a couple of devices. The reason for 
doing this is I hope to get the usbnet driver running on interface 1. The 
'blacklist_info' in option.c looked like the way to go, but it doesn't seem to 
have the desired effect, I still get interface 1 bound. Interfaces 4 and 5 
aren't bound but I suspect it's because they are storage and not class 0xff.

Please can anyone show me what I'm missing?

Thanks,


Andrew

diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index e280ad8..f1ab07e 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -145,6 +145,8 @@ static void option_instat_callback(struct urb *urb);
 #define HUAWEI_PRODUCT_E143D                   0x143D
 #define HUAWEI_PRODUCT_E143E                   0x143E
 #define HUAWEI_PRODUCT_E143F                   0x143F
+#define HUAWEI_PRODUCT_K4505                   0x1464
+#define HUAWEI_PRODUCT_K3765                   0x1465
 #define HUAWEI_PRODUCT_E14AC                   0x14AC
 
 #define QUANTA_VENDOR_ID                       0x0408
@@ -383,6 +385,14 @@ static const struct option_blacklist_info 
four_g_w14_blacklist = {
        .reason = OPTION_BLACKLIST_SENDSETUP
 };
 
+/* ignore net, cdrom, sdcard interfaces */
+static const u8 huawei_k3765_k4505_reserved_if[] = { 1, 4, 5};
+static const struct option_blacklist_info huawei_k3765_k4505_blacklist = {
+       .infolen = ARRAY_SIZE(huawei_k3765_k4505_reserved_if),
+       .ifaceinfo = huawei_k3765_k4505_reserved_if,
+       .reason = OPTION_BLACKLIST_RESERVED_IF
+};
+
 static const struct usb_device_id option_ids[] = {
        { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
        { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
@@ -480,6 +490,12 @@ static const struct usb_device_id option_ids[] = {
        { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 
HUAWEI_PRODUCT_E143D, 0xff, 0xff, 0xff) },
        { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 
HUAWEI_PRODUCT_E143E, 0xff, 0xff, 0xff) },
        { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 
HUAWEI_PRODUCT_E143F, 0xff, 0xff, 0xff) },
+       { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4505),
+         .driver_info = (kernel_ulong_t)&huawei_k3765_k4505_blacklist
+       },
+       { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765),
+         .driver_info = (kernel_ulong_t)&huawei_k3765_k4505_blacklist
+       },
        { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC) },
        { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_9508) },
        { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) 
}, /* Novatel Merlin V640/XV620 */

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Option.c blacklist not functioning as I expected
  2010-07-21 11:15 Option.c blacklist not functioning as I expected Andrew Bird (Sphere Systems)
@ 2010-07-21 11:53 ` Andrew Bird (Sphere Systems)
  0 siblings, 0 replies; 2+ messages in thread
From: Andrew Bird (Sphere Systems) @ 2010-07-21 11:53 UTC (permalink / raw)
  To: linux-kernel; +Cc: ajb

On Wednesday 21 July 2010, Andrew Bird (Sphere Systems) wrote:
> Guys,
>      I wanted to blacklist a network interface that has class 0xff /
> subclass 0xff from the Option usb serial driver for a couple of devices.
> The reason for doing this is I hope to get the usbnet driver running on
> interface 1. The 'blacklist_info' in option.c looked like the way to go,
> but it doesn't seem to have the desired effect, I still get interface 1
> bound. Interfaces 4 and 5 aren't bound but I suspect it's because they are
> storage and not class 0xff.
> 
> Please can anyone show me what I'm missing?
> 
> Thanks,
> 
> 
> Andrew
> 
> diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
> index e280ad8..f1ab07e 100644
> --- a/drivers/usb/serial/option.c
> +++ b/drivers/usb/serial/option.c
> @@ -145,6 +145,8 @@ static void option_instat_callback(struct urb *urb);
>  #define HUAWEI_PRODUCT_E143D                   0x143D
>  #define HUAWEI_PRODUCT_E143E                   0x143E
>  #define HUAWEI_PRODUCT_E143F                   0x143F
> +#define HUAWEI_PRODUCT_K4505                   0x1464
> +#define HUAWEI_PRODUCT_K3765                   0x1465
>  #define HUAWEI_PRODUCT_E14AC                   0x14AC
> 
>  #define QUANTA_VENDOR_ID                       0x0408
> @@ -383,6 +385,14 @@ static const struct option_blacklist_info
> four_g_w14_blacklist = {
>         .reason = OPTION_BLACKLIST_SENDSETUP
>  };
> 
> +/* ignore net, cdrom, sdcard interfaces */
> +static const u8 huawei_k3765_k4505_reserved_if[] = { 1, 4, 5};
> +static const struct option_blacklist_info huawei_k3765_k4505_blacklist = {
> +       .infolen = ARRAY_SIZE(huawei_k3765_k4505_reserved_if),
> +       .ifaceinfo = huawei_k3765_k4505_reserved_if,
> +       .reason = OPTION_BLACKLIST_RESERVED_IF
> +};
> +
>  static const struct usb_device_id option_ids[] = {
>         { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
>         { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
> @@ -480,6 +490,12 @@ static const struct usb_device_id option_ids[] = {
>         { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID,
> HUAWEI_PRODUCT_E143D, 0xff, 0xff, 0xff) },
>         { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID,
> HUAWEI_PRODUCT_E143E, 0xff, 0xff, 0xff) },
>         { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID,
> HUAWEI_PRODUCT_E143F, 0xff, 0xff, 0xff) },
> +       { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4505),
> +         .driver_info = (kernel_ulong_t)&huawei_k3765_k4505_blacklist
> +       },
> +       { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765),
> +         .driver_info = (kernel_ulong_t)&huawei_k3765_k4505_blacklist
> +       },
>         { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC) },
>         { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_9508) },
>         { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID,
> NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */

It seems the original urb setup function that called is_blacklisted() has gone 
away, here's how it looked
http://www.spinics.net/lists/linux-usb/msg26392.html

To me it looks like urb setup has moved to usb-wwan.c, how should a method to 
ignore a specific interface be re-added?

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-07-21 11:53 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-07-21 11:15 Option.c blacklist not functioning as I expected Andrew Bird (Sphere Systems)
2010-07-21 11:53 ` Andrew Bird (Sphere Systems)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®