summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJuha Leppanen <juha_motorsportcom@luukku.com>2010-01-04 20:52:50 (GMT)
committerJohn W. Linville <linville@tuxdriver.com>2010-01-04 20:55:25 (GMT)
commit51633632ef614ef045f25d76fc7f0133d7cc60c6 (patch)
treef61a36891c16ee81a51a343a315ad4e0a973440d /drivers
parent891dc5e73783eeabd2a704a9425e2a199b39c9f9 (diff)
downloadlinux-fsl-qoriq-51633632ef614ef045f25d76fc7f0133d7cc60c6.tar.xz
wl1271: fix timeout in wl1271_top_reg_read
I noticed a timeout bug in /drivers/net/wireless/wl12xx/wl1271_spi.c In the current code you cannot tell why you exited the "poll for data ready" do-while loop if exiting was done after the last possible loop. Then timeout==0 regardless of (val & OCP_READY_MASK) or !(val & OCP_READY_MASK), leading to possible false timeout... Simple correction could be decreasing timeout after checking for !(val & OCP_READY_MASK), not before (Manually converted from email to an actual patch by me. -- JWL) Reported-by: "Juha Leppanen" <juha_motorsportcom@luukku.com> Signed-off-by: "Juha Leppanen" <juha_motorsportcom@luukku.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/wl12xx/wl1271_spi.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1271_spi.c b/drivers/net/wireless/wl12xx/wl1271_spi.c
index 02978a1..ee9564a 100644
--- a/drivers/net/wireless/wl12xx/wl1271_spi.c
+++ b/drivers/net/wireless/wl12xx/wl1271_spi.c
@@ -397,8 +397,7 @@ u16 wl1271_top_reg_read(struct wl1271 *wl, int addr)
/* poll for data ready */
do {
val = wl1271_spi_read32(wl, OCP_DATA_READ);
- timeout--;
- } while (!(val & OCP_READY_MASK) && timeout);
+ } while (!(val & OCP_READY_MASK) && --timeout);
if (!timeout) {
wl1271_warning("Top register access timed out.");