diff --git a/wmi_unified_api.h b/wmi_unified_api.h index b54f74333e..02665f45a4 100644 --- a/wmi_unified_api.h +++ b/wmi_unified_api.h @@ -854,6 +854,16 @@ QDF_STATUS wmi_unified_roam_scan_offload_rssi_change_cmd(void *wmi_hdl, uint32_t bcn_rssi_weight, uint32_t hirssi_delay_btw_scans); +/** + * wmi_unified_set_per_roam_config() - set PER roam config in FW + * @wmi_hdl: wmi handle + * @req_buf: per roam config request buffer + * + * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure + */ +QDF_STATUS wmi_unified_set_per_roam_config(void *wmi_hdl, + struct wmi_per_roam_config_req *req_buf); + QDF_STATUS wmi_unified_get_buf_extscan_hotlist_cmd(void *wmi_hdl, struct ext_scan_setbssi_hotlist_params * photlist, int *buf_len); diff --git a/wmi_unified_param.h b/wmi_unified_param.h index dc525be8cb..1376c6fcc4 100644 --- a/wmi_unified_param.h +++ b/wmi_unified_param.h @@ -6949,6 +6949,45 @@ struct wmi_adaptive_dwelltime_params { uint8_t wifi_act_threshold; }; +/** + * struct wmi_per_roam_config - per based roaming parameters + * @enable: if PER based roaming is enabled/disabled + * @tx_high_rate_thresh: high rate threshold at which PER based + * roam will stop in tx path + * @rx_high_rate_thresh: high rate threshold at which PER based + * roam will stop in rx path + * @tx_low_rate_thresh: rate below which traffic will be considered + * for PER based roaming in Tx path + * @rx_low_rate_thresh: rate below which traffic will be considered + * for PER based roaming in Tx path + * @tx_rate_thresh_percnt: % above which when traffic is below low_rate_thresh + * will be considered for PER based scan in tx path + * @rx_rate_thresh_percnt: % above which when traffic is below low_rate_thresh + * will be considered for PER based scan in rx path + * @per_rest_time: time for which PER based roam will wait once it + * issues a roam scan. + */ +struct wmi_per_roam_config { + uint32_t enable; + uint32_t tx_high_rate_thresh; + uint32_t rx_high_rate_thresh; + uint32_t tx_low_rate_thresh; + uint32_t rx_low_rate_thresh; + uint32_t tx_rate_thresh_percnt; + uint32_t rx_rate_thresh_percnt; + uint32_t per_rest_time; +}; + +/** + * struct wmi_per_roam_config_req: PER based roaming config request + * @vdev_id: vdev id on which config needs to be set + * @per_config: PER config + */ +struct wmi_per_roam_config_req { + uint8_t vdev_id; + struct wmi_per_roam_config per_config; +}; + /** * struct wmi_fw_dump_seg_req - individual segment details * @seg_id - segment id. diff --git a/wmi_unified_priv.h b/wmi_unified_priv.h index 64345137cb..f3b56b2092 100644 --- a/wmi_unified_priv.h +++ b/wmi_unified_priv.h @@ -720,6 +720,9 @@ QDF_STATUS (*send_roam_scan_offload_rssi_change_cmd)(wmi_unified_t wmi_handle, uint32_t bcn_rssi_weight, uint32_t hirssi_delay_btw_scans); +QDF_STATUS (*send_per_roam_config_cmd)(wmi_unified_t wmi_handle, + struct wmi_per_roam_config_req *req_buf); + QDF_STATUS (*send_get_buf_extscan_hotlist_cmd)(wmi_unified_t wmi_handle, struct ext_scan_setbssi_hotlist_params * photlist, int *buf_len);