mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 00:24:41 -04:00
qcacld-3.0: Featurize WLAN_FEATURE_LINK_LAYER_STATS
Featurize WLAN_FEATURE_LINK_LAYER_STATS to compile out in mission mode. Change-Id: If0f27efa3661f4b3083180690160109084c5da67 CRs-Fixed: 2255035
This commit is contained in:
parent
23e5148cee
commit
3719efe9e3
11 changed files with 166 additions and 114 deletions
2
Kbuild
2
Kbuild
|
|
@ -66,8 +66,10 @@ HDD_OBJS := $(HDD_SRC_DIR)/wlan_hdd_assoc.o \
|
|||
|
||||
ifeq ($(CONFIG_WLAN_DEBUGFS), y)
|
||||
HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_debugfs.o
|
||||
ifeq ($(CONFIG_WLAN_FEATURE_LINK_LAYER_STATS), y)
|
||||
HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_debugfs_llstat.o
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_WLAN_CONV_SPECTRAL_ENABLE),y)
|
||||
HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_spectralscan.o
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@
|
|||
#include "wlan_utility.h"
|
||||
#include "wlan_p2p_ucfg_api.h"
|
||||
#include "wlan_ipa_ucfg_api.h"
|
||||
#include "wlan_hdd_stats.h"
|
||||
|
||||
#include "wlan_hdd_nud_tracking.h"
|
||||
/* These are needed to recognize WPA and RSN suite types */
|
||||
|
|
|
|||
|
|
@ -75,9 +75,7 @@
|
|||
|
||||
#include "wlan_hdd_ext_scan.h"
|
||||
|
||||
#ifdef WLAN_FEATURE_LINK_LAYER_STATS
|
||||
#include "wlan_hdd_stats.h"
|
||||
#endif
|
||||
#include "cds_api.h"
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
#include "qwlan_version.h"
|
||||
|
|
@ -21881,26 +21879,6 @@ static int wlan_hdd_cfg80211_set_mon_ch(struct wiphy *wiphy,
|
|||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wlan_hdd_clear_link_layer_stats() - clear link layer stats
|
||||
* @adapter: pointer to adapter
|
||||
*
|
||||
* Wrapper function to clear link layer stats.
|
||||
* return - void
|
||||
*/
|
||||
void wlan_hdd_clear_link_layer_stats(struct hdd_adapter *adapter)
|
||||
{
|
||||
tSirLLStatsClearReq link_layer_stats_clear_req;
|
||||
tHalHandle hal = WLAN_HDD_GET_HAL_CTX(adapter);
|
||||
|
||||
link_layer_stats_clear_req.statsClearReqMask = WIFI_STATS_IFACE_AC |
|
||||
WIFI_STATS_IFACE_ALL_PEER;
|
||||
link_layer_stats_clear_req.stopReq = 0;
|
||||
link_layer_stats_clear_req.reqId = 1;
|
||||
link_layer_stats_clear_req.staId = adapter->session_id;
|
||||
sme_ll_stats_clear_req(hal, &link_layer_stats_clear_req);
|
||||
}
|
||||
|
||||
#define CNT_DIFF(cur, prev) \
|
||||
((cur >= prev) ? (cur - prev) : (cur + (MAX_COUNT - (prev) + 1)))
|
||||
#define MAX_COUNT 0xffffffff
|
||||
|
|
|
|||
|
|
@ -125,12 +125,6 @@ struct hdd_context;
|
|||
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_LINK_LAYER_STATS
|
||||
void wlan_hdd_clear_link_layer_stats(struct hdd_adapter *adapter);
|
||||
#else
|
||||
static inline void wlan_hdd_clear_link_layer_stats(struct hdd_adapter *adapter) {}
|
||||
#endif
|
||||
|
||||
#define MAX_CHANNEL (NUM_24GHZ_CHANNELS + NUM_5GHZ_CHANNELS)
|
||||
#define MAX_SCAN_SSID 10
|
||||
|
||||
|
|
@ -494,15 +488,6 @@ enum hdd_rate_info_bw {
|
|||
*/
|
||||
void hdd_set_rate_bw(struct rate_info *info, enum hdd_rate_info_bw hdd_bw);
|
||||
|
||||
/**
|
||||
* hdd_lost_link_info_cb() - callback function to get lost link information
|
||||
* @context: HDD context
|
||||
* @lost_link_info: lost link information
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void hdd_lost_link_info_cb(void *context,
|
||||
struct sir_lost_link_info *lost_link_info);
|
||||
/*
|
||||
* hdd_get_sap_operating_band: Get current operating channel
|
||||
* for sap.
|
||||
|
|
|
|||
|
|
@ -1671,6 +1671,26 @@ int wlan_hdd_cfg80211_ll_stats_clear(struct wiphy *wiphy,
|
|||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* wlan_hdd_clear_link_layer_stats() - clear link layer stats
|
||||
* @adapter: pointer to adapter
|
||||
*
|
||||
* Wrapper function to clear link layer stats.
|
||||
* return - void
|
||||
*/
|
||||
void wlan_hdd_clear_link_layer_stats(struct hdd_adapter *adapter)
|
||||
{
|
||||
tSirLLStatsClearReq link_layer_stats_clear_req;
|
||||
tHalHandle hal = WLAN_HDD_GET_HAL_CTX(adapter);
|
||||
|
||||
link_layer_stats_clear_req.statsClearReqMask = WIFI_STATS_IFACE_AC |
|
||||
WIFI_STATS_IFACE_ALL_PEER;
|
||||
link_layer_stats_clear_req.stopReq = 0;
|
||||
link_layer_stats_clear_req.reqId = 1;
|
||||
link_layer_stats_clear_req.staId = adapter->session_id;
|
||||
sme_ll_stats_clear_req(hal, &link_layer_stats_clear_req);
|
||||
}
|
||||
|
||||
/**
|
||||
* hdd_populate_per_peer_ps_info() - populate per peer sta's PS info
|
||||
* @wifi_peer_info: peer information
|
||||
|
|
@ -2801,6 +2821,18 @@ int wlan_hdd_cfg80211_ll_stats_ext_set_param(struct wiphy *wiphy,
|
|||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* hdd_init_ll_stats_ctx() - initialize link layer stats context
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
inline void hdd_init_ll_stats_ctx(void)
|
||||
{
|
||||
spin_lock_init(&ll_stats_context.context_lock);
|
||||
init_completion(&ll_stats_context.response_event);
|
||||
ll_stats_context.request_bitmap = 0;
|
||||
}
|
||||
#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
|
||||
|
||||
#ifdef WLAN_FEATURE_STATS_EXT
|
||||
|
|
@ -4708,17 +4740,6 @@ int wlan_hdd_cfg80211_dump_survey(struct wiphy *wiphy,
|
|||
|
||||
return ret;
|
||||
}
|
||||
/**
|
||||
* hdd_init_ll_stats_ctx() - initialize link layer stats context
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
inline void hdd_init_ll_stats_ctx(void)
|
||||
{
|
||||
spin_lock_init(&ll_stats_context.context_lock);
|
||||
init_completion(&ll_stats_context.response_event);
|
||||
ll_stats_context.request_bitmap = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* hdd_display_hif_stats() - display hif stats
|
||||
|
|
|
|||
|
|
@ -145,6 +145,8 @@ int wlan_hdd_cfg80211_ll_stats_clear(struct wiphy *wiphy,
|
|||
const void *data,
|
||||
int data_len);
|
||||
|
||||
void wlan_hdd_clear_link_layer_stats(struct hdd_adapter *adapter);
|
||||
|
||||
void hdd_init_ll_stats_ctx(void);
|
||||
|
||||
static inline bool hdd_link_layer_stats_supported(void)
|
||||
|
|
@ -186,7 +188,34 @@ bool hdd_get_interface_info(struct hdd_adapter *adapter,
|
|||
int wlan_hdd_ll_stats_get(struct hdd_adapter *adapter, uint32_t req_id,
|
||||
uint32_t req_mask);
|
||||
|
||||
#else
|
||||
void wlan_hdd_cfg80211_link_layer_stats_callback(void *ctx,
|
||||
int indType, void *pRsp);
|
||||
/**
|
||||
* wlan_hdd_cfg80211_link_layer_stats_ext_callback() - Callback for LL ext
|
||||
* @ctx: HDD context
|
||||
* @rsp: msg from FW
|
||||
*
|
||||
* This function is an extension of
|
||||
* wlan_hdd_cfg80211_link_layer_stats_callback. It converts
|
||||
* monitoring parameters offloaded to NL data and send the same to the
|
||||
* kernel/upper layers.
|
||||
*
|
||||
* Return: None.
|
||||
*/
|
||||
void wlan_hdd_cfg80211_link_layer_stats_ext_callback(hdd_handle_t ctx,
|
||||
tSirLLStatsResults *rsp);
|
||||
|
||||
/**
|
||||
* hdd_lost_link_info_cb() - callback function to get lost link information
|
||||
* @context: HDD context
|
||||
* @lost_link_info: lost link information
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void hdd_lost_link_info_cb(void *context,
|
||||
struct sir_lost_link_info *lost_link_info);
|
||||
|
||||
#else /* WLAN_FEATURE_LINK_LAYER_STATS */
|
||||
|
||||
static inline void hdd_init_ll_stats_ctx(void)
|
||||
{
|
||||
|
|
@ -206,13 +235,36 @@ wlan_hdd_cfg80211_ll_stats_ext_set_param(struct wiphy *wiphy,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline
|
||||
int wlan_hdd_ll_stats_get(hdd_adapter_t *adapter, uint32_t req_id,
|
||||
uint32_t req_mask)
|
||||
static inline int
|
||||
wlan_hdd_ll_stats_get(struct hdd_adapter *adapter, uint32_t req_id,
|
||||
uint32_t req_mask)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline void
|
||||
wlan_hdd_clear_link_layer_stats(struct hdd_adapter *adapter)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
wlan_hdd_cfg80211_link_layer_stats_callback(void *ctx,
|
||||
int indType, void *pRsp)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
wlan_hdd_cfg80211_link_layer_stats_ext_callback(hdd_handle_t ctx,
|
||||
tSirLLStatsResults *rsp)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
hdd_lost_link_info_cb(void *context,
|
||||
struct sir_lost_link_info *lost_link_info)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* End of WLAN_FEATURE_LINK_LAYER_STATS */
|
||||
|
||||
#ifdef WLAN_FEATURE_STATS_EXT
|
||||
|
|
@ -288,23 +340,6 @@ void wlan_hdd_cfg80211_stats_ext_callback(void *ctx,
|
|||
void wlan_hdd_cfg80211_stats_ext2_callback(void *ctx,
|
||||
struct sir_sme_rx_aggr_hole_ind *pmsg);
|
||||
|
||||
void wlan_hdd_cfg80211_link_layer_stats_callback(void *ctx,
|
||||
int indType, void *pRsp);
|
||||
/**
|
||||
* wlan_hdd_cfg80211_link_layer_stats_ext_callback() - Callback for LL ext
|
||||
* @ctx: HDD context
|
||||
* @rsp: msg from FW
|
||||
*
|
||||
* This function is an extension of
|
||||
* wlan_hdd_cfg80211_link_layer_stats_callback. It converts
|
||||
* monitoring parameters offloaded to NL data and send the same to the
|
||||
* kernel/upper layers.
|
||||
*
|
||||
* Return: None.
|
||||
*/
|
||||
void wlan_hdd_cfg80211_link_layer_stats_ext_callback(hdd_handle_t ctx,
|
||||
tSirLLStatsResults *rsp);
|
||||
|
||||
/**
|
||||
* wlan_hdd_get_rcpi() - Wrapper to get current RCPI
|
||||
* @adapter: adapter upon which the measurement is requested
|
||||
|
|
|
|||
|
|
@ -4487,28 +4487,6 @@ typedef struct {
|
|||
} tSirAutoShutdownEvtParams;
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_LINK_LAYER_STATS
|
||||
|
||||
typedef struct {
|
||||
uint32_t reqId;
|
||||
uint8_t staId;
|
||||
uint32_t mpduSizeThreshold;
|
||||
uint32_t aggressiveStatisticsGathering;
|
||||
} tSirLLStatsSetReq, *tpSirLLStatsSetReq;
|
||||
|
||||
typedef struct {
|
||||
uint32_t reqId;
|
||||
uint8_t staId;
|
||||
uint32_t paramIdMask;
|
||||
} tSirLLStatsGetReq, *tpSirLLStatsGetReq;
|
||||
|
||||
typedef struct {
|
||||
uint32_t reqId;
|
||||
uint8_t staId;
|
||||
uint32_t statsClearReqMask;
|
||||
uint8_t stopReq;
|
||||
} tSirLLStatsClearReq, *tpSirLLStatsClearReq;
|
||||
|
||||
#ifdef WLAN_POWER_DEBUGFS
|
||||
/**
|
||||
* struct power_stats_response - Power stats response
|
||||
|
|
@ -4595,6 +4573,27 @@ struct sir_set_ht_vht_cfg {
|
|||
uint32_t dot11mode;
|
||||
};
|
||||
|
||||
#define WIFI_INVALID_PEER_ID (-1)
|
||||
#define WIFI_INVALID_VDEV_ID (-1)
|
||||
#define WIFI_MAX_AC (4)
|
||||
|
||||
typedef struct {
|
||||
uint32_t paramId;
|
||||
uint8_t ifaceId;
|
||||
uint32_t rspId;
|
||||
uint32_t moreResultToFollow;
|
||||
uint32_t nr_received;
|
||||
union {
|
||||
uint32_t num_peers;
|
||||
uint32_t num_radio;
|
||||
};
|
||||
|
||||
uint32_t peer_event_number;
|
||||
/* Variable length field - Do not add anything after this */
|
||||
uint8_t results[0];
|
||||
} tSirLLStatsResults, *tpSirLLStatsResults;
|
||||
|
||||
#ifdef WLAN_FEATURE_LINK_LAYER_STATS
|
||||
/*---------------------------------------------------------------------------
|
||||
WLAN_HAL_LL_NOTIFY_STATS
|
||||
---------------------------------------------------------------------------*/
|
||||
|
|
@ -4605,6 +4604,26 @@ typedef int tSirWifiRadio;
|
|||
typedef int tSirWifiChannel;
|
||||
typedef int tSirwifiTxRate;
|
||||
|
||||
typedef struct {
|
||||
uint32_t reqId;
|
||||
uint8_t staId;
|
||||
uint32_t mpduSizeThreshold;
|
||||
uint32_t aggressiveStatisticsGathering;
|
||||
} tSirLLStatsSetReq, *tpSirLLStatsSetReq;
|
||||
|
||||
typedef struct {
|
||||
uint32_t reqId;
|
||||
uint8_t staId;
|
||||
uint32_t paramIdMask;
|
||||
} tSirLLStatsGetReq, *tpSirLLStatsGetReq;
|
||||
|
||||
typedef struct {
|
||||
uint32_t reqId;
|
||||
uint8_t staId;
|
||||
uint32_t statsClearReqMask;
|
||||
uint8_t stopReq;
|
||||
} tSirLLStatsClearReq, *tpSirLLStatsClearReq;
|
||||
|
||||
/* channel operating width */
|
||||
typedef enum {
|
||||
WIFI_CHAN_WIDTH_20 = 0,
|
||||
|
|
@ -5145,10 +5164,6 @@ struct sir_wifi_ll_ext_wmm_ac_stats {
|
|||
struct sir_wifi_rx *rx_stats;
|
||||
};
|
||||
|
||||
#define WIFI_INVALID_PEER_ID (-1)
|
||||
#define WIFI_INVALID_VDEV_ID (-1)
|
||||
#define WIFI_MAX_AC (4)
|
||||
|
||||
/**
|
||||
* struct sir_wifi_ll_ext_peer_stats - per peer stats
|
||||
* @peer_id: peer ID
|
||||
|
|
@ -5456,22 +5471,6 @@ struct sir_ll_ext_stats_threshold {
|
|||
#define LL_STATS_MIN_PERIOD 10
|
||||
#define LL_STATS_INVALID_PERIOD 0xFFFFFFFF
|
||||
|
||||
typedef struct {
|
||||
uint32_t paramId;
|
||||
uint8_t ifaceId;
|
||||
uint32_t rspId;
|
||||
uint32_t moreResultToFollow;
|
||||
uint32_t nr_received;
|
||||
union {
|
||||
uint32_t num_peers;
|
||||
uint32_t num_radio;
|
||||
};
|
||||
|
||||
uint32_t peer_event_number;
|
||||
/* Variable length field - Do not add anything after this */
|
||||
uint8_t results[0];
|
||||
} tSirLLStatsResults, *tpSirLLStatsResults;
|
||||
|
||||
/* Result ID for LL stats extension */
|
||||
#define WMI_LL_STATS_EXT_PS_CHG 0x00000100
|
||||
#define WMI_LL_STATS_EXT_TX_FAIL 0x00000200
|
||||
|
|
|
|||
|
|
@ -972,6 +972,27 @@ QDF_STATUS sme_set_link_layer_ext_cb(tHalHandle hal,
|
|||
QDF_STATUS sme_reset_link_layer_stats_ind_cb(tHalHandle hhal);
|
||||
QDF_STATUS sme_ll_stats_set_thresh(tHalHandle hal,
|
||||
struct sir_ll_ext_stats_threshold *threshold);
|
||||
#else /* WLAN_FEATURE_LINK_LAYER_STATS */
|
||||
static inline QDF_STATUS
|
||||
sme_set_link_layer_ext_cb(tHalHandle hal, void (*ll_stats_ext_cb)
|
||||
(hdd_handle_t callback_ctx, tSirLLStatsResults
|
||||
*rsp))
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
sme_set_link_layer_stats_ind_cb(tHalHandle hHal, void (*callback_routine)
|
||||
(void *callbackCtx, int indType, void *pRsp))
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
sme_reset_link_layer_stats_ind_cb(tHalHandle hhal)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
|
||||
|
||||
QDF_STATUS sme_set_wisa_params(tHalHandle hal,
|
||||
|
|
|
|||
|
|
@ -179,13 +179,10 @@ typedef struct tagSmeStruct {
|
|||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
host_event_wlan_status_payload_type eventPayload;
|
||||
#endif
|
||||
#ifdef WLAN_FEATURE_LINK_LAYER_STATS
|
||||
void (*pLinkLayerStatsIndCallback)(void *callbackContext,
|
||||
int indType, void *pRsp);
|
||||
void (*link_layer_stats_ext_cb)(hdd_handle_t callback_ctx,
|
||||
tSirLLStatsResults *rsp);
|
||||
#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
|
||||
|
||||
#ifdef WLAN_POWER_DEBUGFS
|
||||
void *power_debug_stats_context;
|
||||
void (*power_stats_resp_callback)(struct power_stats_response *rsp,
|
||||
|
|
|
|||
|
|
@ -174,7 +174,16 @@ void wma_set_dbs_capability_ut(uint32_t dbs);
|
|||
QDF_STATUS wma_get_caps_for_phyidx_hwmode(struct wma_caps_per_phy *caps_per_phy,
|
||||
enum hw_mode_dbs_capab hw_mode, enum cds_band_type band);
|
||||
bool wma_is_rx_ldpc_supported_for_channel(uint32_t channel);
|
||||
|
||||
#ifdef WLAN_FEATURE_LINK_LAYER_STATS
|
||||
int wma_unified_radio_tx_mem_free(void *handle);
|
||||
#else /* WLAN_FEATURE_LINK_LAYER_STATS */
|
||||
static inline int wma_unified_radio_tx_mem_free(void *handle)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
|
||||
|
||||
/**
|
||||
* wma_form_unit_test_cmd_and_send() - to form a wma command and send it to FW
|
||||
* @session_id: wma session id to be filled while forming the command
|
||||
|
|
@ -327,6 +336,7 @@ static inline bool wma_d0_wow_is_supported(void)
|
|||
*/
|
||||
void wma_store_pdev(void *wma_ctx, struct wlan_objmgr_pdev *pdev);
|
||||
|
||||
#ifdef WLAN_FEATURE_LINK_LAYER_STATS
|
||||
/**
|
||||
* wmi_to_sir_peer_type() - convert peer type from WMI to SIR enum
|
||||
* @type: enum wmi_peer_type
|
||||
|
|
@ -334,6 +344,7 @@ void wma_store_pdev(void *wma_ctx, struct wlan_objmgr_pdev *pdev);
|
|||
* Return: tSirWifiPeerType
|
||||
*/
|
||||
tSirWifiPeerType wmi_to_sir_peer_type(enum wmi_peer_type type);
|
||||
#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
|
||||
|
||||
QDF_STATUS wma_crash_inject(WMA_HANDLE wma_handle, uint32_t type,
|
||||
uint32_t delay_time_ms);
|
||||
|
|
|
|||
|
|
@ -4511,6 +4511,7 @@ QDF_STATUS wma_send_vdev_down_to_fw(t_wma_handle *wma, uint8_t vdev_id)
|
|||
return status;
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_LINK_LAYER_STATS
|
||||
tSirWifiPeerType wmi_to_sir_peer_type(enum wmi_peer_type type)
|
||||
{
|
||||
switch (type) {
|
||||
|
|
@ -4527,6 +4528,7 @@ tSirWifiPeerType wmi_to_sir_peer_type(enum wmi_peer_type type)
|
|||
return WIFI_PEER_INVALID;
|
||||
}
|
||||
}
|
||||
#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
|
||||
|
||||
/**
|
||||
* wma_set_vc_mode_config() - set voltage corner mode config to FW.
|
||||
|
|
|
|||
Loading…
Reference in a new issue