blob: e93390d7f3df65a19fad8e9f0bf264fa8b65e9f0 [file] [log] [blame]
developer617abbd2024-04-23 14:50:01 +08001From 5be34a5e9682f4448e41322dc4f96d5d9a58240e Mon Sep 17 00:00:00 2001
2From: Howard Hsu <howard-yh.hsu@mediatek.com>
3Date: Mon, 30 May 2022 15:04:57 +0800
4Subject: [PATCH 032/104] mtk: hostapd: Add mtk_vendor.h
5
6---
7 src/common/mtk_vendor.h | 197 ++++++++++++++++++++++++++++++++++++++++
8 1 file changed, 197 insertions(+)
9 create mode 100644 src/common/mtk_vendor.h
10
11diff --git a/src/common/mtk_vendor.h b/src/common/mtk_vendor.h
12new file mode 100644
13index 000000000..4a19d2fc9
14--- /dev/null
15+++ b/src/common/mtk_vendor.h
16@@ -0,0 +1,197 @@
17+// SPDX-License-Identifier: ISC
18+/* Copyright (C) 2020 Felix Fietkau <nbd@nbd.name> */
19+#ifndef MTK_VENDOR_H
20+#define MTK_VENDOR_H
21+
22+#define OUI_MTK 0x000ce7
23+
24+enum mtk_nl80211_vendor_subcmds {
25+ MTK_NL80211_VENDOR_SUBCMD_AMNT_CTRL = 0xae,
26+ MTK_NL80211_VENDOR_SUBCMD_CSI_CTRL = 0xc2,
27+ MTK_NL80211_VENDOR_SUBCMD_RFEATURE_CTRL = 0xc3,
28+ MTK_NL80211_VENDOR_SUBCMD_WIRELESS_CTRL = 0xc4,
29+ MTK_NL80211_VENDOR_SUBCMD_EDCCA_CTRL = 0xc7,
30+};
31+
32+enum mtk_vendor_attr_edcca_ctrl {
33+ MTK_VENDOR_ATTR_EDCCA_THRESHOLD_INVALID = 0,
34+
35+ MTK_VENDOR_ATTR_EDCCA_CTRL_MODE,
36+ MTK_VENDOR_ATTR_EDCCA_CTRL_PRI20_VAL,
37+ MTK_VENDOR_ATTR_EDCCA_CTRL_SEC20_VAL,
38+ MTK_VENDOR_ATTR_EDCCA_CTRL_SEC40_VAL,
39+ MTK_VENDOR_ATTR_EDCCA_CTRL_SEC80_VAL,
40+ MTK_VENDOR_ATTR_EDCCA_CTRL_COMPENSATE,
41+ MTK_VENDOR_ATTR_EDCCA_CTRL_SEC160_VAL,
42+
43+ /* keep last */
44+ NUM_MTK_VENDOR_ATTRS_EDCCA_CTRL,
45+ MTK_VENDOR_ATTR_EDCCA_CTRL_MAX =
46+ NUM_MTK_VENDOR_ATTRS_EDCCA_CTRL - 1
47+};
48+
49+enum mtk_vendor_attr_edcca_ctrl_mode {
50+ EDCCA_CTRL_SET_EN = 0,
51+ EDCCA_CTRL_SET_THERS,
52+ EDCCA_CTRL_GET_EN,
53+ EDCCA_CTRL_GET_THERS,
54+ EDCCA_CTRL_NUM,
55+};
56+
57+static struct nla_policy edcca_ctrl_policy[NUM_MTK_VENDOR_ATTRS_EDCCA_CTRL] = {
58+ [MTK_VENDOR_ATTR_EDCCA_CTRL_MODE] = { .type = NLA_U8 },
59+ [MTK_VENDOR_ATTR_EDCCA_CTRL_PRI20_VAL] = { .type = NLA_U8 },
60+ [MTK_VENDOR_ATTR_EDCCA_CTRL_SEC20_VAL] = { .type = NLA_U8 },
61+ [MTK_VENDOR_ATTR_EDCCA_CTRL_SEC40_VAL] = { .type = NLA_U8 },
62+ [MTK_VENDOR_ATTR_EDCCA_CTRL_SEC80_VAL] = { .type = NLA_U8 },
63+ [MTK_VENDOR_ATTR_EDCCA_CTRL_COMPENSATE] = { .type = NLA_U8 },
64+ [MTK_VENDOR_ATTR_EDCCA_CTRL_SEC160_VAL] = { .type = NLA_U8 },
65+};
66+
67+enum mtk_vendor_attr_csi_ctrl {
68+ MTK_VENDOR_ATTR_CSI_CTRL_UNSPEC,
69+
70+ MTK_VENDOR_ATTR_CSI_CTRL_CFG,
71+ MTK_VENDOR_ATTR_CSI_CTRL_CFG_MODE,
72+ MTK_VENDOR_ATTR_CSI_CTRL_CFG_TYPE,
73+ MTK_VENDOR_ATTR_CSI_CTRL_CFG_VAL1,
74+ MTK_VENDOR_ATTR_CSI_CTRL_CFG_VAL2,
75+ MTK_VENDOR_ATTR_CSI_CTRL_MAC_ADDR,
76+ MTK_VENDOR_ATTR_CSI_CTRL_INTERVAL,
77+
78+ MTK_VENDOR_ATTR_CSI_CTRL_DUMP_NUM,
79+
80+ MTK_VENDOR_ATTR_CSI_CTRL_DATA,
81+
82+ /* keep last */
83+ NUM_MTK_VENDOR_ATTRS_CSI_CTRL,
84+ MTK_VENDOR_ATTR_CSI_CTRL_MAX =
85+ NUM_MTK_VENDOR_ATTRS_CSI_CTRL - 1
86+};
87+
88+enum mtk_vendor_attr_csi_data {
89+ MTK_VENDOR_ATTR_CSI_DATA_UNSPEC,
90+ MTK_VENDOR_ATTR_CSI_DATA_PAD,
91+
92+ MTK_VENDOR_ATTR_CSI_DATA_VER,
93+ MTK_VENDOR_ATTR_CSI_DATA_TS,
94+ MTK_VENDOR_ATTR_CSI_DATA_RSSI,
95+ MTK_VENDOR_ATTR_CSI_DATA_SNR,
96+ MTK_VENDOR_ATTR_CSI_DATA_BW,
97+ MTK_VENDOR_ATTR_CSI_DATA_CH_IDX,
98+ MTK_VENDOR_ATTR_CSI_DATA_TA,
99+ MTK_VENDOR_ATTR_CSI_DATA_I,
100+ MTK_VENDOR_ATTR_CSI_DATA_Q,
101+ MTK_VENDOR_ATTR_CSI_DATA_INFO,
102+ MTK_VENDOR_ATTR_CSI_DATA_RSVD1,
103+ MTK_VENDOR_ATTR_CSI_DATA_RSVD2,
104+ MTK_VENDOR_ATTR_CSI_DATA_RSVD3,
105+ MTK_VENDOR_ATTR_CSI_DATA_RSVD4,
106+ MTK_VENDOR_ATTR_CSI_DATA_TX_ANT,
107+ MTK_VENDOR_ATTR_CSI_DATA_RX_ANT,
108+ MTK_VENDOR_ATTR_CSI_DATA_MODE,
109+ MTK_VENDOR_ATTR_CSI_DATA_H_IDX,
110+
111+ /* keep last */
112+ NUM_MTK_VENDOR_ATTRS_CSI_DATA,
113+ MTK_VENDOR_ATTR_CSI_DATA_MAX =
114+ NUM_MTK_VENDOR_ATTRS_CSI_DATA - 1
115+};
116+
117+enum mtk_vendor_attr_mnt_ctrl {
118+ MTK_VENDOR_ATTR_AMNT_CTRL_UNSPEC,
119+
120+ MTK_VENDOR_ATTR_AMNT_CTRL_SET,
121+ MTK_VENDOR_ATTR_AMNT_CTRL_DUMP,
122+ /* keep last */
123+ NUM_MTK_VENDOR_ATTRS_AMNT_CTRL,
124+ MTK_VENDOR_ATTR_AMNT_CTRL_MAX =
125+ NUM_MTK_VENDOR_ATTRS_AMNT_CTRL - 1
126+};
127+
128+enum mtk_vendor_attr_mnt_set {
129+ MTK_VENDOR_ATTR_AMNT_SET_UNSPEC,
130+
131+ MTK_VENDOR_ATTR_AMNT_SET_INDEX,
132+ MTK_VENDOR_ATTR_AMNT_SET_MACADDR,
133+
134+ /* keep last */
135+ NUM_MTK_VENDOR_ATTRS_AMNT_SET,
136+ MTK_VENDOR_ATTR_AMNT_SET_MAX =
137+ NUM_MTK_VENDOR_ATTRS_AMNT_SET - 1
138+};
139+
140+enum mtk_vendor_attr_mnt_dump {
141+ MTK_VENDOR_ATTR_AMNT_DUMP_UNSPEC,
142+
143+ MTK_VENDOR_ATTR_AMNT_DUMP_INDEX,
144+ MTK_VENDOR_ATTR_AMNT_DUMP_LEN,
145+ MTK_VENDOR_ATTR_AMNT_DUMP_RESULT,
146+
147+ /* keep last */
148+ NUM_MTK_VENDOR_ATTRS_AMNT_DUMP,
149+ MTK_VENDOR_ATTR_AMNT_DUMP_MAX =
150+ NUM_MTK_VENDOR_ATTRS_AMNT_DUMP - 1
151+};
152+
153+enum mtk_vendor_attr_wireless_ctrl {
154+ MTK_VENDOR_ATTR_WIRELESS_CTRL_UNSPEC,
155+
156+ MTK_VENDOR_ATTR_WIRELESS_CTRL_FIXED_MCS,
157+ MTK_VENDOR_ATTR_WIRELESS_CTRL_FIXED_OFDMA,
158+ MTK_VENDOR_ATTR_WIRELESS_CTRL_PPDU_TX_TYPE,
159+ MTK_VENDOR_ATTR_WIRELESS_CTRL_NUSERS_OFDMA,
160+ MTK_VENDOR_ATTR_WIRELESS_CTRL_BA_BUFFER_SIZE,
161+ MTK_VENDOR_ATTR_WIRELESS_CTRL_MIMO,
162+ MTK_VENDOR_ATTR_WIRELESS_CTRL_AMPDU,
163+ MTK_VENDOR_ATTR_WIRELESS_CTRL_AMSDU,
164+ MTK_VENDOR_ATTR_WIRELESS_CTRL_CERT,
165+
166+ /* keep last */
167+ NUM_MTK_VENDOR_ATTRS_WIRELESS_CTRL,
168+ MTK_VENDOR_ATTR_WIRELESS_CTRL_MAX =
169+ NUM_MTK_VENDOR_ATTRS_WIRELESS_CTRL - 1
170+};
171+
172+enum mtk_vendor_attr_rfeature_ctrl {
173+ MTK_VENDOR_ATTR_RFEATURE_CTRL_UNSPEC,
174+
175+ MTK_VENDOR_ATTR_RFEATURE_CTRL_HE_GI,
176+ MTK_VENDOR_ATTR_RFEATURE_CTRL_HE_LTF,
177+ MTK_VENDOR_ATTR_RFEATURE_CTRL_TRIG_TYPE_CFG,
178+ MTK_VENDOR_ATTR_RFEATURE_CTRL_TRIG_TYPE_EN,
179+ MTK_VENDOR_ATTR_RFEATURE_CTRL_TRIG_TYPE,
180+ MTK_VENDOR_ATTR_RFEATURE_CTRL_ACK_PLCY,
181+
182+ /* keep last */
183+ NUM_MTK_VENDOR_ATTRS_RFEATURE_CTRL,
184+ MTK_VENDOR_ATTR_RFEATURE_CTRL_MAX =
185+ NUM_MTK_VENDOR_ATTRS_RFEATURE_CTRL - 1
186+};
187+
188+#define CSI_MAX_COUNT 256
189+#define ETH_ALEN 6
190+
191+struct csi_data {
192+ s16 data_i[CSI_MAX_COUNT];
193+ s16 data_q[CSI_MAX_COUNT];
194+ s8 rssi;
195+ u8 snr;
196+ u32 ts;
197+ u8 data_bw;
198+ u8 pri_ch_idx;
199+ u8 ta[ETH_ALEN];
200+ u32 info;
201+ u8 rx_mode;
202+ u32 h_idx;
203+ u16 tx_idx;
204+ u16 rx_idx;
205+};
206+
207+struct amnt_data {
208+ u8 idx;
209+ u8 addr[ETH_ALEN];
210+ s8 rssi[4];
211+ u32 last_seen;
212+};
213+#endif /* MTK_VENDOR_H */
214--
2152.39.2
216