aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath10k/htt_rx.c
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2013-08-13 01:59:37 -0400
committerKalle Valo <kvalo@qca.qualcomm.com>2013-08-14 11:01:28 -0400
commitdfa95b5024027400207ed6bf8914936f1b4efa88 (patch)
tree4ff624706383394b8960e9d7c4806d43a3a4d496 /drivers/net/wireless/ath/ath10k/htt_rx.c
parent0e1cbf9a6f85eb272bd6bc410db39b4e506d230f (diff)
ath10k: implement 802.3 SNAP rx decap type A-MSDU handling
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>
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/htt_rx.c')
-rw-r--r--drivers/net/wireless/ath/ath10k/htt_rx.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c
index e784c40b904b..9bb0ae89fdba 100644
--- a/drivers/net/wireless/ath/ath10k/htt_rx.c
+++ b/drivers/net/wireless/ath/ath10k/htt_rx.c
@@ -610,8 +610,7 @@ static int ath10k_htt_rx_amsdu(struct ath10k_htt *htt,
610 RX_MPDU_START_INFO0_ENCRYPT_TYPE); 610 RX_MPDU_START_INFO0_ENCRYPT_TYPE);
611 611
612 /* FIXME: No idea what assumptions are safe here. Need logs */ 612 /* FIXME: No idea what assumptions are safe here. Need logs */
613 if ((fmt == RX_MSDU_DECAP_RAW && skb->next) || 613 if ((fmt == RX_MSDU_DECAP_RAW && skb->next)) {
614 (fmt == RX_MSDU_DECAP_8023_SNAP_LLC)) {
615 ath10k_htt_rx_free_msdu_chain(skb->next); 614 ath10k_htt_rx_free_msdu_chain(skb->next);
616 skb->next = NULL; 615 skb->next = NULL;
617 return -ENOTSUPP; 616 return -ENOTSUPP;
@@ -659,6 +658,15 @@ static int ath10k_htt_rx_amsdu(struct ath10k_htt *htt,
659 decap_hdr += roundup(crypto_len, 4); 658 decap_hdr += roundup(crypto_len, 4);
660 } 659 }
661 660
661 /* When fmt == RX_MSDU_DECAP_8023_SNAP_LLC:
662 *
663 * SNAP 802.3 consists of:
664 * [dst:6][src:6][len:2][dsap:1][ssap:1][ctl:1][snap:5]
665 * [data][fcs:4].
666 *
667 * Since this overlaps with A-MSDU header (da, sa, len)
668 * there's nothing extra to do. */
669
662 if (fmt == RX_MSDU_DECAP_ETHERNET2_DIX) { 670 if (fmt == RX_MSDU_DECAP_ETHERNET2_DIX) {
663 /* Ethernet2 decap inserts ethernet header in place of 671 /* Ethernet2 decap inserts ethernet header in place of
664 * A-MSDU subframe header. */ 672 * A-MSDU subframe header. */