diff options
author | Michal Kazior <michal.kazior@tieto.com> | 2013-08-13 01:59:37 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2013-08-14 11:01:28 -0400 |
commit | dfa95b5024027400207ed6bf8914936f1b4efa88 (patch) | |
tree | 4ff624706383394b8960e9d7c4806d43a3a4d496 /drivers/net/wireless/ath/ath10k/htt_rx.c | |
parent | 0e1cbf9a6f85eb272bd6bc410db39b4e506d230f (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.c | 12 |
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. */ |