aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath10k/htt_rx.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/htt_rx.c')
-rw-r--r--drivers/net/wireless/ath/ath10k/htt_rx.c25
1 files changed, 8 insertions, 17 deletions
diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c
index 90d4f74c28d7..fcb534f2f28f 100644
--- a/drivers/net/wireless/ath/ath10k/htt_rx.c
+++ b/drivers/net/wireless/ath/ath10k/htt_rx.c
@@ -659,23 +659,6 @@ static void ath10k_htt_rx_amsdu(struct ath10k_htt *htt,
659 memcpy(hdr_buf, hdr, hdr_len); 659 memcpy(hdr_buf, hdr, hdr_len);
660 hdr = (struct ieee80211_hdr *)hdr_buf; 660 hdr = (struct ieee80211_hdr *)hdr_buf;
661 661
662 /* FIXME: Hopefully this is a temporary measure.
663 *
664 * Reporting individual A-MSDU subframes means each reported frame
665 * shares the same sequence number.
666 *
667 * mac80211 drops frames it recognizes as duplicates, i.e.
668 * retransmission flag is set and sequence number matches sequence
669 * number from a previous frame (as per IEEE 802.11-2012: 9.3.2.10
670 * "Duplicate detection and recovery")
671 *
672 * To avoid frames being dropped clear retransmission flag for all
673 * received A-MSDUs.
674 *
675 * Worst case: actual duplicate frames will be reported but this should
676 * still be handled gracefully by other OSI/ISO layers. */
677 hdr->frame_control &= cpu_to_le16(~IEEE80211_FCTL_RETRY);
678
679 first = skb; 662 first = skb;
680 while (skb) { 663 while (skb) {
681 void *decap_hdr; 664 void *decap_hdr;
@@ -746,6 +729,9 @@ static void ath10k_htt_rx_amsdu(struct ath10k_htt *htt,
746 skb = skb->next; 729 skb = skb->next;
747 info->skb->next = NULL; 730 info->skb->next = NULL;
748 731
732 if (skb)
733 info->amsdu_more = true;
734
749 ath10k_process_rx(htt->ar, info); 735 ath10k_process_rx(htt->ar, info);
750 } 736 }
751 737
@@ -959,6 +945,11 @@ static void ath10k_htt_rx_handler(struct ath10k_htt *htt,
959 continue; 945 continue;
960 } 946 }
961 947
948 if (test_bit(ATH10K_CAC_RUNNING, &htt->ar->dev_flags)) {
949 ath10k_htt_rx_free_msdu_chain(msdu_head);
950 continue;
951 }
952
962 /* FIXME: we do not support chaining yet. 953 /* FIXME: we do not support chaining yet.
963 * this needs investigation */ 954 * this needs investigation */
964 if (msdu_chaining) { 955 if (msdu_chaining) {