From 15676fcd2abb5a62b3aa1800db69eb3509be5052 Mon Sep 17 00:00:00 2001 From: Rakesh Pillai Date: Mon, 13 Feb 2017 17:29:30 +0530 Subject: [PATCH] ath10k: Refactor htt rx descriptor and remove last msdu check for WCN3990 WCN3990 target uses more fields in htt rx descriptor. Refactor htt rx descriptor to not break legacy code. Remove last msdu check in htt rx for WCN3990 which is not required. CRs-Fixed: 2005906 Change-Id: Id2f670ecd72ea898a11a9d9eea61b5a1f2364d32 Signed-off-by: Rakesh Pillai --- drivers/net/wireless/ath/ath10k/htt_rx.c | 8 ++++++-- drivers/net/wireless/ath/ath10k/rx_desc.h | 7 +++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c index 42e97d99a3d1..cbb61267eb10 100644 --- a/drivers/net/wireless/ath/ath10k/htt_rx.c +++ b/drivers/net/wireless/ath/ath10k/htt_rx.c @@ -1734,7 +1734,8 @@ static void ath10k_htt_rx_delba(struct ath10k *ar, struct htt_resp *resp) spin_unlock_bh(&ar->data_lock); } -static int ath10k_htt_rx_extract_amsdu(struct sk_buff_head *list, +static int ath10k_htt_rx_extract_amsdu(struct ath10k *ar, + struct sk_buff_head *list, struct sk_buff_head *amsdu) { struct sk_buff *msdu; @@ -1755,6 +1756,9 @@ static int ath10k_htt_rx_extract_amsdu(struct sk_buff_head *list, break; } + if (QCA_REV_WCN3990(ar)) + return 0; + msdu = skb_peek_tail(amsdu); rxd = (void *)msdu->data - sizeof(*rxd); if (!(rxd->msdu_end.common.info0 & @@ -1897,7 +1901,7 @@ static int ath10k_htt_rx_in_ord_ind(struct ath10k *ar, struct sk_buff *skb) while (!skb_queue_empty(&list)) { __skb_queue_head_init(&amsdu); - ret = ath10k_htt_rx_extract_amsdu(&list, &amsdu); + ret = ath10k_htt_rx_extract_amsdu(ar, &list, &amsdu); switch (ret) { case 0: /* Note: The in-order indication may report interleaved diff --git a/drivers/net/wireless/ath/ath10k/rx_desc.h b/drivers/net/wireless/ath/ath10k/rx_desc.h index 6260f11d4e32..bb711b525af8 100644 --- a/drivers/net/wireless/ath/ath10k/rx_desc.h +++ b/drivers/net/wireless/ath/ath10k/rx_desc.h @@ -625,8 +625,10 @@ struct rx_msdu_end { struct rx_msdu_end_common common; union { struct rx_msdu_end_qca99x0 qca99x0; - struct rx_msdu_end_wcn3990 wcn3990; } __packed; +#ifdef CONFIG_ATH10K_SNOC + struct rx_msdu_end_wcn3990 wcn3990; +#endif } __packed; /* @@ -1123,7 +1125,6 @@ struct rx_ppdu_end_qca9984 { struct rx_timing_offset { __le32 timing_offset; - __le32 reserved; }; struct rx_ppdu_end_wcn3990 { @@ -1147,7 +1148,9 @@ struct rx_ppdu_end { struct rx_ppdu_end_qca6174 qca6174; struct rx_ppdu_end_qca99x0 qca99x0; struct rx_ppdu_end_qca9984 qca9984; +#ifdef CONFIG_ATH10K_SNOC struct rx_ppdu_end_wcn3990 wcn3990; +#endif } __packed; } __packed;