qcacmn: Move core monitor and monitor dependent feature func
PATCH[4/7]: This patch consists following changes: - Move core monitor and monitor dependent feature functions to monitor file - Move enhanced stats functions from htt to monitor file - Move vdev set monitor mode rings function to monitor file - Create and initialize relevant funct ptrs - Initialize cdp monitor related ops. Change-Id: Iac1ab43eb1c4b98bd21bbb8a5741ee53034da2f1 CRs-Fixed: 2984635
This commit is contained in:

committed by
Madan Koyyalamudi

parent
f20f31dc10
commit
e7cc727374
2383
dp/wifi3.0/dp_htt.c
2383
dp/wifi3.0/dp_htt.c
File diff suppressed because it is too large
Load Diff
@@ -212,11 +212,194 @@ static inline QDF_STATUS monitor_config_debug_sniffer(struct dp_pdev *pdev,
|
||||
{
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
static inline void monitor_flush_rings(struct dp_soc *soc)
|
||||
{
|
||||
}
|
||||
|
||||
static inline QDF_STATUS monitor_htt_srng_setup(struct dp_soc *soc,
|
||||
struct dp_pdev *pdev,
|
||||
int mac_id,
|
||||
int mac_for_pdev)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline void monitor_service_mon_rings(struct dp_soc *soc, uint32_t quota)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
uint32_t monitor_process(struct dp_soc *soc, struct dp_intr *int_ctx,
|
||||
uint32_t mac_id, uint32_t quota)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline
|
||||
uint32_t monitor_drop_packets_for_mac(struct dp_pdev *pdev,
|
||||
uint32_t mac_id, uint32_t quota)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void monitor_peer_tx_init(struct dp_pdev *pdev,
|
||||
struct dp_peer *peer)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void monitor_peer_tx_cleanup(struct dp_vdev *vdev,
|
||||
struct dp_peer *peer)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
void monitor_peer_tid_peer_id_update(struct dp_soc *soc,
|
||||
struct dp_peer *peer,
|
||||
uint16_t peer_id)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void monitor_tx_ppdu_stats_attach(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void monitor_tx_ppdu_stats_detach(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
|
||||
static inline QDF_STATUS monitor_tx_capture_debugfs_init(struct dp_pdev *pdev)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline void monitor_peer_tx_capture_filter_check(struct dp_pdev *pdev,
|
||||
struct dp_peer *peer)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
QDF_STATUS monitor_tx_add_to_comp_queue(struct dp_soc *soc,
|
||||
struct dp_tx_desc_s *desc,
|
||||
struct hal_tx_completion_status *ts,
|
||||
struct dp_peer *peer)
|
||||
{
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
static inline bool monitor_ppdu_stats_ind_handler(struct htt_soc *soc,
|
||||
uint32_t *msg_word,
|
||||
qdf_nbuf_t htt_t2h_msg)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS monitor_htt_ppdu_stats_attach(struct dp_pdev *pdev)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline void monitor_htt_ppdu_stats_detach(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void monitor_print_pdev_rx_mon_stats(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
|
||||
static inline QDF_STATUS monitor_config_enh_tx_capture(struct dp_pdev *pdev,
|
||||
uint32_t val)
|
||||
{
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS monitor_config_enh_rx_capture(struct dp_pdev *pdev,
|
||||
uint32_t val)
|
||||
{
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS monitor_set_bpr_enable(struct dp_pdev *pdev,
|
||||
uint32_t val)
|
||||
{
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
static inline int monitor_set_filter_neigh_peers(struct dp_pdev *pdev, bool val)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline
|
||||
void monitor_set_atf_stats_enable(struct dp_pdev *pdev, bool value)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
void monitor_set_bsscolor(struct dp_pdev *pdev, uint8_t bsscolor)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
bool monitor_pdev_get_filter_mcast_data(struct cdp_pdev *pdev_handle)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline
|
||||
bool monitor_pdev_get_filter_non_data(struct cdp_pdev *pdev_handle)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline
|
||||
bool monitor_pdev_get_filter_ucast_data(struct cdp_pdev *pdev_handle)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline
|
||||
int monitor_set_pktlog_wifi3(struct dp_pdev *pdev, uint32_t event, bool enable)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void monitor_pktlogmod_exit(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
void monitor_vdev_set_monitor_mode_buf_rings(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
void monitor_neighbour_peers_detach(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
|
||||
static inline QDF_STATUS monitor_filter_neighbour_peer(struct dp_pdev *pdev,
|
||||
uint8_t *rx_pkt_hdr)
|
||||
{
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
static inline void monitor_print_pdev_tx_capture_stats(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_TX_PKT_CAPTURE_ENH
|
||||
extern uint8_t
|
||||
dp_cpu_ring_map[DP_NSS_CPU_RING_MAP_MAX][WLAN_CFG_INT_NUM_CONTEXTS_MAX];
|
||||
#ifndef WIFI_MONITOR_SUPPORT
|
||||
static inline QDF_STATUS monitor_drop_inv_peer_pkts(struct dp_vdev *vdev,
|
||||
struct ieee80211_frame *wh)
|
||||
{
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
static inline bool dp_is_enable_reap_timer_non_pkt(struct dp_pdev *pdev)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define DP_MAX_TIMER_EXEC_TIME_TICKS \
|
||||
@@ -1134,7 +1317,6 @@ void dp_peer_ppdu_delayed_ba_init(struct dp_peer *peer);
|
||||
void dp_peer_ppdu_delayed_ba_cleanup(struct dp_peer *peer);
|
||||
|
||||
extern void dp_peer_rx_init(struct dp_pdev *pdev, struct dp_peer *peer);
|
||||
void dp_peer_tx_init(struct dp_pdev *pdev, struct dp_peer *peer);
|
||||
void dp_peer_cleanup(struct dp_vdev *vdev, struct dp_peer *peer);
|
||||
void dp_peer_rx_cleanup(struct dp_vdev *vdev, struct dp_peer *peer);
|
||||
extern struct dp_peer *dp_peer_find_hash_find(struct dp_soc *soc,
|
||||
@@ -1514,15 +1696,6 @@ dp_print_pdev_tx_stats(struct dp_pdev *pdev);
|
||||
void
|
||||
dp_print_pdev_rx_stats(struct dp_pdev *pdev);
|
||||
|
||||
/**
|
||||
* dp_print_pdev_rx_mon_stats(): Print Pdev level RX monitor stats
|
||||
* @pdev: DP_PDEV Handle
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
void
|
||||
dp_print_pdev_rx_mon_stats(struct dp_pdev *pdev);
|
||||
|
||||
/**
|
||||
* dp_print_soc_tx_stats(): Print SOC level stats
|
||||
* @soc DP_SOC Handle
|
||||
@@ -1772,8 +1945,6 @@ void dp_wdi_event_handler(enum WDI_EVENT event, struct dp_soc *soc,
|
||||
|
||||
int dp_wdi_event_attach(struct dp_pdev *txrx_pdev);
|
||||
int dp_wdi_event_detach(struct dp_pdev *txrx_pdev);
|
||||
int dp_set_pktlog_wifi3(struct dp_pdev *pdev, uint32_t event,
|
||||
bool enable);
|
||||
|
||||
/**
|
||||
* dp_get_pldev() - function to get pktlog device handle
|
||||
@@ -1783,7 +1954,6 @@ int dp_set_pktlog_wifi3(struct dp_pdev *pdev, uint32_t event,
|
||||
* Return: pktlog device handle or NULL
|
||||
*/
|
||||
void *dp_get_pldev(struct cdp_soc_t *soc_hdl, uint8_t pdev_id);
|
||||
void dp_pkt_log_init(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void *scn);
|
||||
|
||||
static inline void
|
||||
dp_hif_update_pipe_callback(struct dp_soc *dp_soc,
|
||||
@@ -1804,8 +1974,6 @@ dp_hif_update_pipe_callback(struct dp_soc *dp_soc,
|
||||
DP_HTT_T2H_HP_PIPE, &hif_pipe_callbacks);
|
||||
}
|
||||
|
||||
QDF_STATUS dp_peer_stats_notify(struct dp_pdev *pdev, struct dp_peer *peer);
|
||||
|
||||
QDF_STATUS dp_peer_qos_stats_notify(struct dp_pdev *dp_pdev,
|
||||
struct cdp_rx_stats_ppdu_user *ppdu_user);
|
||||
#else
|
||||
@@ -1841,22 +2009,12 @@ static inline int dp_wdi_event_detach(struct dp_pdev *txrx_pdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int dp_set_pktlog_wifi3(struct dp_pdev *pdev, uint32_t event,
|
||||
bool enable)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline QDF_STATUS dp_h2t_cfg_stats_msg_send(struct dp_pdev *pdev,
|
||||
uint32_t stats_type_upload_mask, uint8_t mac_id)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void
|
||||
dp_pkt_log_init(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, void *scn)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
dp_hif_update_pipe_callback(struct dp_soc *dp_soc, void *cb_context,
|
||||
QDF_STATUS (*callback)(void *, qdf_nbuf_t, uint8_t),
|
||||
@@ -1864,11 +2022,6 @@ dp_hif_update_pipe_callback(struct dp_soc *dp_soc, void *cb_context,
|
||||
{
|
||||
}
|
||||
|
||||
static inline QDF_STATUS dp_peer_stats_notify(struct dp_pdev *pdev,
|
||||
struct dp_peer *peer)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
dp_peer_qos_stats_notify(struct dp_pdev *dp_pdev,
|
||||
@@ -2074,115 +2227,6 @@ void dp_pdev_print_tid_stats(struct dp_pdev *pdev);
|
||||
|
||||
void dp_soc_set_txrx_ring_map(struct dp_soc *soc);
|
||||
|
||||
#ifndef WLAN_TX_PKT_CAPTURE_ENH
|
||||
/**
|
||||
* dp_tx_ppdu_stats_attach - Initialize Tx PPDU stats and enhanced capture
|
||||
* @pdev: DP PDEV
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static inline void dp_tx_ppdu_stats_attach(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_tx_ppdu_stats_detach - Cleanup Tx PPDU stats and enhanced capture
|
||||
* @pdev: DP PDEV
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static inline void dp_tx_ppdu_stats_detach(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_tx_ppdu_stats_process - Deferred PPDU stats handler
|
||||
* @context: Opaque work context (PDEV)
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static inline void dp_tx_ppdu_stats_process(void *context)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_tx_add_to_comp_queue() - add completion msdu to queue
|
||||
* @soc: DP Soc handle
|
||||
* @tx_desc: software Tx descriptor
|
||||
* @ts : Tx completion status from HAL/HTT descriptor
|
||||
* @peer: DP peer
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
static inline
|
||||
QDF_STATUS dp_tx_add_to_comp_queue(struct dp_soc *soc,
|
||||
struct dp_tx_desc_s *desc,
|
||||
struct hal_tx_completion_status *ts,
|
||||
struct dp_peer *peer)
|
||||
{
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_tx_capture_htt_frame_counter: increment counter for htt_frame_type
|
||||
* pdev: DP pdev handle
|
||||
* htt_frame_type: htt frame type received from fw
|
||||
*
|
||||
* return: void
|
||||
*/
|
||||
static inline
|
||||
void dp_tx_capture_htt_frame_counter(struct dp_pdev *pdev,
|
||||
uint32_t htt_frame_type)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_tx_cature_stats: print tx capture stats
|
||||
* @pdev: DP PDEV handle
|
||||
*
|
||||
* return: void
|
||||
*/
|
||||
static inline
|
||||
void dp_print_pdev_tx_capture_stats(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_peer_tx_capture_filter_check: check filter is enable for the filter
|
||||
* and update tx_cap_enabled flag
|
||||
* @pdev: DP PDEV handle
|
||||
* @peer: DP PEER handle
|
||||
*
|
||||
* return: void
|
||||
*/
|
||||
static inline
|
||||
void dp_peer_tx_capture_filter_check(struct dp_pdev *pdev,
|
||||
struct dp_peer *peer)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_tx_capture_debugfs_init: tx capture debugfs init
|
||||
* @pdev: DP PDEV handle
|
||||
*
|
||||
* return: QDF_STATUS
|
||||
*/
|
||||
static inline
|
||||
QDF_STATUS dp_tx_capture_debugfs_init(struct dp_pdev *pdev)
|
||||
{
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_PERPKT_INFO
|
||||
void dp_deliver_mgmt_frm(struct dp_pdev *pdev, qdf_nbuf_t nbuf);
|
||||
#else
|
||||
static inline
|
||||
void dp_deliver_mgmt_frm(struct dp_pdev *pdev, qdf_nbuf_t nbuf)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dp_vdev_to_cdp_vdev() - typecast dp vdev to cdp vdev
|
||||
* @vdev: DP vdev handle
|
||||
|
1503
dp/wifi3.0/dp_main.c
1503
dp/wifi3.0/dp_main.c
File diff suppressed because it is too large
Load Diff
@@ -32,6 +32,9 @@
|
||||
#ifdef FEATURE_WDS
|
||||
#include "dp_txrx_wds.h"
|
||||
#endif
|
||||
#ifdef WIFI_MONITOR_SUPPORT
|
||||
#include <dp_mon.h>
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_TX_PKT_CAPTURE_ENH
|
||||
#include "dp_tx_capture.h"
|
||||
@@ -2271,7 +2274,8 @@ static inline struct dp_peer *dp_peer_find_add_id(struct dp_soc *soc,
|
||||
dp_peer_find_id_to_obj_add(soc, peer, peer_id);
|
||||
if (peer->peer_id == HTT_INVALID_PEER) {
|
||||
peer->peer_id = peer_id;
|
||||
dp_peer_tid_peer_id_update(peer, peer->peer_id);
|
||||
monitor_peer_tid_peer_id_update(soc, peer,
|
||||
peer->peer_id);
|
||||
} else {
|
||||
QDF_ASSERT(0);
|
||||
}
|
||||
@@ -3219,30 +3223,6 @@ static void dp_peer_setup_remaining_tids(struct dp_peer *peer)
|
||||
static void dp_peer_setup_remaining_tids(struct dp_peer *peer) {};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* dp_peer_tx_init() – Initialize receive TID state
|
||||
* @pdev: Datapath pdev
|
||||
* @peer: Datapath peer
|
||||
*
|
||||
*/
|
||||
void dp_peer_tx_init(struct dp_pdev *pdev, struct dp_peer *peer)
|
||||
{
|
||||
dp_peer_tid_queue_init(peer);
|
||||
dp_peer_update_80211_hdr(peer->vdev, peer);
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_peer_tx_cleanup() – Deinitialize receive TID state
|
||||
* @vdev: Datapath vdev
|
||||
* @peer: Datapath peer
|
||||
*
|
||||
*/
|
||||
static inline void
|
||||
dp_peer_tx_cleanup(struct dp_vdev *vdev, struct dp_peer *peer)
|
||||
{
|
||||
dp_peer_tid_queue_cleanup(peer);
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_peer_rx_init() – Initialize receive TID state
|
||||
* @pdev: Datapath pdev
|
||||
@@ -3373,7 +3353,7 @@ void dp_peer_cleanup(struct dp_vdev *vdev, struct dp_peer *peer)
|
||||
/* save vdev related member in case vdev freed */
|
||||
vdev_opmode = vdev->opmode;
|
||||
|
||||
dp_peer_tx_cleanup(vdev, peer);
|
||||
monitor_peer_tx_cleanup(vdev, peer);
|
||||
|
||||
if (vdev_opmode != wlan_op_mode_monitor)
|
||||
/* cleanup the Rx reorder queues for this peer */
|
||||
|
@@ -798,25 +798,6 @@ void dp_peer_ast_index_flow_queue_map_create(void *soc_hdl,
|
||||
struct dp_ast_flow_override_info *ast_info);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dp_peer_update_pkt_capture_params: Set Rx & Tx Capture flags for a peer
|
||||
* @soc: DP SOC handle
|
||||
* @pdev_id: id of DP pdev handle
|
||||
* @is_rx_pkt_cap_enable: enable/disable Rx packet capture in monitor mode
|
||||
* @is_tx_pkt_cap_enable: enable/disable/delete/print
|
||||
* Tx packet capture in monitor mode
|
||||
* Tx packet capture in monitor mode
|
||||
* @peer_mac: MAC address for which the above need to be enabled/disabled
|
||||
*
|
||||
* Return: Success if Rx & Tx capture is enabled for peer, false otherwise
|
||||
*/
|
||||
QDF_STATUS
|
||||
dp_peer_update_pkt_capture_params(ol_txrx_soc_handle soc,
|
||||
uint8_t pdev_id,
|
||||
bool is_rx_pkt_cap_enable,
|
||||
uint8_t is_tx_pkt_cap_enable,
|
||||
uint8_t *peer_mac);
|
||||
|
||||
/*
|
||||
* dp_rx_tid_delete_cb() - Callback to flush reo descriptor HW cache
|
||||
* after deleting the entries (ie., setting valid=0)
|
||||
@@ -829,48 +810,6 @@ void dp_rx_tid_delete_cb(struct dp_soc *soc,
|
||||
void *cb_ctxt,
|
||||
union hal_reo_status *reo_status);
|
||||
|
||||
#ifndef WLAN_TX_PKT_CAPTURE_ENH
|
||||
/**
|
||||
* dp_peer_tid_queue_init() – Initialize ppdu stats queue per TID
|
||||
* @peer: Datapath peer
|
||||
*
|
||||
*/
|
||||
static inline void dp_peer_tid_queue_init(struct dp_peer *peer)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_peer_tid_peer_id_update() – update peer_id to tid structure
|
||||
* @peer: Datapath peer
|
||||
* @peer_id: peer_id
|
||||
*
|
||||
*/
|
||||
static inline
|
||||
void dp_peer_tid_peer_id_update(struct dp_peer *peer, uint16_t peer_id)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_peer_tid_queue_cleanup() – remove ppdu stats queue per TID
|
||||
* @peer: Datapath peer
|
||||
*
|
||||
*/
|
||||
static inline void dp_peer_tid_queue_cleanup(struct dp_peer *peer)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_peer_update_80211_hdr() – dp peer update 80211 hdr
|
||||
* @vdev: Datapath vdev
|
||||
* @peer: Datapath peer
|
||||
*
|
||||
*/
|
||||
static inline void
|
||||
dp_peer_update_80211_hdr(struct dp_vdev *vdev, struct dp_peer *peer)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef QCA_PEER_EXT_STATS
|
||||
QDF_STATUS dp_peer_ext_stats_ctx_alloc(struct dp_soc *soc,
|
||||
struct dp_peer *peer);
|
||||
|
@@ -35,6 +35,10 @@
|
||||
#endif
|
||||
#include "dp_hist.h"
|
||||
#include "dp_rx_buffer_pool.h"
|
||||
#ifdef WIFI_MONITOR_SUPPORT
|
||||
#include "dp_htt.h"
|
||||
#include <dp_mon.h>
|
||||
#endif
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
@@ -860,50 +864,6 @@ QDF_STATUS dp_rx_filter_mesh_packets(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_NAC_RSSI
|
||||
/**
|
||||
* dp_rx_nac_filter(): Function to perform filtering of non-associated
|
||||
* clients
|
||||
* @pdev: DP pdev handle
|
||||
* @rx_pkt_hdr: Rx packet Header
|
||||
*
|
||||
* return: dp_vdev*
|
||||
*/
|
||||
static
|
||||
struct dp_vdev *dp_rx_nac_filter(struct dp_pdev *pdev,
|
||||
uint8_t *rx_pkt_hdr)
|
||||
{
|
||||
struct ieee80211_frame *wh;
|
||||
struct dp_neighbour_peer *peer = NULL;
|
||||
|
||||
wh = (struct ieee80211_frame *)rx_pkt_hdr;
|
||||
|
||||
if ((wh->i_fc[1] & IEEE80211_FC1_DIR_MASK) != IEEE80211_FC1_DIR_TODS)
|
||||
return NULL;
|
||||
|
||||
qdf_spin_lock_bh(&pdev->neighbour_peer_mutex);
|
||||
TAILQ_FOREACH(peer, &pdev->neighbour_peers_list,
|
||||
neighbour_peer_list_elem) {
|
||||
if (qdf_mem_cmp(&peer->neighbour_peers_macaddr.raw[0],
|
||||
wh->i_addr2, QDF_MAC_ADDR_SIZE) == 0) {
|
||||
dp_rx_debug("%pK: NAC configuration matched for mac-%2x:%2x:%2x:%2x:%2x:%2x",
|
||||
pdev->soc,
|
||||
peer->neighbour_peers_macaddr.raw[0],
|
||||
peer->neighbour_peers_macaddr.raw[1],
|
||||
peer->neighbour_peers_macaddr.raw[2],
|
||||
peer->neighbour_peers_macaddr.raw[3],
|
||||
peer->neighbour_peers_macaddr.raw[4],
|
||||
peer->neighbour_peers_macaddr.raw[5]);
|
||||
|
||||
qdf_spin_unlock_bh(&pdev->neighbour_peer_mutex);
|
||||
|
||||
return pdev->monitor_vdev;
|
||||
}
|
||||
}
|
||||
qdf_spin_unlock_bh(&pdev->neighbour_peer_mutex);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_rx_process_invalid_peer(): Function to pass invalid peer list to umac
|
||||
* @soc: DP SOC handle
|
||||
@@ -948,23 +908,11 @@ uint8_t dp_rx_process_invalid_peer(struct dp_soc *soc, qdf_nbuf_t mpdu,
|
||||
goto free;
|
||||
}
|
||||
|
||||
if (pdev->filter_neighbour_peers) {
|
||||
/* Next Hop scenario not yet handle */
|
||||
vdev = dp_rx_nac_filter(pdev, rx_pkt_hdr);
|
||||
if (vdev) {
|
||||
dp_rx_mon_deliver(soc, pdev->pdev_id,
|
||||
pdev->invalid_peer_head_msdu,
|
||||
pdev->invalid_peer_tail_msdu);
|
||||
|
||||
pdev->invalid_peer_head_msdu = NULL;
|
||||
pdev->invalid_peer_tail_msdu = NULL;
|
||||
|
||||
if (monitor_filter_neighbour_peer(pdev, rx_pkt_hdr) ==
|
||||
QDF_STATUS_SUCCESS)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
TAILQ_FOREACH(vdev, &pdev->vdev_list, vdev_list_elem) {
|
||||
|
||||
if (qdf_mem_cmp(wh->i_addr1, vdev->mac_addr.raw,
|
||||
QDF_MAC_ADDR_SIZE) == 0) {
|
||||
goto out;
|
||||
@@ -990,13 +938,9 @@ out:
|
||||
* in order to avoid HM_WDS false addition.
|
||||
*/
|
||||
if (pdev->soc->cdp_soc.ol_ops->rx_invalid_peer) {
|
||||
if (!soc->hw_nac_monitor_support &&
|
||||
pdev->filter_neighbour_peers &&
|
||||
vdev->opmode == wlan_op_mode_sta) {
|
||||
dp_rx_warn("%pK: Drop inv peer pkts with STA RA:%pm",
|
||||
soc, wh->i_addr1);
|
||||
if (monitor_drop_inv_peer_pkts(vdev, wh) == QDF_STATUS_SUCCESS)
|
||||
goto free;
|
||||
}
|
||||
|
||||
pdev->soc->cdp_soc.ol_ops->rx_invalid_peer(
|
||||
(struct cdp_ctrl_objmgr_psoc *)soc->ctrl_psoc,
|
||||
pdev->pdev_id, &msg);
|
||||
|
@@ -27,6 +27,10 @@
|
||||
#include "qdf_nbuf.h"
|
||||
#include "dp_rx_defrag.h"
|
||||
#include "dp_ipa.h"
|
||||
#ifdef WIFI_MONITOR_SUPPORT
|
||||
#include "dp_htt.h"
|
||||
#include <dp_mon.h>
|
||||
#endif
|
||||
#ifdef FEATURE_WDS
|
||||
#include "dp_txrx_wds.h"
|
||||
#endif
|
||||
|
@@ -27,9 +27,12 @@
|
||||
#include <cdp_txrx_hist_struct.h>
|
||||
#include "dp_hist.h"
|
||||
#endif
|
||||
#ifdef WIFI_MONITOR_SUPPORT
|
||||
#include "dp_htt.h"
|
||||
#include <dp_mon.h>
|
||||
#endif
|
||||
|
||||
#define DP_MAX_STRING_LEN 500
|
||||
#define INVALID_FREE_BUFF 0xffffffff
|
||||
|
||||
#define DP_HTT_HW_INTR_NAME_LEN HTT_STATS_MAX_HW_INTR_NAME_LEN
|
||||
#define DP_HTT_HW_MODULE_NAME_LEN HTT_STATS_MAX_HW_MODULE_NAME_LEN
|
||||
@@ -4347,42 +4350,6 @@ void dp_peer_stats_update_protocol_cnt(struct cdp_soc_t *soc_hdl,
|
||||
#endif
|
||||
|
||||
#ifdef WDI_EVENT_ENABLE
|
||||
QDF_STATUS dp_peer_stats_notify(struct dp_pdev *dp_pdev, struct dp_peer *peer)
|
||||
{
|
||||
struct cdp_interface_peer_stats peer_stats_intf;
|
||||
struct cdp_peer_stats *peer_stats = &peer->stats;
|
||||
|
||||
if (!peer->vdev)
|
||||
return QDF_STATUS_E_FAULT;
|
||||
|
||||
qdf_mem_zero(&peer_stats_intf, sizeof(peer_stats_intf));
|
||||
if (peer_stats->rx.last_snr != peer_stats->rx.snr)
|
||||
peer_stats_intf.rssi_changed = true;
|
||||
|
||||
if ((peer_stats->rx.snr && peer_stats_intf.rssi_changed) ||
|
||||
(peer_stats->tx.tx_rate &&
|
||||
peer_stats->tx.tx_rate != peer_stats->tx.last_tx_rate)) {
|
||||
qdf_mem_copy(peer_stats_intf.peer_mac, peer->mac_addr.raw,
|
||||
QDF_MAC_ADDR_SIZE);
|
||||
peer_stats_intf.vdev_id = peer->vdev->vdev_id;
|
||||
peer_stats_intf.last_peer_tx_rate = peer_stats->tx.last_tx_rate;
|
||||
peer_stats_intf.peer_tx_rate = peer_stats->tx.tx_rate;
|
||||
peer_stats_intf.peer_rssi = peer_stats->rx.snr;
|
||||
peer_stats_intf.tx_packet_count = peer_stats->tx.ucast.num;
|
||||
peer_stats_intf.rx_packet_count = peer_stats->rx.to_stack.num;
|
||||
peer_stats_intf.tx_byte_count = peer_stats->tx.tx_success.bytes;
|
||||
peer_stats_intf.rx_byte_count = peer_stats->rx.to_stack.bytes;
|
||||
peer_stats_intf.per = peer_stats->tx.last_per;
|
||||
peer_stats_intf.ack_rssi = peer_stats->tx.last_ack_rssi;
|
||||
peer_stats_intf.free_buff = INVALID_FREE_BUFF;
|
||||
dp_wdi_event_handler(WDI_EVENT_PEER_STATS, dp_pdev->soc,
|
||||
(void *)&peer_stats_intf, 0,
|
||||
WDI_NO_VAL, dp_pdev->pdev_id);
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS dp_peer_qos_stats_notify(struct dp_pdev *dp_pdev,
|
||||
struct cdp_rx_stats_ppdu_user *ppdu_user)
|
||||
{
|
||||
@@ -6305,7 +6272,7 @@ dp_print_pdev_tx_stats(struct dp_pdev *pdev)
|
||||
i, pdev->stats.wdi_event[i]);
|
||||
}
|
||||
|
||||
dp_print_pdev_tx_capture_stats(pdev);
|
||||
monitor_print_pdev_tx_capture_stats(pdev);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -6382,88 +6349,6 @@ dp_print_pdev_rx_stats(struct dp_pdev *pdev)
|
||||
pdev->stats.rx_buffer_pool.num_pool_bufs_replenish);
|
||||
}
|
||||
|
||||
void
|
||||
dp_print_pdev_rx_mon_stats(struct dp_pdev *pdev)
|
||||
{
|
||||
struct cdp_pdev_mon_stats *rx_mon_stats;
|
||||
uint32_t *stat_ring_ppdu_ids;
|
||||
uint32_t *dest_ring_ppdu_ids;
|
||||
int i, idx;
|
||||
|
||||
rx_mon_stats = &pdev->rx_mon_stats;
|
||||
|
||||
DP_PRINT_STATS("PDEV Rx Monitor Stats:\n");
|
||||
|
||||
DP_PRINT_STATS("status_ppdu_compl_cnt = %d",
|
||||
rx_mon_stats->status_ppdu_compl);
|
||||
DP_PRINT_STATS("status_ppdu_start_cnt = %d",
|
||||
rx_mon_stats->status_ppdu_start);
|
||||
DP_PRINT_STATS("status_ppdu_end_cnt = %d",
|
||||
rx_mon_stats->status_ppdu_end);
|
||||
DP_PRINT_STATS("status_ppdu_start_mis_cnt = %d",
|
||||
rx_mon_stats->status_ppdu_start_mis);
|
||||
DP_PRINT_STATS("status_ppdu_end_mis_cnt = %d",
|
||||
rx_mon_stats->status_ppdu_end_mis);
|
||||
DP_PRINT_STATS("status_ppdu_done_cnt = %d",
|
||||
rx_mon_stats->status_ppdu_done);
|
||||
DP_PRINT_STATS("dest_ppdu_done_cnt = %d",
|
||||
rx_mon_stats->dest_ppdu_done);
|
||||
DP_PRINT_STATS("dest_mpdu_done_cnt = %d",
|
||||
rx_mon_stats->dest_mpdu_done);
|
||||
DP_PRINT_STATS("tlv_tag_status_err_cnt = %u",
|
||||
rx_mon_stats->tlv_tag_status_err);
|
||||
DP_PRINT_STATS("mon status DMA not done WAR count= %u",
|
||||
rx_mon_stats->status_buf_done_war);
|
||||
DP_PRINT_STATS("dest_mpdu_drop_cnt = %d",
|
||||
rx_mon_stats->dest_mpdu_drop);
|
||||
DP_PRINT_STATS("dup_mon_linkdesc_cnt = %d",
|
||||
rx_mon_stats->dup_mon_linkdesc_cnt);
|
||||
DP_PRINT_STATS("dup_mon_buf_cnt = %d",
|
||||
rx_mon_stats->dup_mon_buf_cnt);
|
||||
DP_PRINT_STATS("mon_rx_buf_reaped = %u",
|
||||
rx_mon_stats->mon_rx_bufs_reaped_dest);
|
||||
DP_PRINT_STATS("mon_rx_buf_replenished = %u",
|
||||
rx_mon_stats->mon_rx_bufs_replenished_dest);
|
||||
DP_PRINT_STATS("ppdu_id_mismatch = %u",
|
||||
rx_mon_stats->ppdu_id_mismatch);
|
||||
DP_PRINT_STATS("mpdu_ppdu_id_match_cnt = %d",
|
||||
rx_mon_stats->ppdu_id_match);
|
||||
DP_PRINT_STATS("ppdus dropped frm status ring = %d",
|
||||
rx_mon_stats->status_ppdu_drop);
|
||||
DP_PRINT_STATS("ppdus dropped frm dest ring = %d",
|
||||
rx_mon_stats->dest_ppdu_drop);
|
||||
stat_ring_ppdu_ids =
|
||||
(uint32_t *)qdf_mem_malloc(sizeof(uint32_t) * MAX_PPDU_ID_HIST);
|
||||
dest_ring_ppdu_ids =
|
||||
(uint32_t *)qdf_mem_malloc(sizeof(uint32_t) * MAX_PPDU_ID_HIST);
|
||||
|
||||
if (!stat_ring_ppdu_ids || !dest_ring_ppdu_ids)
|
||||
DP_PRINT_STATS("Unable to allocate ppdu id hist mem\n");
|
||||
|
||||
qdf_spin_lock_bh(&pdev->mon_lock);
|
||||
idx = rx_mon_stats->ppdu_id_hist_idx;
|
||||
qdf_mem_copy(stat_ring_ppdu_ids,
|
||||
rx_mon_stats->stat_ring_ppdu_id_hist,
|
||||
sizeof(uint32_t) * MAX_PPDU_ID_HIST);
|
||||
qdf_mem_copy(dest_ring_ppdu_ids,
|
||||
rx_mon_stats->dest_ring_ppdu_id_hist,
|
||||
sizeof(uint32_t) * MAX_PPDU_ID_HIST);
|
||||
qdf_spin_unlock_bh(&pdev->mon_lock);
|
||||
|
||||
DP_PRINT_STATS("PPDU Id history:");
|
||||
DP_PRINT_STATS("stat_ring_ppdu_ids\t dest_ring_ppdu_ids");
|
||||
for (i = 0; i < MAX_PPDU_ID_HIST; i++) {
|
||||
idx = (idx + 1) & (MAX_PPDU_ID_HIST - 1);
|
||||
DP_PRINT_STATS("%*u\t%*u", 16,
|
||||
rx_mon_stats->stat_ring_ppdu_id_hist[idx], 16,
|
||||
rx_mon_stats->dest_ring_ppdu_id_hist[idx]);
|
||||
}
|
||||
qdf_mem_free(stat_ring_ppdu_ids);
|
||||
qdf_mem_free(dest_ring_ppdu_ids);
|
||||
DP_PRINT_STATS("mon_rx_dest_stuck = %d",
|
||||
rx_mon_stats->mon_rx_dest_stuck);
|
||||
}
|
||||
|
||||
void
|
||||
dp_print_soc_tx_stats(struct dp_soc *soc)
|
||||
{
|
||||
|
@@ -44,6 +44,9 @@
|
||||
#ifdef WLAN_DP_FEATURE_SW_LATENCY_MGR
|
||||
#include <dp_swlm.h>
|
||||
#endif
|
||||
#ifdef WIFI_MONITOR_SUPPORT
|
||||
#include <dp_mon.h>
|
||||
#endif
|
||||
|
||||
/* Flag to skip CCE classify when mesh or tid override enabled */
|
||||
#define DP_TX_SKIP_CCE_CLASSIFY \
|
||||
@@ -3924,7 +3927,7 @@ dp_tx_comp_process_desc(struct dp_soc *soc,
|
||||
dp_tx_enh_unmap(soc, desc);
|
||||
|
||||
if (QDF_STATUS_SUCCESS ==
|
||||
dp_tx_add_to_comp_queue(soc, desc, ts, peer)) {
|
||||
monitor_tx_add_to_comp_queue(soc, desc, ts, peer)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -19,6 +19,10 @@
|
||||
|
||||
#include "dp_internal.h"
|
||||
#include "qdf_mem.h" /* qdf_mem_malloc,free */
|
||||
#ifdef WIFI_MONITOR_SUPPORT
|
||||
#include "dp_htt.h"
|
||||
#include <dp_mon.h>
|
||||
#endif
|
||||
|
||||
#ifdef WDI_EVENT_ENABLE
|
||||
void *dp_get_pldev(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
||||
@@ -192,7 +196,7 @@ dp_wdi_event_sub(
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
dp_set_pktlog_wifi3(txrx_pdev, event, true);
|
||||
monitor_set_pktlog_wifi3(txrx_pdev, event, true);
|
||||
event_index = event - WDI_EVENT_BASE;
|
||||
wdi_sub = txrx_pdev->wdi_event_list[event_index];
|
||||
|
||||
@@ -254,7 +258,7 @@ dp_wdi_event_unsub(
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
dp_set_pktlog_wifi3(txrx_pdev, event, false);
|
||||
monitor_set_pktlog_wifi3(txrx_pdev, event, false);
|
||||
|
||||
if (!event_cb_sub->priv.prev) {
|
||||
txrx_pdev->wdi_event_list[event_index] = event_cb_sub->priv.next;
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -27,6 +27,8 @@
|
||||
#include "dp_rx_mon.h"
|
||||
#include "dp_internal.h"
|
||||
#include "qdf_mem.h" /* qdf_mem_malloc,free */
|
||||
#include "dp_htt.h"
|
||||
#include "dp_mon.h"
|
||||
|
||||
#include "htt.h"
|
||||
|
||||
|
@@ -1682,22 +1682,30 @@ int wlan_cfg_get_dma_mon_buf_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg)
|
||||
return cfg->dma_mon_buf_ring_size;
|
||||
}
|
||||
|
||||
qdf_export_symbol(wlan_cfg_get_dma_mon_buf_ring_size);
|
||||
|
||||
int wlan_cfg_get_dma_mon_dest_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg)
|
||||
{
|
||||
return cfg->dma_mon_dest_ring_size;
|
||||
}
|
||||
|
||||
qdf_export_symbol(wlan_cfg_get_dma_mon_dest_ring_size);
|
||||
|
||||
int wlan_cfg_get_dma_mon_stat_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg)
|
||||
{
|
||||
return cfg->dma_mon_status_ring_size;
|
||||
}
|
||||
|
||||
qdf_export_symbol(wlan_cfg_get_dma_mon_stat_ring_size);
|
||||
|
||||
int
|
||||
wlan_cfg_get_dma_mon_desc_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg)
|
||||
{
|
||||
return cfg->rxdma_monitor_desc_ring;
|
||||
}
|
||||
|
||||
qdf_export_symbol(wlan_cfg_get_dma_mon_desc_ring_size);
|
||||
|
||||
int wlan_cfg_get_rx_dma_buf_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg)
|
||||
{
|
||||
return cfg->rx_dma_buf_ring_size;
|
||||
|
Reference in New Issue
Block a user