aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/intel/iwlwifi/iwl-trans.h4
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c12
2 files changed, 12 insertions, 4 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
index ca0b5536a8a6..921cab9e2d73 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
@@ -117,6 +117,7 @@
117#define FH_RSCSR_FRAME_INVALID 0x55550000 117#define FH_RSCSR_FRAME_INVALID 0x55550000
118#define FH_RSCSR_FRAME_ALIGN 0x40 118#define FH_RSCSR_FRAME_ALIGN 0x40
119#define FH_RSCSR_RPA_EN BIT(25) 119#define FH_RSCSR_RPA_EN BIT(25)
120#define FH_RSCSR_RADA_EN BIT(26)
120#define FH_RSCSR_RXQ_POS 16 121#define FH_RSCSR_RXQ_POS 16
121#define FH_RSCSR_RXQ_MASK 0x3F0000 122#define FH_RSCSR_RXQ_MASK 0x3F0000
122 123
@@ -128,7 +129,8 @@ struct iwl_rx_packet {
128 * 31: flag flush RB request 129 * 31: flag flush RB request
129 * 30: flag ignore TC (terminal counter) request 130 * 30: flag ignore TC (terminal counter) request
130 * 29: flag fast IRQ request 131 * 29: flag fast IRQ request
131 * 28-26: Reserved 132 * 28-27: Reserved
133 * 26: RADA enabled
132 * 25: Offload enabled 134 * 25: Offload enabled
133 * 24: RPF enabled 135 * 24: RPF enabled
134 * 23: RSS enabled 136 * 23: RSS enabled
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
index 20fe23fbf040..bf8409d8a132 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
@@ -234,8 +234,8 @@ static void iwl_mvm_get_signal_strength(struct iwl_mvm *mvm,
234 234
235static int iwl_mvm_rx_crypto(struct iwl_mvm *mvm, struct ieee80211_hdr *hdr, 235static int iwl_mvm_rx_crypto(struct iwl_mvm *mvm, struct ieee80211_hdr *hdr,
236 struct ieee80211_rx_status *stats, 236 struct ieee80211_rx_status *stats,
237 struct iwl_rx_mpdu_desc *desc, int queue, 237 struct iwl_rx_mpdu_desc *desc, u32 pkt_flags,
238 u8 *crypt_len) 238 int queue, u8 *crypt_len)
239{ 239{
240 u16 status = le16_to_cpu(desc->status); 240 u16 status = le16_to_cpu(desc->status);
241 241
@@ -272,6 +272,10 @@ static int iwl_mvm_rx_crypto(struct iwl_mvm *mvm, struct ieee80211_hdr *hdr,
272 if ((status & IWL_RX_MPDU_STATUS_SEC_MASK) == 272 if ((status & IWL_RX_MPDU_STATUS_SEC_MASK) ==
273 IWL_RX_MPDU_STATUS_SEC_WEP) 273 IWL_RX_MPDU_STATUS_SEC_WEP)
274 *crypt_len = IEEE80211_WEP_IV_LEN; 274 *crypt_len = IEEE80211_WEP_IV_LEN;
275
276 if (pkt_flags & FH_RSCSR_RADA_EN)
277 stats->flag |= RX_FLAG_ICV_STRIPPED;
278
275 return 0; 279 return 0;
276 case IWL_RX_MPDU_STATUS_SEC_EXT_ENC: 280 case IWL_RX_MPDU_STATUS_SEC_EXT_ENC:
277 if (!(status & IWL_RX_MPDU_STATUS_MIC_OK)) 281 if (!(status & IWL_RX_MPDU_STATUS_MIC_OK))
@@ -850,7 +854,9 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,
850 854
851 rx_status = IEEE80211_SKB_RXCB(skb); 855 rx_status = IEEE80211_SKB_RXCB(skb);
852 856
853 if (iwl_mvm_rx_crypto(mvm, hdr, rx_status, desc, queue, &crypt_len)) { 857 if (iwl_mvm_rx_crypto(mvm, hdr, rx_status, desc,
858 le32_to_cpu(pkt->len_n_flags), queue,
859 &crypt_len)) {
854 kfree_skb(skb); 860 kfree_skb(skb);
855 return; 861 return;
856 } 862 }