ath10k: don't forget to replenish after fragmented Rx
authorMichal Kazior <michal.kazior@tieto.com>
Thu, 23 Oct 2014 14:04:24 +0000 (17:04 +0300)
committerKalle Valo <kvalo@qca.qualcomm.com>
Fri, 24 Oct 2014 13:30:00 +0000 (16:30 +0300)
In theory it was possible to drain entire HTT Rx
ring via fragmented Rx leading to Rx lockup.

In practice non-data traffic would always trigger
replenishment via the regular Rx handler.

For correctness sake make sure to replenish the
ring on fragmented Rx.

Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/htt_rx.c

index 25bd286..70e8090 100644 (file)
@@ -1355,6 +1355,8 @@ static void ath10k_htt_rx_frag_handler(struct ath10k_htt *htt,
                                      &attention);
        spin_unlock_bh(&htt->rx_ring.lock);
 
+       tasklet_schedule(&htt->rx_replenish_task);
+
        ath10k_dbg(ar, ATH10K_DBG_HTT_DUMP, "htt rx frag ahead\n");
 
        if (ret) {