From patchwork Thu Jun 23 16:40:01 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mohammed Shafi Shajakhan X-Patchwork-Id: 9195579 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id CBEC16077D for ; Thu, 23 Jun 2016 16:39:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BBD9A28458 for ; Thu, 23 Jun 2016 16:39:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AFABF28465; Thu, 23 Jun 2016 16:39:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 637A228458 for ; Thu, 23 Jun 2016 16:39:17 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1bG7ej-0005Us-RV; Thu, 23 Jun 2016 16:39:05 +0000 Received: from wolverine02.qualcomm.com ([199.106.114.251]) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1bG7eh-0005Qz-Sk for ath10k@lists.infradead.org; Thu, 23 Jun 2016 16:39:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=qti.qualcomm.com; i=@qti.qualcomm.com; q=dns/txt; s=qcdkim; t=1466699943; x=1498235943; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=3E6wA3XqiSR9UiDlzFGsOG49h72kJAnQ+6GK1fmzBS8=; b=nyu1xnGUPAKj4C0R6ANIEXrtKcW2mzaWUTTR7YBUp5TUchXUlkdCUMA1 do7wlzsag8smhzhXsBWsQYlewABSPv9QQWR3jGnqH6MeIHrO/pe0PNhP8 JnUp3VA9E7tpOj+E/I70hN+PsaaFMVWkaOhRQ1Qdl5c76kE4cEIgw7sxx M=; X-IronPort-AV: E=Sophos;i="5.26,517,1459839600"; d="scan'208";a="298141222" Received: from unknown (HELO Ironmsg03-L.qualcomm.com) ([10.53.140.110]) by wolverine02.qualcomm.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 23 Jun 2016 09:38:15 -0700 From: Mohammed Shafi Shajakhan X-IronPort-AV: E=McAfee;i="5700,7163,8205"; a="1172856480" Received: from nasanexm01d.na.qualcomm.com ([10.85.0.84]) by Ironmsg03-L.qualcomm.com with ESMTP/TLS/RC4-SHA; 23 Jun 2016 09:38:14 -0700 Received: from aphydexm01b.ap.qualcomm.com (10.252.127.11) by NASANEXM01D.na.qualcomm.com (10.85.0.84) with Microsoft SMTP Server (TLS) id 15.0.1178.4; Thu, 23 Jun 2016 09:38:13 -0700 Received: from qcmail1.qualcomm.com (10.80.80.8) by aphydexm01b.ap.qualcomm.com (10.252.127.11) with Microsoft SMTP Server (TLS) id 15.0.1178.4; Thu, 23 Jun 2016 22:08:05 +0530 Received: by qcmail1.qualcomm.com (sSMTP sendmail emulation); Thu, 23 Jun 2016 22:10:15 +0530 To: Subject: [PATCH 2/2] ath10k: Fix sending NULL/ Qos NULL data frames for QCA99X0 and later Date: Thu, 23 Jun 2016 22:10:01 +0530 Message-ID: <1466700001-4883-2-git-send-email-mohammed@qca.qualcomm.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1466700001-4883-1-git-send-email-mohammed@qca.qualcomm.com> References: <1466700001-4883-1-git-send-email-mohammed@qca.qualcomm.com> MIME-Version: 1.0 X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: NASANEXM01B.na.qualcomm.com (10.85.0.82) To aphydexm01b.ap.qualcomm.com (10.252.127.11) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160623_093904_046144_186AE4A4 X-CRM114-Status: GOOD ( 11.28 ) X-BeenThere: ath10k@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mohammed@codeaurora.org, Tamizh chelvam , linux-wireless@vger.kernel.org, Mohammed Shafi Shajakhan Sender: "ath10k" Errors-To: ath10k-bounces+patchwork-ath10k=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP From: Mohammed Shafi Shajakhan For chipsets like QCA99X0, IPQ4019 and later we are not getting proper NULL func status (always acked/successs !!) when hostapd does a PROBE_CLIENT via nullfunc frames when the station is powered off abruptly (inactive timer probes client via null func after the inactive time reaches beyond the threshold). Fix this by disabling the workaround (getting the ACK status of NULL func frames by sending via HTT mgmt-tx path) introduced by the change ("ath10k: fix beacon loss handling ") for QCA99X0 and later chipsets. The normal tx path provides the proper ACK status for NULL data frames. As of now disable this workaround for chipsets QCA99X0 and later, once the 10.1 firmware is obselete we can completely get rid of this workaround for all the chipsets Signed-off-by: Tamizh chelvam Signed-off-by: Mohammed Shafi Shajakhan --- drivers/net/wireless/ath/ath10k/core.c | 3 +++ drivers/net/wireless/ath/ath10k/core.h | 6 ++++++ drivers/net/wireless/ath/ath10k/mac.c | 1 + 3 files changed, 10 insertions(+) diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c index 689d6ce..9978e4a 100644 --- a/drivers/net/wireless/ath/ath10k/core.c +++ b/drivers/net/wireless/ath/ath10k/core.c @@ -181,6 +181,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board = QCA99X0_HW_2_0_BOARD_DATA_FILE, .board_size = QCA99X0_BOARD_DATA_SZ, .board_ext_size = QCA99X0_BOARD_EXT_DATA_SZ, + .disable_null_func_workaround = true, }, }, { @@ -204,6 +205,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board = QCA9984_HW_1_0_BOARD_DATA_FILE, .board_size = QCA99X0_BOARD_DATA_SZ, .board_ext_size = QCA99X0_BOARD_EXT_DATA_SZ, + .disable_null_func_workaround = true, }, }, { @@ -262,6 +264,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board = QCA4019_HW_1_0_BOARD_DATA_FILE, .board_size = QCA4019_BOARD_DATA_SZ, .board_ext_size = QCA4019_BOARD_EXT_DATA_SZ, + .disable_null_func_workaround = true, }, }, }; diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h index 3da18c9..e8c728c 100644 --- a/drivers/net/wireless/ath/ath10k/core.h +++ b/drivers/net/wireless/ath/ath10k/core.h @@ -750,6 +750,12 @@ struct ath10k { const char *board; size_t board_size; size_t board_ext_size; + /* Workaround of sending NULL data frames via + * HTT mgmt TX and getting the proper ACK status does + * not works for chipsets QCA99X0 and later, while + * Tx data path reports the ACK status properly. + */ + bool disable_null_func_workaround; } fw; } hw_params; diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index d4b7a16..f1e9672 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -3236,6 +3236,7 @@ ath10k_mac_tx_h_get_txmode(struct ath10k *ar, * mode though because AP don't sleep. */ if (ar->htt.target_version_major < 3 && + !ar->hw_params.fw.disable_null_func_workaround && (ieee80211_is_nullfunc(fc) || ieee80211_is_qos_nullfunc(fc)) && !test_bit(ATH10K_FW_FEATURE_HAS_WMI_MGMT_TX, ar->running_fw->fw_file.fw_features))