qcacld-3.0: Add chipset stats for NAN operations
Add chipset stats for NAN operations Change-Id: Iced9198240eed0bcddead32977b160cd8aeeedf8 CRs-Fixed: 3783059
This commit is contained in:

gecommit door
Ravindra Konda

bovenliggende
7643b9b9f7
commit
019b2fff7f
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -27,6 +27,8 @@
|
||||
#include "wlan_objmgr_peer_obj.h"
|
||||
#include "wlan_policy_mgr_public_struct.h"
|
||||
#include "qdf_status.h"
|
||||
#include <nan_public_structs.h>
|
||||
#include <wlan_cp_stats_chipset_stats.h>
|
||||
|
||||
#ifdef WLAN_FEATURE_NAN
|
||||
|
||||
@@ -317,4 +319,40 @@ wlan_is_mlo_sta_nan_ndi_allowed(struct wlan_objmgr_psoc *psoc)
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(WLAN_FEATURE_NAN) && defined(WLAN_CHIPSET_STATS)
|
||||
/**
|
||||
* nan_cstats_log_nan_enable_resp_evt() - Chipset stats NAN enable
|
||||
* response event
|
||||
*
|
||||
* @nan_event: pointer to nan_event_params object
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
void nan_cstats_log_nan_enable_resp_evt(struct nan_event_params *nan_event);
|
||||
|
||||
/**
|
||||
* nan_cstats_log_nan_disable_resp_evt() - Chipset stats NAN disable
|
||||
* response event
|
||||
*
|
||||
* @vdev_id: vdev ID
|
||||
* @psoc: pointer to psoc object
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
void
|
||||
nan_cstats_log_nan_disable_resp_evt(uint8_t vdev_id,
|
||||
struct wlan_objmgr_psoc *psoc);
|
||||
#else
|
||||
static inline void
|
||||
nan_cstats_log_nan_enable_resp_evt(struct nan_event_params *nan_event)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
nan_cstats_log_nan_disable_resp_evt(uint8_t vdev_id,
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
}
|
||||
#endif /* WLAN_FEATURE_NAN && WLAN_CHIPSET_STATS */
|
||||
#endif /* _WLAN_NAN_API_H_ */
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -487,3 +487,57 @@ bool wlan_is_mlo_sta_nan_ndi_allowed(struct wlan_objmgr_psoc *psoc)
|
||||
return psoc_nan_obj->nan_caps.mlo_sta_nan_ndi_allowed;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(WLAN_FEATURE_NAN) && defined(WLAN_CHIPSET_STATS)
|
||||
void nan_cstats_log_nan_enable_resp_evt(struct nan_event_params *nan_event)
|
||||
{
|
||||
struct cstats_nan_disc_enable_resp stat = {0};
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(nan_event->psoc,
|
||||
nan_event->vdev_id,
|
||||
WLAN_NAN_ID);
|
||||
if (!vdev) {
|
||||
nan_err("Invalid vdev!");
|
||||
return;
|
||||
}
|
||||
|
||||
stat.cmn.hdr.evt_id =
|
||||
WLAN_CHIPSET_STATS_NAN_DISCOVERY_ENABLE_RESP_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_disc_enable_resp) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
|
||||
stat.is_enable_success = nan_event->is_nan_enable_success;
|
||||
stat.mac_id = nan_event->mac_id;
|
||||
stat.disc_state = nan_get_discovery_state(nan_event->psoc);
|
||||
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_NAN_ID);
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_disc_enable_resp),
|
||||
&stat);
|
||||
}
|
||||
|
||||
void nan_cstats_log_nan_disable_resp_evt(uint8_t vdev_id,
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct cstats_nan_disc_disable_resp stat = {0};
|
||||
|
||||
stat.cmn.hdr.evt_id =
|
||||
WLAN_CHIPSET_STATS_NAN_DISCOVERY_DISABLE_RESP_EVENT_ID;
|
||||
stat.cmn.hdr.length =
|
||||
sizeof(struct cstats_nan_disc_disable_resp) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = QDF_NAN_DISC_MODE;
|
||||
stat.cmn.vdev_id = vdev_id;
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.disc_state = nan_get_discovery_state(psoc);
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_disc_disable_resp),
|
||||
&stat);
|
||||
}
|
||||
#endif /* WLAN_CHIPSET_STATS */
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -899,6 +899,8 @@ static QDF_STATUS nan_handle_enable_rsp(struct nan_event_params *nan_event)
|
||||
/* NAN Enable has failed, restore changes */
|
||||
goto fail;
|
||||
}
|
||||
|
||||
nan_cstats_log_nan_enable_resp_evt(nan_event);
|
||||
fail:
|
||||
psoc_nan_obj->nan_social_ch_2g_freq = 0;
|
||||
psoc_nan_obj->nan_social_ch_5g_freq = 0;
|
||||
@@ -957,6 +959,7 @@ QDF_STATUS nan_disable_cleanup(struct wlan_objmgr_psoc *psoc)
|
||||
|
||||
nan_handle_emlsr_concurrency(psoc, false);
|
||||
policy_mgr_nan_sap_post_disable_conc_check(psoc);
|
||||
nan_cstats_log_nan_disable_resp_evt(vdev_id, psoc);
|
||||
} else {
|
||||
/* Should not happen, NAN state can always be disabled */
|
||||
nan_err("Cannot set NAN state to disabled!");
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -46,6 +46,7 @@
|
||||
#include "wlan_fwol_ucfg_api.h"
|
||||
#include "wlan_dp_ucfg_api.h"
|
||||
#include "wlan_hdd_sysfs.h"
|
||||
#include "wlan_hdd_stats.h"
|
||||
|
||||
/**
|
||||
* hdd_nan_datapath_target_config() - Configure NAN datapath features
|
||||
@@ -848,6 +849,8 @@ int hdd_ndi_start(const char *iface_name, uint16_t transaction_id)
|
||||
ret = -EINVAL;
|
||||
goto err_handler;
|
||||
}
|
||||
|
||||
hdd_cstats_log_ndi_create_req_evt(vdev, transaction_id);
|
||||
/*
|
||||
* Create transaction id is required to be saved since the firmware
|
||||
* does not honor the transaction id for create request
|
||||
@@ -938,7 +941,9 @@ int hdd_ndi_delete(uint8_t vdev_id, const char *iface_name,
|
||||
|
||||
os_if_nan_set_ndp_delete_transaction_id(vdev, transaction_id);
|
||||
os_if_nan_set_ndi_state(vdev, NAN_DATA_NDI_DELETING_STATE);
|
||||
hdd_cstats_log_ndi_delete_req_evt(vdev, transaction_id);
|
||||
hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_NAN_ID);
|
||||
|
||||
/* Delete the interface */
|
||||
adapter->is_virtual_iface = true;
|
||||
ret = hdd_delete_ndi_intf(hdd_ctx->wiphy, &adapter->wdev);
|
||||
@@ -1039,6 +1044,8 @@ hdd_ndi_drv_ndi_create_rsp_handler(uint8_t vdev_id,
|
||||
ndi_rsp->reason /* create_reason */);
|
||||
}
|
||||
|
||||
hdd_cstats_log_ndi_create_resp_evt(link_info, ndi_rsp);
|
||||
|
||||
hdd_save_peer(sta_ctx, &bc_mac_addr);
|
||||
qdf_copy_macaddr(&roam_info->bssid, &bc_mac_addr);
|
||||
hdd_roam_register_sta(link_info,
|
||||
|
@@ -58,6 +58,7 @@
|
||||
#include <net/cnss_nl.h>
|
||||
#endif
|
||||
#endif
|
||||
#include "wlan_nan_api.h"
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)) && !defined(WITH_BACKPORTS)
|
||||
#define HDD_INFO_SIGNAL STATION_INFO_SIGNAL
|
||||
@@ -11627,4 +11628,77 @@ void hdd_register_cstats_ops(void)
|
||||
{
|
||||
ucfg_cp_stats_cstats_register_tx_rx_ops(&cstats_ops);
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
hdd_cstats_log_ndi_delete_req_evt(struct wlan_objmgr_vdev *vdev,
|
||||
uint16_t transaction_id)
|
||||
{
|
||||
struct cstats_nan_ndi_delete_req stat = {0};
|
||||
|
||||
stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_NAN_NDI_DELETE_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_ndi_delete_req) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.transaction_id = transaction_id;
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndi_delete_req), &stat);
|
||||
}
|
||||
|
||||
void
|
||||
hdd_cstats_log_ndi_create_resp_evt(struct wlan_hdd_link_info *li,
|
||||
struct nan_datapath_inf_create_rsp *ndi_rsp)
|
||||
{
|
||||
struct cstats_nan_ndi_create_resp stat = {0};
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct nan_vdev_priv_obj *priv_obj;
|
||||
|
||||
vdev = hdd_objmgr_get_vdev_by_user(li, WLAN_OSIF_NAN_ID);
|
||||
if (!vdev) {
|
||||
hdd_err("vdev is NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
priv_obj = nan_get_vdev_priv_obj(vdev);
|
||||
if (!priv_obj) {
|
||||
hdd_err("priv_obj is null")
|
||||
return;
|
||||
}
|
||||
|
||||
stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_NAN_NDI_CREATE_RESP_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_ndi_create_resp) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.status = ndi_rsp->status;
|
||||
stat.reason = ndi_rsp->reason;
|
||||
qdf_spin_lock_bh(&priv_obj->lock);
|
||||
stat.transaction_id = priv_obj->ndp_create_transaction_id;
|
||||
qdf_spin_unlock_bh(&priv_obj->lock);
|
||||
hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_NAN_ID);
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndi_create_resp),
|
||||
&stat);
|
||||
}
|
||||
|
||||
void hdd_cstats_log_ndi_create_req_evt(struct wlan_objmgr_vdev *vdev,
|
||||
uint16_t transaction_id)
|
||||
{
|
||||
struct cstats_nan_ndi_create_req stat = {0};
|
||||
|
||||
stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_NAN_NDI_CREATE_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_ndi_create_req) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.transaction_id = transaction_id;
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndi_create_req), &stat);
|
||||
}
|
||||
#endif /* WLAN_CHIPSET_STATS */
|
||||
|
@@ -829,6 +829,41 @@ int hdd_cstats_send_data_to_userspace(char *buff, unsigned int len,
|
||||
* Return: void
|
||||
*/
|
||||
void hdd_register_cstats_ops(void);
|
||||
|
||||
/**
|
||||
* hdd_cstats_log_ndi_delete_req_evt() - Chipset stats for ndi delete
|
||||
*
|
||||
* @vdev: pointer to vdev object
|
||||
* @transaction_id: transaction ID
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void hdd_cstats_log_ndi_delete_req_evt(struct wlan_objmgr_vdev *vdev,
|
||||
uint16_t transaction_id);
|
||||
|
||||
/**
|
||||
* hdd_cstats_log_ndi_create_resp_evt() - Chipset stats for ndi create
|
||||
* response
|
||||
* @li: pointer link_info object
|
||||
* @ndi_rsp: pointer to nan_datapath_inf_create_rsp object
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void
|
||||
hdd_cstats_log_ndi_create_resp_evt(struct wlan_hdd_link_info *li,
|
||||
struct nan_datapath_inf_create_rsp *ndi_rsp);
|
||||
|
||||
/**
|
||||
* hdd_cstats_log_ndi_create_req_evt() - Chipset stats for ndi create
|
||||
* request
|
||||
*
|
||||
* @vdev: pointer vdve object
|
||||
* @transaction_id : Transaction ID
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void hdd_cstats_log_ndi_create_req_evt(struct wlan_objmgr_vdev *vdev,
|
||||
uint16_t transaction_id);
|
||||
#else
|
||||
static inline void hdd_register_cstats_ops(void)
|
||||
{
|
||||
@@ -840,5 +875,23 @@ hdd_cstats_send_data_to_userspace(char *buff, unsigned int len,
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void
|
||||
hdd_cstats_log_ndi_delete_req_evt(struct wlan_objmgr_vdev *vdev,
|
||||
uint16_t transaction_id)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
hdd_cstats_log_ndi_create_resp_evt(struct wlan_hdd_link_info *li,
|
||||
struct nan_datapath_inf_create_rsp *ndi_rsp)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
hdd_cstats_log_ndi_create_req_evt(struct wlan_objmgr_vdev *vdev,
|
||||
uint16_t transaction_id)
|
||||
{
|
||||
}
|
||||
#endif /* WLAN_CHIPSET_STATS */
|
||||
#endif /* end #if !defined(WLAN_HDD_STATS_H) */
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022,2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "nan_public_structs.h"
|
||||
#include "nan_ucfg_api.h"
|
||||
#include "qca_vendor.h"
|
||||
#include <wlan_cp_stats_chipset_stats.h>
|
||||
|
||||
/* QCA_NL80211_VENDOR_SUBCMD_NAN_EXT policy */
|
||||
extern const struct nla_policy nan_attr_policy[
|
||||
@@ -184,4 +185,224 @@ static inline void os_if_nan_post_ndi_delete_rsp(struct wlan_objmgr_psoc *psoc,
|
||||
|
||||
#endif /* WLAN_FEATURE_NAN */
|
||||
|
||||
#if defined(WLAN_FEATURE_NAN) && defined(WLAN_CHIPSET_STATS)
|
||||
/**
|
||||
* os_if_cstats_log_ndp_initiator_req_evt() - Chipset stats for ndp
|
||||
* initiator request
|
||||
*
|
||||
* @req : pointer to nan_datapath_initiator_req
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void
|
||||
os_if_cstats_log_ndp_initiator_req_evt(struct nan_datapath_initiator_req *req);
|
||||
|
||||
/**
|
||||
* os_if_cstats_log_ndp_responder_req_evt() - Chipset stats for ndp
|
||||
* responder request
|
||||
*
|
||||
* @vdev : pointer to vdev object
|
||||
* @req : pointer to nan_datapath_responder_req
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void
|
||||
os_if_cstats_log_ndp_responder_req_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_responder_req *req);
|
||||
|
||||
/**
|
||||
* os_if_cstats_log_ndp_end_req_evt() - Chipset stats for ndp end
|
||||
* request event
|
||||
*
|
||||
* @vdev : pointer to vdev object
|
||||
* @rq : pointer to nan_datapath_end_req
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void os_if_cstats_log_ndp_end_req_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_end_req *rq);
|
||||
|
||||
/**
|
||||
* os_if_cstats_log_ndp_initiator_resp_evt() - Chipset stats for ndp
|
||||
* initiator request event
|
||||
*
|
||||
* @vdev : pointer to vdev object
|
||||
* @rsp : pointer to nan_datapath_end_req
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void
|
||||
os_if_cstats_log_ndp_initiator_resp_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_initiator_rsp *rsp);
|
||||
|
||||
/**
|
||||
* os_if_cstats_log_ndp_responder_resp_evt() - Chipset stats for ndp
|
||||
* responder response event
|
||||
*
|
||||
* @vdev : pointer to vdev object
|
||||
* @rsp : pointer to nan_datapath_responder_rsp
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void
|
||||
os_if_cstats_log_ndp_responder_resp_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_responder_rsp *rsp);
|
||||
|
||||
/**
|
||||
* os_if_cstats_log_ndp_indication_evt() - Chipset stats for ndp
|
||||
* indication event
|
||||
*
|
||||
* @vdev : pointer to vdev object
|
||||
* @evt : pointer to nan_datapath_indication_event object
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void
|
||||
os_if_cstats_log_ndp_indication_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_indication_event *evt);
|
||||
|
||||
/**
|
||||
* os_if_cstats_log_ndp_confirm_evt() - Chipset stats for ndp
|
||||
* confirm event
|
||||
*
|
||||
* @vdev : pointer to vdev object
|
||||
* @nc : pointer to nan_datapath_confirm_event
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void os_if_cstats_log_ndp_confirm_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_confirm_event *nc);
|
||||
|
||||
/**
|
||||
* os_if_cstats_log_ndp_end_rsp_evt() - Chipset stats for ndp
|
||||
* end response event
|
||||
*
|
||||
* @vdev : pointer to vdev object
|
||||
* @rsp : pointer to nan_datapath_end_rsp_event object
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void os_if_cstats_log_ndp_end_rsp_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_end_rsp_event *rsp);
|
||||
|
||||
/**
|
||||
* os_if_cstats_log_ndp_new_peer_evt() - Chipset stats for ndp
|
||||
* new peer event
|
||||
*
|
||||
* @vdev : pointer to vdev object
|
||||
* @peer_ind : pointer to nan_datapath_peer_ind object
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void os_if_cstats_log_ndp_new_peer_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_peer_ind *peer_ind);
|
||||
|
||||
/**
|
||||
* os_if_cstats_log_ndi_delete_resp_evt() - Chipset stats for ndi
|
||||
* delete response event
|
||||
*
|
||||
* @vdev : pointer to vdev object
|
||||
* @rsp : pointer to nan_datapath_inf_delete_rsp object
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void
|
||||
os_if_cstats_log_ndi_delete_resp_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_inf_delete_rsp *rsp);
|
||||
|
||||
/**
|
||||
* os_if_cstats_log_nan_disc_enable_req_evt() - Chipset stats for nan
|
||||
* discovery enable request
|
||||
*
|
||||
* @vdev_id : pointer to vdev object
|
||||
* @nan_req : pointer to nan_enable_req object
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void os_if_cstats_log_nan_disc_enable_req_evt(uint8_t vdev_id,
|
||||
struct nan_enable_req *nan_req);
|
||||
|
||||
/**
|
||||
* os_if_cstats_log_disable_nan_disc_evt() - Chipset stats for nan
|
||||
* discovery disable event
|
||||
*
|
||||
* @pdev : pointer to pdev object
|
||||
* @vdev_id : vdev ID
|
||||
*
|
||||
* Return : void
|
||||
*/
|
||||
void os_if_cstats_log_disable_nan_disc_evt(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id);
|
||||
#else
|
||||
static inline void
|
||||
os_if_cstats_log_ndp_initiator_req_evt(struct nan_datapath_initiator_req *req)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
os_if_cstats_log_ndp_responder_req_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_responder_req *req)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
os_if_cstats_log_ndp_end_req_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_end_req *rq)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
os_if_cstats_log_ndp_initiator_resp_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_initiator_rsp *rsp)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
os_if_cstats_log_ndp_responder_resp_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_responder_rsp *rsp)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
os_if_cstats_log_ndp_indication_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_indication_event *event)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
os_if_cstats_log_ndp_confirm_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_confirm_event *nc)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
os_if_cstats_log_ndp_end_rsp_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_end_rsp_event *rsp)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
os_if_cstats_log_ndp_new_peer_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_peer_ind *peer_ind)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
os_if_cstats_log_ndi_delete_resp_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_inf_delete_rsp *rsp)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
os_if_cstats_log_nan_disc_enable_req_evt(uint8_t vdev_id,
|
||||
struct nan_enable_req *nan_req)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
os_if_cstats_log_disable_nan_disc_evt(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
}
|
||||
#endif /* WLAN_CHIPSET_STATS */
|
||||
#endif
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -833,6 +833,9 @@ static int __os_if_nan_process_ndp_initiator_req(struct wlan_objmgr_psoc *psoc,
|
||||
}
|
||||
|
||||
req.vdev = nan_vdev;
|
||||
|
||||
os_if_cstats_log_ndp_initiator_req_evt(&req);
|
||||
|
||||
status = ucfg_nan_req_processor(nan_vdev, &req, NDP_INITIATOR_REQ);
|
||||
ret = qdf_status_to_os_return(status);
|
||||
initiator_req_failed:
|
||||
@@ -1023,6 +1026,8 @@ static int __os_if_nan_process_ndp_responder_req(struct wlan_objmgr_psoc *psoc,
|
||||
goto responder_req_failed;
|
||||
}
|
||||
|
||||
os_if_cstats_log_ndp_responder_req_evt(nan_vdev, &req);
|
||||
|
||||
osif_debug("vdev_id: %d, transaction_id: %d, ndp_rsp %d, ndp_instance_id: %d, ndp_app_info_len: %d, csid: %d",
|
||||
wlan_vdev_get_id(nan_vdev), req.transaction_id, req.ndp_rsp,
|
||||
req.ndp_instance_id, req.ndp_info.ndp_app_info_len,
|
||||
@@ -1110,6 +1115,9 @@ static int __os_if_nan_process_ndp_end_req(struct wlan_objmgr_psoc *psoc,
|
||||
}
|
||||
|
||||
req.vdev = nan_vdev;
|
||||
|
||||
os_if_cstats_log_ndp_end_req_evt(nan_vdev, &req);
|
||||
|
||||
status = ucfg_nan_req_processor(nan_vdev, &req, NDP_END_REQ);
|
||||
ret = qdf_status_to_os_return(status);
|
||||
if (ret)
|
||||
@@ -1309,6 +1317,8 @@ static void os_if_ndp_initiator_rsp_handler(struct wlan_objmgr_vdev *vdev,
|
||||
rsp->reason))
|
||||
goto ndp_initiator_rsp_nla_failed;
|
||||
|
||||
os_if_cstats_log_ndp_initiator_resp_evt(vdev, rsp);
|
||||
|
||||
osif_debug("NDP Initiator rsp sent, tid:%d, instance id:%d, status:%d, reason: %d",
|
||||
rsp->transaction_id, rsp->ndp_instance_id, rsp->status,
|
||||
rsp->reason);
|
||||
@@ -1391,6 +1401,8 @@ static void os_if_ndp_responder_rsp_handler(struct wlan_objmgr_vdev *vdev,
|
||||
rsp->reason))
|
||||
goto ndp_responder_rsp_nla_failed;
|
||||
|
||||
os_if_cstats_log_ndp_responder_resp_evt(vdev, rsp);
|
||||
|
||||
wlan_cfg80211_vendor_event(vendor_event, GFP_ATOMIC);
|
||||
return;
|
||||
ndp_responder_rsp_nla_failed:
|
||||
@@ -1599,6 +1611,8 @@ static void os_if_ndp_indication_handler(struct wlan_objmgr_vdev *vdev,
|
||||
goto ndp_indication_nla_failed;
|
||||
}
|
||||
|
||||
os_if_cstats_log_ndp_indication_evt(vdev, event);
|
||||
|
||||
wlan_cfg80211_vendor_event(vendor_event, GFP_ATOMIC);
|
||||
return;
|
||||
ndp_indication_nla_failed:
|
||||
@@ -1807,6 +1821,9 @@ os_if_ndp_confirm_ind_handler(struct wlan_objmgr_vdev *vdev,
|
||||
goto ndp_confirm_nla_failed;
|
||||
|
||||
wlan_cfg80211_vendor_event(vendor_event, GFP_ATOMIC);
|
||||
|
||||
os_if_cstats_log_ndp_confirm_evt(vdev, ndp_confirm);
|
||||
|
||||
osif_debug("NDP confim sent, ndp instance id: %d, peer addr: "QDF_MAC_ADDR_FMT" rsp_code: %d, reason_code: %d",
|
||||
ndp_confirm->ndp_instance_id,
|
||||
QDF_MAC_ADDR_REF(ndp_confirm->peer_ndi_mac_addr.bytes),
|
||||
@@ -1889,6 +1906,8 @@ static void os_if_ndp_end_rsp_handler(struct wlan_objmgr_vdev *vdev,
|
||||
rsp->transaction_id))
|
||||
goto ndp_end_rsp_nla_failed;
|
||||
|
||||
os_if_cstats_log_ndp_end_rsp_evt(vdev, rsp);
|
||||
|
||||
osif_debug("NDP End rsp sent, transaction id: %u, status: %u, reason: %u",
|
||||
rsp->transaction_id, rsp->status, rsp->reason);
|
||||
wlan_cfg80211_vendor_event(vendor_event, GFP_ATOMIC);
|
||||
@@ -2006,6 +2025,8 @@ static void os_if_new_peer_ind_handler(struct wlan_objmgr_vdev *vdev,
|
||||
return;
|
||||
}
|
||||
|
||||
os_if_cstats_log_ndp_new_peer_evt(vdev, peer_ind);
|
||||
|
||||
osif_debug("vdev_id: %d, peer_mac: "QDF_MAC_ADDR_FMT,
|
||||
vdev_id, QDF_MAC_ADDR_REF(peer_ind->peer_mac_addr.bytes));
|
||||
ret = cb_obj.new_peer_ind(vdev_id, peer_ind->sta_id,
|
||||
@@ -2254,6 +2275,8 @@ static void os_if_ndp_iface_delete_rsp_handler(struct wlan_objmgr_psoc *psoc,
|
||||
osif_debug("NDI BSS stop failed with reason %d",
|
||||
ndi_rsp->reason);
|
||||
|
||||
os_if_cstats_log_ndi_delete_resp_evt(vdev, ndi_rsp);
|
||||
|
||||
ucfg_nan_set_ndi_delete_rsp_reason(vdev, ndi_rsp->reason);
|
||||
ucfg_nan_set_ndi_delete_rsp_status(vdev, ndi_rsp->status);
|
||||
cb_obj.drv_ndi_delete_rsp_handler(vdev_id);
|
||||
@@ -2896,9 +2919,294 @@ int os_if_process_nan_req(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id,
|
||||
case QCA_WLAN_NAN_EXT_SUBCMD_TYPE_ENABLE_REQ:
|
||||
return os_if_process_nan_enable_req(pdev, tb, vdev_id);
|
||||
case QCA_WLAN_NAN_EXT_SUBCMD_TYPE_DISABLE_REQ:
|
||||
os_if_cstats_log_disable_nan_disc_evt(pdev, vdev_id);
|
||||
return os_if_process_nan_disable_req(psoc, tb);
|
||||
default:
|
||||
osif_err("Unrecognized NAN subcmd type(%d)", nan_subcmd);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef WLAN_CHIPSET_STATS
|
||||
void
|
||||
os_if_cstats_log_ndp_initiator_req_evt(struct nan_datapath_initiator_req *req)
|
||||
{
|
||||
struct cstats_nan_ndp_initiator_req stat = {0};
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
|
||||
vdev = req->vdev;
|
||||
|
||||
stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_NAN_NDP_INITIATOR_REQ_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_ndp_initiator_req) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
|
||||
stat.transaction_id = req->transaction_id;
|
||||
stat.channel = req->channel;
|
||||
stat.channel_cfg = req->channel_cfg;
|
||||
stat.service_instance_id = req->service_instance_id;
|
||||
CSTATS_MAC_COPY(stat.self_ndi_mac_addr, req->self_ndi_mac_addr.bytes);
|
||||
CSTATS_MAC_COPY(stat.peer_discovery_mac_addr,
|
||||
req->peer_discovery_mac_addr.bytes);
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndp_initiator_req),
|
||||
&stat);
|
||||
}
|
||||
|
||||
void
|
||||
os_if_cstats_log_ndp_responder_req_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_responder_req *req)
|
||||
{
|
||||
struct cstats_nan_ndp_responder_req stat = {0};
|
||||
|
||||
stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_NAN_NDP_RESPONDER_REQ_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_ndp_responder_req) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.transaction_id = req->transaction_id;
|
||||
stat.ndp_instance_id = req->ndp_instance_id;
|
||||
stat.ndp_rsp = req->ndp_rsp;
|
||||
stat.ncs_sk_type = req->ncs_sk_type;
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndp_responder_req),
|
||||
&stat);
|
||||
}
|
||||
|
||||
void os_if_cstats_log_ndp_end_req_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_end_req *rq)
|
||||
{
|
||||
struct cstats_nan_ndp_end_req stat = {0};
|
||||
|
||||
stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_NAN_NDP_END_REQ_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_ndp_end_req) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.transaction_id = rq->transaction_id;
|
||||
stat.num_ndp_instances = rq->num_ndp_instances;
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndp_end_req), &stat);
|
||||
}
|
||||
|
||||
void
|
||||
os_if_cstats_log_ndp_initiator_resp_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_initiator_rsp *rsp)
|
||||
{
|
||||
struct cstats_nan_ndp_initiator_resp stat = {0};
|
||||
|
||||
stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_NAN_NDP_INITIATOR_RSP_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_ndp_initiator_resp) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.status = rsp->status;
|
||||
stat.reason = rsp->reason;
|
||||
stat.transaction_id = rsp->transaction_id;
|
||||
stat.service_instance_id = rsp->ndp_instance_id;
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndp_initiator_resp),
|
||||
&stat);
|
||||
}
|
||||
|
||||
void
|
||||
os_if_cstats_log_ndp_responder_resp_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_responder_rsp *rsp)
|
||||
{
|
||||
struct cstats_nan_ndp_responder_resp stat = {0};
|
||||
|
||||
stat.cmn.hdr.evt_id =
|
||||
WLAN_CHIPSET_STATS_NAN_NDP_RESPONDER_RESP_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_tdls_disc_req) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.status = rsp->status;
|
||||
stat.reason = rsp->reason;
|
||||
stat.transaction_id = rsp->transaction_id;
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndp_responder_resp),
|
||||
&stat);
|
||||
}
|
||||
|
||||
void
|
||||
os_if_cstats_log_ndp_indication_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_indication_event *evt)
|
||||
{
|
||||
struct cstats_nan_ndp_ind stat = {0};
|
||||
|
||||
stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_NAN_NDP_INDICATION_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_ndp_ind) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.ndp_instance_id = evt->ndp_instance_id;
|
||||
stat.service_instance_id = evt->service_instance_id;
|
||||
CSTATS_MAC_COPY(stat.peer_mac, evt->peer_mac_addr.bytes);
|
||||
CSTATS_MAC_COPY(stat.peer_discovery_mac_addr,
|
||||
evt->peer_discovery_mac_addr.bytes);
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndp_ind), &stat);
|
||||
}
|
||||
|
||||
void
|
||||
os_if_cstats_log_ndp_confirm_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_confirm_event *nc)
|
||||
{
|
||||
struct cstats_nan_ndp_confirm_ind stat = {0};
|
||||
|
||||
stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_NAN_NDP_CONFIRM_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_ndp_confirm_ind) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.instance_id = nc->ndp_instance_id;
|
||||
stat.rsp_code = nc->rsp_code;
|
||||
stat.reason_code = nc->reason_code;
|
||||
CSTATS_MAC_COPY(stat.peer_addr, nc->peer_ndi_mac_addr.bytes);
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndp_confirm_ind),
|
||||
&stat);
|
||||
}
|
||||
|
||||
void
|
||||
os_if_cstats_log_ndp_end_rsp_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_end_rsp_event *rsp)
|
||||
{
|
||||
struct cstats_nan_ndp_end_resp stat = {0};
|
||||
|
||||
stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_NAN_NDP_END_RESP_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_ndp_end_resp) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.status = rsp->status;
|
||||
stat.reason = rsp->reason;
|
||||
stat.transaction_id = rsp->transaction_id;
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndp_end_resp), &stat);
|
||||
}
|
||||
|
||||
void
|
||||
os_if_cstats_log_ndp_new_peer_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_peer_ind *peer_ind)
|
||||
{
|
||||
struct cstats_nan_ndp_new_peer_ind stat = {0};
|
||||
|
||||
stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_NAN_NDP_NEW_PEER_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_ndp_new_peer_ind) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.sta_id = peer_ind->sta_id;
|
||||
CSTATS_MAC_COPY(stat.peer_mac, peer_ind->peer_mac_addr.bytes);
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndp_new_peer_ind),
|
||||
&stat);
|
||||
}
|
||||
|
||||
void
|
||||
os_if_cstats_log_ndi_delete_resp_evt(struct wlan_objmgr_vdev *vdev,
|
||||
struct nan_datapath_inf_delete_rsp *rsp)
|
||||
{
|
||||
struct cstats_nan_ndi_delete_resp stat = {0};
|
||||
|
||||
stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_NAN_NDI_DELETE_RESP_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_ndi_delete_resp) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
|
||||
stat.status = rsp->status;
|
||||
stat.reason = rsp->reason;
|
||||
stat.transaction_id = ucfg_nan_get_ndp_delete_transaction_id(vdev);
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_ndi_delete_resp),
|
||||
&stat);
|
||||
}
|
||||
|
||||
void os_if_cstats_log_nan_disc_enable_req_evt(uint8_t vdev_id,
|
||||
struct nan_enable_req *nan_req)
|
||||
{
|
||||
struct cstats_nan_disc_enable stat = {0};
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_pdev(nan_req->pdev,
|
||||
vdev_id, WLAN_NAN_ID);
|
||||
if (!vdev) {
|
||||
osif_err("vdev is null");
|
||||
return;
|
||||
}
|
||||
|
||||
stat.cmn.hdr.evt_id =
|
||||
WLAN_CHIPSET_STATS_NAN_DISCOVERY_ENABLE_REQ_EVENT_ID;
|
||||
stat.cmn.hdr.length =
|
||||
sizeof(struct cstats_nan_disc_enable) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
stat.social_chan_2g_freq = nan_req->social_chan_2g_freq;
|
||||
stat.social_chan_5g_freq = nan_req->social_chan_5g_freq;
|
||||
stat.rtt_cap = nan_req->params.rtt_cap;
|
||||
stat.disable_6g_nan = nan_req->params.disable_6g_nan;
|
||||
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_NAN_ID);
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_disc_enable), &stat);
|
||||
}
|
||||
|
||||
void
|
||||
os_if_cstats_log_disable_nan_disc_evt(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
struct cstats_nan_disc_disable_req stat = {0};
|
||||
struct wlan_objmgr_vdev *vdev = NULL;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev, vdev_id, WLAN_NAN_ID);
|
||||
if (!vdev) {
|
||||
osif_err("vdev is null");
|
||||
return;
|
||||
}
|
||||
|
||||
stat.cmn.hdr.evt_id =
|
||||
WLAN_CHIPSET_STATS_NAN_DISCOVERY_DISABLE_REQ_EVENT_ID;
|
||||
stat.cmn.hdr.length = sizeof(struct cstats_nan_disc_disable_req) -
|
||||
sizeof(struct cstats_hdr);
|
||||
stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
|
||||
stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
|
||||
stat.cmn.time_tick = qdf_get_log_timestamp();
|
||||
|
||||
stat.disable_2g_discovery = 1;
|
||||
stat.disable_5g_discovery = 1;
|
||||
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_NAN_ID);
|
||||
|
||||
wlan_cstats_host_stats(sizeof(struct cstats_nan_disc_disable_req),
|
||||
&stat);
|
||||
}
|
||||
#endif /* WLAN_CHIPSET_STATS */
|
||||
|
||||
|
Verwijs in nieuw issue
Block a user