Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp778298ybt; Fri, 26 Jun 2020 11:18:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx/17WKKjIwvYdW75RTflt59PsJPuj78nPn06PnDj8qC5sNYV1ZiAZb2nxPJPCtVsPMTq6L X-Received: by 2002:a05:6402:1d86:: with SMTP id dk6mr4782241edb.108.1593195495075; Fri, 26 Jun 2020 11:18:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593195495; cv=none; d=google.com; s=arc-20160816; b=NnuCMTXZ4sW7ahohlhpXtW8KjU58MIBdcd2oCku4J/rfHYqvllYx8aL31LZWb5VSKs 9Ico4s2nY2tRBxSSdmZqXD1kWKGuFEe+qvSgq3hArfFwJUFfBs14wj6ahOSH8xFK6UQw mQOBPCVjTAYsYKpW7WDr2l+qxkjNv3ea/gsxWzJ+w8ZcKSlIvY2w9Fzg+xN+dSAFx+rF XeKRCJbcPMAInxtJdCjOAAvhRkxX9panPVWkFf3cAYVhxyPpaGoe8SSVGjExs2dnRyHK oKXnAJcaLvnAFH/VOM5cQ67RxkveNX4+tX32mXfV1FfVcetGHt2XUm/r3ARfoZEni4X1 xR2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dmarc-filter:dkim-signature; bh=wWEYH6xcY9h3fWHDnDKjrVGb7RSYhmw5vEqQxd2Pc3E=; b=R+bvHGfOYgbGIYd+cdBxiw2aaqdo3FUPYRF1XYZ3yoOe6tz3wISPtc8Qa/7NjykFIK AvigYYia1iY/apz6CxRKwfhp715Nbh4sDYR+jDytpWF/DFqiV66RFh2hNLtFpJzwWMsD FkNqDtp/Xmfm2VtTecYIzsbzS+lK+QpDBY4yibPI4bcH9fIxt4MV1QGv6i+qWgYtLjYP Snqs+EgtRm6MfddWYYttZDVfAHTvDKnq3JHnn+UXenPkzARhtQGGtYErlxlq7A7RTatA sbf/NoxmqVTdx/qELAhrKPjVJIdoXPYHJwkmh2xdTapnrV/XDN0ONcnn6HyrxtEhsfGL VMew== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@mg.codeaurora.org header.s=smtp header.b=QT1DvGLR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v8si7445957edr.557.2020.06.26.11.17.51; Fri, 26 Jun 2020 11:18:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@mg.codeaurora.org header.s=smtp header.b=QT1DvGLR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726128AbgFZSMI (ORCPT + 99 others); Fri, 26 Jun 2020 14:12:08 -0400 Received: from mail29.static.mailgun.info ([104.130.122.29]:20220 "EHLO mail29.static.mailgun.info" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725907AbgFZSMG (ORCPT ); Fri, 26 Jun 2020 14:12:06 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1593195125; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=wWEYH6xcY9h3fWHDnDKjrVGb7RSYhmw5vEqQxd2Pc3E=; b=QT1DvGLRM+HZAJKUzECDvNC/aAmGvUom+/f6r2GlwzuGNFrsm0gUEPYXYD+s/yPXEJ17w8YN qO1mECvHvh2IGUAQjxNC38R5U6XcY7A5XuS1GR5pXthUkqkD66KsfvnUydgqDpBhoqd3k0j1 LRthdRBkr6Mv44ZTwn0Zxporgjw= X-Mailgun-Sending-Ip: 104.130.122.29 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n09.prod.us-east-1.postgun.com with SMTP id 5ef63a6da3d8a4474359f2d7 (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 74342C433C8; 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, 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 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 Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Rakesh Pillai 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> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.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); -- 2.7.4