qcacld-3.0: Update stats cached timestamp properly
Currently the station stats cached timestamp is updated in the adapter, even when vdev station stats are not requested as part of unified_ll_stats_get_sta command. When userspace requests vdev station stats, based on timestamp value host either returns cached stats or sends a new WMI request to firmware. In case of timestamp updated when vdev station stats are not cached, it results in sending inaccurate station stats to userspace. To avoid this issue, update cached timestamp in the adapter only when station stats are requested as part of unified_ll_stats_get_sta command. Change-Id: I8cdbd120afdf1f6334d7ac3fa150fc853f550a09 CRs-Fixed: 3598671
Cette révision appartient à :

révisé par
Rahul Choudhary

Parent
a2f988f7ec
révision
15e5a7cd82
@@ -3176,7 +3176,7 @@ static int wlan_hdd_send_ll_stats_req(struct wlan_hdd_link_info *link_info,
|
||||
struct hdd_ll_stats *stats = NULL;
|
||||
struct osif_request *request;
|
||||
qdf_list_node_t *ll_node;
|
||||
QDF_STATUS status;
|
||||
QDF_STATUS status, vdev_req_status;
|
||||
struct hdd_adapter *adapter = link_info->adapter;
|
||||
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
||||
void *cookie;
|
||||
@@ -3193,8 +3193,9 @@ static int wlan_hdd_send_ll_stats_req(struct wlan_hdd_link_info *link_info,
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
return qdf_status_to_os_return(status);
|
||||
|
||||
status = wlan_hdd_set_station_stats_request_pending(link_info, req);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
vdev_req_status = wlan_hdd_set_station_stats_request_pending(link_info,
|
||||
req);
|
||||
if (QDF_IS_STATUS_ERROR(vdev_req_status))
|
||||
hdd_nofl_debug("Requesting LL_STATS only");
|
||||
|
||||
/*
|
||||
@@ -3252,7 +3253,9 @@ static int wlan_hdd_send_ll_stats_req(struct wlan_hdd_link_info *link_info,
|
||||
sme_radio_tx_mem_free();
|
||||
ret = -ETIMEDOUT;
|
||||
} else {
|
||||
hdd_update_station_stats_cached_timestamp(adapter);
|
||||
if (QDF_IS_STATUS_SUCCESS(vdev_req_status))
|
||||
hdd_update_station_stats_cached_timestamp(adapter);
|
||||
|
||||
adapter->ll_stats_failure_count = 0;
|
||||
}
|
||||
|
||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur