Received: by 2002:ab2:6f44:0:b0:1fd:c486:4f03 with SMTP id l4csp56547lqq; Wed, 12 Jun 2024 16:43:02 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXI7O83fQrE8w4QqJOaGq7cOTrYlOZN9TWYoF24LP4xXcKSDMYqNrIjlVLuH5e6kXvv/aFwxdrQAiv/TAFwFh3bofIeznzjwxfmaFn3HQ== X-Google-Smtp-Source: AGHT+IHvf3Uvsnp+KP+qWF9ndNWmTAr5lx3Q5K+1seGaRjrS4Hwp3Y/1mtMtgfW5NDRBvJDehi2F X-Received: by 2002:a05:6214:4688:b0:6b0:86ab:fe89 with SMTP id 6a1803df08f44-6b1a62a2546mr40331136d6.33.1718235782680; Wed, 12 Jun 2024 16:43:02 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1718235782; cv=pass; d=google.com; s=arc-20160816; b=nC4a7YjVa4OLRSk8geVGgcLqxgeUsWxQaGR/uoHjOenQezcusXhC9G/Tn3hv+CH17E on+TY8/PyFkf1uE4cqx7cQZbpjFgNzhsXMRP0PhW4pzYucDAtUDVb3paNxiJ2zonFATB R7neRRJ1wYlgCxMLaZMQ3NZ20aGjbRnqlqslvb9ynhOq+sq507GU5zCdtI3d20deqVB2 ApesQBsoYcdUZGRYTgWja+ewDrTpDe+xzXXXzWaEplC2+jmrkGkhFYXI4YXHuJWCYWNa gxdw6A2nroqAXuBYDT0/KSOXg3o6wU6/kDxvJcuL8aS+G3S6mVMM1Cwc6BqOwg1uUShB 4iKw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=MLMq/GyXzRJOlO4IstObk5HeUL5Rzqs8GuASCp3RbeA=; fh=FUdFWCrTIuD+tPFxJi1T4gCpJojaOO5T5aNRzX5HxNE=; b=RxjL1ag1/kyL3/ybdaix7H2MU1QKCKgRk5yR96EkppQ8orGArpGQI+ktS2pHu1yXkW oqSbMWN6dDRItP8lXBD2kvtaES5mbowECTvZbjwbIFeeb8Tuf2+rCEizdayw5iTViqP2 +OlCLVX1H9RfdhQjYRA3z3yO9Q0Alzz5XqrFXooZGWKkfbgs/MyvGqAY+YEzUTFpkPCl +/2qgeSHmzngc8Fi94y3+cyWosyP/OGhtlGI1LB5HUe1XTsZGiG21mE2amZZMQy1i7jj Da64mPyXiy9nZgB1EuXUBP1IRj3r1W3c7trXKwV8UxaUAx+Ytvhs7K8kx3e40sTrCZrU 35fw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=laODRw1L; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-wireless+bounces-8909-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-wireless+bounces-8909-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id 6a1803df08f44-6b2a5afd472si2439606d6.266.2024.06.12.16.43.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Jun 2024 16:43:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless+bounces-8909-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=laODRw1L; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-wireless+bounces-8909-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-wireless+bounces-8909-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 597F51C2183A for ; Wed, 12 Jun 2024 23:43:02 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 73E2612EBD6; Wed, 12 Jun 2024 23:42:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="laODRw1L" X-Original-To: linux-wireless@vger.kernel.org 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 D9B2712E1D3 for ; Wed, 12 Jun 2024 23:42:34 +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=1718235756; cv=none; b=pd+u2wW9/HcwGJ/EgrHqPk4FDm4qsOPfm387ZNk+DYUxm6b3AzHIG+3mA45pFdP8VkK54R19UY5/4hFUc48nHd8iyZOulPGkV6HFQEonoQp2OkRCJ68EfYfw/VuJDHWZ7Za0IF/pe4Vwd7LoNJ3z8tQ6t5b2tMpUF59fw5koyUk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718235756; c=relaxed/simple; bh=/YyommARHN8KX6UTHYh3bKUBtymjTwV3MZ4CvdFpTxg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=p/o7zynMV/z306I4QefWHUjU7WeV81RpbrZ4f3zQFso/LezL5XyG5fBuwmVhH5l5hCqNnFJc8gkcm6gBj0njA3ZAltM9jJKPgo1byUOk/AaeuUBI/8a1l0r6d3Cp6MKcNbrUS/gN25ICquDX5c1kCh/1OiHwg8Zw9UUKhscdS/4= 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=laODRw1L; 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 Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 45CKnoQp016607; Wed, 12 Jun 2024 23:42:25 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= MLMq/GyXzRJOlO4IstObk5HeUL5Rzqs8GuASCp3RbeA=; b=laODRw1LS1EX3bzL pWdQPs/eQ011QqmF67eIDEVL4HXchc3wXtkRkdA3B3iFfeNJatFZWr38cj4572p/ aMv+5U/OiLqSlkx8wjWTGcPwFOidhPUuHrhTba3ah/R5DbrkhFT7E4N3X8AB7JGA D8wP26pd01+DKhDlgJ4HV5tmLz1peTjX4ZyrEowmC/iZpuT5bS+gnN96jk5Dv4LB JO2yf5+31N0tvuKOv3qP5cveMnGmLwU3jbSY5OuqwQ5ak9gpedIdknFpwVeosNDk f5QjZ4Cuyr9GmNyT0bgVBurv78fnAKk5fM7HtvleDySNnJBK36OdowgNTdgrbLpq 0WBOXA== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3ypm45chj2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Jun 2024 23:42:25 +0000 (GMT) Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA01.qualcomm.com (8.17.1.19/8.17.1.19) with ESMTPS id 45CNgORs032443 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Jun 2024 23:42:24 GMT Received: from pradeepc-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, 12 Jun 2024 16:42:23 -0700 From: Pradeep Kumar Chitrapu To: CC: , Pradeep Kumar Chitrapu , Jeff Johnson Subject: [PATCH V7 9/9] wifi: ath12k: add extended NSS bandwidth support for 160 MHz Date: Wed, 12 Jun 2024 16:42:09 -0700 Message-ID: <20240612234209.2324181-10-quic_pradeepc@quicinc.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240612234209.2324181-1-quic_pradeepc@quicinc.com> References: <20240612234209.2324181-1-quic_pradeepc@quicinc.com> Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) 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: Wz9mvGKjxT7gZj5q_t0LkEXG39fzBMS5 X-Proofpoint-ORIG-GUID: Wz9mvGKjxT7gZj5q_t0LkEXG39fzBMS5 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-06-12_11,2024-06-12_02,2024-05-17_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 impostorscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 spamscore=0 clxscore=1015 priorityscore=1501 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2405170001 definitions=main-2406120169 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 Acked-by: Jeff Johnson --- drivers/net/wireless/ath/ath12k/mac.c | 33 ++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c index a75a3235ac19..b1a048fe888d 100644 --- a/drivers/net/wireless/ath/ath12k/mac.c +++ b/drivers/net/wireless/ath/ath12k/mac.c @@ -2394,8 +2394,10 @@ static void ath12k_peer_assoc_h_he(struct ath12k *ar, 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) { @@ -5520,6 +5522,12 @@ ath12k_create_vht_cap(struct ath12k *ar, u32 rate_cap_tx_chainmask, 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; } @@ -5702,11 +5710,12 @@ static void ath12k_mac_set_hemcsmap(struct ath12k *ar, 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)) @@ -5719,12 +5728,24 @@ static void ath12k_mac_set_hemcsmap(struct ath12k *ar, 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, -- 2.34.1