Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp880719pxb; Wed, 27 Oct 2021 14:22:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwfedZ4mzvcrUWWFdNka1pvWDxRzZ5nKnUsyC6WUHSE8Ka+94JFwKsbdw6xlW7mJW00PLr3 X-Received: by 2002:a17:906:5d15:: with SMTP id g21mr89710ejt.162.1635369729893; Wed, 27 Oct 2021 14:22:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635369729; cv=none; d=google.com; s=arc-20160816; b=L3grgoV75LahrGiNOnQJ3Xz3FzzU0Na7qwzmpMl9hg67MQ5bweYuiQBBsbMOv6szUp uNirpyyNoxd6LZEskUU0XnbNrVfz2w/SaRkMflWpDccX6tmL0cUCdMsruS+hQKRHDNhR 8Kv8UeUZcpzxmMBK/wT6MCIAzYOx55DIcopHOzPwFAoMBklCx9jV1Oeen2l9xx5Ms1Xf 78L6AeGMf+/+QdlP2OzVfljKJ+rOAyYSVtPgrGQVd10OSGteSUPvKq5Pxzedpj+psf4s QOol8+OSZ3Bucy/uurCpp2b7vJVl/GakrtpuqnG3wf0G35VHOYP98DpfStJMZI2j/JHf A98Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=OdC7LkPyp5AWTA7ablp9ZhOZuD4oCYcrlSj/zgD70NE=; b=O71PD0ydT2vGUaV17FEXhi2UhF1S1PHkiE3vVnQfkp1Tz3AsDpvtURhBU9QhHxA7d1 E5arOlgYHOA+Ul5G3pIe4m2siMRwU26fCycWC8F4MLv+sU4MQMx3iXrmGYta9KZ/G+67 h0dsoTX1FooxLFN45dX8SS29tcpRY88UrZAw9GBrhTbVUawlbDbc8KR27u3W7VAknRmW HI/5Mev3MA5N5nDfI3wd/OYH65vXez3MK+0SERpPxtnsyFTJedgXPUZLnK9BUEjlwQ6y jfLsSIFuV3SqRSg2KZRxaudRCVWCVnd5Gtb5gEsuInoTd0K3MimMVCLMa3dTf0M0voLy ZEQQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=SF9Mgelc; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y22si1653167edc.353.2021.10.27.14.21.53; Wed, 27 Oct 2021 14:22:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=SF9Mgelc; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238859AbhJ0JlG (ORCPT + 67 others); Wed, 27 Oct 2021 05:41:06 -0400 Received: from alexa-out.qualcomm.com ([129.46.98.28]:35654 "EHLO alexa-out.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234018AbhJ0JlF (ORCPT ); Wed, 27 Oct 2021 05:41:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1635327521; x=1666863521; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=OdC7LkPyp5AWTA7ablp9ZhOZuD4oCYcrlSj/zgD70NE=; b=SF9MgelclQdneD61XTpI9Kn4L0QvCCOSQ77ulGK2vrQ0syRbkiQia837 jnhnDUksC2oBSQRTJuaqI4XkS0PBajRO4oVq1KoGOApBq6hwXtnLgjFQ+ Lu6Urhx03PYzgdvJw92nmbtMQt5Z2sKu2ZQ6DmN00joyuYH33/ePrdwDL w=; Received: from ironmsg07-lv.qualcomm.com ([10.47.202.151]) by alexa-out.qualcomm.com with ESMTP; 27 Oct 2021 02:38:40 -0700 X-QCInternal: smtphost Received: from nalasex01a.na.qualcomm.com ([10.47.209.196]) by ironmsg07-lv.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Oct 2021 02:38:41 -0700 Received: from wgong-HP3-Z230-SFF-Workstation.qca.qualcomm.com (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.922.7; Wed, 27 Oct 2021 02:38:39 -0700 From: Wen Gong To: CC: , Subject: [PATCH] ath11k: move peer delete after vdev stop of station for QCA6390 and WCN6855 Date: Wed, 27 Oct 2021 05:38:25 -0400 Message-ID: <20211027093825.12167-1-quic_wgong@quicinc.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01a.na.qualcomm.com (10.47.209.196) Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org When station connect to AP, the wmi command sequence is: peer_create->vdev_start->vdev_up and sequence of station disconnect fo AP is: peer_delete->vdev_down->vdev_stop The sequence of disconnect is not opposite of connect, it caused firmware crash when it handle wmi vdev stop cmd when the AP is support TWT of 802.11 ax, because firmware need access the bss peer for vdev stop cmd. kernel: [ 390.438564] ath11k_pci 0000:05:00.0: wmi cmd send 0x6001 ret 0 kernel: [ 390.438567] ath11k_pci 0000:05:00.0: WMI peer create vdev_id 0 peer_addr c4:04:15:3b:e0:39 kernel: [ 390.472724] ath11k_pci 0000:05:00.0: mac vdev 0 start center_freq 2437 phymode 11ax-he20-2g kernel: [ 390.472731] ath11k_pci 0000:05:00.0: wmi cmd send 0x5003 ret 0 kernel: [ 390.560849] ath11k_pci 0000:05:00.0: wmi cmd send 0x5005 ret 0 kernel: [ 390.560850] ath11k_pci 0000:05:00.0: WMI mgmt vdev up id 0x0 assoc id 1 bssid c4:04:15:3b:e0:39 kernel: [ 399.432896] ath11k_pci 0000:05:00.0: WMI peer delete vdev_id 0 peer_addr c4:04:15:3b:e0:39 kernel: [ 399.432902] ath11k_pci 0000:05:00.0: wmi cmd send 0x6002 ret 0 kernel: [ 399.441380] ath11k_pci 0000:05:00.0: wmi cmd send 0x5007 ret 0 kernel: [ 399.441381] ath11k_pci 0000:05:00.0: WMI vdev down id 0x0 kernel: [ 399.454681] ath11k_pci 0000:05:00.0: wmi cmd send 0x5006 ret 0 kernel: [ 399.454682] ath11k_pci 0000:05:00.0: WMI vdev stop id 0x0 The opposite sequence of disconnect should be: vdev_down->vdev_stop->peer_delete This patch change the sequence of disconnect for station as above opposite sequence for QCA6390, firmware not crash again with this patch. Tested-on: QCA6390 hw2.0 PCI WLAN.HST.1.0.1-01740-QCAHSTSWPLZ_V2_TO_X86-1 Signed-off-by: Wen Gong --- drivers/net/wireless/ath/ath11k/mac.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index 47d0dc69463a..ad3510bec4da 100644 --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -3406,6 +3406,10 @@ static int ath11k_mac_op_sta_state(struct ieee80211_hw *hw, new_state == IEEE80211_STA_NOTEXIST)) { ath11k_dp_peer_cleanup(ar, arvif->vdev_id, sta->addr); + if (ar->ab->hw_params.vdev_start_delay && + vif->type == NL80211_IFTYPE_STATION) + goto free; + ret = ath11k_peer_delete(ar, arvif->vdev_id, sta->addr); if (ret) ath11k_warn(ar->ab, "Failed to delete peer: %pM for VDEV: %d\n", @@ -3427,6 +3431,7 @@ static int ath11k_mac_op_sta_state(struct ieee80211_hw *hw, } spin_unlock_bh(&ar->ab->base_lock); +free: kfree(arsta->tx_stats); arsta->tx_stats = NULL; @@ -6313,6 +6318,19 @@ ath11k_mac_op_unassign_vif_chanctx(struct ieee80211_hw *hw, arvif->is_started = false; + if (ab->hw_params.vdev_start_delay && + arvif->vdev_type == WMI_VDEV_TYPE_STA) { + ret = ath11k_peer_delete(ar, arvif->vdev_id, arvif->bssid); + if (ret) + ath11k_warn(ar->ab, + "delete peer fail: %pM for VDEV: %d\n", + arvif->bssid, arvif->vdev_id); + else + ath11k_dbg(ar->ab, ATH11K_DBG_MAC, + "removed peer after vdev stop: %pM for VDEV: %d\n", + arvif->bssid, arvif->vdev_id); + } + if (ab->hw_params.vdev_start_delay && arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) ath11k_wmi_vdev_down(ar, arvif->vdev_id); -- 2.31.1