Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Jan 2008 21:34:28 GMT
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 133598 for review
Message-ID:  <200801182134.m0ILYSvY083258@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=133598

Change 133598 by hselasky@hselasky_laptop001 on 2008/01/18 21:33:26

	
	Bugfix: When searching for an alternate setting in CDC ethernet, start
	at the interface descriptor and not at the beginning of the config
	descriptor.

Affected files ...

.. //depot/projects/usb/src/sys/dev/usb/if_cdce.c#49 edit

Differences ...

==== //depot/projects/usb/src/sys/dev/usb/if_cdce.c#49 (text+ko) ====

@@ -285,7 +285,6 @@
 	const usb_cdc_union_descriptor_t *ud;
 	const usb_cdc_ethernet_descriptor_t *ue;
 	const usb_interface_descriptor_t *id;
-	usb_descriptor_t *desc = NULL;
 	const struct cdce_type *t;
 	struct ifnet *ifp;
 	int error;
@@ -308,11 +307,15 @@
 	/* search for alternate settings */
 	if (uaa->usb_mode == USB_MODE_HOST) {
 
-		id = uaa->iface->idesc;
+		usb_descriptor_t *desc;
+		usb_config_descriptor_t *cd;
+
+		cd = usbd_get_config_descriptor(uaa->device);
+		desc = (void *)(uaa->iface->idesc);
+		id = (void *)desc;
 		i = id->bInterfaceNumber;
 		alt_index = 0;
-		while ((desc = usbd_desc_foreach(
-		    usbd_get_config_descriptor(uaa->device), desc))) {
+		while ((desc = usbd_desc_foreach(cd, desc))) {
 			id = (void *)desc;
 			if ((id->bDescriptorType == UDESC_INTERFACE) &&
 			    (id->bLength >= sizeof(*id))) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200801182134.m0ILYSvY083258>