Commit 394f0ed5 authored by Dan Carpenter's avatar Dan Carpenter Committed by Kalle Valo

mwifiex: fix loop timeout in mwifiex_prog_fw_w_helper()

USB8XXX_FW_MAX_RETRY is 3.  We were using a post-op loop
"while (retries--) {" but then the lines after that assume the loop
exits with retries set to zero.

I've fixed this by changing to a pre-op loop.  I started with retries
set to 4 instead of 3 so that we still go through the loop the same
number of times.
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent e0bdef0f
...@@ -995,7 +995,8 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, ...@@ -995,7 +995,8 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter,
{ {
int ret = 0; int ret = 0;
u8 *firmware = fw->fw_buf, *recv_buff; u8 *firmware = fw->fw_buf, *recv_buff;
u32 retries = USB8XXX_FW_MAX_RETRY, dlen; u32 retries = USB8XXX_FW_MAX_RETRY + 1;
u32 dlen;
u32 fw_seqnum = 0, tlen = 0, dnld_cmd = 0; u32 fw_seqnum = 0, tlen = 0, dnld_cmd = 0;
struct fw_data *fwdata; struct fw_data *fwdata;
struct fw_sync_header sync_fw; struct fw_sync_header sync_fw;
...@@ -1043,7 +1044,7 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, ...@@ -1043,7 +1044,7 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter,
} }
/* If the send/receive fails or CRC occurs then retry */ /* If the send/receive fails or CRC occurs then retry */
while (retries--) { while (--retries) {
u8 *buf = (u8 *)fwdata; u8 *buf = (u8 *)fwdata;
u32 len = FW_DATA_XMIT_SIZE; u32 len = FW_DATA_XMIT_SIZE;
...@@ -1103,7 +1104,7 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, ...@@ -1103,7 +1104,7 @@ static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter,
continue; continue;
} }
retries = USB8XXX_FW_MAX_RETRY; retries = USB8XXX_FW_MAX_RETRY + 1;
break; break;
} }
fw_seqnum++; fw_seqnum++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment