diff options
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/iwl-trans.h | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 12 |
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 | ||
| 235 | static int iwl_mvm_rx_crypto(struct iwl_mvm *mvm, struct ieee80211_hdr *hdr, | 235 | static 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 | } |
