ath5k: fix error handling in ath5k_hw_dma_stop
authorBob Copeland <[email protected]>
Tue, 25 Jan 2011 04:31:43 +0000 (23:31 -0500)
committerJohn W. Linville <[email protected]>
Thu, 27 Jan 2011 21:40:51 +0000 (16:40 -0500)
Review spotted a problem with the error handling in ath5k_hw_dma_stop:
a successful return from ath5k_hw_stop_tx_dma will be treated as
an error, so we always bail out of the loop after processing a single
active queue.  As a result, we may not actually stop some queues during
reset.

Signed-off-by: Bob Copeland <[email protected]>
Acked-by: Bruno Randolf <[email protected]>
Acked-by: Nick Kossifidis <[email protected]>
Reviewed-by: Stanislaw Gruszka <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
drivers/net/wireless/ath/ath5k/dma.c

index 0064be7ce5c9fd5e9e513f559115b1de90aec40c..21091c26a9a57a68629f702be685ebe1ee7825c8 100644 (file)
@@ -838,9 +838,9 @@ int ath5k_hw_dma_stop(struct ath5k_hw *ah)
        for (i = 0; i < qmax; i++) {
                err = ath5k_hw_stop_tx_dma(ah, i);
                /* -EINVAL -> queue inactive */
-               if (err != -EINVAL)
+               if (err && err != -EINVAL)
                        return err;
        }
 
-       return err;
+       return 0;
 }