All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rameshkumar Sundaram <quic_ramess@quicinc.com>
To: <ath12k@lists.infradead.org>
Cc: <linux-wireless@vger.kernel.org>,
	Sriram R <quic_srirrama@quicinc.com>,
	Rameshkumar Sundaram <quic_ramess@quicinc.com>
Subject: [PATCH v4 10/12] wifi: ath12k: Modify set and get antenna mac ops for single wiphy
Date: Tue, 12 Mar 2024 19:25:55 +0530	[thread overview]
Message-ID: <20240312135557.1778379-11-quic_ramess@quicinc.com> (raw)
In-Reply-To: <20240312135557.1778379-1-quic_ramess@quicinc.com>

From: Sriram R <quic_srirrama@quicinc.com>

As multiple radios are combined into a single wiphy, and
the current infrastructure supports only set/get antenna
for the wiphy, the max Tx/Rx antenna capability is advertised
during wiphy register.
Hence, When antenna set/get is received we adjust the set/get
based on max radio capability and set/get antenna accordingly.

Multi radio capability needs to introduced with interface
combination changes to support single wiphy model in cfg80211
which would help extend the wiphy specific get/set configs similar
to this to per hw level.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3

Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Signed-off-by: Rameshkumar Sundaram <quic_ramess@quicinc.com>
---
 drivers/net/wireless/ath/ath12k/mac.c | 39 ++++++++++++++++++---------
 1 file changed, 26 insertions(+), 13 deletions(-)

diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
index 29c68aa2d30a..0934abc7995f 100644
--- a/drivers/net/wireless/ath/ath12k/mac.c
+++ b/drivers/net/wireless/ath/ath12k/mac.c
@@ -5183,6 +5183,13 @@ static int __ath12k_set_antenna(struct ath12k *ar, u32 tx_ant, u32 rx_ant)
 	if (ath12k_check_chain_mask(ar, rx_ant, false))
 		return -EINVAL;
 
+	/* Since we advertised the max cap of all radios combined during wiphy
+	 * registration, ensure we don't set the antenna config higher than the
+	 * limits
+	 */
+	tx_ant = min_t(u32, tx_ant, ar->pdev->cap.tx_chain_mask);
+	rx_ant = min_t(u32, rx_ant, ar->pdev->cap.rx_chain_mask);
+
 	ar->cfg_tx_chainmask = tx_ant;
 	ar->cfg_rx_chainmask = rx_ant;
 
@@ -6489,16 +6496,19 @@ static void ath12k_mac_op_configure_filter(struct ieee80211_hw *hw,
 static int ath12k_mac_op_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant)
 {
 	struct ath12k_hw *ah = ath12k_hw_to_ah(hw);
+	int antennas_rx = 0, antennas_tx = 0;
 	struct ath12k *ar;
+	int i;
 
-	ar = ath12k_ah_to_ar(ah, 0);
-
-	mutex_lock(&ar->conf_mutex);
-
-	*tx_ant = ar->cfg_tx_chainmask;
-	*rx_ant = ar->cfg_rx_chainmask;
+	for_each_ar(i, ah, ar) {
+		mutex_lock(&ar->conf_mutex);
+		antennas_rx = max_t(u32, antennas_rx, ar->cfg_rx_chainmask);
+		antennas_tx = max_t(u32, antennas_tx, ar->cfg_tx_chainmask);
+		mutex_unlock(&ar->conf_mutex);
+	}
 
-	mutex_unlock(&ar->conf_mutex);
+	*tx_ant = antennas_tx;
+	*rx_ant = antennas_rx;
 
 	return 0;
 }
@@ -6507,13 +6517,16 @@ static int ath12k_mac_op_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx
 {
 	struct ath12k_hw *ah = ath12k_hw_to_ah(hw);
 	struct ath12k *ar;
-	int ret;
-
-	ar = ath12k_ah_to_ar(ah, 0);
+	int ret = 0;
+	int i;
 
-	mutex_lock(&ar->conf_mutex);
-	ret = __ath12k_set_antenna(ar, tx_ant, rx_ant);
-	mutex_unlock(&ar->conf_mutex);
+	for_each_ar(i, ah, ar) {
+		mutex_lock(&ar->conf_mutex);
+		ret = __ath12k_set_antenna(ar, tx_ant, rx_ant);
+		mutex_unlock(&ar->conf_mutex);
+		if (ret)
+			break;
+	}
 
 	return ret;
 }
