diff options
Diffstat (limited to 'packages/linux/linux-openmoko-2.6.28/0001-MERGE-via-pending-tracking-hist-subject-usb-gadget-r.patch')
-rw-r--r-- | packages/linux/linux-openmoko-2.6.28/0001-MERGE-via-pending-tracking-hist-subject-usb-gadget-r.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/packages/linux/linux-openmoko-2.6.28/0001-MERGE-via-pending-tracking-hist-subject-usb-gadget-r.patch b/packages/linux/linux-openmoko-2.6.28/0001-MERGE-via-pending-tracking-hist-subject-usb-gadget-r.patch new file mode 100644 index 0000000000..c228396a81 --- /dev/null +++ b/packages/linux/linux-openmoko-2.6.28/0001-MERGE-via-pending-tracking-hist-subject-usb-gadget-r.patch @@ -0,0 +1,55 @@ +From f94d3fbb605ad16d701525502fbad114a950197c Mon Sep 17 00:00:00 2001 +From: merge <null@invalid> +Date: Mon, 19 Jan 2009 23:03:59 +0000 +Subject: [PATCH 1/8] MERGE-via-pending-tracking-hist-subject-usb-gadget-rndis-send- +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit +pending-tracking-hist top was subject-usb-gadget-rndis-send- / 3c29888770bfa8ce3a5e2ed590c3edb97ca4abaf ... parent commitmessage: +From: Richard Röjfors <richard.rojfors@endian.se> +Subject: USB: gadget rndis: send notifications + +X-Git-Tag: v2.6.28-rc6~2^2~2 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=ff3495052af48f7a2bf7961b131dc9e161dae19c;hp=9c264521a9f836541c122b00f505cfd60cc5bbb5 + +USB: gadget rndis: send notifications + +It turns out that atomic_inc_return() returns the *new* value +not the original one, so the logic in rndis_response_available() +kept the first RNDIS response notification from getting out. +This prevented interoperation with MS-Windows (but not Linux). + +Fix this to make RNDIS behave again. + +Signed-off-by: Richard Röjfors <richard.rojfors@endian.se> +Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> +Cc: stable <stable@kernel.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +--- + drivers/usb/gadget/f_rndis.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +diff --git a/drivers/usb/gadget/f_rndis.c b/drivers/usb/gadget/f_rndis.c +index 659b3d9..428b599 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 = { + .bDescriptorType = USB_DT_INTERFACE, + + /* .bInterfaceNumber = DYNAMIC */ +- .bAlternateSetting = 1, + .bNumEndpoints = 2, + .bInterfaceClass = USB_CLASS_CDC_DATA, + .bInterfaceSubClass = 0, +@@ -303,7 +302,7 @@ static void rndis_response_available(void *_rndis) + __le32 *data = req->buf; + int status; + +- if (atomic_inc_return(&rndis->notify_count)) ++ if (atomic_inc_return(&rndis->notify_count) != 1) + return; + + /* Send RNDIS RESPONSE_AVAILABLE notification; a +-- +1.5.2.2 + |