Looks fine to me. The difference between this patch and the last one is a "6 of one, half-dozen of the other" to me, but I see the benefits of this approach.
Signed-off-by: Matthew Dharm <[EMAIL PROTECTED]> Matt On Mon, Jul 24, 2006 at 10:46:17PM +0100, Daniel Drake wrote: > Alan Stern wrote: > >In general the idea looks okay to me, but I would change the details in > >storage/usb.c. Check for US_FL_IGNORE_DEVICE in the get_device_info() > >routine, and make that routine return int instead of void. If the flag is > >present you can simply return -ENODEV. Then in storage_probe(), you check > >the return code and jump to BadDevice if it's nonzero, just like with all > >the following subroutine calls. > > Thanks, that is a bit cleaner. > > Matt? > > > diff --git a/drivers/usb/storage/unusual_devs.h > b/drivers/usb/storage/unusual_devs.h > index 543244d..f01a3f8 100644 > --- a/drivers/usb/storage/unusual_devs.h > +++ b/drivers/usb/storage/unusual_devs.h > @@ -1074,7 +1074,15 @@ UNUSUAL_DEV( 0x0a17, 0x006, 0x0000, 0xff > "Optio S/S4", > US_SC_DEVICE, US_PR_DEVICE, NULL, > US_FL_FIX_INQUIRY ), > - > + > +/* This is a virtual windows driver CD, which the zd1211rw driver > automatically > + * converts into a WLAN device. */ > +UNUSUAL_DEV( 0x0ace, 0x2011, 0x0101, 0x0101, > + "ZyXEL", > + "G-220F USB-WLAN Install", > + US_SC_DEVICE, US_PR_DEVICE, NULL, > + US_FL_IGNORE_DEVICE ), > + > #ifdef CONFIG_USB_STORAGE_ISD200 > UNUSUAL_DEV( 0x0bf6, 0xa001, 0x0100, 0x0110, > "ATI", > diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c > index e232c7c..04cd0e6 100644 > --- a/drivers/usb/storage/usb.c > +++ b/drivers/usb/storage/usb.c > @@ -479,7 +479,7 @@ static struct us_unusual_dev *find_unusu > } > > /* Get the unusual_devs entries and the string descriptors */ > -static void get_device_info(struct us_data *us, const struct usb_device_id > *id) > +static int get_device_info(struct us_data *us, const struct usb_device_id > *id) > { > struct usb_device *dev = us->pusb_dev; > struct usb_interface_descriptor *idesc = > @@ -496,6 +496,11 @@ static void get_device_info(struct us_da > unusual_dev->useTransport; > us->flags = USB_US_ORIG_FLAGS(id->driver_info); > > + if (us->flags & US_FL_IGNORE_DEVICE) { > + printk(KERN_INFO USB_STORAGE "device ignored\n"); > + return -ENODEV; > + } > + > /* > * This flag is only needed when we're in high-speed, so let's > * disable it if we're in full-speed > @@ -535,6 +540,8 @@ static void get_device_info(struct us_da > idesc->bInterfaceProtocol, > msgs[msg]); > } > + > + return 0; > } > > /* Get the transport settings */ > @@ -961,7 +968,9 @@ static int storage_probe(struct usb_inte > * of the match from the usb_device_id table, so we can find the > * corresponding entry in the private table. > */ > - get_device_info(us, id); > + result = get_device_info(us, id); > + if (result) > + goto BadDevice; > > /* Get the transport, protocol, and pipe settings */ > result = get_transport(us); > diff --git a/include/linux/usb_usual.h b/include/linux/usb_usual.h > index 608487a..4cf3bf1 100644 > --- a/include/linux/usb_usual.h > +++ b/include/linux/usb_usual.h > @@ -43,6 +43,8 @@ #define US_DO_ALL_FLAGS > \ > /* Need delay after Command phase */ \ > US_FLAG(NO_WP_DETECT, 0x00000200) \ > /* Don't check for write-protect */ \ > + US_FLAG(IGNORE_DEVICE, 0x00000400) \ > + /* Don't claim device */ > > #define US_FLAG(name, value) US_FL_##name = value , > enum { US_DO_ALL_FLAGS }; -- Matthew Dharm Home: [EMAIL PROTECTED] Maintainer, Linux USB Mass Storage Driver YOU SEE!!?? It's like being born with only one nipple! -- Erwin User Friendly, 10/19/1998
pgprGs4h77sFL.pgp
Description: PGP signature
------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel