diff options
author | Bob Copeland <me@bobcopeland.com> | 2011-01-24 23:31:43 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-01-27 16:40:51 -0500 |
commit | 15411c27d203e363592d30ab00803254ebe77b90 (patch) | |
tree | 505f58ab21ed2717fe3c67a4b444bf05bac53b6c | |
parent | bc5892c9ec250b36c9287bd52a74d08d75a40152 (diff) | |
download | linux-stable-15411c27d203e363592d30ab00803254ebe77b90.tar.gz linux-stable-15411c27d203e363592d30ab00803254ebe77b90.tar.bz2 linux-stable-15411c27d203e363592d30ab00803254ebe77b90.zip |
ath5k: fix error handling in ath5k_hw_dma_stop
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 <me@bobcopeland.com>
Acked-by: Bruno Randolf <br1@einfach.org>
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Reviewed-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/ath5k/dma.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath5k/dma.c b/drivers/net/wireless/ath/ath5k/dma.c index 0064be7ce5c9..21091c26a9a5 100644 --- a/drivers/net/wireless/ath/ath5k/dma.c +++ b/drivers/net/wireless/ath/ath5k/dma.c @@ -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; } |