1 /*
2  * Copyright (c) 2012 - 2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 /**
20  * DOC: declare utility API related to the fw_offload component
21  * called by other components
22  */
23 
24 #ifndef _WLAN_FW_OFFLOAD_MAIN_H_
25 #define _WLAN_FW_OFFLOAD_MAIN_H_
26 
27 #include <wlan_objmgr_psoc_obj.h>
28 #include <wlan_objmgr_global_obj.h>
29 #include <wlan_cmn.h>
30 #include <scheduler_api.h>
31 
32 #include "cfg_ucfg_api.h"
33 #include "wlan_fwol_public_structs.h"
34 
35 #define fwol_alert(params...) QDF_TRACE_FATAL(QDF_MODULE_ID_FWOL, params)
36 #define fwol_err(params...) QDF_TRACE_ERROR(QDF_MODULE_ID_FWOL, params)
37 #define fwol_warn(params...) QDF_TRACE_WARN(QDF_MODULE_ID_FWOL, params)
38 #define fwol_info(params...) QDF_TRACE_INFO(QDF_MODULE_ID_FWOL, params)
39 #define fwol_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_FWOL, params)
40 
41 #define fwol_nofl_alert(params...) \
42 	QDF_TRACE_FATAL_NO_FL(QDF_MODULE_ID_FWOL, params)
43 #define fwol_nofl_err(params...) \
44 	QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_FWOL, params)
45 #define fwol_nofl_warn(params...) \
46 	QDF_TRACE_WARN_NO_FL(QDF_MODULE_ID_FWOL, params)
47 #define fwol_nofl_info(params...) \
48 	QDF_TRACE_INFO_NO_FL(QDF_MODULE_ID_FWOL, params)
49 #define fwol_nofl_debug(params...) \
50 	QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_FWOL, params)
51 
52 /**
53  * enum wlan_fwol_southbound_event - fw offload south bound event type
54  * @WLAN_FWOL_EVT_INVALID: invalid/unknown value
55  * @WLAN_FWOL_EVT_GET_ELNA_BYPASS_RESPONSE: get eLNA bypass response
56  * @WLAN_FWOL_EVT_GET_THERMAL_STATS_RESPONSE: get Thermal Stats response
57  * @WLAN_FWOL_EVT_LAST: internal use
58  * @WLAN_FWOL_EVT_MAX: value of last valid enumerator
59  */
60 enum wlan_fwol_southbound_event {
61 	WLAN_FWOL_EVT_INVALID = 0,
62 	WLAN_FWOL_EVT_GET_ELNA_BYPASS_RESPONSE,
63 	WLAN_FWOL_EVT_GET_THERMAL_STATS_RESPONSE,
64 	WLAN_FWOL_EVT_LAST,
65 	WLAN_FWOL_EVT_MAX = WLAN_FWOL_EVT_LAST - 1
66 };
67 
68 /**
69  * struct wlan_fwol_coex_config - BTC config items
70  * @btc_mode: Config BTC mode
71  * @antenna_isolation: Antenna isolation
72  * @max_tx_power_for_btc: Max wlan tx power in co-ex scenario
73  * @wlan_low_rssi_threshold: Wlan low rssi threshold for BTC mode switching
74  * @bt_low_rssi_threshold: BT low rssi threshold for BTC mode switching
75  * @bt_interference_low_ll: Lower limit of low level BT interference
76  * @bt_interference_low_ul: Upper limit of low level BT interference
77  * @bt_interference_medium_ll: Lower limit of medium level BT interference
78  * @bt_interference_medium_ul: Upper limit of medium level BT interference
79  * @bt_interference_high_ll: Lower limit of high level BT interference
80  * @bt_interference_high_ul: Upper limit of high level BT interference
81  * @btc_mpta_helper_enable: Enable/Disable tri-radio MPTA helper
82  * @bt_sco_allow_wlan_2g_scan: Enable/Disable wlan 2g scan when
83  *                             BT SCO connection is on
84  * @btc_three_way_coex_config_legacy_enable: Enable/Disable tri-radio coex
85  *                             config legacy feature
86  * @ble_scan_coex_policy: BLE Scan policy, true - better BLE scan result, false
87  *                        better wlan throughput
88  * @coex_tput_shaping_enable: wifi traffic shaping enable, true - enable,
89  *					false - disable
90  */
91 struct wlan_fwol_coex_config {
92 	uint8_t btc_mode;
93 	uint8_t antenna_isolation;
94 	uint8_t max_tx_power_for_btc;
95 	int16_t wlan_low_rssi_threshold;
96 	int16_t bt_low_rssi_threshold;
97 	int16_t bt_interference_low_ll;
98 	int16_t bt_interference_low_ul;
99 	int16_t bt_interference_medium_ll;
100 	int16_t bt_interference_medium_ul;
101 	int16_t bt_interference_high_ll;
102 	int16_t bt_interference_high_ul;
103 #ifdef FEATURE_MPTA_HELPER
104 	bool    btc_mpta_helper_enable;
105 #endif
106 	bool bt_sco_allow_wlan_2g_scan;
107 #ifdef FEATURE_COEX_CONFIG
108 	bool    btc_three_way_coex_config_legacy_enable;
109 #endif
110 	bool ble_scan_coex_policy;
111 #ifdef FEATURE_COEX_TPUT_SHAPING_CONFIG
112 	bool coex_tput_shaping_enable;
113 #endif
114 };
115 
116 #define FWOL_THERMAL_LEVEL_MAX 6
117 #define FWOL_THERMAL_THROTTLE_LEVEL_MAX 6
118 /**
119  * struct wlan_fwol_thermal_temp - Thermal temperature config items
120  * @thermal_temp_min_level: Array of temperature minimum levels
121  * @thermal_temp_max_level: Array of temperature maximum levels
122  * @thermal_mitigation_enable: Control for Thermal mitigation feature
123  * @throttle_period: Thermal throttle period value
124  * @throttle_dutycycle_level: Array of throttle duty cycle levels
125  * @thermal_sampling_time: sampling time for thermal mitigation in ms
126  * @mon_id: Monitor client id either the wpps or apps
127  * @priority_apps: Priority of the apps mitigation to consider by fw
128  * @priority_wpps: Priority of the wpps mitigation to consider by fw
129  * @thermal_action: thermal action as defined enum thermal_mgmt_action_code
130  * @therm_stats_offset: thermal temp offset as set in gThermalStatsTempOffset
131  */
132 struct wlan_fwol_thermal_temp {
133 	bool     thermal_mitigation_enable;
134 	uint32_t throttle_period;
135 	uint16_t thermal_temp_min_level[FWOL_THERMAL_LEVEL_MAX];
136 	uint16_t thermal_temp_max_level[FWOL_THERMAL_LEVEL_MAX];
137 	uint32_t throttle_dutycycle_level[FWOL_THERMAL_THROTTLE_LEVEL_MAX];
138 	uint16_t thermal_sampling_time;
139 	uint8_t mon_id;
140 	uint8_t priority_apps;
141 	uint8_t priority_wpps;
142 	enum thermal_mgmt_action_code thermal_action;
143 #ifdef THERMAL_STATS_SUPPORT
144 	uint8_t therm_stats_offset;
145 #endif
146 };
147 
148 /**
149  * struct wlan_fwol_ie_allowlist - Probe request IE allowlist config items
150  * @ie_allowlist: IE allowlist flag
151  * @ie_bitmap_0: IE bitmap 0
152  * @ie_bitmap_1: IE bitmap 1
153  * @ie_bitmap_2: IE bitmap 2
154  * @ie_bitmap_3: IE bitmap 3
155  * @ie_bitmap_4: IE bitmap 4
156  * @ie_bitmap_5: IE bitmap 5
157  * @ie_bitmap_6: IE bitmap 6
158  * @ie_bitmap_7: IE bitmap 7
159  * @no_of_probe_req_ouis: Total number of ouis present in probe req
160  * @probe_req_voui: Stores oui values after parsing probe req ouis
161  */
162 struct wlan_fwol_ie_allowlist {
163 	bool ie_allowlist;
164 	uint32_t ie_bitmap_0;
165 	uint32_t ie_bitmap_1;
166 	uint32_t ie_bitmap_2;
167 	uint32_t ie_bitmap_3;
168 	uint32_t ie_bitmap_4;
169 	uint32_t ie_bitmap_5;
170 	uint32_t ie_bitmap_6;
171 	uint32_t ie_bitmap_7;
172 	uint32_t no_of_probe_req_ouis;
173 	uint32_t probe_req_voui[MAX_PROBE_REQ_OUIS];
174 };
175 
176 /**
177  * struct wlan_fwol_neighbor_report_cfg - Neighbor report config params
178  * @enable_bitmask: Neighbor report offload bitmask control
179  * @params_bitmask: Param validity bitmask
180  * @time_offset: Neighbor report frame time offset
181  * @low_rssi_offset: Low RSSI offset
182  * @bmiss_count_trigger: Beacon miss trigger count
183  * @per_threshold_offset: PER Threshold offset
184  * @cache_timeout: Cache timeout
185  * @max_req_cap: Max request per peer
186  */
187 struct wlan_fwol_neighbor_report_cfg {
188 	uint32_t enable_bitmask;
189 	uint32_t params_bitmask;
190 	uint32_t time_offset;
191 	uint32_t low_rssi_offset;
192 	uint32_t bmiss_count_trigger;
193 	uint32_t per_threshold_offset;
194 	uint32_t cache_timeout;
195 	uint32_t max_req_cap;
196 };
197 
198 #ifdef WLAN_FEATURE_TSF_ACCURACY
199 /**
200  * struct wlan_fwol_tsf_accuracy_configs - TSF Accuracy feature config params
201  * @enable: Flag to Enable/Disable TSF Accuracy Feature
202  * @sync_gpio: GPIO to indicate TSF sync is done. The GPIO pin is toggled at
203  *             every TSF sync done.
204  * @periodic_pulse_gpio: GPIO to indicate TSF time completes a cycle of given
205  *                       interval. The GPIO pin gets pulse of 1msec for every
206  *                       TSF cycle complete.
207  * @pulse_interval_ms: Periodicy of TSF pulse in milli seconds.
208  */
209 struct wlan_fwol_tsf_accuracy_configs {
210 	bool enable;
211 	uint32_t sync_gpio;
212 	uint32_t periodic_pulse_gpio;
213 	uint32_t pulse_interval_ms;
214 };
215 #endif
216 
217 /**
218  * struct wlan_fwol_cfg - fwol config items
219  * @coex_config: coex config items
220  * @thermal_temp_cfg: Thermal temperature related config items
221  * @ie_allowlist_cfg: IE Allowlist related config items
222  * @neighbor_report_cfg: 11K neighbor report config
223  * @ani_enabled: ANI enable/disable
224  * @pcie_config: to control pcie gen and lane params
225  * @enable_rts_sifsbursting: Enable RTS SIFS Bursting
226  * @enable_sifs_burst: Enable SIFS burst
227  * @max_mpdus_inampdu: Max number of MPDUS
228  * @enable_phy_reg_retention: Enable PHY reg retention
229  * @upper_brssi_thresh: Upper BRSSI threshold
230  * @lower_brssi_thresh: Lower BRSSI threshold
231  * @enable_dtim_1chrx: Enable/disable DTIM 1 CHRX
232  * @alternative_chainmask_enabled: Alternate chainmask
233  * @smart_chainmask_enabled: Enable/disable chainmask
234  * @get_rts_profile: Set the RTS profile
235  * @enable_fw_log_level: Set the FW log level
236  * @enable_fw_log_type: Set the FW log type
237  * @enable_fw_module_log_level: enable fw module log level
238  * @enable_fw_module_log_level_num: enable fw module log level num
239  * @enable_fw_mod_wow_log_level: enable fw wow module log level
240  * @enable_fw_mod_wow_log_level_num: enable fw wow module log level num
241  * @sap_xlna_bypass: bypass SAP xLNA
242  * @is_rate_limit_enabled: Enable/disable RA rate limited
243  * @tsf_gpio_pin: TSF GPIO Pin config
244  * @tsf_irq_host_gpio_pin: TSF GPIO Pin config
245  * @tsf_sync_host_gpio_pin: TSF Sync GPIO Pin config
246  * @tsf_ptp_options: TSF Plus feature options config
247  * @tsf_sync_enable: TSF sync feature enable/disable
248  * @tsf_accuracy_configs: TSF Accuracy feature config parameters
249  * @sae_enable: SAE feature enable config
250  * @gcmp_enable: GCMP feature enable config
251  * @enable_tx_sch_delay: Enable TX SCH delay value config
252  * @enable_secondary_rate: Enable secondary retry rate config
253  * @enable_dhcp_server_offload: DHCP Offload is enabled or not
254  * @dhcp_max_num_clients: Max number of DHCP client supported
255  * @dwelltime_params: adaptive dwell time parameters
256  * @enable_ilp: ILP HW block configuration
257  * @sap_sho: SAP SHO HW offload configuration
258  * @disable_hw_assist: Flag to configure HW assist feature in FW
259  * @enable_ofdm_scrambler_seed: Decide to enable/disable OFDM scrambler seed
260  */
261 struct wlan_fwol_cfg {
262 	/* Add CFG and INI items here */
263 	struct wlan_fwol_coex_config coex_config;
264 	struct wlan_fwol_thermal_temp thermal_temp_cfg;
265 	struct wlan_fwol_ie_allowlist ie_allowlist_cfg;
266 	struct wlan_fwol_neighbor_report_cfg neighbor_report_cfg;
267 	bool ani_enabled;
268 	uint8_t pcie_config;
269 	bool enable_rts_sifsbursting;
270 	uint8_t enable_sifs_burst;
271 	uint8_t max_mpdus_inampdu;
272 	uint8_t enable_phy_reg_retention;
273 	uint16_t upper_brssi_thresh;
274 	uint16_t lower_brssi_thresh;
275 	bool enable_dtim_1chrx;
276 	bool alternative_chainmask_enabled;
277 	bool smart_chainmask_enabled;
278 	uint16_t get_rts_profile;
279 	uint16_t enable_fw_log_level;
280 	uint16_t enable_fw_log_type;
281 	uint8_t enable_fw_module_log_level[FW_MODULE_LOG_LEVEL_STRING_LENGTH];
282 	uint8_t enable_fw_module_log_level_num;
283 	uint8_t enable_fw_mod_wow_log_level[FW_MODULE_LOG_LEVEL_STRING_LENGTH];
284 	uint8_t enable_fw_mod_wow_log_level_num;
285 	bool sap_xlna_bypass;
286 #ifdef FEATURE_WLAN_RA_FILTERING
287 	bool is_rate_limit_enabled;
288 #endif
289 #ifdef WLAN_FEATURE_TSF
290 	uint32_t tsf_gpio_pin;
291 #ifdef WLAN_FEATURE_TSF_PLUS
292 	uint32_t tsf_ptp_options;
293 	bool tsf_sync_enable;
294 #ifdef WLAN_FEATURE_TSF_ACCURACY
295 	struct wlan_fwol_tsf_accuracy_configs tsf_accuracy_configs;
296 #endif
297 #ifdef WLAN_FEATURE_TSF_PLUS_EXT_GPIO_IRQ
298 	uint32_t tsf_irq_host_gpio_pin;
299 #endif
300 #ifdef WLAN_FEATURE_TSF_PLUS_EXT_GPIO_SYNC
301 	uint32_t tsf_sync_host_gpio_pin;
302 #endif
303 #endif
304 #endif
305 #ifdef WLAN_FEATURE_SAE
306 	bool sae_enable;
307 #endif
308 	bool gcmp_enable;
309 	uint8_t enable_tx_sch_delay;
310 	uint32_t enable_secondary_rate;
311 #ifdef DHCP_SERVER_OFFLOAD
312 	bool enable_dhcp_server_offload;
313 	uint32_t dhcp_max_num_clients;
314 #endif
315 	struct adaptive_dwelltime_params dwelltime_params;
316 	uint32_t enable_ilp;
317 	uint32_t sap_sho;
318 	bool disable_hw_assist;
319 #ifdef WLAN_FEATURE_OFDM_SCRAMBLER_SEED
320 	bool enable_ofdm_scrambler_seed;
321 #endif
322 };
323 
324 /**
325  * struct wlan_fwol_thermal_throttle_info - FW offload thermal throttle info
326  * @level: thermal throttle level
327  * @pdev_id: pdev id
328  */
329 struct wlan_fwol_thermal_throttle_info {
330 	enum thermal_throttle_level level;
331 	uint32_t pdev_id;
332 };
333 
334 /**
335  * struct wlan_fwol_capability_info - FW offload capability component
336  * @fw_thermal_stats_cap: Thermal Stats Fw capability
337  */
338 struct wlan_fwol_capability_info {
339 #ifdef THERMAL_STATS_SUPPORT
340 	bool fw_thermal_stats_cap;
341 #endif
342 };
343 
344 /**
345  * struct wlan_fwol_psoc_obj - FW offload psoc priv object
346  * @cfg:     cfg items
347  * @cbs:     callback functions
348  * @tx_ops: tx operations for target interface
349  * @rx_ops: rx operations for target interface
350  * @thermal_throttle: cached target thermal stats information
351  * @thermal_cbs: thermal notification callbacks to hdd layer
352  * @capability_info: fwol capability info
353  */
354 struct wlan_fwol_psoc_obj {
355 	struct wlan_fwol_cfg cfg;
356 	struct wlan_fwol_callbacks cbs;
357 	struct wlan_fwol_tx_ops tx_ops;
358 	struct wlan_fwol_rx_ops rx_ops;
359 #ifdef FW_THERMAL_THROTTLE_SUPPORT
360 	struct wlan_fwol_thermal_throttle_info thermal_throttle;
361 	struct fwol_thermal_callbacks thermal_cbs;
362 #endif
363 	struct wlan_fwol_capability_info capability_info;
364 };
365 
366 /**
367  * struct wlan_fwol_rx_event - event from south bound
368  * @psoc: psoc handle
369  * @event_id: event ID
370  * @get_elna_bypass_response: get eLNA bypass response
371  * @get_thermal_stats_response: get thermal stats response
372  */
373 struct wlan_fwol_rx_event {
374 	struct wlan_objmgr_psoc *psoc;
375 	enum wlan_fwol_southbound_event event_id;
376 	union {
377 #ifdef WLAN_FEATURE_ELNA
378 		struct get_elna_bypass_response get_elna_bypass_response;
379 #endif
380 #ifdef THERMAL_STATS_SUPPORT
381 		struct thermal_throttle_info get_thermal_stats_response;
382 #endif
383 	};
384 };
385 
386 /**
387  * fwol_get_psoc_obj() - private API to get fwol object from psoc
388  * @psoc: psoc object
389  *
390  * Return: fwol object
391  */
392 struct wlan_fwol_psoc_obj *fwol_get_psoc_obj(struct wlan_objmgr_psoc *psoc);
393 
394 /**
395  * fwol_cfg_on_psoc_enable() - Populate FWOL structure from CFG and INI
396  * @psoc: pointer to the psoc object
397  *
398  * Populate the FWOL CFG structure from CFG and INI values using CFG APIs
399  *
400  * Return: QDF_STATUS
401  */
402 QDF_STATUS fwol_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc);
403 
404 /**
405  * fwol_cfg_on_psoc_disable() - Clear the CFG structure on psoc disable
406  * @psoc: pointer to the psoc object
407  *
408  * Clear the FWOL CFG structure on psoc disable
409  *
410  * Return: QDF_STATUS
411  */
412 QDF_STATUS fwol_cfg_on_psoc_disable(struct wlan_objmgr_psoc *psoc);
413 
414 /**
415  * fwol_process_event() - API to process event from south bound
416  * @msg: south bound message
417  *
418  * Return: QDF_STATUS_SUCCESS on success
419  */
420 QDF_STATUS fwol_process_event(struct scheduler_msg *msg);
421 
422 /**
423  * fwol_release_rx_event() - Release fw offload RX event
424  * @event: fw offload RX event
425  *
426  * Return: none
427  */
428 void fwol_release_rx_event(struct wlan_fwol_rx_event *event);
429 
430 /**
431  * fwol_init_neighbor_report_cfg() - Populate default neighbor report CFG values
432  * @psoc: pointer to the psoc object
433  * @fwol_neighbor_report_cfg: Pointer to Neighbor report config data structure
434  *
435  * Return: QDF_STATUS
436  */
437 QDF_STATUS fwol_init_neighbor_report_cfg(struct wlan_objmgr_psoc *psoc,
438 					 struct wlan_fwol_neighbor_report_cfg
439 					 *fwol_neighbor_report_cfg);
440 
441 /**
442  * fwol_init_adapt_dwelltime_in_cfg() - initialize adaptive dwell time params
443  * @psoc: Pointer to struct wlan_objmgr_psoc context
444  * @dwelltime_params: Pointer to dwell time params
445  *
446  * This function parses initialize the adaptive dwell params from ini.
447  *
448  * Return: QDF_STATUS
449  */
450 QDF_STATUS
451 fwol_init_adapt_dwelltime_in_cfg(
452 			struct wlan_objmgr_psoc *psoc,
453 			struct adaptive_dwelltime_params *dwelltime_params);
454 
455 /**
456  * fwol_set_adaptive_dwelltime_config() - API to set adaptive dwell params
457  *                                        config
458  * @dwelltime_params: adaptive_dwelltime_params structure
459  *
460  * Return: QDF Status
461  */
462 QDF_STATUS
463 fwol_set_adaptive_dwelltime_config(
464 			struct adaptive_dwelltime_params *dwelltime_params);
465 
466 /**
467  * fwol_set_ilp_config() - API to set ILP HW block config
468  * @pdev: pointer to the pdev object
469  * @enable_ilp: ILP HW block configuration with various options
470  *
471  * Return: QDF_STATUS
472  */
473 QDF_STATUS fwol_set_ilp_config(struct wlan_objmgr_pdev *pdev,
474 			       uint32_t enable_ilp);
475 
476 /**
477  * fwol_set_sap_sho() - API to set SAP SHO config
478  * @psoc: pointer to the psoc object
479  * @vdev_id: vdev id
480  * @sap_sho: enable/disable config for SAP SHO
481  * SHO- SoftAP hardware offload – When enabled the beacon/probe resp
482  * will be offloaded to HW.
483  *
484  * Return: QDF_STATUS
485  */
486 QDF_STATUS fwol_set_sap_sho(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
487 			    uint32_t sap_sho);
488 
489 /**
490  * fwol_configure_hw_assist() - API to configure HW assist feature in FW
491  * @pdev: pointer to the pdev object
492  * @disable_hw_assist: Flag to enable/disable HW assist feature
493  *
494  * Return: QDF_STATUS
495  */
496 QDF_STATUS fwol_configure_hw_assist(struct wlan_objmgr_pdev *pdev,
497 				    bool disable_hw_assist);
498 
499 /**
500  * fwol_set_sap_wds_config() - API to configure WDS mode on SAP vdev
501  * @psoc: pointer to the psoc object
502  * @vdev_id: vdev id
503  *
504  * Return: QDF_STATUS
505  */
506 #ifdef FEATURE_WDS
507 QDF_STATUS
508 fwol_set_sap_wds_config(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id);
509 #else
510 static inline QDF_STATUS
fwol_set_sap_wds_config(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id)511 fwol_set_sap_wds_config(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
512 {
513 	return QDF_STATUS_SUCCESS;
514 }
515 #endif
516 #endif
517