diff options
Diffstat (limited to 'drivers/usb/gadget/f_rndis.c')
-rw-r--r-- | drivers/usb/gadget/f_rndis.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/usb/gadget/f_rndis.c b/drivers/usb/gadget/f_rndis.c index 659b3d9671c4..3a8bb53fc473 100644 --- a/drivers/usb/gadget/f_rndis.c +++ b/drivers/usb/gadget/f_rndis.c | |||
@@ -172,7 +172,6 @@ static struct usb_interface_descriptor rndis_data_intf __initdata = { | |||
172 | .bDescriptorType = USB_DT_INTERFACE, | 172 | .bDescriptorType = USB_DT_INTERFACE, |
173 | 173 | ||
174 | /* .bInterfaceNumber = DYNAMIC */ | 174 | /* .bInterfaceNumber = DYNAMIC */ |
175 | .bAlternateSetting = 1, | ||
176 | .bNumEndpoints = 2, | 175 | .bNumEndpoints = 2, |
177 | .bInterfaceClass = USB_CLASS_CDC_DATA, | 176 | .bInterfaceClass = USB_CLASS_CDC_DATA, |
178 | .bInterfaceSubClass = 0, | 177 | .bInterfaceSubClass = 0, |
@@ -303,7 +302,7 @@ static void rndis_response_available(void *_rndis) | |||
303 | __le32 *data = req->buf; | 302 | __le32 *data = req->buf; |
304 | int status; | 303 | int status; |
305 | 304 | ||
306 | if (atomic_inc_return(&rndis->notify_count)) | 305 | if (atomic_inc_return(&rndis->notify_count) != 1) |
307 | return; | 306 | return; |
308 | 307 | ||
309 | /* Send RNDIS RESPONSE_AVAILABLE notification; a | 308 | /* Send RNDIS RESPONSE_AVAILABLE notification; a |
@@ -652,6 +651,8 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f) | |||
652 | fs_in_desc.bEndpointAddress; | 651 | fs_in_desc.bEndpointAddress; |
653 | hs_out_desc.bEndpointAddress = | 652 | hs_out_desc.bEndpointAddress = |
654 | fs_out_desc.bEndpointAddress; | 653 | fs_out_desc.bEndpointAddress; |
654 | hs_notify_desc.bEndpointAddress = | ||
655 | fs_notify_desc.bEndpointAddress; | ||
655 | 656 | ||
656 | /* copy descriptors, and track endpoint copies */ | 657 | /* copy descriptors, and track endpoint copies */ |
657 | f->hs_descriptors = usb_copy_descriptors(eth_hs_function); | 658 | f->hs_descriptors = usb_copy_descriptors(eth_hs_function); |
@@ -663,6 +664,8 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f) | |||
663 | f->hs_descriptors, &hs_in_desc); | 664 | f->hs_descriptors, &hs_in_desc); |
664 | rndis->hs.out = usb_find_endpoint(eth_hs_function, | 665 | rndis->hs.out = usb_find_endpoint(eth_hs_function, |
665 | f->hs_descriptors, &hs_out_desc); | 666 | f->hs_descriptors, &hs_out_desc); |
667 | rndis->hs.notify = usb_find_endpoint(eth_hs_function, | ||
668 | f->hs_descriptors, &hs_notify_desc); | ||
666 | } | 669 | } |
667 | 670 | ||
668 | rndis->port.open = rndis_open; | 671 | rndis->port.open = rndis_open; |