From c8ba39d0605200c81f43c59418871e036d973685 Mon Sep 17 00:00:00 2001
From: David Woodhouse <dwmw2@infradead.org>
Date: Mon, 10 Dec 2007 18:53:34 -0500
Subject: [PATCH] libertas: improve reliability of firmware reloading on USB

Increase the delay between issuing the RESET command and the usb reset,
and be prepared to discard more than one 'normal' packet from it before
it resets.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
---
 drivers/net/wireless/libertas/if_usb.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
index 8ff57a6f251f..0a3795048c2c 100644
--- a/drivers/net/wireless/libertas/if_usb.c
+++ b/drivers/net/wireless/libertas/if_usb.c
@@ -389,9 +389,9 @@ static int if_usb_reset_device(struct usb_card_rec *cardp)
 	cmd->params.reset.action = cpu_to_le16(CMD_ACT_HALT);
 	usb_tx_block(cardp, cardp->bulk_out_buffer, 4 + S_DS_GEN + sizeof(struct cmd_ds_802_11_reset));
 
-	msleep(10);
+	msleep(100);
 	ret = usb_reset_device(cardp->udev);
-	msleep(10);
+	msleep(100);
 
 	lbs_deb_leave_args(LBS_DEB_USB, "ret %d", ret);
 
@@ -500,7 +500,7 @@ static void if_usb_receive_fwload(struct urb *urb)
 		return;
 	}
 
-	if (cardp->bootcmdresp == 0) {
+	if (cardp->bootcmdresp <= 0) {
 		memcpy (&bootcmdresp, skb->data + IPFIELD_ALIGN_OFFSET,
 			sizeof(bootcmdresp));
 		if (le16_to_cpu(cardp->udev->descriptor.bcdDevice) < 0x3106) {
-- 
2.34.1