-- 
2.25.1


  parent reply	other threads:[~2024-03-12 13:56 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-12 13:55 [PATCH v4 00/12] wifi: ath12k: Add single wiphy support Rameshkumar Sundaram
2024-03-12 13:55 ` [PATCH v4 01/12] wifi: ath12k: add multiple radio support in a single MAC HW un/register Rameshkumar Sundaram
2024-03-12 21:53   ` Jeff Johnson
2024-03-13 12:57     ` Rameshkumar Sundaram
2024-03-13 15:06       ` Jeff Johnson
2024-03-13 16:48         ` Kalle Valo
2024-03-13 16:58           ` Kalle Valo
2024-03-13 18:04             ` Jeff Johnson
2024-03-13 19:56               ` Jonas Gorski
2024-03-14 19:38                 ` Rameshkumar Sundaram
2024-03-18 18:36                   ` Kalle Valo
2024-03-19 15:51                     ` Rameshkumar Sundaram
2024-03-12 13:55 ` [PATCH v4 02/12] wifi: ath12k: Modify add and remove chanctx ops for single wiphy support Rameshkumar Sundaram
2024-03-12 21:58   ` Jeff Johnson
2024-03-12 13:55 ` [PATCH v4 03/12] wifi: ath12k: modify ath12k mac start/stop ops for single wiphy Rameshkumar Sundaram
2024-03-12 22:13   ` Jeff Johnson
2024-03-13 14:29     ` Rameshkumar Sundaram
2024-03-12 13:55 ` [PATCH v4 04/12] wifi: ath12k: vdev statemachine changes " Rameshkumar Sundaram
2024-03-12 22:25   ` Jeff Johnson
2024-03-13 14:36     ` Rameshkumar Sundaram
2024-03-14 10:17   ` kernel test robot
2024-03-12 13:55 ` [PATCH v4 05/12] wifi: ath12k: scan " Rameshkumar Sundaram
2024-03-12 22:35   ` Jeff Johnson
2024-03-19 15:58     ` Rameshkumar Sundaram
2024-03-12 13:55 ` [PATCH v4 06/12] wifi: ath12k: fetch correct radio based on vdev status Rameshkumar Sundaram
2024-03-12 22:48   ` Jeff Johnson
2024-03-12 13:55 ` [PATCH v4 07/12] wifi: ath12k: Cache vdev configs before vdev create Rameshkumar Sundaram
2024-03-12 23:01   ` Jeff Johnson
2024-03-19 16:12     ` Rameshkumar Sundaram
2024-03-12 13:55 ` [PATCH v4 08/12] wifi: ath12k: Add additional checks for vif and sta iterators Rameshkumar Sundaram
2024-03-12 23:06   ` Jeff Johnson
2024-03-12 13:55 ` [PATCH v4 09/12] wifi: ath12k: modify regulatory support for single wiphy architecture Rameshkumar Sundaram
2024-03-12 23:13   ` Jeff Johnson
2024-03-12 13:55 ` Rameshkumar Sundaram [this message]
2024-03-12 23:18   ` [PATCH v4 10/12] wifi: ath12k: Modify set and get antenna mac ops for single wiphy Jeff Johnson
2024-03-12 13:55 ` [PATCH v4 11/12] wifi: ath12k: Modify rts threshold mac op " Rameshkumar Sundaram
2024-03-12 23:21   ` Jeff Johnson
2024-03-12 13:55 ` [PATCH v4 12/12] wifi: ath12k: support get_survey " Rameshkumar Sundaram
2024-03-12 23:25   ` Jeff Johnson
2024-03-19 16:22     ` Rameshkumar Sundaram
2024-03-12 20:59 ` [PATCH v4 00/12] wifi: ath12k: Add single wiphy support Jeff Johnson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240312135557.1778379-11-quic_ramess@quicinc.com \
    --to=quic_ramess@quicinc.com \
    --cc=ath12k@lists.infradead.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=quic_srirrama@quicinc.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.