xref: /wlan-driver/qcacld-3.0/core/hdd/inc/wlan_hdd_wext.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name #ifndef __WEXT_IW_H__
21*5113495bSYour Name #define __WEXT_IW_H__
22*5113495bSYour Name 
23*5113495bSYour Name #include <linux/version.h>
24*5113495bSYour Name #include <linux/module.h>
25*5113495bSYour Name #include <linux/netdevice.h>
26*5113495bSYour Name #include <linux/wireless.h>
27*5113495bSYour Name #include <net/iw_handler.h>
28*5113495bSYour Name #include <linux/timer.h>
29*5113495bSYour Name #include "qdf_event.h"
30*5113495bSYour Name 
31*5113495bSYour Name struct hdd_context;
32*5113495bSYour Name struct sap_config;
33*5113495bSYour Name 
34*5113495bSYour Name /*
35*5113495bSYour Name  * order of parameters in addTs private ioctl
36*5113495bSYour Name  */
37*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_HANDLE                       0
38*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_TID                          1
39*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_DIRECTION                    2
40*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_APSD                         3
41*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_USER_PRIORITY                4
42*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_NOMINAL_MSDU_SIZE            5
43*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_MAXIMUM_MSDU_SIZE            6
44*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_MINIMUM_DATA_RATE            7
45*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_MEAN_DATA_RATE               8
46*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_PEAK_DATA_RATE               9
47*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_MAX_BURST_SIZE              10
48*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_MINIMUM_PHY_RATE            11
49*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_SURPLUS_BANDWIDTH_ALLOWANCE 12
50*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_SERVICE_INTERVAL            13
51*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_SUSPENSION_INTERVAL         14
52*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_BURST_SIZE_DEFN             15
53*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_ACK_POLICY                  16
54*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_INACTIVITY_INTERVAL         17
55*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_MAX_SERVICE_INTERVAL        18
56*5113495bSYour Name #define HDD_WLAN_WMM_PARAM_COUNT                       19
57*5113495bSYour Name 
58*5113495bSYour Name #define MHZ 6
59*5113495bSYour Name 
60*5113495bSYour Name #define WE_MAX_STR_LEN                                 IW_PRIV_SIZE_MASK
61*5113495bSYour Name #define WLAN_HDD_UI_BAND_AUTO                          0
62*5113495bSYour Name #define WLAN_HDD_UI_BAND_5_GHZ                         1
63*5113495bSYour Name #define WLAN_HDD_UI_BAND_2_4_GHZ                       2
64*5113495bSYour Name 
65*5113495bSYour Name enum hdd_wlan_wmm_direction {
66*5113495bSYour Name 	HDD_WLAN_WMM_DIRECTION_UPSTREAM = 0,
67*5113495bSYour Name 	HDD_WLAN_WMM_DIRECTION_DOWNSTREAM = 1,
68*5113495bSYour Name 	HDD_WLAN_WMM_DIRECTION_BIDIRECTIONAL = 2,
69*5113495bSYour Name };
70*5113495bSYour Name 
71*5113495bSYour Name enum hdd_wlan_wmm_power_save {
72*5113495bSYour Name 	HDD_WLAN_WMM_POWER_SAVE_LEGACY = 0,
73*5113495bSYour Name 	HDD_WLAN_WMM_POWER_SAVE_UAPSD = 1,
74*5113495bSYour Name };
75*5113495bSYour Name 
76*5113495bSYour Name typedef enum {
77*5113495bSYour Name 	/* TSPEC/re-assoc done, async */
78*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_SETUP_SUCCESS = 0,
79*5113495bSYour Name 	/* no need to setup TSPEC since ACM=0 and no UAPSD desired,
80*5113495bSYour Name 	 * sync + async
81*5113495bSYour Name 	 */
82*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_SETUP_SUCCESS_NO_ACM_NO_UAPSD = 1,
83*5113495bSYour Name 	/* no need to setup TSPEC since ACM=0 and UAPSD already exists,
84*5113495bSYour Name 	 * sync + async
85*5113495bSYour Name 	 */
86*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_SETUP_SUCCESS_NO_ACM_UAPSD_EXISTING = 2,
87*5113495bSYour Name 	/* TSPEC result pending, sync */
88*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_SETUP_PENDING = 3,
89*5113495bSYour Name 	/* TSPEC/re-assoc failed, sync + async */
90*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_SETUP_FAILED = 4,
91*5113495bSYour Name 	/* Request rejected due to invalid params, sync + async */
92*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_SETUP_FAILED_BAD_PARAM = 5,
93*5113495bSYour Name 	/* TSPEC request rejected since AP!=QAP, sync */
94*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_SETUP_FAILED_NO_WMM = 6,
95*5113495bSYour Name 
96*5113495bSYour Name 	/* TSPEC modification/re-assoc successful, async */
97*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_MODIFY_SUCCESS = 7,
98*5113495bSYour Name 	/* TSPEC modification a no-op since ACM=0 and
99*5113495bSYour Name 	 * no change in UAPSD, sync + async
100*5113495bSYour Name 	 */
101*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_MODIFY_SUCCESS_NO_ACM_NO_UAPSD = 8,
102*5113495bSYour Name 	/* TSPEC modification a no-op since ACM=0 and
103*5113495bSYour Name 	 * requested U-APSD already exists, sync + async
104*5113495bSYour Name 	 */
105*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_MODIFY_SUCCESS_NO_ACM_UAPSD_EXISTING = 9,
106*5113495bSYour Name 	/* TSPEC result pending, sync */
107*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_MODIFY_PENDING = 10,
108*5113495bSYour Name 	/* TSPEC modification failed, prev TSPEC in effect, sync + async */
109*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_MODIFY_FAILED = 11,
110*5113495bSYour Name 	/* TSPEC modification request rejected due to invalid params,
111*5113495bSYour Name 	 * sync + async
112*5113495bSYour Name 	 */
113*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_MODIFY_FAILED_BAD_PARAM = 12,
114*5113495bSYour Name 
115*5113495bSYour Name 	/* TSPEC release successful, sync and also async */
116*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_RELEASE_SUCCESS = 13,
117*5113495bSYour Name 	/* TSPEC release pending, sync */
118*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_RELEASE_PENDING = 14,
119*5113495bSYour Name 	/* TSPEC release failed, sync + async */
120*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_RELEASE_FAILED = 15,
121*5113495bSYour Name 	/* TSPEC release rejected due to invalid params, sync */
122*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_RELEASE_FAILED_BAD_PARAM = 16,
123*5113495bSYour Name 	/* TSPEC modified due to the mux'ing of requests on ACs, async */
124*5113495bSYour Name 
125*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_MODIFIED = 17,
126*5113495bSYour Name 	/* TSPEC revoked by AP, async */
127*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_LOST = 18,
128*5113495bSYour Name 	/* some internal failure like memory allocation failure, etc, sync */
129*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_INTERNAL_FAILURE = 19,
130*5113495bSYour Name 
131*5113495bSYour Name 	/* U-APSD failed during setup but OTA setup (whether TSPEC exchange or
132*5113495bSYour Name 	 * re-assoc) was done so app should release this QoS, async
133*5113495bSYour Name 	 */
134*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_SETUP_UAPSD_SET_FAILED = 20,
135*5113495bSYour Name 	/* U-APSD failed during modify, but OTA setup (whether TSPEC exchange or
136*5113495bSYour Name 	 * re-assoc) was done so app should release this QoS, async
137*5113495bSYour Name 	 */
138*5113495bSYour Name 	HDD_WLAN_WMM_STATUS_MODIFY_UAPSD_SET_FAILED = 21
139*5113495bSYour Name } hdd_wlan_wmm_status_e;
140*5113495bSYour Name 
141*5113495bSYour Name /** Enable 11d */
142*5113495bSYour Name #define ENABLE_11D  1
143*5113495bSYour Name 
144*5113495bSYour Name /** Disable 11d */
145*5113495bSYour Name #define DISABLE_11D 0
146*5113495bSYour Name 
147*5113495bSYour Name #define HDD_RTSCTS_EN_MASK                  0xF
148*5113495bSYour Name #define HDD_RTSCTS_ENABLE                   1
149*5113495bSYour Name #define HDD_CTS_ENABLE                      2
150*5113495bSYour Name 
151*5113495bSYour Name #define HDD_AUTO_RATE_SGI    0x8
152*5113495bSYour Name 
153*5113495bSYour Name /* Packet Types. */
154*5113495bSYour Name #define WLAN_KEEP_ALIVE_UNSOLICIT_ARP_RSP     2
155*5113495bSYour Name #define WLAN_KEEP_ALIVE_NULL_PKT              1
156*5113495bSYour Name 
157*5113495bSYour Name /*
158*5113495bSYour Name  * Defines for fw_test command
159*5113495bSYour Name  */
160*5113495bSYour Name #define HDD_FWTEST_PARAMS 3
161*5113495bSYour Name #define HDD_FWTEST_SU_PARAM_ID 53
162*5113495bSYour Name #define HDD_FWTEST_MU_PARAM_ID 2
163*5113495bSYour Name #define HDD_FWTEST_SU_DEFAULT_VALUE 100
164*5113495bSYour Name #define HDD_FWTEST_MU_DEFAULT_VALUE 40
165*5113495bSYour Name #define HDD_FWTEST_MAX_VALUE 500
166*5113495bSYour Name 
167*5113495bSYour Name #ifdef WLAN_WEXT_SUPPORT_ENABLE
168*5113495bSYour Name /**
169*5113495bSYour Name  * hdd_register_wext() - register wext context
170*5113495bSYour Name  * @dev: net device handle
171*5113495bSYour Name  *
172*5113495bSYour Name  * Registers wext interface context for a given net device
173*5113495bSYour Name  *
174*5113495bSYour Name  * Returns: None
175*5113495bSYour Name  */
176*5113495bSYour Name void hdd_register_wext(struct net_device *dev);
177*5113495bSYour Name 
178*5113495bSYour Name /**
179*5113495bSYour Name  * hdd_wext_unregister() - unregister wext context with rtnl lock dependency
180*5113495bSYour Name  * @dev: net device from which wireless extensions are being unregistered
181*5113495bSYour Name  * @rtnl_held: flag which indicates if caller is holding the rtnl_lock
182*5113495bSYour Name  *
183*5113495bSYour Name  * Unregisters wext context for a given net device. This behaves the
184*5113495bSYour Name  * same as hdd_unregister_wext() except it does not take the rtnl_lock
185*5113495bSYour Name  * if the caller is already holding it.
186*5113495bSYour Name  *
187*5113495bSYour Name  * Returns: None
188*5113495bSYour Name  */
189*5113495bSYour Name void hdd_wext_unregister(struct net_device *dev,
190*5113495bSYour Name 			 bool rtnl_held);
191*5113495bSYour Name 
192*5113495bSYour Name static inline
hdd_wext_send_event(struct net_device * dev,unsigned int cmd,union iwreq_data * wrqu,const char * extra)193*5113495bSYour Name void hdd_wext_send_event(struct net_device *dev, unsigned int cmd,
194*5113495bSYour Name 			 union iwreq_data *wrqu, const char *extra)
195*5113495bSYour Name {
196*5113495bSYour Name 	wireless_send_event(dev, cmd, wrqu, extra);
197*5113495bSYour Name }
198*5113495bSYour Name 
199*5113495bSYour Name /**
200*5113495bSYour Name  * hdd_wlan_get_stats() - Get txrx stats in SAP mode
201*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
202*5113495bSYour Name  * @length:   Size of the data copied
203*5113495bSYour Name  * @buffer:   Pointer to char buffer.
204*5113495bSYour Name  * @buf_len:  Length of the char buffer.
205*5113495bSYour Name  *
206*5113495bSYour Name  * This function called when the "iwpriv wlan0 get_stats" command is given.
207*5113495bSYour Name  * It used to collect the txrx stats when the device is configured in SAP mode.
208*5113495bSYour Name  *
209*5113495bSYour Name  * Return - none
210*5113495bSYour Name  */
211*5113495bSYour Name void hdd_wlan_get_stats(struct wlan_hdd_link_info *link_info, uint16_t *length,
212*5113495bSYour Name 			char *buffer, uint16_t buf_len);
213*5113495bSYour Name 
214*5113495bSYour Name void hdd_wlan_list_fw_profile(uint16_t *length,
215*5113495bSYour Name 			      char *buffer, uint16_t buf_len);
216*5113495bSYour Name 
217*5113495bSYour Name int iw_set_var_ints_getnone(struct net_device *dev,
218*5113495bSYour Name 			   struct iw_request_info *info,
219*5113495bSYour Name 			   union iwreq_data *wrqu, char *extra);
220*5113495bSYour Name 
221*5113495bSYour Name int iw_set_three_ints_getnone(struct net_device *dev,
222*5113495bSYour Name 			     struct iw_request_info *info,
223*5113495bSYour Name 			     union iwreq_data *wrqu, char *extra);
224*5113495bSYour Name 
225*5113495bSYour Name int hdd_priv_get_data(struct iw_point *p_priv_data,
226*5113495bSYour Name 		     union iwreq_data *wrqu);
227*5113495bSYour Name 
228*5113495bSYour Name void *mem_alloc_copy_from_user_helper(const void *wrqu_data, size_t len);
229*5113495bSYour Name 
230*5113495bSYour Name /**
231*5113495bSYour Name  * hdd_we_set_short_gi() - Set adapter Short GI
232*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
233*5113495bSYour Name  * @sgi: new sgi value
234*5113495bSYour Name  *
235*5113495bSYour Name  * Return: 0 on success, negative errno on failure
236*5113495bSYour Name  */
237*5113495bSYour Name int hdd_we_set_short_gi(struct wlan_hdd_link_info *link_info, int sgi);
238*5113495bSYour Name 
239*5113495bSYour Name /**
240*5113495bSYour Name  * hdd_assemble_rate_code() - assemble rate code to be sent to FW
241*5113495bSYour Name  * @preamble: rate preamble
242*5113495bSYour Name  * @nss: number of streams
243*5113495bSYour Name  * @rate: rate index
244*5113495bSYour Name  *
245*5113495bSYour Name  * Rate code assembling is different for targets which are 11ax capable.
246*5113495bSYour Name  * Check for the target support and assemble the rate code accordingly.
247*5113495bSYour Name  *
248*5113495bSYour Name  * Return: assembled rate code
249*5113495bSYour Name  */
250*5113495bSYour Name int hdd_assemble_rate_code(uint8_t preamble, uint8_t nss, uint8_t rate);
251*5113495bSYour Name 
252*5113495bSYour Name /**
253*5113495bSYour Name  * hdd_set_11ax_rate() - set 11ax rate
254*5113495bSYour Name  * @adapter: adapter being modified
255*5113495bSYour Name  * @value: new 11ax rate code
256*5113495bSYour Name  * @sap_config: pointer to SAP config to check HW mode
257*5113495bSYour Name  *              this will be NULL for call from STA persona
258*5113495bSYour Name  *
259*5113495bSYour Name  * Return: 0 on success, negative errno on failure
260*5113495bSYour Name  */
261*5113495bSYour Name int hdd_set_11ax_rate(struct hdd_adapter *adapter, int value,
262*5113495bSYour Name 		      struct sap_config *sap_config);
263*5113495bSYour Name 
264*5113495bSYour Name /**
265*5113495bSYour Name  * hdd_we_update_phymode() - handle change in PHY mode
266*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter.
267*5113495bSYour Name  * @new_phymode: new PHY mode for the device
268*5113495bSYour Name  *
269*5113495bSYour Name  * This function is called when the device is set to a new PHY mode.
270*5113495bSYour Name  * It takes a holistic look at the desired PHY mode along with the
271*5113495bSYour Name  * configured capabilities of the driver and the reported capabilities
272*5113495bSYour Name  * of the hardware in order to correctly configure all PHY-related
273*5113495bSYour Name  * parameters.
274*5113495bSYour Name  *
275*5113495bSYour Name  * Return: 0 on success, negative errno value on error
276*5113495bSYour Name  */
277*5113495bSYour Name int hdd_we_update_phymode(struct wlan_hdd_link_info *link_info,
278*5113495bSYour Name 			  int new_phymode);
279*5113495bSYour Name 
280*5113495bSYour Name /**
281*5113495bSYour Name  * wlan_hdd_set_btcoex_mode() - set BTCoex Mode
282*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
283*5113495bSYour Name  * @value: new BTCoex mode for the adapter
284*5113495bSYour Name  *
285*5113495bSYour Name  * This function is called to set a BTCoex Operation Mode
286*5113495bSYour Name  *
287*5113495bSYour Name  * Return: 0 on success, negative errno value on error
288*5113495bSYour Name  */
289*5113495bSYour Name int wlan_hdd_set_btcoex_mode(struct wlan_hdd_link_info *link_info, int value);
290*5113495bSYour Name 
291*5113495bSYour Name /**
292*5113495bSYour Name  * wlan_hdd_set_btcoex_rssi_threshold() - set RSSI threshold
293*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
294*5113495bSYour Name  * @value: new RSSI Threshold for the adapter
295*5113495bSYour Name  *
296*5113495bSYour Name  * This function is called to set a new RSSI threshold for
297*5113495bSYour Name  * change of Coex operating mode from TDD to FDD
298*5113495bSYour Name  *
299*5113495bSYour Name  * Return: 0 on success, negative errno value on error
300*5113495bSYour Name  */
301*5113495bSYour Name int wlan_hdd_set_btcoex_rssi_threshold(struct wlan_hdd_link_info *link_info,
302*5113495bSYour Name 				       int value);
303*5113495bSYour Name 
304*5113495bSYour Name struct iw_request_info;
305*5113495bSYour Name 
306*5113495bSYour Name /**
307*5113495bSYour Name  * hdd_check_private_wext_control() - Check to see if private
308*5113495bSYour Name  *      wireless extensions ioctls are allowed
309*5113495bSYour Name  * @hdd_ctx: Global HDD context
310*5113495bSYour Name  * @info: Wireless extensions ioctl information passed by the kernel
311*5113495bSYour Name  *
312*5113495bSYour Name  * This function will examine the "private_wext_control" configuration
313*5113495bSYour Name  * item to determine whether or not private wireless extensions ioctls
314*5113495bSYour Name  * are allowed.
315*5113495bSYour Name  *
316*5113495bSYour Name  * Return: 0 if the ioctl is allowed to be processed, -ENOTSUPP if the
317*5113495bSYour Name  * ioctls have been disabled. Note that in addition to returning
318*5113495bSYour Name  * status, this function will log a message if the ioctls are disabled
319*5113495bSYour Name  * or deprecated.
320*5113495bSYour Name  */
321*5113495bSYour Name int hdd_check_private_wext_control(struct hdd_context *hdd_ctx,
322*5113495bSYour Name 				   struct iw_request_info *info);
323*5113495bSYour Name 
324*5113495bSYour Name #ifdef CONFIG_DP_TRACE
325*5113495bSYour Name void hdd_set_dump_dp_trace(uint16_t cmd_type, uint16_t count);
326*5113495bSYour Name #else
327*5113495bSYour Name static inline
hdd_set_dump_dp_trace(uint16_t cmd_type,uint16_t count)328*5113495bSYour Name void hdd_set_dump_dp_trace(uint16_t cmd_type, uint16_t count) {}
329*5113495bSYour Name #endif
330*5113495bSYour Name #else /* WLAN_WEXT_SUPPORT_ENABLE */
hdd_register_wext(struct net_device * dev)331*5113495bSYour Name static inline void hdd_register_wext(struct net_device *dev)
332*5113495bSYour Name {
333*5113495bSYour Name }
334*5113495bSYour Name 
hdd_wext_unregister(struct net_device * dev,bool rtnl_locked)335*5113495bSYour Name static inline void hdd_wext_unregister(struct net_device *dev,
336*5113495bSYour Name 				       bool rtnl_locked)
337*5113495bSYour Name {
338*5113495bSYour Name }
339*5113495bSYour Name 
340*5113495bSYour Name static inline
hdd_wext_send_event(struct net_device * dev,unsigned int cmd,union iwreq_data * wrqu,const char * extra)341*5113495bSYour Name void hdd_wext_send_event(struct net_device *dev, unsigned int cmd,
342*5113495bSYour Name 			 union iwreq_data *wrqu, const char *extra)
343*5113495bSYour Name {
344*5113495bSYour Name }
345*5113495bSYour Name #endif /* WLAN_WEXT_SUPPORT_ENABLE */
346*5113495bSYour Name 
347*5113495bSYour Name #if defined(WLAN_WEXT_SUPPORT_ENABLE) && defined(HASTINGS_BT_WAR)
348*5113495bSYour Name int hdd_hastings_bt_war_enable_fw(struct hdd_context *hdd_ctx);
349*5113495bSYour Name int hdd_hastings_bt_war_disable_fw(struct hdd_context *hdd_ctx);
350*5113495bSYour Name #else
351*5113495bSYour Name static inline
hdd_hastings_bt_war_enable_fw(struct hdd_context * hdd_ctx)352*5113495bSYour Name int hdd_hastings_bt_war_enable_fw(struct hdd_context *hdd_ctx)
353*5113495bSYour Name {
354*5113495bSYour Name 	return -ENOTSUPP;
355*5113495bSYour Name }
356*5113495bSYour Name 
357*5113495bSYour Name static inline
hdd_hastings_bt_war_disable_fw(struct hdd_context * hdd_ctx)358*5113495bSYour Name int hdd_hastings_bt_war_disable_fw(struct hdd_context *hdd_ctx)
359*5113495bSYour Name {
360*5113495bSYour Name 	return -ENOTSUPP;
361*5113495bSYour Name }
362*5113495bSYour Name 
363*5113495bSYour Name #endif
364*5113495bSYour Name 
365*5113495bSYour Name #endif /* __WEXT_IW_H__ */
366