From patchwork Fri Jun 26 18:11:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rakesh Pillai X-Patchwork-Id: 11628331 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 538641392 for ; Fri, 26 Jun 2020 18:12:23 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2DA4B20836 for ; Fri, 26 Jun 2020 18:12:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="qPL+YspK"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mg.codeaurora.org header.i=@mg.codeaurora.org header.b="dulOrdG1" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2DA4B20836 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=ath10k-bounces+patchwork-ath10k=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:MIME-Version:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:References:In-Reply-To:Message-Id:Date:Subject:To: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=QEX/v3FnxvmNVR+l+KIE2PrNXCBd39haPyxPZFjBcc0=; b=qPL+YspKUUrPokLhIliwfPTn9f VXvCyImDlFs6nh9b6l/Q0FKaQh8yZI0FsNaE4bAtw3TDoTptbkrgV8gVNyPP9b2GPtsVg8RmQt2Nv eQw6Gvs6u0Ck5KchyGiUYrF0+xgtYP14iVxdrab0bMw/iQQp/E8nD8WFaYQIU/mjm25nFxUmjCvn3 DTjoRyoUw0wQS2Gcc+xcDVWAXgsMnwKbZzPOEknxKGzZSqWjA623j8sDBu91vgLP8WDx4qyaws96w wvTqKg1BOgmuE63E0IoMrNUX1FZyzr6C5prynPcSR66wc5dprLtHyEsqI6I+yG+iopjZN36qo1F+P y1p6cXJw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jospS-0000MM-8t; Fri, 26 Jun 2020 18:11:58 +0000 Received: from m43-7.mailgun.net ([69.72.43.7]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jospP-0000Lm-7f for ath10k@lists.infradead.org; Fri, 26 Jun 2020 18:11:56 +0000 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1593195115; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=Q3jdndKvBM7Tubrsk8mP7bJlc5lc7sbPttGkG/ZVwYo=; b=dulOrdG1mBFAH1QjP0fxgkerNgeZy781Eh6UgtNor26MXAISFOIVo684xb7iHOnzqE5/KmDg 9nmqICtaymvfGCBrDmzcRVG+PkcuVeb9AIm1IYyk/gc/vTMK6ujBtyvJrpbR0cK8Qr4SMIg7 ZlMVEz3N+SHXejrPiopVojyNK58= X-Mailgun-Sending-Ip: 69.72.43.7 X-Mailgun-Sid: WyJiZDQ3OSIsICJhdGgxMGtAbGlzdHMuaW5mcmFkZWFkLm9yZyIsICJiZTllNGEiXQ== Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n11.prod.us-west-2.postgun.com with SMTP id 5ef63a6ae144dd5115a729fa (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Fri, 26 Jun 2020 18:11:54 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 5CFA8C433C6; Fri, 26 Jun 2020 18:11:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=2.0 tests=ALL_TRUSTED,SPF_NONE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from pillair-linux.qualcomm.com (blr-c-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com [103.229.19.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: pillair) by smtp.codeaurora.org (Postfix) with ESMTPSA id 6CF90C433CA; Fri, 26 Jun 2020 18:11:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 6CF90C433CA Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=pillair@codeaurora.org From: Rakesh Pillai To: ath10k@lists.infradead.org Subject: [PATCH 1/2] ath10k: Pause the tx queues when firmware is down Date: Fri, 26 Jun 2020 23:41:39 +0530 Message-Id: <1593195100-24654-2-git-send-email-pillair@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1593195100-24654-1-git-send-email-pillair@codeaurora.org> References: <1593195100-24654-1-git-send-email-pillair@codeaurora.org> X-Spam-Note: CRM114 invocation failed X-Spam-Score: 0.0 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [69.72.43.7 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [69.72.43.7 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: ath10k@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rakesh Pillai , linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org MIME-Version: 1.0 Sender: "ath10k" Errors-To: ath10k-bounces+patchwork-ath10k=patchwork.kernel.org@lists.infradead.org When the FW goes down, the transmission of packets cannot be done. Currently we are not pausing the tx queues, hence there will be too many attempts to trasmit packets and each of them resulting in failure and thereby logging unwanted failure messages onto the console, as shown below [ 60.842192] ath10k_snoc 18800000.wifi: failed to transmit packet, dropping: -108 [ 60.850181] ath10k_snoc 18800000.wifi: failed to submit frame: -108 [ 60.857058] ath10k_snoc 18800000.wifi: failed to push frame: -108 [ 60.936217] ath10k_snoc 18800000.wifi: failed to transmit packet, dropping: -108 [ 60.944496] ath10k_snoc 18800000.wifi: failed to submit frame: -108 [ 60.951265] ath10k_snoc 18800000.wifi: failed to push frame: -108 [ 61.976589] ath10k_snoc 18800000.wifi: failed to transmit packet, dropping: -108 Stop the tx queues when the wlan firmware is down and also remove the unwanted duplicate/extra logging in the packet transmission path. Tested-on: WCN3990 hw1.0 SNOC WLAN.HL.3.1-01040-QCAHLSWMTPLZ-1 Signed-off-by: Rakesh Pillai --- drivers/net/wireless/ath/ath10k/core.h | 1 + drivers/net/wireless/ath/ath10k/mac.c | 18 ++++++++++-------- drivers/net/wireless/ath/ath10k/snoc.c | 3 +++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h index 62b1502..040053a 100644 --- a/drivers/net/wireless/ath/ath10k/core.h +++ b/drivers/net/wireless/ath/ath10k/core.h @@ -900,6 +900,7 @@ static inline const char *ath10k_scan_state_str(enum ath10k_scan_state state) enum ath10k_tx_pause_reason { ATH10K_TX_PAUSE_Q_FULL, + ATH10K_TX_PAUSE_FW_DOWN, ATH10K_TX_PAUSE_MAX, }; diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index 3e38962..dc7befc 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -3348,6 +3348,7 @@ void ath10k_mac_tx_lock(struct ath10k *ar, int reason) ar->tx_paused |= BIT(reason); ieee80211_stop_queues(ar->hw); } +EXPORT_SYMBOL(ath10k_mac_tx_lock); static void ath10k_mac_tx_unlock_iter(void *data, u8 *mac, struct ieee80211_vif *vif) @@ -3378,6 +3379,7 @@ void ath10k_mac_tx_unlock(struct ath10k *ar, int reason) ieee80211_wake_queue(ar->hw, ar->hw->offchannel_tx_hw_queue); } +EXPORT_SYMBOL(ath10k_mac_tx_unlock); void ath10k_mac_vif_tx_lock(struct ath10k_vif *arvif, int reason) { @@ -3748,11 +3750,8 @@ static int ath10k_mac_tx_submit(struct ath10k *ar, break; } - if (ret) { - ath10k_warn(ar, "failed to transmit packet, dropping: %d\n", - ret); + if (ret) ieee80211_free_txskb(ar->hw, skb); - } return ret; } @@ -3806,10 +3805,8 @@ static int ath10k_mac_tx(struct ath10k *ar, } ret = ath10k_mac_tx_submit(ar, txmode, txpath, skb); - if (ret) { - ath10k_warn(ar, "failed to submit frame: %d\n", ret); + if (ret) return ret; - } return 0; } @@ -4441,7 +4438,12 @@ static void ath10k_mac_op_tx(struct ieee80211_hw *hw, ret = ath10k_mac_tx(ar, vif, txmode, txpath, skb, false); if (ret) { - ath10k_warn(ar, "failed to transmit frame: %d\n", ret); + if (ret == -ESHUTDOWN) + ath10k_dbg(ar, ATH10K_DBG_MAC, "failed to transmit frame: %d\n", + ret); + else + ath10k_warn(ar, "failed to transmit frame: %d\n", ret); + if (is_htt) { spin_lock_bh(&ar->htt.tx_lock); ath10k_htt_tx_dec_pending(htt); diff --git a/drivers/net/wireless/ath/ath10k/snoc.c b/drivers/net/wireless/ath/ath10k/snoc.c index 407a074..8440e64 100644 --- a/drivers/net/wireless/ath/ath10k/snoc.c +++ b/drivers/net/wireless/ath/ath10k/snoc.c @@ -20,6 +20,7 @@ #include "hif.h" #include "htc.h" #include "snoc.h" +#include "mac.h" #define ATH10K_SNOC_RX_POST_RETRY_MS 50 #define CE_POLL_PIPE 4 @@ -1296,6 +1297,7 @@ int ath10k_snoc_fw_indication(struct ath10k *ar, u64 type) switch (type) { case ATH10K_QMI_EVENT_FW_READY_IND: if (test_bit(ATH10K_SNOC_FLAG_REGISTERED, &ar_snoc->flags)) { + ath10k_mac_tx_unlock(ar, ATH10K_TX_PAUSE_FW_DOWN); queue_work(ar->workqueue, &ar->restart_work); break; } @@ -1313,6 +1315,7 @@ int ath10k_snoc_fw_indication(struct ath10k *ar, u64 type) case ATH10K_QMI_EVENT_FW_DOWN_IND: set_bit(ATH10K_SNOC_FLAG_RECOVERY, &ar_snoc->flags); set_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags); + ath10k_mac_tx_lock(ar, ATH10K_TX_PAUSE_FW_DOWN); break; default: ath10k_err(ar, "invalid fw indication: %llx\n", type); From patchwork Fri Jun 26 18:11:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rakesh Pillai X-Patchwork-Id: 11628327 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A73EB13B4 for ; Fri, 26 Jun 2020 18:12:18 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 80A1B20836 for ; Fri, 26 Jun 2020 18:12:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="3AZ27tbq"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mg.codeaurora.org header.i=@mg.codeaurora.org header.b="JiD/6nyE" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 80A1B20836 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=ath10k-bounces+patchwork-ath10k=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:MIME-Version:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:References:In-Reply-To:Message-Id:Date:Subject:To: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=qiw6Tv8R/Pbtj9WxJMKmzuJ3l9gZaop2kyFQz0iaiRs=; b=3AZ27tbqWZaEZULtZDK1b7dSuE SpqAdVZlmc5T+5ylE2Lbp+kYi3F11GmbvP8LBJIUxfAuBLFoWZ/fgC3G5qTehaV2dEyYMPLFqXjoR iOmibM29Yx9qlH4qPrbuMu5xMzYFunJJtwteweF6770aIljoKw63oQ45gBcCMKUCvwImsYDQPH5zX Y+kkfcJ1aTvH71Y1v2RKReiQbYsmAwAbqzjMRmXSMsG1XvyrKiRmbk5GS/7KMufC2cV7gJeCrFNw9 bYvb9bEdGTK144/AKWWcNB81T9P0+uKdl7gnf33vkOPluGxrUjb7ilp6VJId+FuwMLeNzW/Z46R8T m91Zkyeg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jospU-0000Mp-3k; Fri, 26 Jun 2020 18:12:00 +0000 Received: from m43-7.mailgun.net ([69.72.43.7]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jospR-0000Lm-MM for ath10k@lists.infradead.org; Fri, 26 Jun 2020 18:11:58 +0000 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1593195117; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=wWEYH6xcY9h3fWHDnDKjrVGb7RSYhmw5vEqQxd2Pc3E=; b=JiD/6nyEEQxBh/ufuJPrlgKaCtZB6Z5OiFLruSzA1KQB1Xowxvc6iimeTANB83Yo8hEpPy0O 9pp9jJjiCN56TUXHPIDovotDlcPyWEAw6cW3lptO1G4iEey/tqcAtPvJ1XH+u2gMEjUruN35 S3Rn/KNGN3jjKaPRMa2Yjhv5vu8= X-Mailgun-Sending-Ip: 69.72.43.7 X-Mailgun-Sid: WyJiZDQ3OSIsICJhdGgxMGtAbGlzdHMuaW5mcmFkZWFkLm9yZyIsICJiZTllNGEiXQ== Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n17.prod.us-east-1.postgun.com with SMTP id 5ef63a6dc76a4e7a2a65d975 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Fri, 26 Jun 2020 18:11:57 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id A969DC433CB; Fri, 26 Jun 2020 18:11:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=2.0 tests=ALL_TRUSTED,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.0 Received: from pillair-linux.qualcomm.com (blr-c-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com [103.229.19.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: pillair) by smtp.codeaurora.org (Postfix) with ESMTPSA id 82D32C43391; Fri, 26 Jun 2020 18:11:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 82D32C43391 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=pillair@codeaurora.org From: Rakesh Pillai To: ath10k@lists.infradead.org Subject: [PATCH 2/2] ath10k: Skip wait for delete response if firmware is down Date: Fri, 26 Jun 2020 23:41:40 +0530 Message-Id: <1593195100-24654-3-git-send-email-pillair@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1593195100-24654-1-git-send-email-pillair@codeaurora.org> References: <1593195100-24654-1-git-send-email-pillair@codeaurora.org> X-Spam-Note: CRM114 invocation failed X-Spam-Score: 0.0 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [69.72.43.7 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [69.72.43.7 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: ath10k@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rakesh Pillai , linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org MIME-Version: 1.0 Sender: "ath10k" Errors-To: ath10k-bounces+patchwork-ath10k=patchwork.kernel.org@lists.infradead.org Currently the driver waits for response from the firmware for all the delete cmds, eg: vdev_delete, peer delete. If the firmware is down, these wait will always timeout and return an error. Also during subsytems recovery, any attempt to send a WMI cmd to the FW will return the -ESHUTDOWN status, which when returned to mac80211, can cause unnecessary warnings to be printed on to the console, as shown below [ 2559.529565] Call trace: [ 2559.532214] __sta_info_destroy_part2+0x160/0x168 [mac80211] [ 2559.538157] __sta_info_flush+0x124/0x180 [mac80211] [ 2559.543402] ieee80211_set_disassoc+0x130/0x2c0 [mac80211] [ 2559.549172] ieee80211_mgd_deauth+0x238/0x25c [mac80211] [ 2559.554764] ieee80211_deauth+0x24/0x30 [mac80211] [ 2559.559860] cfg80211_mlme_deauth+0x258/0x2b0 [cfg80211] [ 2559.565446] nl80211_deauthenticate+0xe4/0x110 [cfg80211] [ 2559.571064] genl_rcv_msg+0x3a0/0x440 [ 2559.574888] netlink_rcv_skb+0xb4/0x11c [ 2559.578877] genl_rcv+0x34/0x48 [ 2559.582162] netlink_unicast+0x14c/0x1e4 [ 2559.586235] netlink_sendmsg+0x2f0/0x360 [ 2559.590317] sock_sendmsg+0x44/0x5c [ 2559.593951] ____sys_sendmsg+0x1c8/0x290 [ 2559.598029] ___sys_sendmsg+0xa8/0xfc [ 2559.601840] __sys_sendmsg+0x8c/0xd0 [ 2559.605572] __arm64_compat_sys_sendmsg+0x2c/0x38 [ 2559.610468] el0_svc_common+0xa8/0x160 [ 2559.614372] el0_svc_compat_handler+0x2c/0x38 [ 2559.618905] el0_svc_compat+0x8/0x10 Skip the wait for delete response from the firmware if the firmware is down. Also return success to the mac80211 calls when the peer delete cmd fails with return status -ESHUTDOWN. Tested-on: WCN3990 hw1.0 SNOC WLAN.HL.3.1-01040-QCAHLSWMTPLZ-1 Signed-off-by: Rakesh Pillai --- drivers/net/wireless/ath/ath10k/mac.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index dc7befc..7ac6549 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -701,7 +701,8 @@ static void ath10k_wait_for_peer_delete_done(struct ath10k *ar, u32 vdev_id, unsigned long time_left; int ret; - if (test_bit(WMI_SERVICE_SYNC_DELETE_CMDS, ar->wmi.svc_map)) { + if (test_bit(WMI_SERVICE_SYNC_DELETE_CMDS, ar->wmi.svc_map) && + test_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags)) { ret = ath10k_wait_for_peer_deleted(ar, vdev_id, addr); if (ret) { ath10k_warn(ar, "failed wait for peer deleted"); @@ -841,7 +842,8 @@ static int ath10k_peer_delete(struct ath10k *ar, u32 vdev_id, const u8 *addr) if (ret) return ret; - if (test_bit(WMI_SERVICE_SYNC_DELETE_CMDS, ar->wmi.svc_map)) { + if (test_bit(WMI_SERVICE_SYNC_DELETE_CMDS, ar->wmi.svc_map) && + test_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags)) { unsigned long time_left; time_left = wait_for_completion_timeout @@ -5673,7 +5675,8 @@ static void ath10k_remove_interface(struct ieee80211_hw *hw, ath10k_warn(ar, "failed to delete WMI vdev %i: %d\n", arvif->vdev_id, ret); - if (test_bit(WMI_SERVICE_SYNC_DELETE_CMDS, ar->wmi.svc_map)) { + if (test_bit(WMI_SERVICE_SYNC_DELETE_CMDS, ar->wmi.svc_map) && + test_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags)) { time_left = wait_for_completion_timeout(&ar->vdev_delete_done, ATH10K_VDEV_DELETE_TIMEOUT_HZ); if (time_left == 0) { @@ -6110,6 +6113,11 @@ static int ath10k_hw_scan(struct ieee80211_hw *hw, goto exit; } + if (test_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags)) { + ret = -ESHUTDOWN; + goto exit; + } + spin_lock_bh(&ar->data_lock); switch (ar->scan.state) { case ATH10K_SCAN_IDLE: @@ -6758,7 +6766,9 @@ static int ath10k_sta_state(struct ieee80211_hw *hw, } ret = ath10k_peer_delete(ar, arvif->vdev_id, sta->addr); - if (ret) + if (ret == -ESHUTDOWN) + ret = 0; + else if (ret) ath10k_warn(ar, "failed to delete peer %pM for vdev %d: %i\n", sta->addr, arvif->vdev_id, ret);