ath10k: implement 802.3 SNAP rx decap type A-MSDU handling
authorMichal Kazior <michal.kazior@tieto.com>
Tue, 13 Aug 2013 05:59:37 +0000 (07:59 +0200)
committerKalle Valo <kvalo@qca.qualcomm.com>
Wed, 14 Aug 2013 15:01:28 +0000 (18:01 +0300)
This enables driver to rx another decapped a-msdu
frames. It should possibly help with throughputs
in some cases and reduce (or eliminate) number of
messages like this:

  ath10k: error processing msdus -524

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 e784c40b904b55165a112df250c61351c606979b..9bb0ae89fdba6079eb0698f27f158548e8657129 100644 (file)
@@ -610,8 +610,7 @@ static int ath10k_htt_rx_amsdu(struct ath10k_htt *htt,
                        RX_MPDU_START_INFO0_ENCRYPT_TYPE);
 
        /* FIXME: No idea what assumptions are safe here. Need logs */
-       if ((fmt == RX_MSDU_DECAP_RAW && skb->next) ||
-           (fmt == RX_MSDU_DECAP_8023_SNAP_LLC)) {
+       if ((fmt == RX_MSDU_DECAP_RAW && skb->next)) {
                ath10k_htt_rx_free_msdu_chain(skb->next);
                skb->next = NULL;
                return -ENOTSUPP;
@@ -659,6 +658,15 @@ static int ath10k_htt_rx_amsdu(struct ath10k_htt *htt,
                        decap_hdr += roundup(crypto_len, 4);
                }
 
+               /* When fmt == RX_MSDU_DECAP_8023_SNAP_LLC:
+                *
+                * SNAP 802.3 consists of:
+                * [dst:6][src:6][len:2][dsap:1][ssap:1][ctl:1][snap:5]
+                * [data][fcs:4].
+                *
+                * Since this overlaps with A-MSDU header (da, sa, len)
+                * there's nothing extra to do. */
+
                if (fmt == RX_MSDU_DECAP_ETHERNET2_DIX) {
                        /* Ethernet2 decap inserts ethernet header in place of
                         * A-MSDU subframe header. */