forked from Openwrt/openwrt
Previous commits missed some refreshing Signed-off-by: Mantas Pucka <mantas@8devices.com> Link: https://github.com/openwrt/openwrt/pull/18512 Signed-off-by: Robert Marko <robimarko@gmail.com>
192 lines
8.6 KiB
Diff
192 lines
8.6 KiB
Diff
From patchwork Wed Sep 18 21:20:56 2024
|
|
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: 13807214
|
|
X-Patchwork-Delegate: quic_jjohnson@quicinc.com
|
|
Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com
|
|
[205.220.168.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 A44471CB32B
|
|
for <linux-wireless@vger.kernel.org>; Wed, 18 Sep 2024 21:21:14 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=none smtp.client-ip=205.220.168.131
|
|
ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1726694476; cv=none;
|
|
b=YnQUUZ4IfmLtgtYCtYRGhH8uRGd6VL74IRylGv6Ihb2PMO/n5UdfZlDk/m9w0OH4/sSsqULSz2lupiSTwXCPxc+73uK+OUjIEmCfPlNdrtzK2naXyiXAASPqonpnRBnyoIFwaE8zj8AHUqk5TAajedqpK9EnOaboX2XGYVbe0yI=
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1726694476; c=relaxed/simple;
|
|
bh=TAPBD6g5pYNuC8Odk6t6JkL8GvKdG9H30IPHTEgA7C0=;
|
|
h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:
|
|
MIME-Version:Content-Type;
|
|
b=djAINL+wQRgQaGOI4fotrExnm1Yz5quwEW2I7s85hWLI3gB+HsjwPKWJypllDKm8W0FDcrsoZWFmOrfx0wJ5LIe+OtXJ4ijSG7xcJeGtgDXZ3hAA5ZBk/B+CD+g+NZ3c0mwkSKpUm5dUBPKi1+kJsPuVEwKeCmdMVj8QHSYMXPw=
|
|
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=i4iTJD+Z; arc=none smtp.client-ip=205.220.168.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="i4iTJD+Z"
|
|
Received: from pps.filterd (m0279863.ppops.net [127.0.0.1])
|
|
by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id
|
|
48I9VJ15022098;
|
|
Wed, 18 Sep 2024 21:21:11 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=
|
|
2gwv4CbPGErAHv9NWtZrCSVk7NoZpHzKz9tuTs+8dV4=; b=i4iTJD+ZMXDp8Ul8
|
|
HTo5IL/NLwS3mnlutEaaL+juUKm+wsFdl/BeMp9CC4H/sapolIhM4Zje9t3H9K0R
|
|
+z1OxQDEekvWrrfUlikEaUHjOEwQ4YKSPJ+1uAIrbbA3REWeW5z39IITJ3dGU05N
|
|
hnfPQEiFcPgDbFQv0Iaf434znv8rbOow6dc+M1E6EjpGd92Mq80BpsJqP8Ee0RUr
|
|
WO3rsws1kXzFs6ELsg/FmC3l6eG9A4z9SUxcZ7QqTaz8aPOAZS/lclN0cOJT7VgK
|
|
7UNPGoDoJhTmHEX17W/rQR8RiV8c0hMciOuB1sfI7H/1uGkEPMjmfIsEdBjQ/9oa
|
|
DDiHrg==
|
|
Received: from nalasppmta02.qualcomm.com (Global_NAT1.qualcomm.com
|
|
[129.46.96.20])
|
|
by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 41n4hfk92c-1
|
|
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
|
|
Wed, 18 Sep 2024 21:21:11 +0000 (GMT)
|
|
Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com
|
|
[10.47.209.196])
|
|
by NALASPPMTA02.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id
|
|
48ILLA0u011397
|
|
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
|
|
Wed, 18 Sep 2024 21:21:10 GMT
|
|
Received: from ath12k-linux1.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, 18 Sep 2024 14:21:09 -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 V8 9/9] wifi: ath12k: add extended NSS bandwidth support for
|
|
160 MHz
|
|
Date: Wed, 18 Sep 2024 14:20:56 -0700
|
|
Message-ID: <20240918212056.4137076-10-quic_pradeepc@quicinc.com>
|
|
X-Mailer: git-send-email 2.34.1
|
|
In-Reply-To: <20240918212056.4137076-1-quic_pradeepc@quicinc.com>
|
|
References: <20240918212056.4137076-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: Mta6b5FqdCLrvsiUf1WwMHFr8SiJUh5L
|
|
X-Proofpoint-ORIG-GUID: Mta6b5FqdCLrvsiUf1WwMHFr8SiJUh5L
|
|
X-Proofpoint-Virus-Version: vendor=baseguard
|
|
engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29
|
|
definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01
|
|
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
|
|
priorityscore=1501
|
|
clxscore=1015 phishscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0
|
|
impostorscore=0 adultscore=0 suspectscore=0 lowpriorityscore=0 spamscore=0
|
|
bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1
|
|
engine=8.19.0-2408220000 definitions=main-2409180140
|
|
|
|
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
|
|
@@ -2477,8 +2477,10 @@ static void ath12k_peer_assoc_h_he(struc
|
|
arg->peer_nss = min(sta->deflink.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(sta->deflink.rx_nss, ar->num_rx_chains);
|
|
arg->peer_bw_rxnss_override = ATH12K_BW_NSS_MAP_ENABLE;
|
|
|
|
if (!rx_nss) {
|
|
@@ -5636,6 +5638,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;
|
|
}
|
|
|
|
@@ -5816,11 +5824,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))
|
|
@@ -5833,12 +5842,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,
|