summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Röjfors <richard.rojfors@endian.se>2008-11-15 19:53:24 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2008-12-05 10:55:08 -0800
commit2ab3bef821648fb04dec72b240da8f572ec597db (patch)
tree13787f0ee928e282e40293c311e7349a1288e917
parent7e35c8503968979d55c71de29445c66eeb024284 (diff)
USB: gadget rndis: send notifications
commit ff3495052af48f7a2bf7961b131dc9e161dae19c upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-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 659b3d9671c4..00dfbbeb28c2 100644
--- a/drivers/usb/gadget/f_rndis.c
+++ b/drivers/usb/gadget/f_rndis.c
@@ -303,7 +303,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