|
31 | 31 | /* when under memory pressure rx ring refill may fail and needs a retry */ |
32 | 32 | #define HTT_RX_RING_REFILL_RETRY_MS 50 |
33 | 33 |
|
| 34 | +#define HTT_RX_RING_REFILL_RESCHED_MS 5 |
| 35 | + |
34 | 36 | static int ath10k_htt_rx_get_csum_state(struct sk_buff *skb); |
35 | 37 | static void ath10k_htt_txrx_compl_task(unsigned long ptr); |
36 | 38 |
|
@@ -192,7 +194,8 @@ static void ath10k_htt_rx_msdu_buff_replenish(struct ath10k_htt *htt) |
192 | 194 | mod_timer(&htt->rx_ring.refill_retry_timer, jiffies + |
193 | 195 | msecs_to_jiffies(HTT_RX_RING_REFILL_RETRY_MS)); |
194 | 196 | } else if (num_deficit > 0) { |
195 | | - tasklet_schedule(&htt->rx_replenish_task); |
| 197 | + mod_timer(&htt->rx_ring.refill_retry_timer, jiffies + |
| 198 | + msecs_to_jiffies(HTT_RX_RING_REFILL_RESCHED_MS)); |
196 | 199 | } |
197 | 200 | spin_unlock_bh(&htt->rx_ring.lock); |
198 | 201 | } |
@@ -223,7 +226,6 @@ int ath10k_htt_rx_ring_refill(struct ath10k *ar) |
223 | 226 | void ath10k_htt_rx_free(struct ath10k_htt *htt) |
224 | 227 | { |
225 | 228 | del_timer_sync(&htt->rx_ring.refill_retry_timer); |
226 | | - tasklet_kill(&htt->rx_replenish_task); |
227 | 229 | tasklet_kill(&htt->txrx_compl_task); |
228 | 230 |
|
229 | 231 | skb_queue_purge(&htt->rx_compl_q); |
@@ -380,13 +382,6 @@ static int ath10k_htt_rx_amsdu_pop(struct ath10k_htt *htt, |
380 | 382 | return msdu_chaining; |
381 | 383 | } |
382 | 384 |
|
383 | | -static void ath10k_htt_rx_replenish_task(unsigned long ptr) |
384 | | -{ |
385 | | - struct ath10k_htt *htt = (struct ath10k_htt *)ptr; |
386 | | - |
387 | | - ath10k_htt_rx_msdu_buff_replenish(htt); |
388 | | -} |
389 | | - |
390 | 385 | static struct sk_buff *ath10k_htt_rx_pop_paddr(struct ath10k_htt *htt, |
391 | 386 | u32 paddr) |
392 | 387 | { |
@@ -520,9 +515,6 @@ int ath10k_htt_rx_alloc(struct ath10k_htt *htt) |
520 | 515 | htt->rx_ring.sw_rd_idx.msdu_payld = 0; |
521 | 516 | hash_init(htt->rx_ring.skb_table); |
522 | 517 |
|
523 | | - tasklet_init(&htt->rx_replenish_task, ath10k_htt_rx_replenish_task, |
524 | | - (unsigned long)htt); |
525 | | - |
526 | 518 | skb_queue_head_init(&htt->rx_compl_q); |
527 | 519 | skb_queue_head_init(&htt->rx_in_ord_compl_q); |
528 | 520 | skb_queue_head_init(&htt->tx_fetch_ind_q); |
@@ -1912,8 +1904,7 @@ static void ath10k_htt_rx_in_ord_ind(struct ath10k *ar, struct sk_buff *skb) |
1912 | 1904 | return; |
1913 | 1905 | } |
1914 | 1906 | } |
1915 | | - |
1916 | | - tasklet_schedule(&htt->rx_replenish_task); |
| 1907 | + ath10k_htt_rx_msdu_buff_replenish(htt); |
1917 | 1908 | } |
1918 | 1909 |
|
1919 | 1910 | static void ath10k_htt_rx_tx_fetch_resp_id_confirm(struct ath10k *ar, |
@@ -2470,5 +2461,5 @@ static void ath10k_htt_txrx_compl_task(unsigned long ptr) |
2470 | 2461 | dev_kfree_skb_any(skb); |
2471 | 2462 | } |
2472 | 2463 |
|
2473 | | - tasklet_schedule(&htt->rx_replenish_task); |
| 2464 | + ath10k_htt_rx_msdu_buff_replenish(htt); |
2474 | 2465 | } |
0 commit comments