qcacmn: Process get_cu_for_each_subbw driver command

1. Read the new service capability:
WMI_SERVICE_CCA_BUSY_INFO_FOREACH_20 MHz: Via this host knows
whether FW supports reporting of CCA busy info for each 20 MHz
subband of wideband scan channel or not.

WMI_SERVICE_VDEV_PARAM_CHWIDTH_WITH_NOTIFY_SUPPORT: Via this
host knows whether FW supports VDEV param channel width switch
with OMN/OMI notification or not

2. Register osif callback to send scan done indication to upper
layer

3. Add 2 new scan flags pause_home_channel and
report_cca_busy_for_each_20 MHz

Change-Id: I63d561a3c5f8e49a3ca42d956e6b630c63edeaf4
CRs-Fixed: 3460901
This commit is contained in:
abhinav kumar
2023-04-06 00:11:30 +05:30
zatwierdzone przez Madan Koyyalamudi
rodzic 6bc59d4929
commit df618544a3
12 zmienionych plików z 153 dodań i 22 usunięć

Wyświetl plik

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -607,8 +607,15 @@ static void scm_req_update_concurrency_params(struct wlan_objmgr_vdev *vdev,
if (!req->scan_req.scan_f_passive)
req->scan_req.dwell_time_active =
scan_obj->scan_def.conc_active_dwell;
req->scan_req.dwell_time_passive =
scan_obj->scan_def.conc_passive_dwell;
/*
* Irrespective of any concurrency, if a scan request is
* triggered to get channel utilization for the current
* connected channel, passive scan dwell time should be
* MLME_GET_CHAN_STATS_PASSIVE_SCAN_TIME
*/
if (!req->scan_req.scan_f_pause_home_channel)
req->scan_req.dwell_time_passive =
scan_obj->scan_def.conc_passive_dwell;
req->scan_req.max_rest_time =
scan_obj->scan_def.conc_max_rest_time;
req->scan_req.min_rest_time =
@@ -797,7 +804,14 @@ static void scm_req_update_concurrency_params(struct wlan_objmgr_vdev *vdev,
if (sta_active) {
req->scan_req.dwell_time_active_6g =
scan_obj->scan_def.active_dwell_time_6g_conc;
req->scan_req.dwell_time_passive_6g =
/*
* Irrespective of any concurrency, if a scan request is
* triggered to get channel utilization for the current
* connected channel, 6g passive scan dwell time should be
* MLME_GET_CHAN_STATS_WIDE_BAND_PASSIVE_SCAN_TIME
*/
if (!req->scan_req.scan_f_pause_home_channel)
req->scan_req.dwell_time_passive_6g =
scan_obj->scan_def.passive_dwell_time_6g_conc;
}
}

Wyświetl plik

@@ -1048,6 +1048,10 @@ enum scan_request_type {
* @scan_f_2ghz: scan 2.4 GHz channels
* @scan_f_5ghz: scan 5 GHz channels
* @scan_f_wide_band: scan in 40 MHz or higher bandwidth
* @scan_f_pause_home_channel: To pause home channel in FW when scan channel is
* same as home channel
* @scan_f_report_cca_busy_for_each_20mhz: Allow FW to report CCA busy for each
* possible 20Mhz subbands of the wideband scan channel
* @scan_flags: variable to read and set scan_f_* flags in one shot
* can be used to dump all scan_f_* flags for debug
* @scan_policy_high_accuracy:
@@ -1074,7 +1078,6 @@ enum scan_request_type {
* @hint_s_ssid: short SSID hints
* @hint_bssid: BSSID hints
*/
struct scan_req_params {
uint32_t scan_id;
uint32_t scan_req_id;
@@ -1140,7 +1143,9 @@ struct scan_req_params {
scan_f_forced:1,
scan_f_2ghz:1,
scan_f_5ghz:1,
scan_f_wide_band:1;
scan_f_wide_band:1,
scan_f_pause_home_channel:1,
scan_f_report_cca_busy_for_each_20mhz:1;
};
uint32_t scan_flags;
};