Commit d540690d authored by Michal Kazior's avatar Michal Kazior Committed by Kalle Valo

ath10k: simplify Rx loop

Since htt_rx_mpdu_status isn't used anymore
(instead attention flags are used) simplify the
loop.
Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent 9aa505d2
...@@ -1197,8 +1197,7 @@ static void ath10k_htt_rx_handler(struct ath10k_htt *htt, ...@@ -1197,8 +1197,7 @@ static void ath10k_htt_rx_handler(struct ath10k_htt *htt,
int fw_desc_len; int fw_desc_len;
u8 *fw_desc; u8 *fw_desc;
bool channel_set; bool channel_set;
int i, j; int i, ret, mpdu_count = 0;
int ret;
lockdep_assert_held(&htt->rx_ring.lock); lockdep_assert_held(&htt->rx_ring.lock);
...@@ -1237,51 +1236,50 @@ static void ath10k_htt_rx_handler(struct ath10k_htt *htt, ...@@ -1237,51 +1236,50 @@ static void ath10k_htt_rx_handler(struct ath10k_htt *htt,
(sizeof(struct htt_rx_indication_mpdu_range) * (sizeof(struct htt_rx_indication_mpdu_range) *
num_mpdu_ranges)); num_mpdu_ranges));
for (i = 0; i < num_mpdu_ranges; i++) { for (i = 0; i < num_mpdu_ranges; i++)
for (j = 0; j < mpdu_ranges[i].mpdu_count; j++) { mpdu_count += mpdu_ranges[i].mpdu_count;
attention = 0;
__skb_queue_head_init(&amsdu); while (mpdu_count--) {
ret = ath10k_htt_rx_amsdu_pop(htt, &fw_desc, attention = 0;
&fw_desc_len, &amsdu, __skb_queue_head_init(&amsdu);
&attention); ret = ath10k_htt_rx_amsdu_pop(htt, &fw_desc,
&fw_desc_len, &amsdu,
if (ret < 0) { &attention);
ath10k_warn(ar, "failed to pop amsdu from htt rx ring %d\n", if (ret < 0) {
ret); ath10k_warn(ar, "failed to pop amsdu from htt rx ring %d\n",
__skb_queue_purge(&amsdu); ret);
continue; __skb_queue_purge(&amsdu);
} continue;
}
if (!ath10k_htt_rx_amsdu_allowed(htt, skb_peek(&amsdu), if (!ath10k_htt_rx_amsdu_allowed(htt, skb_peek(&amsdu),
channel_set, channel_set, attention)) {
attention)) { __skb_queue_purge(&amsdu);
__skb_queue_purge(&amsdu); continue;
continue; }
}
if (ret > 0 && ath10k_unchain_msdu(&amsdu) < 0) { if (ret > 0 && ath10k_unchain_msdu(&amsdu) < 0) {
__skb_queue_purge(&amsdu); __skb_queue_purge(&amsdu);
continue; continue;
} }
if (attention & RX_ATTENTION_FLAGS_FCS_ERR) if (attention & RX_ATTENTION_FLAGS_FCS_ERR)
rx_status->flag |= RX_FLAG_FAILED_FCS_CRC; rx_status->flag |= RX_FLAG_FAILED_FCS_CRC;
else else
rx_status->flag &= ~RX_FLAG_FAILED_FCS_CRC; rx_status->flag &= ~RX_FLAG_FAILED_FCS_CRC;
if (attention & RX_ATTENTION_FLAGS_TKIP_MIC_ERR) if (attention & RX_ATTENTION_FLAGS_TKIP_MIC_ERR)
rx_status->flag |= RX_FLAG_MMIC_ERROR; rx_status->flag |= RX_FLAG_MMIC_ERROR;
else else
rx_status->flag &= ~RX_FLAG_MMIC_ERROR; rx_status->flag &= ~RX_FLAG_MMIC_ERROR;
hdr = ath10k_htt_rx_skb_get_hdr(skb_peek(&amsdu)); hdr = ath10k_htt_rx_skb_get_hdr(skb_peek(&amsdu));
if (ath10k_htt_rx_hdr_is_amsdu(hdr)) if (ath10k_htt_rx_hdr_is_amsdu(hdr))
ath10k_htt_rx_amsdu(htt, rx_status, &amsdu); ath10k_htt_rx_amsdu(htt, rx_status, &amsdu);
else else
ath10k_htt_rx_msdu(htt, rx_status, ath10k_htt_rx_msdu(htt, rx_status,
__skb_dequeue(&amsdu)); __skb_dequeue(&amsdu));
}
} }
tasklet_schedule(&htt->rx_replenish_task); tasklet_schedule(&htt->rx_replenish_task);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment