qcacmn: [WMI]FR47702 TWT stats, add WMI support for TWT Stats Event
Add WMI support for WMI_TWT_SESSION_STATS_EVENTID. This event contains stats for a given TWT session. Change-Id: Ieca2b6845fd2ec32ccdfb1021611bed07379d365 CRs-Fixed: 2609951
This commit is contained in:
@@ -666,6 +666,89 @@ wmi_twt_attach_bcast_twt_tlv(struct wmi_ops *ops)
|
||||
}
|
||||
#endif
|
||||
|
||||
static QDF_STATUS
|
||||
extract_twt_session_stats_event_tlv(wmi_unified_t wmi_handle,
|
||||
uint8_t *evt_buf,
|
||||
struct wmi_twt_session_stats_event_param
|
||||
*params)
|
||||
{
|
||||
WMI_TWT_SESSION_STATS_EVENTID_param_tlvs *param_buf;
|
||||
wmi_pdev_twt_session_stats_event_fixed_param *ev;
|
||||
|
||||
param_buf =
|
||||
(WMI_TWT_SESSION_STATS_EVENTID_param_tlvs *)evt_buf;
|
||||
if (!param_buf) {
|
||||
WMI_LOGE("evt_buf is NULL");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
ev = param_buf->fixed_param;
|
||||
params->pdev_id = wmi_handle->ops->convert_pdev_id_target_to_host(
|
||||
wmi_handle,
|
||||
ev->pdev_id);
|
||||
params->num_sessions = param_buf->num_twt_sessions;
|
||||
|
||||
WMI_LOGD("pdev_id=%d, num of TWT sessions=%d",
|
||||
params->pdev_id, params->num_sessions);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static QDF_STATUS
|
||||
extract_twt_session_stats_event_data(wmi_unified_t wmi_handle,
|
||||
uint8_t *evt_buf,
|
||||
struct wmi_twt_session_stats_event_param
|
||||
*params,
|
||||
struct wmi_host_twt_session_stats_info
|
||||
*session,
|
||||
uint32_t idx)
|
||||
{
|
||||
WMI_TWT_SESSION_STATS_EVENTID_param_tlvs *param_buf;
|
||||
wmi_twt_session_stats_info *twt_session;
|
||||
uint32_t flags;
|
||||
wmi_mac_addr *m1;
|
||||
uint8_t *m2;
|
||||
|
||||
param_buf =
|
||||
(WMI_TWT_SESSION_STATS_EVENTID_param_tlvs *)evt_buf;
|
||||
if (!param_buf) {
|
||||
WMI_LOGE("evt_buf is NULL");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
if (idx >= param_buf->num_twt_sessions) {
|
||||
WMI_LOGE("wrong idx, idx=%d, num_sessions=%d",
|
||||
idx, param_buf->num_twt_sessions);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
twt_session = ¶m_buf->twt_sessions[idx];
|
||||
|
||||
session->vdev_id = twt_session->vdev_id;
|
||||
m1 = &twt_session->peer_mac;
|
||||
m2 = session->peer_mac;
|
||||
WMI_MAC_ADDR_TO_CHAR_ARRAY(m1, m2);
|
||||
session->event_type = twt_session->event_type;
|
||||
flags = twt_session->flow_id_flags;
|
||||
session->flow_id = WMI_TWT_SESSION_FLAG_FLOW_ID_GET(flags);
|
||||
session->bcast = WMI_TWT_SESSION_FLAG_BCAST_TWT_GET(flags);
|
||||
session->trig = WMI_TWT_SESSION_FLAG_TRIGGER_TWT_GET(flags);
|
||||
session->announ = WMI_TWT_SESSION_FLAG_ANNOUN_TWT_GET(flags);
|
||||
session->dialog_id = twt_session->dialog_id;
|
||||
session->wake_dura_us = twt_session->wake_dura_us;
|
||||
session->wake_intvl_us = twt_session->wake_intvl_us;
|
||||
session->sp_offset_us = twt_session->sp_offset_us;
|
||||
WMI_LOGD("type=%d,id=%d,bcast=%d,trig=%d",
|
||||
session->event_type, session->flow_id,
|
||||
session->bcast, session->trig);
|
||||
WMI_LOGD("announ=%d,diagid=%d,wake_dur=%ul",
|
||||
session->announ, session->dialog_id, session->wake_dura_us);
|
||||
WMI_LOGD("wake_int=%ul,offset=%ul",
|
||||
session->wake_intvl_us, session->sp_offset_us);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void wmi_twt_attach_tlv(wmi_unified_t wmi_handle)
|
||||
{
|
||||
struct wmi_ops *ops = wmi_handle->ops;
|
||||
@@ -689,6 +772,10 @@ void wmi_twt_attach_tlv(wmi_unified_t wmi_handle)
|
||||
extract_twt_pause_dialog_comp_event_tlv;
|
||||
ops->extract_twt_resume_dialog_comp_event =
|
||||
extract_twt_resume_dialog_comp_event_tlv;
|
||||
ops->extract_twt_session_stats_event =
|
||||
extract_twt_session_stats_event_tlv;
|
||||
ops->extract_twt_session_stats_data =
|
||||
extract_twt_session_stats_event_data;
|
||||
|
||||
wmi_twt_attach_bcast_twt_tlv(ops);
|
||||
}
|
||||
|
Reference in New Issue
Block a user