diff mbox

[1/2] ath9k: fix possible hang on flush

Message ID 1398122097-23544-1-git-send-email-tharvey@gateworks.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Tim Harvey April 21, 2014, 11:14 p.m. UTC
If a flush is requested, make sure to clear the descriptor once we've
processed it.

This resolves a hang that will occur if all RX descriptors are full when a
flush is requested.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
---
 drivers/net/wireless/ath/ath9k/recv.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

Comments

Tim Harvey April 29, 2014, 12:02 p.m. UTC | #1
On Mon, Apr 21, 2014 at 4:14 PM, Tim Harvey <tharvey@gateworks.com> wrote:
> If a flush is requested, make sure to clear the descriptor once we've
> processed it.
>
> This resolves a hang that will occur if all RX descriptors are full when a
> flush is requested.
>
> Signed-off-by: Tim Harvey <tharvey@gateworks.com>
> ---
>  drivers/net/wireless/ath/ath9k/recv.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
> index 6c9accd..e77a253 100644
> --- a/drivers/net/wireless/ath/ath9k/recv.c
> +++ b/drivers/net/wireless/ath/ath9k/recv.c
> @@ -1113,14 +1113,13 @@ requeue_drop_frag:
>                 }
>  requeue:
>                 list_add_tail(&bf->list, &sc->rx.rxbuf);
> -               if (flush)
> -                       continue;
>
>                 if (edma) {
>                         ath_rx_edma_buf_link(sc, qtype);
>                 } else {
>                         ath_rx_buf_relink(sc, bf);
> -                       ath9k_hw_rxena(ah);
> +                       if (!flush)
> +                               ath9k_hw_rxena(ah);
>                 }
>         } while (1);
>
> --
> 1.8.3.2
>

+cc ath9k-devel@lists.ath9k.org

Tim
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index 6c9accd..e77a253 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -1113,14 +1113,13 @@  requeue_drop_frag:
 		}
 requeue:
 		list_add_tail(&bf->list, &sc->rx.rxbuf);
-		if (flush)
-			continue;
 
 		if (edma) {
 			ath_rx_edma_buf_link(sc, qtype);
 		} else {
 			ath_rx_buf_relink(sc, bf);
-			ath9k_hw_rxena(ah);
+			if (!flush)
+				ath9k_hw_rxena(ah);
 		}
 	} while (1);