mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 06:03:36 -04:00
qcacld-3.0: Config latency level to fw after vdev creates
From android Q, it uses a random MAC to connect to different SSIDs which causes the interface down/up, the vdev will be deleted and the latency level info is lost in firmware. To fix this, save the latency level and reconfig it to fw after vdev creates. Change-Id: Ifac93fb869553d0f9eb553d5c41da43c8b014ad8 CRs-Fixed: 2554736
This commit is contained in:
parent
0c0f1f392c
commit
1ef2b7cd7f
3 changed files with 11 additions and 2 deletions
|
|
@ -1046,6 +1046,7 @@ struct hdd_context;
|
|||
* @gpio_tsf_sync_work: work to sync send TSF CAP WMI command
|
||||
* @cache_sta_count: number of currently cached stations
|
||||
* @acs_complete_event: acs complete event
|
||||
* @latency_level: 0 - normal, 1 - moderate, 2 - low, 3 - ultralow
|
||||
*/
|
||||
struct hdd_adapter {
|
||||
/* Magic cookie for adapter sanity verification. Note that this
|
||||
|
|
@ -1290,6 +1291,7 @@ struct hdd_adapter {
|
|||
uint32_t track_dest_ipv4;
|
||||
uint32_t mon_chan_freq;
|
||||
uint32_t mon_bandwidth;
|
||||
uint16_t latency_level;
|
||||
|
||||
/* rcpi information */
|
||||
struct rcpi_info rcpi;
|
||||
|
|
|
|||
|
|
@ -7315,10 +7315,10 @@ static int hdd_config_latency_level(struct hdd_adapter *adapter,
|
|||
/* Map the latency value to the level which fw expected
|
||||
* 0 - normal, 1 - moderate, 2 - low, 3 - ultralow
|
||||
*/
|
||||
latency_level = latency_level - 1;
|
||||
adapter->latency_level = latency_level - 1;
|
||||
status = sme_set_wlm_latency_level(hdd_ctx->mac_handle,
|
||||
adapter->vdev_id,
|
||||
latency_level);
|
||||
adapter->latency_level);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
hdd_err("set latency level failed, %u", status);
|
||||
|
||||
|
|
|
|||
|
|
@ -10347,6 +10347,7 @@ err_out:
|
|||
int hdd_start_station_adapter(struct hdd_adapter *adapter)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
||||
int ret;
|
||||
|
||||
hdd_enter_dev(adapter->dev);
|
||||
|
|
@ -10376,6 +10377,12 @@ int hdd_start_station_adapter(struct hdd_adapter *adapter)
|
|||
hdd_register_hl_netdev_fc_timer(adapter,
|
||||
hdd_tx_resume_timer_expired_handler);
|
||||
|
||||
status = sme_set_wlm_latency_level(hdd_ctx->mac_handle,
|
||||
adapter->vdev_id,
|
||||
adapter->latency_level);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
hdd_warn("set latency level failed, %u", status);
|
||||
|
||||
hdd_exit();
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue