blob: 1d9d84af198b26f99cd66f09b25c3aedcf924737 [file] [log] [blame]
developerbbd45e12023-05-19 08:22:06 +08001From 6f671ea083717d2e0d9578239c761d4fe55e4d74 Mon Sep 17 00:00:00 2001
developer6873eba2023-02-17 07:30:37 +08002From: Yi-Chia Hsieh <yi-chia.hsieh@mediatek.com>
3Date: Thu, 26 Jan 2023 08:50:47 +0800
developerbbd45e12023-05-19 08:22:06 +08004Subject: [PATCH 1030/1033] wifi: mt76: mt7915: add vendor cmd to get available
developerc9233442023-04-04 06:06:17 +08005 color bitmap
developer6873eba2023-02-17 07:30:37 +08006
7Add a vendor cmd to notify user space available color bitmap.
8The OBSS BSS color bitmap is maintained in mac80211, so mt76 will make use of that.
9
10Signed-off-by: Yi-Chia Hsieh <yi-chia.hsieh@mediatek.com>
11---
12 mt7915/vendor.c | 37 +++++++++++++++++++++++++++++++++++++
13 mt7915/vendor.h | 11 +++++++++++
14 2 files changed, 48 insertions(+)
15
16diff --git a/mt7915/vendor.c b/mt7915/vendor.c
developerbbd45e12023-05-19 08:22:06 +080017index 6bbdc6f..af60880 100644
developer6873eba2023-02-17 07:30:37 +080018--- a/mt7915/vendor.c
19+++ b/mt7915/vendor.c
developerc9233442023-04-04 06:06:17 +080020@@ -98,6 +98,11 @@ ibf_ctrl_policy[NUM_MTK_VENDOR_ATTRS_IBF_CTRL] = {
developer6873eba2023-02-17 07:30:37 +080021 [MTK_VENDOR_ATTR_IBF_CTRL_ENABLE] = { .type = NLA_U8 },
22 };
23
24+static struct nla_policy
25+bss_color_ctrl_policy[NUM_MTK_VENDOR_ATTRS_BSS_COLOR_CTRL] = {
26+ [MTK_VENDOR_ATTR_AVAL_BSS_COLOR_BMP] = { .type = NLA_U64 },
27+};
28+
29 struct csi_null_tone {
30 u8 start;
31 u8 end;
developerbbd45e12023-05-19 08:22:06 +080032@@ -1277,6 +1282,27 @@ mt7915_vendor_ibf_ctrl_dump(struct wiphy *wiphy, struct wireless_dev *wdev,
developer6873eba2023-02-17 07:30:37 +080033 return 1;
34 }
35
36+static int
37+mt7915_vendor_bss_color_ctrl_dump(struct wiphy *wiphy, struct wireless_dev *wdev,
38+ struct sk_buff *skb, const void *data, int data_len,
39+ unsigned long *storage)
40+{
41+ struct ieee80211_vif *vif = wdev_to_ieee80211_vif(wdev);
42+ struct ieee80211_bss_conf *bss_conf = &vif->bss_conf;
43+ int len = 0;
44+
45+ if (*storage == 1)
46+ return -ENOENT;
47+ *storage = 1;
48+
49+ if (nla_put_u64_64bit(skb,
50+ MTK_VENDOR_ATTR_AVAL_BSS_COLOR_BMP,
developer14bd31c2023-03-08 06:38:53 +080051+ ~bss_conf->used_color_bitmap, NL80211_ATTR_PAD))
developer6873eba2023-02-17 07:30:37 +080052+ return -ENOMEM;
53+ len += 1;
54+
55+ return len;
56+}
57
58 static const struct wiphy_vendor_command mt7915_vendor_commands[] = {
59 {
developerbbd45e12023-05-19 08:22:06 +080060@@ -1383,6 +1409,17 @@ static const struct wiphy_vendor_command mt7915_vendor_commands[] = {
developer6873eba2023-02-17 07:30:37 +080061 .dumpit = mt7915_vendor_ibf_ctrl_dump,
62 .policy = ibf_ctrl_policy,
63 .maxattr = MTK_VENDOR_ATTR_IBF_CTRL_MAX,
64+ },
65+ {
66+ .info = {
67+ .vendor_id = MTK_NL80211_VENDOR_ID,
68+ .subcmd = MTK_NL80211_VENDOR_SUBCMD_BSS_COLOR_CTRL,
69+ },
70+ .flags = WIPHY_VENDOR_CMD_NEED_NETDEV |
71+ WIPHY_VENDOR_CMD_NEED_RUNNING,
72+ .dumpit = mt7915_vendor_bss_color_ctrl_dump,
73+ .policy = bss_color_ctrl_policy,
74+ .maxattr = MTK_VENDOR_ATTR_BSS_COLOR_CTRL_MAX,
75 }
76 };
77
78diff --git a/mt7915/vendor.h b/mt7915/vendor.h
developer1d9da7d2023-04-15 12:45:34 +080079index 6001ce4..358a16f 100644
developer6873eba2023-02-17 07:30:37 +080080--- a/mt7915/vendor.h
81+++ b/mt7915/vendor.h
82@@ -14,6 +14,7 @@ enum mtk_nl80211_vendor_subcmds {
83 MTK_NL80211_VENDOR_SUBCMD_EDCCA_CTRL = 0xc7,
84 MTK_NL80211_VENDOR_SUBCMD_3WIRE_CTRL = 0xc8,
85 MTK_NL80211_VENDOR_SUBCMD_IBF_CTRL = 0xc9,
86+ MTK_NL80211_VENDOR_SUBCMD_BSS_COLOR_CTRL = 0xca,
87 };
88
89
developerc9233442023-04-04 06:06:17 +080090@@ -258,4 +259,14 @@ enum mtk_vendor_attr_ibf_dump {
developer6873eba2023-02-17 07:30:37 +080091 NUM_MTK_VENDOR_ATTRS_IBF_DUMP - 1
92 };
93
94+enum mtk_vendor_attr_bss_color_ctrl {
95+ MTK_VENDOR_ATTR_BSS_COLOR_CTRL_UNSPEC,
96+
97+ MTK_VENDOR_ATTR_AVAL_BSS_COLOR_BMP,
98+
99+ /* keep last */
100+ NUM_MTK_VENDOR_ATTRS_BSS_COLOR_CTRL,
101+ MTK_VENDOR_ATTR_BSS_COLOR_CTRL_MAX =
102+ NUM_MTK_VENDOR_ATTRS_BSS_COLOR_CTRL - 1
103+};
104 #endif
105--
developer2324aa22023-04-12 11:30:15 +08001062.18.0
developer6873eba2023-02-17 07:30:37 +0800107