1  /*
2   * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
3   *
4   * Permission to use, copy, modify, and/or distribute this software for
5   * any purpose with or without fee is hereby granted, provided that the
6   * above copyright notice and this permission notice appear in all
7   * copies.
8   *
9   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10   * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11   * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12   * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13   * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14   * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15   * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16   * PERFORMANCE OF THIS SOFTWARE.
17   */
18  
19  #ifndef _QC_SAP_IOCTL_H_
20  #define _QC_SAP_IOCTL_H_
21  
22  /*
23   * QCSAP ioctls.
24   */
25  
26  /*
27   * Channel List Info
28   */
29  
30  struct channel_list_info {
31  	uint8_t num_channels;
32  	uint8_t channels[NUM_CHANNELS];
33  };
34  
35  #ifdef __linux__
36  /*
37   * Wireless Extensions API, private ioctl interfaces.
38   *
39   * NB: Even-numbered ioctl numbers have set semantics and are privileged!
40   *     (regardless of the incorrect comment in wireless.h!)
41   */
42  
43  #define QCSAP_IOCTL_SETPARAM          (SIOCIWFIRSTPRIV + 0)
44  #define QCSAP_IOCTL_GETPARAM          (SIOCIWFIRSTPRIV + 1)
45  /* (SIOCIWFIRSTPRIV+2) is unused */
46  #define QCSAP_IOCTL_SET_NONE_GET_THREE (SIOCIWFIRSTPRIV + 3)
47  #define WE_GET_TSF 1
48  #define QCSAP_IOCTL_GET_STAWPAIE      (SIOCIWFIRSTPRIV + 4)
49  #define QCSAP_IOCTL_STOPBSS           (SIOCIWFIRSTPRIV + 6)
50  #define QCSAP_IOCTL_VERSION           (SIOCIWFIRSTPRIV + 7)
51  /* (SIOCIWFIRSTPRIV + 8) is unused */
52  #define QCSAP_IOCTL_GET_CHANNEL       (SIOCIWFIRSTPRIV + 9)
53  #define QCSAP_IOCTL_ASSOC_STA_MACADDR (SIOCIWFIRSTPRIV + 10)
54  #define QCSAP_IOCTL_DISASSOC_STA      (SIOCIWFIRSTPRIV + 11)
55  #define QCSAP_IOCTL_SET_PKTLOG        (SIOCIWFIRSTPRIV + 12)
56  
57  /* Private ioctls and their sub-ioctls */
58  #define QCSAP_PRIV_GET_CHAR_SET_NONE   (SIOCIWFIRSTPRIV + 13)
59  #define QCSAP_GET_STATS 1
60  #define QCSAP_LIST_FW_PROFILE 2
61  
62  /* (SIOCIWFIRSTPRIV + 14) is unused */
63  
64  #define QCSAP_IOCTL_PRIV_SET_THREE_INT_GET_NONE (SIOCIWFIRSTPRIV + 15)
65  #define WE_SET_WLAN_DBG 1
66  #define WE_SET_DP_TRACE 2
67  #define QCSAP_IOCTL_PRIV_SET_VAR_INT_GET_NONE (SIOCIWFIRSTPRIV + 16)
68  #define WE_UNIT_TEST_CMD   7
69  /*
70   * <ioctl>
71   * ch_avoid - unit test SAP channel avoidance
72   *
73   * @INPUT: chan avoid ranges
74   *
75   * @OUTPUT: none
76   *
77   * This IOCTL is used to fake a channel avoidance event.
78   * To test SAP/GO chan switch during chan avoid event process.
79   *
80   * @E.g: iwpriv wlan0 ch_avoid 2452 2462
81   *
82   * Supported Feature: SAP chan avoidance.
83   *
84   * Usage: Internal
85   *
86   * </ioctl>
87   */
88  #define WE_SET_CHAN_AVOID 21
89  
90  #define WE_SET_THERMAL_THROTTLE_CFG     27
91  
92  #define WE_P2P_NOA_CMD  2
93  
94  #define QCSAP_IOCTL_MODIFY_ACL          (SIOCIWFIRSTPRIV + 18)
95  #define QCSAP_IOCTL_GET_CHANNEL_LIST    (SIOCIWFIRSTPRIV + 19)
96  #define QCSAP_IOCTL_SET_TX_POWER        (SIOCIWFIRSTPRIV + 20)
97  #define QCSAP_IOCTL_GET_STA_INFO        (SIOCIWFIRSTPRIV + 21)
98  #define QCSAP_IOCTL_SET_MAX_TX_POWER    (SIOCIWFIRSTPRIV + 22)
99  #define QCSAP_IOCTL_GET_INI_CFG         (SIOCIWFIRSTPRIV + 25)
100  
101  #define QCSAP_IOCTL_SET_TWO_INT_GET_NONE (SIOCIWFIRSTPRIV + 28)
102  /* QCSAP_IOCTL_SET_TWO_INT_GET_NONE sub commands */
103  #define QCSAP_IOCTL_SET_FW_CRASH_INJECT 1
104  #define QCSAP_IOCTL_DUMP_DP_TRACE_LEVEL 2
105  #define QCSAP_ENABLE_FW_PROFILE          3
106  #define QCSAP_SET_FW_PROFILE_HIST_INTVL  4
107  /* Private sub-ioctl for initiating WoW suspend without Apps suspend */
108  #define QCSAP_SET_WLAN_SUSPEND  5
109  #define QCSAP_SET_WLAN_RESUME   6
110  #define QCSAP_SET_BA_AGEING_TIMEOUT 7
111  
112  #define QCSAP_IOCTL_PRIV_GET_RSSI       (SIOCIWFIRSTPRIV + 29)
113  #define QCSAP_IOCTL_PRIV_GET_SOFTAP_LINK_SPEED (SIOCIWFIRSTPRIV + 31)
114  #define QCSAP_IOCTL_GET_BA_AGEING_TIMEOUT (SIOCIWFIRSTPRIV + 32)
115  
116  #define MAX_VAR_ARGS         7
117  
118  #define QCSAP_IOCTL_MAX_STR_LEN 1024
119  
120  #define RC_2_RATE_IDX(_rc)              ((_rc) & 0x7)
121  #define HT_RC_2_STREAMS(_rc)            ((((_rc) & 0x78) >> 3) + 1)
122  
123  #define RC_2_RATE_IDX_11AC(_rc)         ((_rc) & 0xf)
124  #define HT_RC_2_STREAMS_11AC(_rc)       ((((_rc) & 0x30) >> 4) + 1)
125  
126  #define RC_2_RATE_IDX_11AX(_rc)         ((_rc) & 0x1f)
127  #define HT_RC_2_STREAMS_11AX(_rc)       (((_rc) >> 5) & 0x7)
128  
129  #ifdef WLAN_FEATURE_11BE
130  #define RC_2_RATE_IDX_11BE(_rc)         ((_rc) & 0x1f)
131  #define HT_RC_2_STREAMS_11BE(_rc)       (((_rc) >> 5) & 0x7)
132  #endif
133  
134  /*
135   * <ioctl>
136   * setRadar - simulate a radar event
137   *
138   * @INPUT: None
139   *
140   * @OUTPUT: None
141   *
142   * This IOCTL is used to simulate a radar event, state machines for
143   * SAP will behave as same way in which a radar event is reported by WMA
144   *
145   * @E.g: iwpriv wlan0 setRadar
146   *
147   * Supported Feature: DFS
148   *
149   * Usage: Internal
150   *
151   * </ioctl>
152   */
153  
154  /*
155   * <ioctl>
156   * setRadarDbg - enable/disable radar specific logs
157   *
158   * @INPUT: 1/0
159   *
160   * @OUTPUT: None
161   *
162   * This IOCTL is enable radar phyerror info in wma
163   *
164   * @E.g: iwpriv wlan0 setRadarDbg <enable>
165   *  iwpriv wlan0 setRadarDbg 1
166   *
167   * Supported Feature: DFS
168   *
169   * Usage: Internal
170   *
171   * </ioctl>
172   */
173  enum {
174  	QCSAP_PARAM_MAX_ASSOC = 1,
175  	QCSAP_PARAM_GET_WLAN_DBG,
176  	QCSAP_PARAM_CLR_ACL = 4,
177  	QCSAP_PARAM_ACL_MODE,
178  	QCSAP_PARAM_HIDE_SSID,
179  	QCSAP_PARAM_SET_MC_RATE,
180  	QCSAP_PARAM_SET_TXRX_FW_STATS,
181  	QCSAP_PARAM_SET_MCC_CHANNEL_LATENCY,
182  	QCSAP_PARAM_SET_MCC_CHANNEL_QUOTA,
183  	QCSAP_DBGLOG_LOG_LEVEL,
184  	QCSAP_DBGLOG_VAP_ENABLE,
185  	QCSAP_DBGLOG_VAP_DISABLE,
186  	QCSAP_DBGLOG_MODULE_ENABLE,
187  	QCSAP_DBGLOG_MODULE_DISABLE,
188  	QCSAP_DBGLOG_MOD_LOG_LEVEL,
189  	QCSAP_DBGLOG_TYPE,
190  	QCSAP_DBGLOG_REPORT_ENABLE,
191  	QCASAP_TXRX_FWSTATS_RESET,
192  	QCSAP_PARAM_RTSCTS,
193  	QCASAP_SET_11N_RATE,
194  	QCASAP_SET_VHT_RATE,
195  	QCASAP_SHORT_GI,
196  	QCSAP_SET_AMPDU,
197  	QCSAP_SET_AMSDU,
198  	QCSAP_GTX_HT_MCS,
199  	QCSAP_GTX_VHT_MCS,
200  	QCSAP_GTX_USRCFG,
201  	QCSAP_GTX_THRE,
202  	QCSAP_GTX_MARGIN,
203  	QCSAP_GTX_STEP,
204  	QCSAP_GTX_MINTPC,
205  	QCSAP_GTX_BWMASK,
206  	QCASAP_SET_TM_LEVEL,
207  	QCASAP_SET_DFS_IGNORE_CAC,
208  	QCASAP_GET_DFS_NOL,
209  	QCASAP_SET_DFS_NOL,
210  	QCSAP_PARAM_SET_CHANNEL_CHANGE,
211  	QCASAP_SET_DFS_TARGET_CHNL,
212  	QCASAP_SET_RADAR_CMD,
213  	QCSAP_GET_ACL,
214  	QCASAP_TX_CHAINMASK_CMD,
215  	QCASAP_RX_CHAINMASK_CMD,
216  	QCASAP_NSS_CMD,
217  	QCSAP_IPA_UC_STAT,
218  	QCASAP_SET_PHYMODE,
219  	QCASAP_GET_TEMP_CMD,
220  	QCASAP_DUMP_STATS,
221  	QCASAP_CLEAR_STATS,
222  	QCASAP_SET_RADAR_DBG,
223  	QCSAP_GET_FW_PROFILE_DATA,
224  	QCSAP_START_FW_PROFILING,
225  	QCSAP_CAP_TSF,
226  	QCSAP_GET_TSF,
227  	QCSAP_PARAM_CONC_SYSTEM_PREF,
228  	QCASAP_PARAM_LDPC,
229  	QCASAP_PARAM_TX_STBC,
230  	QCASAP_PARAM_RX_STBC,
231  	QCSAP_PARAM_CHAN_WIDTH,
232  	QCSAP_PARAM_SET_TXRX_STATS,
233  	QCASAP_SET_11AX_RATE,
234  	QCASAP_SET_PEER_RATE, /* Not Supported */
235  	QCASAP_PARAM_DCM,
236  	QCASAP_PARAM_RANGE_EXT,
237  	QCSAP_SET_DEFAULT_AMPDU,
238  	QCSAP_ENABLE_RTS_BURSTING,
239  	QCASAP_SET_HE_BSS_COLOR,
240  	QCSAP_SET_BTCOEX_MODE,
241  	QCSAP_SET_BTCOEX_LOW_RSSI_THRESHOLD,
242  };
243  
244  int iw_get_channel_list_with_cc(struct net_device *dev,
245  				mac_handle_t mac_handle,
246  				struct iw_request_info *info,
247  				union iwreq_data *wrqu,
248  				char *extra);
249  
250  #endif /* __linux__ */
251  
252  #endif /*_QC_SAP_IOCTL_H_*/
253