From patchwork Tue Dec 12 02:35:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AceLan Kao X-Patchwork-Id: 847320 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="DqY22WV4"; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3ywkTk6K0Nz9t3m; Tue, 12 Dec 2017 13:36:10 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1eOaQP-0000ex-CQ; Tue, 12 Dec 2017 02:36:05 +0000 Received: from mail-pf0-f196.google.com ([209.85.192.196]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1eOaQO-0000ek-73 for kernel-team@lists.ubuntu.com; Tue, 12 Dec 2017 02:36:04 +0000 Received: by mail-pf0-f196.google.com with SMTP id j28so13078433pfk.8 for ; Mon, 11 Dec 2017 18:36:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=aGPzBNLnp2CZ6uSywqnWLmFfu4fhOyiRrWQkbjFst+4=; b=DqY22WV4HtSYQxSzgbswgKQekV9EJyL8BKqespM4/6rG7KM9tPX6Rfu16esvCTZ/Nl +2cMX2DDwTdfV1JmCPogDRDFhmgBu98NOPSHRJmVcbrWR0jIcayb6QJXqE5LCaKdN7dc 5FBR4xQpebu9uKgpmqzlSEPXgBx0ucdqJ3S6w9pYMag99r/HVndbF6yBRweilAeRCZJ0 /lBiYLegZfL2WxriR9V5LwFJORkNDR0b4KXHQ0KxbX/lblA/QEoMRQq+NXIzyRn/Kdk4 VAGsJYRmwOKHtwyokuSfgQ+YEMQd6iI1L3PER3UsYa5O8Fo8e8Jks4bA+euSRk8silT6 4O3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=aGPzBNLnp2CZ6uSywqnWLmFfu4fhOyiRrWQkbjFst+4=; b=SbdqZhIsneonIcjD2G2jvyA8zZw4ilWmjUCGoHMkYke7dP0lTK5Y4ozgxCv56uKUzA w+c3jsvMEhwknsTUUM/qX59AvG2Q4cKuShpSstzZnLjLV9FzPO6egNDL3saP68r8u3Gn 9Q+6LsSmC1xSZ+NrSZfOeW/a6dYNOAG4FRAVPCvvf6wpxGvaWPEP2rT+D8H6nmS66vFy xI4bHTzh+cM5rols0A22lmes8UKNJt1QSW6zZJibjo8zec1xOVFAycR5/kj6XO/RcgRX W2HPKwytITsexYXZ5qqNRG9h4z48r+3Z4oJ+FWk9po6rx7UFeL5+N8OK23dCxalBZzHl GaYQ== X-Gm-Message-State: AKGB3mKTUUZGiA4qJACUuJzEpzkArM6ZDEyI4NmEfmaa+7ypnT3TaagO GDoo4NNScZJGnsVkXslBOjXHbWT3 X-Google-Smtp-Source: ACJfBostF9MGuJUr+joNhAsyU4o9YYp7/qUZtX6Jb/u96et+j+nXXXlk3s6NvlPCTwRL9R6d789uZw== X-Received: by 10.159.206.195 with SMTP id x3mr689943plo.338.1513046162450; Mon, 11 Dec 2017 18:36:02 -0800 (PST) Received: from localhost ([175.41.48.77]) by smtp.gmail.com with ESMTPSA id k9sm21548740pgo.53.2017.12.11.18.36.00 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Dec 2017 18:36:01 -0800 (PST) From: AceLan Kao To: kernel-team@lists.ubuntu.com Subject: [PATCH 1/2] iwlwifi: mvm: enable RX offloading with TKIP and WEP Date: Tue, 12 Dec 2017 10:35:54 +0800 Message-Id: <1513046155-31009-2-git-send-email-acelan.kao@canonical.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1513046155-31009-1-git-send-email-acelan.kao@canonical.com> References: <1513046155-31009-1-git-send-email-acelan.kao@canonical.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: David Spinadel BugLink: http://bugs.launchpad.net/bugs/1736639 Set the flag that indicates that ICV was stripped on if this option was enabled in the HW. Cc: stable@vger.kernel.org # 4.13+ [this is needed for the 9000-series HW to work properly] Signed-off-by: David Spinadel Signed-off-by: Luca Coelho (cherry picked from commit 9d0fc5a50a0548f8e5d61243e5e5f26d5c405aef) Signed-off-by: AceLan Kao --- drivers/net/wireless/intel/iwlwifi/iwl-trans.h | 4 +++- 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 e90abbf..ecd5c1d 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h @@ -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 @@ -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 diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c index 71c8b80..3c93bbf 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c @@ -233,8 +233,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); @@ -271,6 +271,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)) @@ -808,7 +812,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; }