qcacmn: Add support to get pmf bcn protect stats from fw
To get the pmf beacon stats from firmware, host sets WMI_REQUEST_PMF_BCN_PROTECT_STAT bit in stats_id param of WMI_REQUEST_STATS_CMDID command. Firmware supporting pmf beacon protection stats responds host with stats in wmi_update_stats_id event. Hence add support to get PMF beacon protect stats from firmware. Change-Id: I99efd94ce5367da1312f60251ce7106997dd8bc8 CRs-Fixed: 2705084
This commit is contained in:

committed by
snandini

parent
62339dcb9c
commit
f17e8207ac
@@ -3014,6 +3014,18 @@ QDF_STATUS
|
|||||||
wmi_extract_profile_data(wmi_unified_t wmi_handle, void *evt_buf, uint8_t idx,
|
wmi_extract_profile_data(wmi_unified_t wmi_handle, void *evt_buf, uint8_t idx,
|
||||||
wmi_host_wlan_profile_t *profile_data);
|
wmi_host_wlan_profile_t *profile_data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wmi_extract_pmf_bcn_protect_stats() - extract pmf bcn stats from event
|
||||||
|
* @wmi_handle: wmi handle
|
||||||
|
* @evt_buf: pointer to event buffer
|
||||||
|
* @bcn_stats: Pointer to hold pmf bcn protect stats
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wmi_extract_pmf_bcn_protect_stats(wmi_unified_t wmi_handle, void *evt_buf,
|
||||||
|
wmi_host_pmf_bcn_protect_stats *bcn_stats);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* extract_unit_test() - extract unit test from event
|
* extract_unit_test() - extract unit test from event
|
||||||
* @wmi_handle: wmi handle
|
* @wmi_handle: wmi handle
|
||||||
|
@@ -796,6 +796,7 @@ typedef enum {
|
|||||||
WMI_HOST_REQUEST_BCN_STAT_RESET = 0x1000,
|
WMI_HOST_REQUEST_BCN_STAT_RESET = 0x1000,
|
||||||
WMI_HOST_REQUEST_PEER_RETRY_STAT = 0x2000,
|
WMI_HOST_REQUEST_PEER_RETRY_STAT = 0x2000,
|
||||||
WMI_HOST_REQUEST_PEER_ADV_STATS = 0x4000,
|
WMI_HOST_REQUEST_PEER_ADV_STATS = 0x4000,
|
||||||
|
WMI_HOST_REQUEST_PMF_BCN_PROTECT_STAT = 0x8000,
|
||||||
} wmi_host_stats_id;
|
} wmi_host_stats_id;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@@ -4157,6 +4158,19 @@ typedef struct {
|
|||||||
uint32_t mib_int_count;
|
uint32_t mib_int_count;
|
||||||
} wmi_host_pdev_stats;
|
} wmi_host_pdev_stats;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wmi_host_pmf_bcn_protect_stats - PMF bcn protect stats
|
||||||
|
* @igtk_mic_fail_cnt: MIC failure count of management packets using IGTK
|
||||||
|
* @igtk_replay_cnt: Replay detection count of management packets using IGTK
|
||||||
|
* @bcn_mic_fail_cnt: MIC failure count of beacon packets using BIGTK
|
||||||
|
* @bcn_replay_cnt: Replay detection count of beacon packets using BIGTK
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
uint32_t igtk_mic_fail_cnt;
|
||||||
|
uint32_t igtk_replay_cnt;
|
||||||
|
uint32_t bcn_mic_fail_cnt;
|
||||||
|
uint32_t bcn_replay_cnt;
|
||||||
|
} wmi_host_pmf_bcn_protect_stats;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wmi_unit_test_event - Structure corresponding to WMI Unit test event
|
* struct wmi_unit_test_event - Structure corresponding to WMI Unit test event
|
||||||
|
@@ -1731,6 +1731,9 @@ QDF_STATUS (*extract_all_stats_count)(wmi_unified_t wmi_handle, void *evt_buf,
|
|||||||
QDF_STATUS (*extract_pdev_stats)(wmi_unified_t wmi_handle, void *evt_buf,
|
QDF_STATUS (*extract_pdev_stats)(wmi_unified_t wmi_handle, void *evt_buf,
|
||||||
uint32_t index, wmi_host_pdev_stats *pdev_stats);
|
uint32_t index, wmi_host_pdev_stats *pdev_stats);
|
||||||
|
|
||||||
|
QDF_STATUS (*extract_pmf_bcn_protect_stats)(wmi_unified_t wmi_handle,
|
||||||
|
void *evt_buf, wmi_host_pmf_bcn_protect_stats *pmf_bcn_stats);
|
||||||
|
|
||||||
QDF_STATUS (*extract_unit_test)(wmi_unified_t wmi_handle, void *evt_buf,
|
QDF_STATUS (*extract_unit_test)(wmi_unified_t wmi_handle, void *evt_buf,
|
||||||
wmi_unit_test_event *unit_test, uint32_t maxspace);
|
wmi_unit_test_event *unit_test, uint32_t maxspace);
|
||||||
|
|
||||||
|
@@ -2104,6 +2104,17 @@ wmi_extract_composite_phyerr(wmi_unified_t wmi_handle, void *evt_buf,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wmi_extract_pmf_bcn_protect_stats(wmi_unified_t wmi_handle, void *evt_buf,
|
||||||
|
wmi_host_pmf_bcn_protect_stats *bcn_stats)
|
||||||
|
{
|
||||||
|
if (wmi_handle->ops->extract_pmf_bcn_protect_stats)
|
||||||
|
return wmi_handle->ops->extract_pmf_bcn_protect_stats(
|
||||||
|
wmi_handle, evt_buf, bcn_stats);
|
||||||
|
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wmi_extract_unit_test(wmi_unified_t wmi_handle, void *evt_buf,
|
wmi_extract_unit_test(wmi_unified_t wmi_handle, void *evt_buf,
|
||||||
wmi_unit_test_event *unit_test, uint32_t maxspace)
|
wmi_unit_test_event *unit_test, uint32_t maxspace)
|
||||||
|
@@ -136,6 +136,10 @@ extract_all_stats_counts_tlv(wmi_unified_t wmi_handle, void *evt_buf,
|
|||||||
stats_param->stats_id |= WMI_HOST_REQUEST_PEER_ADV_STATS;
|
stats_param->stats_id |= WMI_HOST_REQUEST_PEER_ADV_STATS;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WMI_REQUEST_PMF_BCN_PROTECT_STAT:
|
||||||
|
stats_param->stats_id |= WMI_HOST_REQUEST_PMF_BCN_PROTECT_STAT;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
stats_param->stats_id = 0;
|
stats_param->stats_id = 0;
|
||||||
break;
|
break;
|
||||||
@@ -451,6 +455,43 @@ extract_peer_extd_stats_tlv(wmi_unified_t wmi_handle,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* extract_pmf_bcn_protect_stats_tlv() - extract pmf bcn stats from event
|
||||||
|
* @wmi_handle: wmi handle
|
||||||
|
* @evt_buf: pointer to event buffer
|
||||||
|
* @pmf_bcn_stats: Pointer to hold pmf bcn protect stats
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS for success or error code
|
||||||
|
*/
|
||||||
|
|
||||||
|
static QDF_STATUS
|
||||||
|
extract_pmf_bcn_protect_stats_tlv(wmi_unified_t wmi_handle, void *evt_buf,
|
||||||
|
wmi_host_pmf_bcn_protect_stats *pmf_bcn_stats)
|
||||||
|
{
|
||||||
|
WMI_UPDATE_STATS_EVENTID_param_tlvs *param_buf;
|
||||||
|
wmi_stats_event_fixed_param *ev_param;
|
||||||
|
|
||||||
|
param_buf = (WMI_UPDATE_STATS_EVENTID_param_tlvs *)evt_buf;
|
||||||
|
if (!param_buf)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
ev_param = (wmi_stats_event_fixed_param *)param_buf->fixed_param;
|
||||||
|
|
||||||
|
if ((ev_param->stats_id & WMI_REQUEST_PMF_BCN_PROTECT_STAT) &&
|
||||||
|
param_buf->pmf_bcn_protect_stats) {
|
||||||
|
pmf_bcn_stats->igtk_mic_fail_cnt =
|
||||||
|
param_buf->pmf_bcn_protect_stats->igtk_mic_fail_cnt;
|
||||||
|
pmf_bcn_stats->igtk_replay_cnt =
|
||||||
|
param_buf->pmf_bcn_protect_stats->igtk_replay_cnt;
|
||||||
|
pmf_bcn_stats->bcn_mic_fail_cnt =
|
||||||
|
param_buf->pmf_bcn_protect_stats->bcn_mic_fail_cnt;
|
||||||
|
pmf_bcn_stats->bcn_replay_cnt =
|
||||||
|
param_buf->pmf_bcn_protect_stats->bcn_replay_cnt;
|
||||||
|
}
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
void wmi_cp_stats_attach_tlv(wmi_unified_t wmi_handle)
|
void wmi_cp_stats_attach_tlv(wmi_unified_t wmi_handle)
|
||||||
{
|
{
|
||||||
struct wmi_ops *ops = wmi_handle->ops;
|
struct wmi_ops *ops = wmi_handle->ops;
|
||||||
@@ -461,6 +502,7 @@ void wmi_cp_stats_attach_tlv(wmi_unified_t wmi_handle)
|
|||||||
ops->extract_vdev_stats = extract_vdev_stats_tlv;
|
ops->extract_vdev_stats = extract_vdev_stats_tlv;
|
||||||
ops->extract_peer_stats = extract_peer_stats_tlv;
|
ops->extract_peer_stats = extract_peer_stats_tlv;
|
||||||
ops->extract_peer_extd_stats = extract_peer_extd_stats_tlv;
|
ops->extract_peer_extd_stats = extract_peer_extd_stats_tlv;
|
||||||
|
ops->extract_pmf_bcn_protect_stats = extract_pmf_bcn_protect_stats_tlv,
|
||||||
|
|
||||||
wmi_mc_cp_stats_attach_tlv(wmi_handle);
|
wmi_mc_cp_stats_attach_tlv(wmi_handle);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user