aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorRichard Röjfors <richard.rojfors@endian.se>2008-11-15 22:53:24 -0500
committerGreg Kroah-Hartman <gregkh@kvm.kroah.org>2008-11-20 01:01:34 -0500
commitff3495052af48f7a2bf7961b131dc9e161dae19c (patch)
treefdb4b2a903f3abaef298eecbf0d84859995fadea /drivers/usb
parent9c264521a9f836541c122b00f505cfd60cc5bbb5 (diff)
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>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/gadget/f_rndis.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/gadget/f_rndis.c b/drivers/usb/gadget/f_rndis.c
index 8afb14a4a72f..428b5993575a 100644
--- a/drivers/usb/gadget/f_rndis.c
+++ b/drivers/usb/gadget/f_rndis.c
@@ -302,7 +302,7 @@ static void rndis_response_available(void *_rndis)
302 __le32 *data = req->buf; 302 __le32 *data = req->buf;
303 int status; 303 int status;
304 304
305 if (atomic_inc_return(&rndis->notify_count)) 305 if (atomic_inc_return(&rndis->notify_count) != 1)
306 return; 306 return;
307 307
308 /* Send RNDIS RESPONSE_AVAILABLE notification; a 308 /* Send RNDIS RESPONSE_AVAILABLE notification; a