mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2025-08-27 08:04:49 +00:00
203 lines
9.4 KiB
Diff
203 lines
9.4 KiB
Diff
From patchwork Wed May 21 22:45:39 2025
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
|
|
X-Patchwork-Id: 14096122
|
|
X-Patchwork-Delegate: quic_jjohnson@quicinc.com
|
|
Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com
|
|
[205.220.180.131])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A1E9239E85
|
|
for <linux-wireless@vger.kernel.org>; Wed, 21 May 2025 22:45:59 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=none smtp.client-ip=205.220.180.131
|
|
ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1747867561; cv=none;
|
|
b=YNQGoLeTsEUX0an1dYT8uFrTBxczoxLPoB0nXP+MEP3YMcemaxVf4zoi5GMSuKPLe4yeLz/R7AB090SrXrBTbY6MmwXLrUJGFBQUGwr05KQ5BnedSLyVE+PtNo01ZVjrjprsc5LC4z0vYHmQdBsqIfqP+bb+ATVkdkkKWV4Kg3A=
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1747867561; c=relaxed/simple;
|
|
bh=WkoD1wqfpiPds2ZNAwn7TY38LnC6cJOAuobqk3tWbSk=;
|
|
h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:
|
|
MIME-Version:Content-Type;
|
|
b=aAO1mDb/PrwqKRHoeS0PAxgJAvDLPWPPBkzRX0hwJbFzcXtKdtWHDE83rjGbjR1bnM7lhkAU4SwoT87sOuciveNqdywUe6+9XTB2oWM/j0Tza/ZRKKRZFeByh7ib8Aibzc4y0ACg7Oaz/QhmWmPObPjc4oKuVzaH/P8Tub0rBcI=
|
|
ARC-Authentication-Results: i=1; smtp.subspace.kernel.org;
|
|
dmarc=pass (p=none dis=none) header.from=quicinc.com;
|
|
spf=pass smtp.mailfrom=quicinc.com;
|
|
dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com
|
|
header.b=o3M+Sjyr; arc=none smtp.client-ip=205.220.180.131
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=pass (p=none dis=none) header.from=quicinc.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=quicinc.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com
|
|
header.b="o3M+Sjyr"
|
|
Received: from pps.filterd (m0279871.ppops.net [127.0.0.1])
|
|
by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id
|
|
54LJHZNq001758;
|
|
Wed, 21 May 2025 22:45:56 GMT
|
|
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=
|
|
cc:content-transfer-encoding:content-type:date:from:in-reply-to
|
|
:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
|
|
wh8AVrVaz3Wne8xUCnRodQGPYbrNE8Rm9/NepU3KoQA=; b=o3M+SjyriKBrU+dH
|
|
+Uwb/f5RzskxDlOAgOvwNH7O5p766ueJYE/nAazyAuVI1fbDT1gkgvOM4VOLQAPP
|
|
zg9tDUD5Mz80GzBzSnheYbeedz7RgpaN14Qr6Gz/+1yrP4wWTh2quGduIAXBFDZR
|
|
QpWsQh2DxVOvXqoLRm64iurJNhvpq+YIAwpAxEA9Fp46SrXsFefc82nza6qgdk5P
|
|
pUjalFWnwLLxaSHJj2EoJhFDAf99q9N5KNKW/UCNY8A2CwQXqL9KmggTLRK1OC+S
|
|
ueHigeV9ydoGGD1W6zmEdydGv5JSaQRhjAxtJokUtrlUwn8mbpJyokm+Ie4GZV5v
|
|
tie1qQ==
|
|
Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com
|
|
[129.46.96.20])
|
|
by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46rwf6vbsg-1
|
|
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
|
|
Wed, 21 May 2025 22:45:56 +0000 (GMT)
|
|
Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com
|
|
[10.47.209.196])
|
|
by NALASPPMTA04.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id
|
|
54LMjtcB022245
|
|
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
|
|
Wed, 21 May 2025 22:45:55 GMT
|
|
Received: from ath12k-linux2.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.1544.9; Wed, 21 May 2025 15:45:54 -0700
|
|
From: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
|
|
To: <ath12k@lists.infradead.org>
|
|
CC: <linux-wireless@vger.kernel.org>,
|
|
Pradeep Kumar Chitrapu
|
|
<quic_pradeepc@quicinc.com>,
|
|
Jeff Johnson <quic_jjohnson@quicinc.com>
|
|
Subject: [PATCH ath-next V14 9/9] wifi: ath12k: add extended NSS bandwidth
|
|
support for 160 MHz
|
|
Date: Wed, 21 May 2025 15:45:39 -0700
|
|
Message-ID: <20250521224539.355985-10-quic_pradeepc@quicinc.com>
|
|
X-Mailer: git-send-email 2.43.0
|
|
In-Reply-To: <20250521224539.355985-1-quic_pradeepc@quicinc.com>
|
|
References: <20250521224539.355985-1-quic_pradeepc@quicinc.com>
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-wireless@vger.kernel.org
|
|
List-Id: <linux-wireless.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-wireless+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-wireless+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To
|
|
nalasex01a.na.qualcomm.com (10.47.209.196)
|
|
X-QCInternal: smtphost
|
|
X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800
|
|
signatures=585085
|
|
X-Proofpoint-GUID: 3XlPaBNySyE2wx5TC6p1DVWVXzadsV9U
|
|
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTIxMDIyNiBTYWx0ZWRfX4g8vKznbpwuH
|
|
ZKoHe/eZESaXJ/nU0MF27s2mZH9kbhxkG1nYDBAxgIAR6HSB4Ir8V8BP9wvETNPaaV4xpgjbT6m
|
|
sDGIplm3HpwbpmQYiBtQIsOrs/s1B2t7uVdhqW02FHlFu/UIBLwZc7J8sLJcsYdxHYcx7MQ3nEe
|
|
tDoPrPTEwHw7n1CnzcfVsEUAuxuJ5iFaxBATgZF+LuAhijNvhyaoEWRUO2KUcBJaFHq/QbCYfpY
|
|
JBXWUNl+mlZxfQe4pogCpRmvEOONRvpKgZLFdEAxf2Fx0Z7OhaIV84gi99TYTjfe1aihjorJ/cp
|
|
cv78Jzcd3Pe3GwTFD0ZOqI30oSiaUyJS3E9XIjfDGLAVMK6FeM+KOYgnqo95ImgBH8HRshrA4LJ
|
|
qTKv2kKP1y4zPtpf7lmI2mcl7emiLGQx+t0d7Z8upCbYseoNAGHUkFJ45HF940Za9ZkEYTRq
|
|
X-Authority-Analysis: v=2.4 cv=fZOty1QF c=1 sm=1 tr=0 ts=682e57a4 cx=c_pps
|
|
a=ouPCqIW2jiPt+lZRy3xVPw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17
|
|
a=GEpy-HfZoHoA:10 a=dt9VzEwgFbYA:10 a=COk6AnOGAAAA:8 a=Opr4SxZhII4Vei-TI5AA:9
|
|
a=TjNXssC_j7lpFel5tvFf:22
|
|
X-Proofpoint-ORIG-GUID: 3XlPaBNySyE2wx5TC6p1DVWVXzadsV9U
|
|
X-Proofpoint-Virus-Version: vendor=baseguard
|
|
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
|
|
definitions=2025-05-21_07,2025-05-20_03,2025-03-28_01
|
|
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
|
|
clxscore=1015 mlxscore=0 adultscore=0 spamscore=0 bulkscore=0 suspectscore=0
|
|
malwarescore=0 priorityscore=1501 impostorscore=0 mlxlogscore=999
|
|
lowpriorityscore=0 phishscore=0 classifier=spam authscore=0 authtc=n/a
|
|
authcc= route=outbound adjust=0 reason=mlx scancount=1
|
|
engine=8.19.0-2505160000 definitions=main-2505210226
|
|
|
|
Currently rx and tx MCS map for 160 MHz under HE capabilities
|
|
are not updating properly, when 160 MHz is configured with NSS
|
|
lesser than max NSS support. Fix this by utilizing
|
|
nss_ratio_enabled and nss_ratio_info fields sent by firmware
|
|
in service ready event.
|
|
|
|
However, if firmware advertises EXT NSS BW support in VHT caps
|
|
as 1(1x2) and when nss_ratio_info indicates 1:1, reset the EXT
|
|
NSS BW Support in VHT caps to 0 which indicates 1x1. This is
|
|
to avoid incorrectly choosing 1:2 NSS ratio when using the
|
|
default VHT caps advertised by firmware.
|
|
|
|
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
|
|
|
|
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
|
|
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
|
|
---
|
|
drivers/net/wireless/ath/ath12k/mac.c | 33 ++++++++++++++++++++++-----
|
|
1 file changed, 27 insertions(+), 6 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/ath/ath12k/mac.c
|
|
+++ b/drivers/net/wireless/ath/ath12k/mac.c
|
|
@@ -2644,8 +2644,10 @@ static void ath12k_peer_assoc_h_he(struc
|
|
arg->peer_nss = min(link_sta->rx_nss, max_nss);
|
|
|
|
if (arg->peer_phymode == MODE_11AX_HE160) {
|
|
- tx_nss = ath12k_get_nss_160mhz(ar, max_nss);
|
|
+ tx_nss = ath12k_get_nss_160mhz(ar, ar->num_tx_chains);
|
|
rx_nss = min(arg->peer_nss, tx_nss);
|
|
+
|
|
+ arg->peer_nss = min(link_sta->rx_nss, ar->num_rx_chains);
|
|
arg->peer_bw_rxnss_override = ATH12K_BW_NSS_MAP_ENABLE;
|
|
|
|
if (!rx_nss) {
|
|
@@ -7465,6 +7467,12 @@ ath12k_create_vht_cap(struct ath12k *ar,
|
|
vht_cap.vht_mcs.rx_mcs_map = cpu_to_le16(rxmcs_map);
|
|
vht_cap.vht_mcs.tx_mcs_map = cpu_to_le16(txmcs_map);
|
|
|
|
+ /* Check if the HW supports 1:1 NSS ratio and reset
|
|
+ * EXT NSS BW Support field to 0 to indicate 1:1 ratio
|
|
+ */
|
|
+ if (ar->pdev->cap.nss_ratio_info == WMI_NSS_RATIO_1_NSS)
|
|
+ vht_cap.cap &= ~IEEE80211_VHT_CAP_EXT_NSS_BW_MASK;
|
|
+
|
|
return vht_cap;
|
|
}
|
|
|
|
@@ -7645,11 +7653,12 @@ static void ath12k_mac_set_hemcsmap(stru
|
|
struct ieee80211_sta_he_cap *he_cap)
|
|
{
|
|
struct ieee80211_he_mcs_nss_supp *mcs_nss = &he_cap->he_mcs_nss_supp;
|
|
- u16 txmcs_map, rxmcs_map;
|
|
+ u8 maxtxnss_160 = ath12k_get_nss_160mhz(ar, ar->num_tx_chains);
|
|
+ u8 maxrxnss_160 = ath12k_get_nss_160mhz(ar, ar->num_rx_chains);
|
|
+ u16 txmcs_map_160 = 0, rxmcs_map_160 = 0;
|
|
+ u16 txmcs_map = 0, rxmcs_map = 0;
|
|
u32 i;
|
|
|
|
- rxmcs_map = 0;
|
|
- txmcs_map = 0;
|
|
for (i = 0; i < 8; i++) {
|
|
if (i < ar->num_tx_chains &&
|
|
(ar->cfg_tx_chainmask >> cap->tx_chain_mask_shift) & BIT(i))
|
|
@@ -7662,12 +7671,24 @@ static void ath12k_mac_set_hemcsmap(stru
|
|
rxmcs_map |= IEEE80211_HE_MCS_SUPPORT_0_11 << (i * 2);
|
|
else
|
|
rxmcs_map |= IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2);
|
|
+
|
|
+ if (i < maxtxnss_160 &&
|
|
+ (ar->cfg_tx_chainmask >> cap->tx_chain_mask_shift) & BIT(i))
|
|
+ txmcs_map_160 |= IEEE80211_HE_MCS_SUPPORT_0_11 << (i * 2);
|
|
+ else
|
|
+ txmcs_map_160 |= IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2);
|
|
+
|
|
+ if (i < maxrxnss_160 &&
|
|
+ (ar->cfg_tx_chainmask >> cap->tx_chain_mask_shift) & BIT(i))
|
|
+ rxmcs_map_160 |= IEEE80211_HE_MCS_SUPPORT_0_11 << (i * 2);
|
|
+ else
|
|
+ rxmcs_map_160 |= IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2);
|
|
}
|
|
|
|
mcs_nss->rx_mcs_80 = cpu_to_le16(rxmcs_map & 0xffff);
|
|
mcs_nss->tx_mcs_80 = cpu_to_le16(txmcs_map & 0xffff);
|
|
- mcs_nss->rx_mcs_160 = cpu_to_le16(rxmcs_map & 0xffff);
|
|
- mcs_nss->tx_mcs_160 = cpu_to_le16(txmcs_map & 0xffff);
|
|
+ mcs_nss->rx_mcs_160 = cpu_to_le16(rxmcs_map_160 & 0xffff);
|
|
+ mcs_nss->tx_mcs_160 = cpu_to_le16(txmcs_map_160 & 0xffff);
|
|
}
|
|
|
|
static void ath12k_mac_copy_he_cap(struct ath12k *ar,
|