qcacmn: Add Support for request control path stats
Add support in cp stats component for the control path stats infrastructure provided by firmware via WMI_REQUEST_CTRL_PATH_STATS_CMDID and WMI_CTRL_PATH_STATS_EVENTID. Also add support for TWT type operations over this infrastructure. Change-Id: I154babff396ac39c11c7548ad91cc4dc0d0c52af CRs-Fixed: 2847603
This commit is contained in:

committed by
snandini

parent
a20bb6caa3
commit
b60109631e
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018-2019, 2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -36,10 +36,16 @@
|
|||||||
#include "wlan_cp_stats_cmn_defs.h"
|
#include "wlan_cp_stats_cmn_defs.h"
|
||||||
#include <wlan_cp_stats_utils_api.h>
|
#include <wlan_cp_stats_utils_api.h>
|
||||||
#include <wlan_cp_stats_ext_type.h>
|
#include <wlan_cp_stats_ext_type.h>
|
||||||
|
#include <wlan_cp_stats_public_structs.h>
|
||||||
|
|
||||||
/* noise floor */
|
/* noise floor */
|
||||||
#define CP_STATS_TGT_NOISE_FLOOR_DBM (-96)
|
#define CP_STATS_TGT_NOISE_FLOOR_DBM (-96)
|
||||||
|
|
||||||
|
#ifdef WLAN_SUPPORT_INFRA_CTRL_PATH_STATS
|
||||||
|
typedef void (*get_infra_cp_stats_cb)(struct infra_cp_stats_event *ev,
|
||||||
|
void *cookie);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct psoc_cp_stats - defines cp stats at psoc object
|
* struct psoc_cp_stats - defines cp stats at psoc object
|
||||||
* @psoc_obj: pointer to psoc
|
* @psoc_obj: pointer to psoc
|
||||||
@@ -57,6 +63,11 @@ struct psoc_cp_stats {
|
|||||||
struct psoc_cmn_cp_stats *cmn_stats;
|
struct psoc_cmn_cp_stats *cmn_stats;
|
||||||
psoc_ext_cp_stats_t *obj_stats;
|
psoc_ext_cp_stats_t *obj_stats;
|
||||||
void (*legacy_stats_cb)(void *stats);
|
void (*legacy_stats_cb)(void *stats);
|
||||||
|
#ifdef WLAN_SUPPORT_INFRA_CTRL_PATH_STATS
|
||||||
|
void (*get_infra_cp_stats)(struct infra_cp_stats_event *ev,
|
||||||
|
void *cookie);
|
||||||
|
void *infra_cp_stats_req_context;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -29,6 +29,7 @@
|
|||||||
#include "wlan_cp_stats_ol_api.h"
|
#include "wlan_cp_stats_ol_api.h"
|
||||||
#include <wlan_cp_stats_ucfg_api.h>
|
#include <wlan_cp_stats_ucfg_api.h>
|
||||||
#include "wlan_cp_stats_utils_api.h"
|
#include "wlan_cp_stats_utils_api.h"
|
||||||
|
#include <target_if_cp_stats.h>
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_cp_stats_psoc_obj_create_handler(struct wlan_objmgr_psoc *psoc, void *arg)
|
wlan_cp_stats_psoc_obj_create_handler(struct wlan_objmgr_psoc *psoc, void *arg)
|
||||||
@@ -400,3 +401,66 @@ wlan_cp_stats_peer_obj_destroy_handler(struct wlan_objmgr_peer *peer, void *arg)
|
|||||||
cp_stats_debug("peer cp stats object dettached");
|
cp_stats_debug("peer cp stats object dettached");
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef WLAN_SUPPORT_INFRA_CTRL_PATH_STATS
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_cp_stats_infra_cp_register_resp_cb(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct infra_cp_stats_cmd_info *req)
|
||||||
|
{
|
||||||
|
struct psoc_cp_stats *psoc_cp_stats_priv;
|
||||||
|
|
||||||
|
psoc_cp_stats_priv = wlan_cp_stats_get_psoc_stats_obj(psoc);
|
||||||
|
if (!psoc_cp_stats_priv) {
|
||||||
|
cp_stats_err("psoc cp stats object is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
wlan_cp_stats_psoc_obj_lock(psoc_cp_stats_priv);
|
||||||
|
psoc_cp_stats_priv->get_infra_cp_stats = req->infra_cp_stats_resp_cb;
|
||||||
|
psoc_cp_stats_priv->infra_cp_stats_req_context = req->request_cookie;
|
||||||
|
wlan_cp_stats_psoc_obj_unlock(psoc_cp_stats_priv);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_cp_stats_infra_cp_get_context(struct wlan_objmgr_psoc *psoc,
|
||||||
|
get_infra_cp_stats_cb *resp_cb,
|
||||||
|
void **context)
|
||||||
|
{
|
||||||
|
struct psoc_cp_stats *psoc_cp_stats_priv;
|
||||||
|
|
||||||
|
psoc_cp_stats_priv = wlan_cp_stats_get_psoc_stats_obj(psoc);
|
||||||
|
if (!psoc_cp_stats_priv) {
|
||||||
|
cp_stats_err("psoc cp stats object is null");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
wlan_cp_stats_psoc_obj_lock(psoc_cp_stats_priv);
|
||||||
|
*resp_cb = psoc_cp_stats_priv->get_infra_cp_stats;
|
||||||
|
*context = psoc_cp_stats_priv->infra_cp_stats_req_context;
|
||||||
|
wlan_cp_stats_psoc_obj_unlock(psoc_cp_stats_priv);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_cp_stats_send_infra_cp_req(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct infra_cp_stats_cmd_info *req)
|
||||||
|
{
|
||||||
|
struct wlan_lmac_if_cp_stats_tx_ops *tx_ops;
|
||||||
|
|
||||||
|
tx_ops = target_if_cp_stats_get_tx_ops(psoc);
|
||||||
|
if (!tx_ops) {
|
||||||
|
cp_stats_err("could not get tx_ops");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!tx_ops->send_req_infra_cp_stats) {
|
||||||
|
cp_stats_err("could not get send_req_infra_twt_stats");
|
||||||
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
|
}
|
||||||
|
return tx_ops->send_req_infra_cp_stats(psoc, req);
|
||||||
|
}
|
||||||
|
#endif /* WLAN_SUPPORT_INFRA_CTRL_PATH_STATS */
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, 2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018, 2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -124,6 +124,47 @@ QDF_STATUS wlan_cp_stats_peer_obj_create_handler(
|
|||||||
QDF_STATUS wlan_cp_stats_peer_obj_destroy_handler(
|
QDF_STATUS wlan_cp_stats_peer_obj_destroy_handler(
|
||||||
struct wlan_objmgr_peer *peer, void *data);
|
struct wlan_objmgr_peer *peer, void *data);
|
||||||
|
|
||||||
|
#ifdef WLAN_SUPPORT_INFRA_CTRL_PATH_STATS
|
||||||
|
/**
|
||||||
|
* wlan_cp_stats_infra_cp_register_resp_cb() - Register the response callback
|
||||||
|
* and cookie in the psoc mc_stats object
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @req: pointer to request parameter structure
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
|
||||||
|
* failure
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_cp_stats_infra_cp_register_resp_cb(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct infra_cp_stats_cmd_info *req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_cp_stats_infra_cp_get_context() - get the context and callback
|
||||||
|
* for sending response
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @resp_cb: pointer to store the response callback
|
||||||
|
* @context: pointer to store context
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
|
||||||
|
* failure
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_cp_stats_infra_cp_get_context(struct wlan_objmgr_psoc *psoc,
|
||||||
|
get_infra_cp_stats_cb *resp_cb,
|
||||||
|
void **context);
|
||||||
|
/**
|
||||||
|
* wlan_cp_stats_send_infra_cp_req() - API to send infra cp stats request to
|
||||||
|
* lmac
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @req: pointer to infra cp stats request
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
|
||||||
|
* failure
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_cp_stats_send_infra_cp_req(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct infra_cp_stats_cmd_info *req);
|
||||||
|
|
||||||
|
#endif /* WLAN_SUPPORT_INFRA_CTRL_PATH_STATS */
|
||||||
#endif /* QCA_SUPPORT_CP_STATS */
|
#endif /* QCA_SUPPORT_CP_STATS */
|
||||||
#endif /* __WLAN_CP_STATS_OBJ_MGR_HANDLER_H__ */
|
#endif /* __WLAN_CP_STATS_OBJ_MGR_HANDLER_H__ */
|
||||||
|
144
umac/cp_stats/dispatcher/inc/wlan_cp_stats_public_structs.h
Normal file
144
umac/cp_stats/dispatcher/inc/wlan_cp_stats_public_structs.h
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021 The Linux Foundation. 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 above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOC: contains cp_stats structure definitions
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _WLAN_CP_STATS_PUBLIC_STRUCTS_H_
|
||||||
|
#define _WLAN_CP_STATS_PUBLIC_STRUCTS_H_
|
||||||
|
|
||||||
|
#define CTRL_PATH_STATS_MAX_MAC_ADDR 1
|
||||||
|
#define CTRL_PATH_STATS_MAX_PDEV_ID 1
|
||||||
|
#define CTRL_PATH_STATS_MAX_VDEV_ID 1
|
||||||
|
|
||||||
|
|
||||||
|
#define INFRA_CP_STATS_MAX_REQ_TWT_DIALOG_ID 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Maximum of 1 TWT session can be supported per vdev.
|
||||||
|
* This can be extended later to support more sessions.
|
||||||
|
* if there is a request to retrieve stats for all existing
|
||||||
|
* TWT sessions then response path can have multiple session
|
||||||
|
* stats.
|
||||||
|
*/
|
||||||
|
#define INFRA_CP_STATS_MAX_RESP_TWT_DIALOG_ID 1
|
||||||
|
|
||||||
|
#ifdef WLAN_SUPPORT_TWT
|
||||||
|
/**
|
||||||
|
* struct twt_infra_cp_stats_event - TWT statistics event structure
|
||||||
|
* @vdev_id: virtual interface id
|
||||||
|
* @peer_mac_addr: peer mac address corresponding to a TWT session
|
||||||
|
* @dialog_id: Represents dialog_id of the TWT session
|
||||||
|
* @num_sp_cycles: Number of TWT service period elapsed so far
|
||||||
|
* @avg_sp_dur_us: Average of actual wake duration observed so far
|
||||||
|
* @min_sp_dur_us: Minimum value of wake duration observed across
|
||||||
|
* @max_sp_dur_us: Maximum value of wake duration observed
|
||||||
|
* @tx_mpdu_per_sp: Average number of MPDU's transmitted successfully
|
||||||
|
* @rx_mpdu_per_sp: Average number of MPDU's received successfully
|
||||||
|
* @tx_bytes_per_sp: Average number of bytes transmitted successfully
|
||||||
|
* @rx_bytes_per_sp: Average number of bytes received successfully
|
||||||
|
*/
|
||||||
|
struct twt_infra_cp_stats_event {
|
||||||
|
uint8_t vdev_id;
|
||||||
|
struct qdf_mac_addr peer_macaddr;
|
||||||
|
uint32_t dialog_id;
|
||||||
|
uint32_t status;
|
||||||
|
uint32_t num_sp_cycles;
|
||||||
|
uint32_t avg_sp_dur_us;
|
||||||
|
uint32_t min_sp_dur_us;
|
||||||
|
uint32_t max_sp_dur_us;
|
||||||
|
uint32_t tx_mpdu_per_sp;
|
||||||
|
uint32_t rx_mpdu_per_sp;
|
||||||
|
uint32_t tx_bytes_per_sp;
|
||||||
|
uint32_t rx_bytes_per_sp;
|
||||||
|
};
|
||||||
|
#endif /* WLAN_SUPPORT_TWT */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct infra_cp_stats_event - Event structure to store stats
|
||||||
|
* @action: action for which this response was recevied
|
||||||
|
* (get/reset/start/stop)
|
||||||
|
* @request_id: request cookie sent to Firmware in the command
|
||||||
|
* @status: status of the infra_cp_stats command processing
|
||||||
|
* @num_twt_infra_cp_stats: number of twt_infra_cp_stats buffers
|
||||||
|
* available
|
||||||
|
* @twt_infra_cp_stats: pointer to TWT session statistics structures
|
||||||
|
*
|
||||||
|
* This structure is used to store the statistics information
|
||||||
|
* extracted from firmware event(wmi_pdev_cp_fwstats_eventid)
|
||||||
|
*/
|
||||||
|
struct infra_cp_stats_event {
|
||||||
|
uint32_t action;
|
||||||
|
uint32_t request_id;
|
||||||
|
uint32_t status;
|
||||||
|
#ifdef WLAN_SUPPORT_TWT
|
||||||
|
uint32_t num_twt_infra_cp_stats;
|
||||||
|
struct twt_infra_cp_stats_event *twt_infra_cp_stats;
|
||||||
|
#endif
|
||||||
|
/* Extend with other required infra_cp_stats structs */
|
||||||
|
};
|
||||||
|
|
||||||
|
enum infra_cp_stats_action {
|
||||||
|
ACTION_REQ_CTRL_PATH_STAT_GET = 0,
|
||||||
|
ACTION_REQ_CTRL_PATH_STAT_RESET,
|
||||||
|
ACTION_REQ_CTRL_PATH_STAT_START,
|
||||||
|
ACTION_REQ_CTRL_PATH_STAT_STOP,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum infra_cp_stats_id {
|
||||||
|
TYPE_REQ_CTRL_PATH_PDEV_TX_STAT = 0,
|
||||||
|
TYPE_REQ_CTRL_PATH_VDEV_EXTD_STAT,
|
||||||
|
TYPE_REQ_CTRL_PATH_MEM_STAT,
|
||||||
|
TYPE_REQ_CTRL_PATH_TWT_STAT,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct infra_cp_stats_cmd_info - details of infra cp stats request
|
||||||
|
* @stats_id: ID of the statistics type requested
|
||||||
|
* @action: action to be performed (get/reset/start/stop)
|
||||||
|
* @request_cookie: osif request cookie
|
||||||
|
* @request_id: request id cookie to FW
|
||||||
|
* @num_pdev_ids: number of pdev ids in the request
|
||||||
|
* @pdev_id: array of pdev_ids
|
||||||
|
* @num_vdev_ids: number of vdev ids in the request
|
||||||
|
* @vdev_id: array of vdev_ids
|
||||||
|
* @num_mac_addr_list: number of mac addresses in the request
|
||||||
|
* @peer_mac_addr: array of mac addresses
|
||||||
|
* @dialog_id: This is a TWT specific field. only one dialog_id
|
||||||
|
* can be specified for TWT stats. 0 to 254 are
|
||||||
|
* valid dialog_id's representing a single TWT session.
|
||||||
|
* 255 represents all twt sessions
|
||||||
|
* @infra_cp_stats_resp_cb: callback function to handle the response
|
||||||
|
*/
|
||||||
|
struct infra_cp_stats_cmd_info {
|
||||||
|
enum infra_cp_stats_id stats_id;
|
||||||
|
enum infra_cp_stats_action action;
|
||||||
|
void *request_cookie;
|
||||||
|
uint32_t request_id;
|
||||||
|
uint32_t num_pdev_ids;
|
||||||
|
uint32_t pdev_id[CTRL_PATH_STATS_MAX_PDEV_ID];
|
||||||
|
uint32_t num_vdev_ids;
|
||||||
|
uint32_t vdev_id[CTRL_PATH_STATS_MAX_VDEV_ID];
|
||||||
|
uint32_t num_mac_addr_list;
|
||||||
|
uint8_t peer_mac_addr[CTRL_PATH_STATS_MAX_MAC_ADDR][QDF_MAC_ADDR_SIZE];
|
||||||
|
#ifdef WLAN_SUPPORT_TWT
|
||||||
|
uint32_t dialog_id;
|
||||||
|
#endif
|
||||||
|
void (*infra_cp_stats_resp_cb)(struct infra_cp_stats_event *ev,
|
||||||
|
void *cookie);
|
||||||
|
};
|
||||||
|
#endif
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018, 2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -30,5 +30,29 @@
|
|||||||
#include "../../core/src/wlan_cp_stats_defs.h"
|
#include "../../core/src/wlan_cp_stats_defs.h"
|
||||||
#include "../../core/src/wlan_cp_stats_cmn_api_i.h"
|
#include "../../core/src/wlan_cp_stats_cmn_api_i.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ucfg_infra_cp_stats_register_resp_cb() - Register the response callback
|
||||||
|
* and cookie in the psoc mc_stats object
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @req: pointer to request parameter structure
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
|
||||||
|
* failure
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_infra_cp_stats_register_resp_cb(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct infra_cp_stats_cmd_info *req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ucfg_send_infra_cp_stats_request() - send a infra cp stats command
|
||||||
|
* @vdev: pointer to vdev object
|
||||||
|
* @req: pointer to request parameter structure
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes
|
||||||
|
* on failure
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_send_infra_cp_stats_request(struct wlan_objmgr_vdev *vdev,
|
||||||
|
struct infra_cp_stats_cmd_info *req);
|
||||||
#endif /* QCA_SUPPORT_CP_STATS */
|
#endif /* QCA_SUPPORT_CP_STATS */
|
||||||
#endif /* __WLAN_CP_STATS_UCFG_API_H__ */
|
#endif /* __WLAN_CP_STATS_UCFG_API_H__ */
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018, 2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -17,12 +17,27 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DOC: wlan_cp_stats_ucfg_api.h
|
* DOC: wlan_cp_stats_ucfg_api.c
|
||||||
*
|
*
|
||||||
* This file provide API definitions required for northbound interaction
|
* This file provide API definitions required for northbound interaction
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __WLAN_CP_STATS_UCFG_API_H__
|
#include <wlan_cp_stats_utils_api.h>
|
||||||
#define __WLAN_CP_STATS_UCFG_API_H__
|
#include <wlan_cp_stats_ucfg_api.h>
|
||||||
|
#include "../../core/src/wlan_cp_stats_obj_mgr_handler.h"
|
||||||
|
|
||||||
#endif /* __WLAN_CP_STATS_UCFG_API_H__ */
|
#ifdef WLAN_SUPPORT_INFRA_CTRL_PATH_STATS
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_infra_cp_stats_register_resp_cb(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct infra_cp_stats_cmd_info *req)
|
||||||
|
{
|
||||||
|
return wlan_cp_stats_infra_cp_register_resp_cb(psoc, req);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_send_infra_cp_stats_request(struct wlan_objmgr_vdev *vdev,
|
||||||
|
struct infra_cp_stats_cmd_info *req)
|
||||||
|
{
|
||||||
|
return wlan_cp_stats_send_infra_cp_req(wlan_vdev_get_psoc(vdev), req);
|
||||||
|
}
|
||||||
|
#endif /* WLAN_SUPPORT_INFRA_CTRL_PATH_STATS */
|
||||||
|
@@ -87,6 +87,7 @@ struct dbr_module_config;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef QCA_SUPPORT_CP_STATS
|
#ifdef QCA_SUPPORT_CP_STATS
|
||||||
|
#include <wlan_cp_stats_public_structs.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* typedef cp_stats_event - Definition of cp stats event
|
* typedef cp_stats_event - Definition of cp stats event
|
||||||
@@ -124,6 +125,8 @@ typedef struct wake_lock_stats stats_wake_lock;
|
|||||||
* to FW
|
* to FW
|
||||||
* @set_pdev_stats_update_period: function pointer to set pdev stats update
|
* @set_pdev_stats_update_period: function pointer to set pdev stats update
|
||||||
* period to FW
|
* period to FW
|
||||||
|
* @send_req_infra_cp_stats: function pointer to send infra cp stats request
|
||||||
|
* command to FW
|
||||||
*/
|
*/
|
||||||
struct wlan_lmac_if_cp_stats_tx_ops {
|
struct wlan_lmac_if_cp_stats_tx_ops {
|
||||||
QDF_STATUS (*cp_stats_attach)(struct wlan_objmgr_psoc *psoc);
|
QDF_STATUS (*cp_stats_attach)(struct wlan_objmgr_psoc *psoc);
|
||||||
@@ -141,17 +144,28 @@ struct wlan_lmac_if_cp_stats_tx_ops {
|
|||||||
QDF_STATUS (*set_pdev_stats_update_period)(
|
QDF_STATUS (*set_pdev_stats_update_period)(
|
||||||
struct wlan_objmgr_psoc *psoc,
|
struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t pdev_id, uint32_t val);
|
uint8_t pdev_id, uint32_t val);
|
||||||
|
#ifdef WLAN_SUPPORT_INFRA_CTRL_PATH_STATS
|
||||||
|
QDF_STATUS (*send_req_infra_cp_stats)(
|
||||||
|
struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct infra_cp_stats_cmd_info *req);
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wlan_lmac_if_cp_stats_rx_ops - defines southbound rx callbacks for
|
* struct wlan_lmac_if_cp_stats_rx_ops - defines southbound rx callbacks for
|
||||||
* control plane statistics component
|
* control plane statistics component
|
||||||
* @cp_stats_rx_event_handler: function pointer to rx FW events
|
* @cp_stats_rx_event_handler: function pointer to rx FW events
|
||||||
|
* @process_stats_event: function pointer to process stats event
|
||||||
*/
|
*/
|
||||||
struct wlan_lmac_if_cp_stats_rx_ops {
|
struct wlan_lmac_if_cp_stats_rx_ops {
|
||||||
QDF_STATUS (*cp_stats_rx_event_handler)(struct wlan_objmgr_vdev *vdev);
|
QDF_STATUS (*cp_stats_rx_event_handler)(struct wlan_objmgr_vdev *vdev);
|
||||||
QDF_STATUS (*process_stats_event)(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS (*process_stats_event)(struct wlan_objmgr_psoc *psoc,
|
||||||
cp_stats_event *ev);
|
struct stats_event *ev);
|
||||||
|
#ifdef WLAN_SUPPORT_INFRA_CTRL_PATH_STATS
|
||||||
|
QDF_STATUS
|
||||||
|
(*process_infra_stats_event)(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct infra_cp_stats_event *infra_event);
|
||||||
|
#endif /* WLAN_SUPPORT_INFRA_CTRL_PATH_STATS */
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user