wilc1000: fix a loop timeout condition
authorDan Carpenter <dan.carpenter@oracle.com>
Fri, 19 Mar 2021 14:47:31 +0000 (17:47 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Sat, 17 Apr 2021 17:54:22 +0000 (20:54 +0300)
If the loop fails, the "while(trials--) {" loop will exit with "trials"
set to -1.  The test for that expects it to end with "trials" set to 0
so the warning message will not be printed.

Fix this by changing from a post-op to a pre-op.  This does mean that
we only make 99 attempts instead of 100 but that's okay.

Fixes: f135a1571a05 ("wilc1000: Support chip sleep over SPI")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Ajay Singh <ajay.kathat@microchip.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/YFS5gx/gi70zlIaO@mwanda
drivers/net/wireless/microchip/wilc1000/wlan.c

index d4a90c4..2030fc7 100644 (file)
@@ -575,7 +575,7 @@ void chip_allow_sleep(struct wilc *wilc)
                to_host_from_fw_bit = WILC_SPI_FW_TO_HOST_BIT;
        }
 
-       while (trials--) {
+       while (--trials) {
                ret = hif_func->hif_read_reg(wilc, to_host_from_fw_reg, &reg);
                if (ret)
                        return;