blob: aaccdd9450a7156ff70602bd6b74c1a92a07f859 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Manjeet Singh3ed79242017-01-11 19:04:32 +05302 * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
Kiet Lam842dad02014-02-18 18:44:02 -08003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080020 */
Kiet Lam842dad02014-02-18 18:44:02 -080021
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028#ifndef _QC_SAP_IOCTL_H_
29#define _QC_SAP_IOCTL_H_
30
31/*
32 * QCSAP ioctls.
33 */
34
35/*
36 * Max size of optional information elements. We artificially
37 * constrain this; it's limited only by the max frame size (and
38 * the max parameter size of the wireless extensions).
39 */
40#define QCSAP_MAX_OPT_IE 256
41#define QCSAP_MAX_WSC_IE 256
Gopichand Nakkala976e3252013-01-03 15:45:56 -080042#define QCSAP_MAX_GET_STA_INFO 512
Bhargav Shah7f03b812015-08-21 11:17:32 +053043#define QCSAP_MAX_STR_LEN 1024
Jeff Johnson295189b2012-06-20 16:38:30 -070044
45typedef struct sSSID
46{
47 u_int8_t length;
48 u_int8_t ssId[32];
49} tSSID;
50
51typedef struct sSSIDInfo
52{
53 tSSID ssid;
54 u_int8_t ssidHidden;
55}tSSIDInfo;
56
57typedef enum {
58 eQC_DOT11_MODE_ALL = 0,
59 eQC_DOT11_MODE_ABG = 0x0001, //11a/b/g only, no HT, no proprietary
60 eQC_DOT11_MODE_11A = 0x0002,
61 eQC_DOT11_MODE_11B = 0x0004,
62 eQC_DOT11_MODE_11G = 0x0008,
63 eQC_DOT11_MODE_11N = 0x0010,
64 eQC_DOT11_MODE_11G_ONLY = 0x0020,
65 eQC_DOT11_MODE_11N_ONLY = 0x0040,
66 eQC_DOT11_MODE_11B_ONLY = 0x0080,
67 eQC_DOT11_MODE_11A_ONLY = 0x0100,
68 //This is for WIFI test. It is same as eWNIAPI_MAC_PROTOCOL_ALL except when it starts IBSS in 11B of 2.4GHz
69 //It is for CSR internal use
70 eQC_DOT11_MODE_AUTO = 0x0200,
71
72} tQcPhyMode;
73
74#define QCSAP_ADDR_LEN 6
75
76typedef u_int8_t qcmacaddr[QCSAP_ADDR_LEN];
77
78struct qc_mac_acl_entry {
79 qcmacaddr addr;
80 int vlan_id;
81};
82
83typedef enum {
84 eQC_AUTH_TYPE_OPEN_SYSTEM,
85 eQC_AUTH_TYPE_SHARED_KEY,
86 eQC_AUTH_TYPE_AUTO_SWITCH
87} eQcAuthType;
88
89typedef enum {
90 eQC_WPS_BEACON_IE,
91 eQC_WPS_PROBE_RSP_IE,
92 eQC_WPS_ASSOC_RSP_IE
93} eQCWPSType;
94
Jeff Johnson295189b2012-06-20 16:38:30 -070095
96/*
97 * Retrieve the WPA/RSN information element for an associated station.
98 */
99struct sQcSapreq_wpaie {
100 u_int8_t wpa_ie[QCSAP_MAX_OPT_IE];
101 u_int8_t wpa_macaddr[QCSAP_ADDR_LEN];
102};
103
104/*
105 * Retrieve the WSC information element for an associated station.
106 */
107struct sQcSapreq_wscie {
108 u_int8_t wsc_macaddr[QCSAP_ADDR_LEN];
109 u_int8_t wsc_ie[QCSAP_MAX_WSC_IE];
110};
111
112
113/*
114 * Retrieve the WPS PBC Probe Request IEs.
115 */
116typedef struct sQcSapreq_WPSPBCProbeReqIES {
117 u_int8_t macaddr[QCSAP_ADDR_LEN];
118 u_int16_t probeReqIELen;
119 u_int8_t probeReqIE[512];
120} sQcSapreq_WPSPBCProbeReqIES_t ;
121
122/*
123 * Channel List Info
124 */
125
126typedef struct
127{
128 v_U8_t num_channels;
129 v_U8_t channels[WNI_CFG_VALID_CHANNEL_LIST_LEN];
130}tChannelListInfo, *tpChannelListInfo;
131
132
133#ifdef __linux__
134/*
135 * Wireless Extensions API, private ioctl interfaces.
136 *
137 * NB: Even-numbered ioctl numbers have set semantics and are privileged!
138 * (regardless of the incorrect comment in wireless.h!)
139 */
140
141#define QCSAP_IOCTL_SETPARAM (SIOCIWFIRSTPRIV+0)
142#define QCSAP_IOCTL_GETPARAM (SIOCIWFIRSTPRIV+1)
143#define QCSAP_IOCTL_COMMIT (SIOCIWFIRSTPRIV+2)
Jeff Johnson295189b2012-06-20 16:38:30 -0700144
Arun Khandavalli08bcafd2016-11-08 14:45:48 +0530145#define QCSAP_IOCTL_SET_CHAR_GET_NONE (SIOCIWFIRSTPRIV + 3)
146#define WE_WOWL_ADD_PTRN 1
147#define WE_WOWL_DEL_PTRN 2
148
Jeff Johnson295189b2012-06-20 16:38:30 -0700149#define QCSAP_IOCTL_GET_STAWPAIE (SIOCIWFIRSTPRIV+4)
SaidiReddy Yenugae4d84bb2016-05-26 15:07:50 +0530150
Jeff Johnson295189b2012-06-20 16:38:30 -0700151#define QCSAP_IOCTL_STOPBSS (SIOCIWFIRSTPRIV+6)
152#define QCSAP_IOCTL_VERSION (SIOCIWFIRSTPRIV+7)
153#define QCSAP_IOCTL_GET_WPS_PBC_PROBE_REQ_IES (SIOCIWFIRSTPRIV+8)
154#define QCSAP_IOCTL_GET_CHANNEL (SIOCIWFIRSTPRIV+9)
155#define QCSAP_IOCTL_ASSOC_STA_MACADDR (SIOCIWFIRSTPRIV+10)
156#define QCSAP_IOCTL_DISASSOC_STA (SIOCIWFIRSTPRIV+11)
Jeff Johnson295189b2012-06-20 16:38:30 -0700157#define QCSAP_IOCTL_GET_STATS (SIOCIWFIRSTPRIV+13)
158#define QCSAP_IOCTL_CLR_STATS (SIOCIWFIRSTPRIV+14)
159
160#define QCSAP_IOCTL_PRIV_SET_THREE_INT_GET_NONE (SIOCIWFIRSTPRIV+15)
161#define WE_SET_WLAN_DBG 1
162#define QCSAP_IOCTL_PRIV_SET_VAR_INT_GET_NONE (SIOCIWFIRSTPRIV+16)
163#define WE_LOG_DUMP_CMD 1
164#define QCSAP_IOCTL_SET_CHANNEL_RANGE (SIOCIWFIRSTPRIV+17)
165
Jeff Johnson295189b2012-06-20 16:38:30 -0700166#define WE_P2P_NOA_CMD 2
Madan Mohan Koyyalamudid5f04ca2012-11-06 15:51:26 -0800167//IOCTL to configure MCC params
168#define WE_MCC_CONFIG_CREDENTIAL 3
169#define WE_MCC_CONFIG_PARAMS 4
Jeff Johnson295189b2012-06-20 16:38:30 -0700170
171#define QCSAP_IOCTL_MODIFY_ACL (SIOCIWFIRSTPRIV+18)
172#define QCSAP_IOCTL_GET_CHANNEL_LIST (SIOCIWFIRSTPRIV+19)
Jeff Johnsone7245742012-09-05 17:12:55 -0700173#define QCSAP_IOCTL_SET_TX_POWER (SIOCIWFIRSTPRIV+20)
schang86c22c42013-03-13 18:41:24 -0700174#define QCSAP_IOCTL_GET_STA_INFO (SIOCIWFIRSTPRIV+21)
175#define QCSAP_IOCTL_SET_MAX_TX_POWER (SIOCIWFIRSTPRIV+22)
Kiet Lambcf38522013-10-26 18:28:27 +0530176#define QCSAP_IOCTL_DATAPATH_SNAP_SHOT (SIOCIWFIRSTPRIV+23)
177#define QCSAP_IOCTL_SET_TRAFFIC_MONITOR (SIOCIWFIRSTPRIV+24)
Sandeep Puligilla38e31bf2014-05-12 15:37:02 +0530178#define QCSAP_IOCTL_AP_STATS (SIOCIWFIRSTPRIV+25) // get routines should be odd numbered
Jeff Johnson295189b2012-06-20 16:38:30 -0700179
Manjeet Singh3ed79242017-01-11 19:04:32 +0530180#define QCSAP_IOCTL_PRIV_SET_NONE_GET_THREE_INT (SIOCIWFIRSTPRIV+27)
181#define QCSAP_IOCTL_GET_TSF 1
182
Jeff Johnson295189b2012-06-20 16:38:30 -0700183#define MAX_VAR_ARGS 7
184#define QCSAP_IOCTL_PRIV_GET_SOFTAP_LINK_SPEED (SIOCIWFIRSTPRIV + 31)
185
186enum {
187 QCSAP_PARAM_MAX_ASSOC = 1,
Jeff Johnson43971f52012-07-17 12:26:56 -0700188 QCSAP_PARAM_GET_WLAN_DBG = 4,
Jeff Johnson295189b2012-06-20 16:38:30 -0700189 QCSAP_PARAM_CLR_ACL = 6,
190 QCSAP_PARAM_ACL_MODE = 7,
191 QCSAP_PARAM_HIDE_SSID = 8,
Jeff Johnson43971f52012-07-17 12:26:56 -0700192 QCSAP_PARAM_AUTO_CHANNEL = 9,
Leo Chang614d2072013-08-22 14:59:44 -0700193 QCSAP_PARAM_SET_MC_RATE = 10,
Ravi Shankar Upadrastabb216bb2014-06-13 14:40:24 +0530194 QCSAP_PARAM_SET_AUTO_CHANNEL = 11,
Mahesh A Saptasagar786266f2015-10-08 19:09:21 +0530195 QCSAP_PARAM_GET_FRAME_LOGS = 12,
Arun Khandavalli08bcafd2016-11-08 14:45:48 +0530196 QCSAP_PARAM_SET_PROXIMITY = 13,
Manjeet Singh3ed79242017-01-11 19:04:32 +0530197 QCSAP_PARAM_SET_WOWL = 14,
Abhishek Singh02605092017-10-25 14:06:12 +0530198 QCSAP_PARAM_CAP_TSF = 15,
199 QCSAP_PARAM_SET_CHANNEL_CHANGE = 16,
Jeff Johnson295189b2012-06-20 16:38:30 -0700200};
201
202int iw_softap_get_channel_list(struct net_device *dev,
203 struct iw_request_info *info,
204 union iwreq_data *wrqu, char *extra);
205
206#endif /* __linux__ */
207
208#endif /*_QC_SAP_IOCTL_H_*/