usb/160299: commit references a PR

dfilter service dfilter at FreeBSD.ORG
Sat Sep 10 16:00:26 UTC 2011


The following reply was made to PR usb/160299; it has been noted by GNATS.

From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:  
Subject: Re: usb/160299: commit references a PR
Date: Sat, 10 Sep 2011 15:55:46 +0000 (UTC)

 Author: hselasky
 Date: Sat Sep 10 15:55:36 2011
 New Revision: 225469
 URL: http://svn.freebsd.org/changeset/base/225469
 
 Log:
   Refactor auto-quirk solution so that we break as few external
   drivers as possible.
   
   PR:		usb/160299
   Approved by:	re (kib)
   Suggested by:	rwatson
   MFC after:	0 days
 
 Modified:
   head/sys/dev/usb/quirk/usb_quirk.c
   head/sys/dev/usb/usb_device.c
   head/sys/dev/usb/usb_dynamic.c
   head/sys/dev/usb/usb_dynamic.h
   head/sys/dev/usb/usbdi.h
   head/sys/sys/param.h
 
 Modified: head/sys/dev/usb/quirk/usb_quirk.c
 ==============================================================================
 --- head/sys/dev/usb/quirk/usb_quirk.c	Sat Sep 10 12:36:11 2011	(r225468)
 +++ head/sys/dev/usb/quirk/usb_quirk.c	Sat Sep 10 15:55:36 2011	(r225469)
 @@ -588,7 +588,7 @@ usb_test_quirk_by_info(const struct usbd
  	}
  	mtx_unlock(&usb_quirk_mtx);
  done:
 -	return (usb_test_quirk_w(info, quirk));
 +	return (0);			/* no quirk match */
  }
  
  static struct usb_quirk_entry *
 
 Modified: head/sys/dev/usb/usb_device.c
 ==============================================================================
 --- head/sys/dev/usb/usb_device.c	Sat Sep 10 12:36:11 2011	(r225468)
 +++ head/sys/dev/usb/usb_device.c	Sat Sep 10 15:55:36 2011	(r225469)
 @@ -1239,8 +1239,6 @@ static void
  usb_init_attach_arg(struct usb_device *udev,
      struct usb_attach_arg *uaa)
  {
 -	uint8_t x;
 -
  	memset(uaa, 0, sizeof(*uaa));
  
  	uaa->device = udev;
 @@ -1256,9 +1254,6 @@ usb_init_attach_arg(struct usb_device *u
  	uaa->info.bDeviceProtocol = udev->ddesc.bDeviceProtocol;
  	uaa->info.bConfigIndex = udev->curr_config_index;
  	uaa->info.bConfigNum = udev->curr_config_no;
 -
 -	for (x = 0; x != USB_MAX_AUTO_QUIRK; x++)
 -		uaa->info.autoQuirk[x] = udev->autoQuirk[x];
  }
  
  /*------------------------------------------------------------------------*
 @@ -2389,8 +2384,22 @@ uint8_t
  usb_test_quirk(const struct usb_attach_arg *uaa, uint16_t quirk)
  {
  	uint8_t found;
 +	uint8_t x;
 +
 +	if (quirk == UQ_NONE)
 +		return (0);
 +
 +	/* search the automatic per device quirks first */
 +
 +	for (x = 0; x != USB_MAX_AUTO_QUIRK; x++) {
 +		if (uaa->device->autoQuirk[x] == quirk)
 +			return (1);
 +	}
 +
 +	/* search global quirk table, if any */
  
  	found = (usb_test_quirk_p) (&uaa->info, quirk);
 +
  	return (found);
  }
  
 @@ -2723,7 +2732,8 @@ usbd_add_dynamic_quirk(struct usb_device
  	uint8_t x;
  
  	for (x = 0; x != USB_MAX_AUTO_QUIRK; x++) {
 -		if (udev->autoQuirk[x] == 0) {
 +		if (udev->autoQuirk[x] == 0 ||
 +		    udev->autoQuirk[x] == quirk) {
  			udev->autoQuirk[x] = quirk;
  			return (0);	/* success */
  		}
 
 Modified: head/sys/dev/usb/usb_dynamic.c
 ==============================================================================
 --- head/sys/dev/usb/usb_dynamic.c	Sat Sep 10 12:36:11 2011	(r225468)
 +++ head/sys/dev/usb/usb_dynamic.c	Sat Sep 10 15:55:36 2011	(r225469)
 @@ -50,12 +50,12 @@
  #include <dev/usb/usb_process.h>
  #include <dev/usb/usb_device.h>
  #include <dev/usb/usb_dynamic.h>
 -#include <dev/usb/quirk/usb_quirk.h>
  
  /* function prototypes */
  static usb_handle_req_t usb_temp_get_desc_w;
  static usb_temp_setup_by_index_t usb_temp_setup_by_index_w;
  static usb_temp_unsetup_t usb_temp_unsetup_w;
 +static usb_test_quirk_t usb_test_quirk_w;
  static usb_quirk_ioctl_t usb_quirk_ioctl_w;
  
  /* global variables */
 @@ -72,19 +72,9 @@ usb_temp_setup_by_index_w(struct usb_dev
  	return (USB_ERR_INVAL);
  }
  
 -uint8_t
 +static uint8_t
  usb_test_quirk_w(const struct usbd_lookup_info *info, uint16_t quirk)
  {
 -	uint8_t x;
 -
 -	if (quirk == UQ_NONE)
 -		return (0);	/* no match */
 -
 -	for (x = 0; x != USB_MAX_AUTO_QUIRK; x++) {
 -		if (info->autoQuirk[x] == quirk)
 -			return (1);	/* match */
 -	}
 -
  	return (0);			/* no match */
  }
  
 
 Modified: head/sys/dev/usb/usb_dynamic.h
 ==============================================================================
 --- head/sys/dev/usb/usb_dynamic.h	Sat Sep 10 12:36:11 2011	(r225468)
 +++ head/sys/dev/usb/usb_dynamic.h	Sat Sep 10 15:55:36 2011	(r225469)
 @@ -57,6 +57,5 @@ extern devclass_t usb_devclass_ptr;
  void	usb_temp_unload(void *);
  void	usb_quirk_unload(void *);
  void	usb_bus_unload(void *);
 -usb_test_quirk_t usb_test_quirk_w;
  
  #endif					/* _USB_DYNAMIC_H_ */
 
 Modified: head/sys/dev/usb/usbdi.h
 ==============================================================================
 --- head/sys/dev/usb/usbdi.h	Sat Sep 10 12:36:11 2011	(r225468)
 +++ head/sys/dev/usb/usbdi.h	Sat Sep 10 15:55:36 2011	(r225469)
 @@ -353,7 +353,6 @@ struct usbd_lookup_info {
  	uint16_t idVendor;
  	uint16_t idProduct;
  	uint16_t bcdDevice;
 -	uint16_t autoQuirk[USB_MAX_AUTO_QUIRK];
  	uint8_t	bDeviceClass;
  	uint8_t	bDeviceSubClass;
  	uint8_t	bDeviceProtocol;
 
 Modified: head/sys/sys/param.h
 ==============================================================================
 --- head/sys/sys/param.h	Sat Sep 10 12:36:11 2011	(r225468)
 +++ head/sys/sys/param.h	Sat Sep 10 15:55:36 2011	(r225469)
 @@ -58,7 +58,7 @@
   *		in the range 5 to 9.
   */
  #undef __FreeBSD_version
 -#define __FreeBSD_version 900043	/* Master, propagated to newvers */
 +#define __FreeBSD_version 900044	/* Master, propagated to newvers */
  
  #ifdef _KERNEL
  #define	P_OSREL_SIGSEGV		700004
 _______________________________________________
 svn-src-all at freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
 


More information about the freebsd-usb mailing list