From: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
To: <ath12k@lists.infradead.org>, <johannes@sipsolutions.net>
Cc: <linux-wireless@vger.kernel.org>,
Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>,
Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Subject: [PATCH 02/13] wifi: nl80211: send underlying multi-hardware channel capabilities to user space
Date: Thu, 28 Mar 2024 12:59:05 +0530 [thread overview]
Message-ID: <20240328072916.1164195-3-quic_periyasa@quicinc.com> (raw)
In-Reply-To: <20240328072916.1164195-1-quic_periyasa@quicinc.com>
From: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
As originally discussed in the RFC [1], when driver supports multiple
physical hardware under one wiphy, wiphy->num_hw != 0, send per-hardware
supported frequency list to user space. List of frequency are reported
inside an index which identifies the hardware as in wiphy->hw_chans[].
This hardware index will be used in follow up patches to identify the
interface combination capability for each of the underlying physical
hardware abstracted under one wiphy.
[1]: https://lore.kernel.org/linux-wireless/20220920100518.19705-3-quic_vthiagar@quicinc.com/
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00188-QCAHKSWPL_SILICONZ-1
Signed-off-by: Vasanthakumar Thiagarajan <quic_vthiagar@quicinc.com>
Co-developed-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
---
include/uapi/linux/nl80211.h | 28 +++++++++++++++++++++
net/wireless/nl80211.c | 47 ++++++++++++++++++++++++++++++++++++
2 files changed, 75 insertions(+)
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index f917bc6c9b6f..c53c9f941663 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -2856,6 +2856,11 @@ enum nl80211_commands {
* %NL80211_CMD_ASSOCIATE indicating the SPP A-MSDUs
* are used on this connection
*
+ * @NL80211_ATTR_MULTI_HW: nested attribute to send the hardware specific
+ * channel capabilities to user space. Drivers registering multiple
+ * physical hardware under a wiphy can use this attribute,
+ * see &enum nl80211_multi_hw_mac_attrs.
+ *
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
@@ -3401,6 +3406,8 @@ enum nl80211_attrs {
NL80211_ATTR_ASSOC_SPP_AMSDU,
+ NL80211_ATTR_MULTI_HW,
+
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
@@ -7999,4 +8006,25 @@ enum nl80211_ap_settings_flags {
NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT = 1 << 1,
};
+/**
+ * nl80211_multi_hw_attrs - multi-hw attributes
+ *
+ * @NL80211_MULTI_HW_ATTR_INVALID: invalid
+ * @NL80211_MULTI_HW_ATTR_IDX: (u8) multi-HW index to refer the underlying HW
+ * for which the supported channel list is advertised. Internally refer
+ * the index of the wiphy's @hw_chans array.
+ * @NL80211_MULTI_HW_ATTR_FREQS: array of supported center frequencies
+ * @__NL80211_MULTI_HW_ATTR_LAST: internal use
+ * @NL80211_MULTI_HW_ATTR_MAX: maximum multi-hw mac attribute
+ */
+enum nl80211_multi_hw_attrs {
+ __NL80211_MULTI_HW_ATTR_INVALID,
+
+ NL80211_MULTI_HW_ATTR_IDX,
+ NL80211_MULTI_HW_ATTR_FREQS,
+
+ /* keep last */
+ __NL80211_MULTI_HW_ATTR_LAST,
+ NL80211_MULTI_HW_ATTR_MAX = __NL80211_MULTI_HW_ATTR_LAST - 1
+};
#endif /* __LINUX_NL80211_H */
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index b4edba6b0b7b..2a5e395e2e0b 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -2392,6 +2392,47 @@ static int nl80211_put_mbssid_support(struct wiphy *wiphy, struct sk_buff *msg)
return -ENOBUFS;
}
+static int nl80211_put_multi_hw_support(struct wiphy *wiphy,
+ struct sk_buff *msg)
+{
+ struct nlattr *hw_macs, *hw_mac;
+ struct nlattr *freqs;
+ int i, c;
+
+ if (!wiphy->num_hw)
+ return 0;
+
+ hw_macs = nla_nest_start(msg, NL80211_ATTR_MULTI_HW);
+ if (!hw_macs)
+ return -ENOBUFS;
+
+ for (i = 0; i < wiphy->num_hw; i++) {
+ hw_mac = nla_nest_start(msg, i + 1);
+ if (!hw_mac)
+ return -ENOBUFS;
+
+ if (nla_put_u8(msg, NL80211_MULTI_HW_ATTR_IDX, i))
+ return -ENOBUFS;
+
+ freqs = nla_nest_start(msg,
+ NL80211_MULTI_HW_ATTR_FREQS);
+ if (!freqs)
+ return -ENOBUFS;
+
+ for (c = 0; c < wiphy->hw_chans[i]->n_chans; c++)
+ if (nla_put_u32(msg, c + 1,
+ wiphy->hw_chans[i]->chans[c].center_freq))
+ return -ENOBUFS;
+
+ nla_nest_end(msg, freqs);
+
+ nla_nest_end(msg, hw_mac);
+ }
+
+ nla_nest_end(msg, hw_macs);
+ return 0;
+}
+
struct nl80211_dump_wiphy_state {
s64 filter_wiphy;
long start;
@@ -3001,6 +3042,12 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
rdev->wiphy.hw_timestamp_max_peers))
goto nla_put_failure;
+ state->split_start++;
+ break;
+ case 17:
+ if (nl80211_put_multi_hw_support(&rdev->wiphy, msg))
+ goto nla_put_failure;
+
/* done */
state->split_start = 0;
break;
--
2.34.1
next prev parent reply other threads:[~2024-03-28 7:29 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-28 7:29 [PATCH 00/13] wifi: Add multi physical hardware iface combination support Karthikeyan Periyasamy
2024-03-28 7:29 ` [PATCH 01/13] wifi: cfg80211: Add provision to advertise multiple radio in one wiphy Karthikeyan Periyasamy
2024-03-28 7:46 ` Johannes Berg
2024-03-29 14:11 ` Vasanthakumar Thiagarajan
2024-03-29 14:30 ` Johannes Berg
2024-03-29 14:47 ` Ben Greear
2024-04-10 7:56 ` Johannes Berg
2024-04-10 14:37 ` Ben Greear
2024-04-10 15:42 ` Johannes Berg
2024-04-10 16:23 ` Ben Greear
2024-04-10 16:43 ` Jeff Johnson
2024-04-10 18:08 ` Maxime Bizon
2024-04-11 16:26 ` Vasanthakumar Thiagarajan
2024-04-11 16:39 ` Maxime Bizon
2024-04-12 3:50 ` Vasanthakumar Thiagarajan
2024-04-12 7:38 ` Nicolas Escande
2024-04-12 8:01 ` Vasanthakumar Thiagarajan
2024-04-12 12:00 ` James Dutton
2024-04-12 14:39 ` Vasanthakumar Thiagarajan
2024-04-10 18:01 ` Maxime Bizon
2024-04-10 21:03 ` Ben Greear
2024-04-12 4:11 ` Vasanthakumar Thiagarajan
2024-04-12 14:08 ` Ben Greear
2024-04-12 14:31 ` Vasanthakumar Thiagarajan
2024-04-12 15:58 ` Ben Greear
2024-04-13 15:40 ` Ben Greear
2024-04-14 16:02 ` Vasanthakumar Thiagarajan
2024-04-15 13:59 ` Ben Greear
2024-04-14 15:52 ` Vasanthakumar Thiagarajan
2024-04-15 13:53 ` Ben Greear
2024-04-01 4:19 ` Karthikeyan Periyasamy
2024-04-10 9:08 ` Karthikeyan Periyasamy
2024-04-10 9:09 ` Johannes Berg
2024-04-10 9:15 ` Karthikeyan Periyasamy
2024-03-28 7:29 ` Karthikeyan Periyasamy [this message]
2024-03-28 7:49 ` [PATCH 02/13] wifi: nl80211: send underlying multi-hardware channel capabilities to user space Johannes Berg
2024-03-28 10:18 ` Karthikeyan Periyasamy
2024-03-28 12:01 ` Johannes Berg
2024-03-28 15:10 ` Karthikeyan Periyasamy
2024-03-28 16:09 ` Johannes Berg
2024-03-28 16:14 ` Jeff Johnson
2024-03-28 16:17 ` Jeff Johnson
2024-03-28 16:17 ` Johannes Berg
2024-03-28 16:18 ` Johannes Berg
2024-03-28 18:49 ` Jakub Kicinski
2024-03-28 18:53 ` Johannes Berg
2024-03-28 18:57 ` Jakub Kicinski
2024-03-28 19:32 ` Johannes Berg
2024-03-29 14:21 ` Vasanthakumar Thiagarajan
2024-04-10 7:59 ` Johannes Berg
2024-04-10 16:52 ` Jeff Johnson
2024-03-28 7:29 ` [PATCH 03/13] wifi: cfg80211: Refactor the interface combination limit check Karthikeyan Periyasamy
2024-03-28 7:29 ` [PATCH 04/13] wifi: cfg80211/mac80211: extend iface comb advertisement for multi-hardware dev Karthikeyan Periyasamy
2024-03-28 13:22 ` Johannes Berg
2024-04-01 9:56 ` Karthikeyan Periyasamy
2024-03-28 7:29 ` [PATCH 05/13] wifi: nl80211: Refactor the interface combination limit check Karthikeyan Periyasamy
2024-03-28 7:29 ` [PATCH 06/13] wifi: nl80211: send iface combination to user space in multi-hardware wiphy Karthikeyan Periyasamy
2024-03-28 13:33 ` Johannes Berg
2024-03-28 16:19 ` Jeff Johnson
2024-03-29 14:34 ` Vasanthakumar Thiagarajan
2024-04-10 4:10 ` Karthikeyan Periyasamy
2024-04-10 6:59 ` Johannes Berg
2024-04-12 5:27 ` Karthikeyan Periyasamy
2024-04-15 14:27 ` Johannes Berg
2024-04-15 15:57 ` Karthikeyan Periyasamy
2024-03-28 7:29 ` [PATCH 07/13] wifi: cfg80211/mac80211: Refactor iface comb iterate callback for multi-hardware dev Karthikeyan Periyasamy
2024-03-28 13:36 ` Johannes Berg
2024-03-28 7:29 ` [PATCH 08/13] wifi: cfg80211: Refactor the iface combination iteration helper function Karthikeyan Periyasamy
2024-03-28 13:43 ` Johannes Berg
2024-04-02 16:35 ` Karthikeyan Periyasamy
2024-03-28 7:29 ` [PATCH 09/13] wifi: cfg80211: Add multi-hardware iface combination support Karthikeyan Periyasamy
2024-03-28 14:16 ` Johannes Berg
2024-04-03 9:58 ` Karthikeyan Periyasamy
2024-03-28 7:29 ` [PATCH 10/13] wifi: mac80211: expose channel context helper function Karthikeyan Periyasamy
2024-03-28 7:29 ` [PATCH 11/13] wifi: mac80211: Add multi-hardware support in the iface comb helper Karthikeyan Periyasamy
2024-03-28 14:41 ` Johannes Berg
2024-03-28 16:39 ` Jeff Johnson
2024-04-23 16:01 ` Karthikeyan Periyasamy
2024-03-28 7:29 ` [PATCH 12/13] wifi: ath12k: Introduce iface combination cleanup helper Karthikeyan Periyasamy
2024-03-28 7:29 ` [PATCH 13/13] wifi: ath12k: Advertise multi hardware iface combination Karthikeyan Periyasamy
2024-03-28 23:42 ` kernel test robot
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=20240328072916.1164195-3-quic_periyasa@quicinc.com \
--to=quic_periyasa@quicinc.com \
--cc=ath12k@lists.infradead.org \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=quic_vthiagar@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).