Skip to content

Commit

Permalink
iwlwifi: mvm: enable RX offloading with TKIP and WEP
Browse files Browse the repository at this point in the history
Set the flag that indicates that ICV was stripped on if
this option was enabled in the HW.

Cc: [email protected] # 4.13+
[this is needed for the 9000-series HW to work properly]
Signed-off-by: David Spinadel <[email protected]>
Signed-off-by: Luca Coelho <[email protected]>
  • Loading branch information
DavidSpinadel authored and lucacoelho committed Dec 5, 2017
1 parent 6c2d49f commit 9d0fc5a
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
4 changes: 3 additions & 1 deletion drivers/net/wireless/intel/iwlwifi/iwl-trans.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@
#define FH_RSCSR_FRAME_INVALID 0x55550000
#define FH_RSCSR_FRAME_ALIGN 0x40
#define FH_RSCSR_RPA_EN BIT(25)
#define FH_RSCSR_RADA_EN BIT(26)
#define FH_RSCSR_RXQ_POS 16
#define FH_RSCSR_RXQ_MASK 0x3F0000

Expand All @@ -128,7 +129,8 @@ struct iwl_rx_packet {
* 31: flag flush RB request
* 30: flag ignore TC (terminal counter) request
* 29: flag fast IRQ request
* 28-26: Reserved
* 28-27: Reserved
* 26: RADA enabled
* 25: Offload enabled
* 24: RPF enabled
* 23: RSS enabled
Expand Down
12 changes: 9 additions & 3 deletions drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
Original file line number Diff line number Diff line change
Expand Up @@ -234,8 +234,8 @@ static void iwl_mvm_get_signal_strength(struct iwl_mvm *mvm,

static int iwl_mvm_rx_crypto(struct iwl_mvm *mvm, struct ieee80211_hdr *hdr,
struct ieee80211_rx_status *stats,
struct iwl_rx_mpdu_desc *desc, int queue,
u8 *crypt_len)
struct iwl_rx_mpdu_desc *desc, u32 pkt_flags,
int queue, u8 *crypt_len)
{
u16 status = le16_to_cpu(desc->status);

Expand Down Expand Up @@ -272,6 +272,10 @@ static int iwl_mvm_rx_crypto(struct iwl_mvm *mvm, struct ieee80211_hdr *hdr,
if ((status & IWL_RX_MPDU_STATUS_SEC_MASK) ==
IWL_RX_MPDU_STATUS_SEC_WEP)
*crypt_len = IEEE80211_WEP_IV_LEN;

if (pkt_flags & FH_RSCSR_RADA_EN)
stats->flag |= RX_FLAG_ICV_STRIPPED;

return 0;
case IWL_RX_MPDU_STATUS_SEC_EXT_ENC:
if (!(status & IWL_RX_MPDU_STATUS_MIC_OK))
Expand Down Expand Up @@ -850,7 +854,9 @@ void iwl_mvm_rx_mpdu_mq(struct iwl_mvm *mvm, struct napi_struct *napi,

rx_status = IEEE80211_SKB_RXCB(skb);

if (iwl_mvm_rx_crypto(mvm, hdr, rx_status, desc, queue, &crypt_len)) {
if (iwl_mvm_rx_crypto(mvm, hdr, rx_status, desc,
le32_to_cpu(pkt->len_n_flags), queue,
&crypt_len)) {
kfree_skb(skb);
return;
}
Expand Down

0 comments on commit 9d0fc5a

Please sign in to comment.