qcacmn: Segregate stats among peer, txrx_peer & monitor_peer

Segregate the stats among dp_peer, dp_txrx_peer and dp_mon_peer
structures.

Segregation is done as per below:
 * Move stats updated in per pkt path to dp_txrx_peer
 * Consider stats updated purely in per pkt path as per_pkt_stats
 * Consider stats for which there is an alternate path of
   updation as extd_stats
 * Move delay stats and jitter stats to dp_txrx_peer
 * Maintain calibrated stats in dp_peer
 * Move rdkstats_ctx from dp_peer to dp_mon_peer
 * Move invalid peer from dp_pdev to dp_mon_pdev

As per the above segregation, if there is not support for
alternate path of stats updation, then stats in dp_txrx_peer is
combination of per_pkt_stats and extd_stats and dp_mon_peer
does not hold any stats.

If support is there, then dp_txrx_peer holds only per_pkt_stats and
dp_mon_peer holds extd_stats.

Change-Id: I2eb81d1b93a178985c05ff4f6557a173cc8a262d
CRs-Fixed: 3092123
This commit is contained in:
Harsh Kumar Bijlani
2021-12-19 14:29:03 +05:30
committed by Madan Koyyalamudi
parent b9038e9d4e
commit 148f220408
3 changed files with 479 additions and 46 deletions

View File

@@ -1174,25 +1174,31 @@ struct cdp_tso_stats {
enum cdp_peer_stats_type {
cdp_peer_stats_min = CDP_PEER_STATS_START,
/* Tx types */
cdp_peer_tx_ucast = cdp_peer_stats_min,
/* Peer per pkt stats */
cdp_peer_per_pkt_stats_min = cdp_peer_stats_min,
cdp_peer_tx_ucast = cdp_peer_per_pkt_stats_min,
cdp_peer_tx_mcast,
cdp_peer_tx_rate,
cdp_peer_tx_last_tx_rate,
cdp_peer_tx_inactive_time,
cdp_peer_rx_ucast,
/* Add enum for peer per pkt stats before this */
cdp_peer_per_pkt_stats_max,
/* Peer extd stats */
cdp_peer_extd_stats_min,
cdp_peer_tx_rate = cdp_peer_extd_stats_min,
cdp_peer_tx_last_tx_rate,
cdp_peer_tx_ratecode,
cdp_peer_tx_flags,
cdp_peer_tx_power,
/* Rx types */
cdp_peer_rx_rate,
cdp_peer_rx_last_rx_rate,
cdp_peer_rx_ratecode,
cdp_peer_rx_ucast,
cdp_peer_rx_flags,
cdp_peer_rx_avg_snr,
cdp_peer_stats_max,
cdp_peer_rx_snr,
/* Add enum for peer extd stats before this */
cdp_peer_extd_stats_max,
cdp_peer_stats_max = cdp_peer_extd_stats_max,
};
/*
@@ -1218,6 +1224,7 @@ typedef union cdp_peer_stats_buf {
uint32_t rx_ratecode;
uint32_t rx_flags;
uint32_t rx_avg_snr;
uint32_t rx_snr;
} cdp_peer_stats_param_t; /* Max union size 16 bytes */
/**
@@ -1318,6 +1325,9 @@ struct protocol_trace_count {
* @failed_retry_count: packets failed due to retry above 802.11 retry limit
* @retry_count: packets successfully send after one or more retry
* @multiple_retry_count: packets successfully sent after more than one retry
* @tx_ppdus: ppdus in tx
* @tx_mpdus_success: mpdus successful in tx
* @tx_mpdus_tried: mpdus tried in tx
* @transmit_type: pkt info for tx transmit type
* @mu_group_id: mumimo mu group id
* @ru_start: RU start index
@@ -1423,6 +1433,9 @@ struct cdp_tx_stats {
uint32_t retry_count;
uint32_t multiple_retry_count;
uint32_t last_tx_rate_used;
uint32_t tx_ppdus;
uint32_t tx_mpdus_success;
uint32_t tx_mpdus_tried;
struct cdp_tx_pkt_info transmit_type[MAX_TRANSMIT_TYPES];
uint32_t mu_group_id[MAX_MU_GROUP_ID];
@@ -1532,7 +1545,7 @@ struct cdp_tx_stats {
* @to_stack_twt: Total packets sent up the stack in TWT session
* @mpdu_retry_cnt: retries of mpdu in rx
* @su_be_ppdu_cnt: SU Rx packet count for BE
* @rx_mu_be: MU rx packet count for BE
* @mu_be_ppdu_cnt: MU rx packet count for BE
*/
struct cdp_rx_stats {
struct cdp_pkt_info to_stack;
@@ -1617,7 +1630,7 @@ struct cdp_rx_stats {
uint32_t mpdu_retry_cnt;
#ifdef WLAN_FEATURE_11BE
struct cdp_pkt_type su_be_ppdu_cnt;
struct cdp_pkt_type rx_mu_be[TXRX_TYPE_MU_MAX];
struct cdp_pkt_type mu_be_ppdu_cnt[TXRX_TYPE_MU_MAX];
#endif
};
@@ -1758,6 +1771,51 @@ struct cdp_vdev_stats {
struct cdp_tso_stats tso_stats;
};
/* struct cdp_calibr_stats - Calibrated stats
* @last_per: Tx last packet error rate
* @tx_bytes_success_last: last Tx success bytes
* @tx_data_success_last: last Tx success data
* @tx_byte_rate: Bytes Trasmitted in last one sec
* @tx_data_rate: Data Transmitted in last one sec
* @tx_data_ucast_last: last unicast Tx bytes
* @tx_data_ucast_rate: last unicast Tx data
* @inactive_time: inactive time in secs
* @rx_bytes_success_last: last Rx success bytes
* @rx_data_success_last: last Rx success data
* @rx_byte_rate: Bytes received in last one sec
* @rx_data_rate: Data received in last one sec
*/
struct cdp_calibr_stats {
struct {
uint32_t last_per;
uint32_t tx_bytes_success_last;
uint32_t tx_data_success_last;
uint32_t tx_byte_rate;
uint32_t tx_data_rate;
uint32_t tx_data_ucast_last;
uint32_t tx_data_ucast_rate;
uint32_t inactive_time;
} tx;
struct {
uint32_t rx_bytes_success_last;
uint32_t rx_data_success_last;
uint32_t rx_byte_rate;
uint32_t rx_data_rate;
} rx;
};
/* struct cdp_calibr_stats_intf: Calibrated stats interface
* @to_stack: Total packets sent up the stack
* @tx_success: Successful Tx Packets
* @tx_ucast: Tx Unicast Packet Count
*/
struct cdp_calibr_stats_intf {
struct cdp_pkt_info to_stack;
struct cdp_pkt_info tx_success;
struct cdp_pkt_info tx_ucast;
};
/* struct cdp_peer_stats - peer stats structure
* @tx: cdp tx stats
* @rx: cdp rx stats
@@ -1800,6 +1858,7 @@ struct cdp_peer_tid_stats {
* @per: per error rate
* @ack_rssi: RSSI of the last ack received
* @free_buff: free tx descriptor count
* @rx_avg_snr: Avg Rx SNR
*/
struct cdp_interface_peer_stats {
uint8_t peer_mac[QDF_MAC_ADDR_SIZE];
@@ -1815,6 +1874,7 @@ struct cdp_interface_peer_stats {
uint32_t per;
uint32_t ack_rssi;
uint32_t free_buff;
uint32_t rx_avg_snr;
};
/* struct cdp_interface_peer_qos_stats - interface structure for peer qos stats

View File

@@ -866,9 +866,6 @@ struct dp_rx_tid {
/* Coex Override preserved windows size 1 based */
uint16_t rx_ba_win_size_override;
/* Peer TID statistics */
struct cdp_peer_tid_stats stats;
};
/**
@@ -2779,9 +2776,6 @@ struct dp_pdev {
struct cdp_tx_sojourn_stats sojourn_stats;
qdf_nbuf_t sojourn_buf;
/* peer pointer for collecting invalid peer stats */
struct dp_peer *invalid_peer;
union dp_rx_desc_list_elem_t *free_list_head;
union dp_rx_desc_list_elem_t *free_list_tail;
/* Cached peer_id from htt_peer_details_tlv */
@@ -3356,7 +3350,362 @@ struct dp_mld_link_peers {
typedef void *dp_txrx_ref_handle;
/* Peer structure for per packet path usage */
/**
* struct dp_peer_per_pkt_tx_stats- Peer Tx stats updated in per pkt
* Tx completion path
* @cdp_pkt_info ucast: Unicast Packet Count
* @cdp_pkt_info mcast: Multicast Packet Count
* @cdp_pkt_info bcast: Broadcast Packet Count
* @cdp_pkt_info nawds_mcast: NAWDS Multicast Packet Count
* @cdp_pkt_info tx_success: Successful Tx Packets
* @nawds_mcast_drop: NAWDS Multicast Drop Count
* @ofdma: Total Packets as ofdma
* @non_amsdu_cnt: Number of MSDUs with no MSDU level aggregation
* @amsdu_cnt: Number of MSDUs part of AMSDU
* @cdp_pkt_info fw_rem: Discarded by firmware
* @fw_rem_notx: firmware_discard_untransmitted
* @fw_rem_tx: firmware_discard_transmitted
* @age_out: aged out in mpdu/msdu queues
* @fw_reason1: discarded by firmware reason 1
* @fw_reason2: discarded by firmware reason 2
* @fw_reason3: discarded by firmware reason 3
* @failed_retry_count: packets failed due to retry above 802.11 retry limit
* @retry_count: packets successfully send after one or more retry
* @multiple_retry_count: packets successfully sent after more than one retry
* @no_ack_count: no ack pkt count for different protocols
* @tx_success_twt: Successful Tx Packets in TWT session
* @last_tx_ts: last timestamp in jiffies when tx comp occurred
* @avg_sojourn_msdu[CDP_DATA_TID_MAX]: Avg sojourn msdu stat
* @protocol_trace_cnt: per-peer protocol counter
*/
struct dp_peer_per_pkt_tx_stats {
struct cdp_pkt_info ucast;
struct cdp_pkt_info mcast;
struct cdp_pkt_info bcast;
struct cdp_pkt_info nawds_mcast;
struct cdp_pkt_info tx_success;
uint32_t nawds_mcast_drop;
uint32_t ofdma;
uint32_t non_amsdu_cnt;
uint32_t amsdu_cnt;
struct {
struct cdp_pkt_info fw_rem;
uint32_t fw_rem_notx;
uint32_t fw_rem_tx;
uint32_t age_out;
uint32_t fw_reason1;
uint32_t fw_reason2;
uint32_t fw_reason3;
} dropped;
uint32_t failed_retry_count;
uint32_t retry_count;
uint32_t multiple_retry_count;
uint32_t no_ack_count[QDF_PROTO_SUBTYPE_MAX];
struct cdp_pkt_info tx_success_twt;
unsigned long last_tx_ts;
qdf_ewma_tx_lag avg_sojourn_msdu[CDP_DATA_TID_MAX];
#ifdef VDEV_PEER_PROTOCOL_COUNT
struct protocol_trace_count protocol_trace_cnt[CDP_TRACE_MAX];
#endif
};
/**
* struct dp_peer_extd_tx_stats - Peer Tx stats updated in either
* per pkt Tx completion path when macro QCA_ENHANCED_STATS_SUPPORT is
* disabled or in HTT Tx PPDU completion path when macro is enabled
* @stbc: Packets in STBC
* @ldpc: Packets in LDPC
* @retries: Packet retries
* @pkt_type[DOT11_MAX]: pkt count for different .11 modes
* @wme_ac_type[WME_AC_MAX]: Wireless Multimedia type Count
* @excess_retries_per_ac[WME_AC_MAX]: Wireless Multimedia type Count
* @ampdu_cnt: completion of aggregation
* @non_ampdu_cnt: tx completion not aggregated
* @num_ppdu_cookie_valid: no. of valid ppdu cookies rcvd from FW
* @tx_ppdus: ppdus in tx
* @tx_mpdus_success: mpdus successful in tx
* @tx_mpdus_tried: mpdus tried in tx
* @tx_rate: Tx Rate
* @last_tx_rate: Last tx rate for unicast packets
* @last_tx_rate_mcs: Tx rate mcs for unicast packets
* @mcast_last_tx_rate: Last tx rate for multicast packets
* @mcast_last_tx_rate_mcs: Last tx rate mcs for multicast
* @rnd_avg_tx_rate: Rounded average tx rate
* @avg_tx_rate: Average TX rate
* @tx_ratecode: Tx rate code of last frame
* @pream_punct_cnt: Preamble Punctured count
* @sgi_count[MAX_GI]: SGI count
* @nss[SS_COUNT]: Packet count for different num_spatial_stream values
* @bw[MAX_BW]: Packet Count for different bandwidths
* @ru_start: RU start index
* @ru_tones: RU tones size
* @ru_loc: pkt info for RU location 26/ 52/ 106/ 242/ 484 counter
* @transmit_type: pkt info for tx transmit type
* @mu_group_id: mumimo mu group id
* @last_ack_rssi: RSSI of last acked packet
* @nss_info: NSS 1,2, ...8
* @mcs_info: MCS index
* @bw_info: Bandwidth
* <enum 0 bw_20_MHz>
* <enum 1 bw_40_MHz>
* <enum 2 bw_80_MHz>
* <enum 3 bw_160_MHz>
* @gi_info: <enum 0 0_8_us_sgi > Legacy normal GI
* <enum 1 0_4_us_sgi > Legacy short GI
* <enum 2 1_6_us_sgi > HE related GI
* <enum 3 3_2_us_sgi > HE
* @preamble_info: preamble
* @retries_mpdu: mpdu number of successfully transmitted after retries
* @mpdu_success_with_retries: mpdu retry count in case of successful tx
* @su_be_ppdu_cnt: SU Tx packet count for 11BE
* @mu_be_ppdu_cnt[TXRX_TYPE_MU_MAX]: MU Tx packet count for 11BE
*/
struct dp_peer_extd_tx_stats {
uint32_t stbc;
uint32_t ldpc;
uint32_t retries;
struct cdp_pkt_type pkt_type[DOT11_MAX];
uint32_t wme_ac_type[WME_AC_MAX];
uint32_t excess_retries_per_ac[WME_AC_MAX];
uint32_t ampdu_cnt;
uint32_t non_ampdu_cnt;
uint32_t num_ppdu_cookie_valid;
uint32_t tx_ppdus;
uint32_t tx_mpdus_success;
uint32_t tx_mpdus_tried;
uint32_t tx_rate;
uint32_t last_tx_rate;
uint32_t last_tx_rate_mcs;
uint32_t mcast_last_tx_rate;
uint32_t mcast_last_tx_rate_mcs;
uint64_t rnd_avg_tx_rate;
uint64_t avg_tx_rate;
uint16_t tx_ratecode;
uint32_t sgi_count[MAX_GI];
uint32_t pream_punct_cnt;
uint32_t nss[SS_COUNT];
uint32_t bw[MAX_BW];
uint32_t ru_start;
uint32_t ru_tones;
struct cdp_tx_pkt_info ru_loc[MAX_RU_LOCATIONS];
struct cdp_tx_pkt_info transmit_type[MAX_TRANSMIT_TYPES];
uint32_t mu_group_id[MAX_MU_GROUP_ID];
uint32_t last_ack_rssi;
uint32_t nss_info:4,
mcs_info:4,
bw_info:4,
gi_info:4,
preamble_info:4;
uint32_t retries_mpdu;
uint32_t mpdu_success_with_retries;
#ifdef WLAN_FEATURE_11BE
struct cdp_pkt_type su_be_ppdu_cnt;
struct cdp_pkt_type mu_be_ppdu_cnt[TXRX_TYPE_MU_MAX];
#endif
};
/**
* struct dp_peer_per_pkt_rx_stats - Peer Rx stats updated in per pkt Rx path
* @rcvd_reo[CDP_MAX_RX_RINGS]: Packets received on the reo ring
* @unicast: Total unicast packets
* @multicast: Total multicast packets
* @bcast: Broadcast Packet Count
* @raw: Raw Pakets received
* @nawds_mcast_drop: Total NAWDS multicast packets dropped
* @mec_drop: Total MEC packets dropped
* @last_rx_ts: last timestamp in jiffies when RX happened
* @intra_bss.pkts: Intra BSS packets received
* @intra_bss.fail: Intra BSS packets failed
* @intra_bss.mdns_no_fws: Intra BSS MDNS packets not forwarded
* @mic_err: Rx MIC errors CCMP
* @decrypt_err: Rx Decryption Errors CRC
* @fcserr: rx MIC check failed (CCMP)
* @pn_err: pn check failed
* @oor_err: Rx OOR errors
* @jump_2k_err: 2k jump errors
* @rxdma_wifi_parse_err: rxdma wifi parse errors
* @non_amsdu_cnt: Number of MSDUs with no MSDU level aggregation
* @amsdu_cnt: Number of MSDUs part of AMSDU
* @rx_retries: retries of packet in rx
* @multipass_rx_pkt_drop: Dropped multipass rx pkt
* @peer_unauth_rx_pkt_drop: Unauth rx packet drops
* @policy_check_drop: policy check drops
* @to_stack_twt: Total packets sent up the stack in TWT session
* @protocol_trace_cnt: per-peer protocol counters
*/
struct dp_peer_per_pkt_rx_stats {
struct cdp_pkt_info rcvd_reo[CDP_MAX_RX_RINGS];
struct cdp_pkt_info unicast;
struct cdp_pkt_info multicast;
struct cdp_pkt_info bcast;
struct cdp_pkt_info raw;
uint32_t nawds_mcast_drop;
struct cdp_pkt_info mec_drop;
unsigned long last_rx_ts;
struct {
struct cdp_pkt_info pkts;
struct cdp_pkt_info fail;
uint32_t mdns_no_fwd;
} intra_bss;
struct {
uint32_t mic_err;
uint32_t decrypt_err;
uint32_t fcserr;
uint32_t pn_err;
uint32_t oor_err;
uint32_t jump_2k_err;
uint32_t rxdma_wifi_parse_err;
} err;
uint32_t non_amsdu_cnt;
uint32_t amsdu_cnt;
uint32_t rx_retries;
uint32_t multipass_rx_pkt_drop;
uint32_t peer_unauth_rx_pkt_drop;
uint32_t policy_check_drop;
struct cdp_pkt_info to_stack_twt;
#ifdef VDEV_PEER_PROTOCOL_COUNT
struct protocol_trace_count protocol_trace_cnt[CDP_TRACE_MAX];
#endif
};
/**
* struct dp_peer_extd_rx_stats - Peer Rx stats updated in either
* per pkt Rx path when macro QCA_ENHANCED_STATS_SUPPORT is disabled or in
* Rx monitor patch when macro is enabled
* @pkt_type[DOT11_MAX]: pkt counter for different .11 modes
* @wme_ac_type[WME_AC_MAX]: Wireless Multimedia type Count
* @mpdu_cnt_fcs_ok: SU Rx success mpdu count
* @mpdu_cnt_fcs_err: SU Rx fail mpdu count
* @non_ampdu_cnt: Number of MSDUs with no MPDU level aggregation
* @ampdu_cnt: Number of MSDUs part of AMSPU
* @rx_mpdus: mpdu in rx
* @rx_ppdus: ppdu in rx
* @su_ax_ppdu_cnt: SU Rx packet count for .11ax
* @rx_mu[TXRX_TYPE_MU_MAX]: Rx MU stats
* @reception_type[MAX_RECEPTION_TYPES]: Reception type of packets
* @ppdu_cnt[MAX_RECEPTION_TYPES]: PPDU packet count in reception type
* @sgi_count[MAX_GI]: sgi count
* @nss[SS_COUNT]: packet count in spatiel Streams
* @ppdu_nss[SS_COUNT]: PPDU packet count in spatial streams
* @bw[MAX_BW]: Packet Count in different bandwidths
* @rx_mpdu_cnt[MAX_MCS]: rx mpdu count per MCS rate
* @rx_rate: Rx rate
* @last_rx_rate: Previous rx rate
* @rnd_avg_rx_rate: Rounded average rx rate
* @avg_rx_rate: Average Rx rate
* @rx_ratecode: Rx rate code of last frame
* @avg_snr: Average snr
* @rx_snr_measured_time: Time at which snr is measured
* @snr: SNR of received signal
* @last_snr: Previous snr
* @nss_info: NSS 1,2, ...8
* @mcs_info: MCS index
* @bw_info: Bandwidth
* <enum 0 bw_20_MHz>
* <enum 1 bw_40_MHz>
* <enum 2 bw_80_MHz>
* <enum 3 bw_160_MHz>
* @gi_info: <enum 0 0_8_us_sgi > Legacy normal GI
* <enum 1 0_4_us_sgi > Legacy short GI
* <enum 2 1_6_us_sgi > HE related GI
* <enum 3 3_2_us_sgi > HE
* @preamble_info: preamble
* @mpdu_retry_cnt: retries of mpdu in rx
* @su_be_ppdu_cnt: SU Rx packet count for BE
* @mu_be_ppdu_cnt[TXRX_TYPE_MU_MAX]: MU rx packet count for BE
*/
struct dp_peer_extd_rx_stats {
struct cdp_pkt_type pkt_type[DOT11_MAX];
uint32_t wme_ac_type[WME_AC_MAX];
uint32_t mpdu_cnt_fcs_ok;
uint32_t mpdu_cnt_fcs_err;
uint32_t non_ampdu_cnt;
uint32_t ampdu_cnt;
uint32_t rx_mpdus;
uint32_t rx_ppdus;
struct cdp_pkt_type su_ax_ppdu_cnt;
struct cdp_rx_mu rx_mu[TXRX_TYPE_MU_MAX];
uint32_t reception_type[MAX_RECEPTION_TYPES];
uint32_t ppdu_cnt[MAX_RECEPTION_TYPES];
uint32_t sgi_count[MAX_GI];
uint32_t nss[SS_COUNT];
uint32_t ppdu_nss[SS_COUNT];
uint32_t bw[MAX_BW];
uint32_t rx_mpdu_cnt[MAX_MCS];
uint32_t rx_rate;
uint32_t last_rx_rate;
uint32_t rnd_avg_rx_rate;
uint32_t avg_rx_rate;
uint32_t rx_ratecode;
uint32_t avg_snr;
uint32_t rx_snr_measured_time;
uint8_t snr;
uint8_t last_snr;
uint32_t nss_info:4,
mcs_info:4,
bw_info:4,
gi_info:4,
preamble_info:4;
uint32_t mpdu_retry_cnt;
#ifdef WLAN_FEATURE_11BE
struct cdp_pkt_type su_be_ppdu_cnt;
struct cdp_pkt_type mu_be_ppdu_cnt[TXRX_TYPE_MU_MAX];
#endif
};
/**
* struct dp_peer_per_pkt_stats - Per pkt stats for peer
* @tx: Per pkt Tx stats
* @rx: Per pkt Rx stats
*/
struct dp_peer_per_pkt_stats {
struct dp_peer_per_pkt_tx_stats tx;
struct dp_peer_per_pkt_rx_stats rx;
};
/**
* struct dp_peer_extd_stats - Stats from extended path for peer
* @tx: Extended path tx stats
* @rx: Extended path rx stats
*/
struct dp_peer_extd_stats {
struct dp_peer_extd_tx_stats tx;
struct dp_peer_extd_rx_stats rx;
};
/**
* struct dp_peer_stats - Peer stats
* @per_pkt_stats: Per packet path stats
* @extd_stats: Extended path stats
*/
struct dp_peer_stats {
struct dp_peer_per_pkt_stats per_pkt_stats;
#ifndef QCA_ENHANCED_STATS_SUPPORT
struct dp_peer_extd_stats extd_stats;
#endif
};
/**
* struct dp_txrx_peer: DP txrx_peer strcuture used in per pkt path
* @tx_failed: Total Tx failure
* @cdp_pkt_info comp_pkt: Pkt Info for which completions were received
* @to_stack: Total packets sent up the stack
* @stats: Peer stats
* @delay_stats: Peer delay stats
* @jitter_stats: Peer jitter stats
*/
struct dp_txrx_peer {
/* Core TxRx Peer */
@@ -3374,8 +3723,13 @@ struct dp_txrx_peer {
uint32_t tx_failed;
struct cdp_pkt_info comp_pkt;
struct cdp_pkt_info to_stack;
struct dp_peer_stats stats;
struct dp_peer_delay_stats *delay_stats;
struct cdp_peer_tid_stats *jitter_stats;
struct {
enum cdp_sec_type sec_type;
u_int32_t michael_key[2]; /* relevant for TKIP */
@@ -3455,8 +3809,8 @@ struct dp_peer {
enum ol_txrx_peer_state state;
qdf_spinlock_t peer_info_lock;
/* Peer Stats */
struct cdp_peer_stats stats;
/* Peer calibrated stats */
struct cdp_calibr_stats stats;
TAILQ_HEAD(, dp_ast_entry) ast_entry_list;
/* TBD */
@@ -3474,11 +3828,6 @@ struct dp_peer {
uint8_t kill_256_sessions;
qdf_atomic_t is_default_route_set;
/* rdk statistics context */
struct cdp_peer_rate_stats_ctx *rdkstats_ctx;
/* average sojourn time */
qdf_ewma_tx_lag avg_sojourn_msdu[CDP_DATA_TID_MAX];
#ifdef QCA_PEER_MULTIQ_SUPPORT
struct dp_peer_ast_params peer_ast_flowq_idx[DP_PEER_AST_FLOWQ_MAX];
#endif

View File

@@ -44,6 +44,11 @@
#define dp_mon_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_MON, params)
#define dp_mon_warn(params...) QDF_TRACE_WARN(QDF_MODULE_ID_MON, params)
#ifdef QCA_ENHANCED_STATS_SUPPORT
typedef struct dp_peer_extd_tx_stats dp_mon_peer_tx_stats;
typedef struct dp_peer_extd_rx_stats dp_mon_peer_rx_stats;
#endif
#ifndef WLAN_TX_PKT_CAPTURE_ENH
struct dp_pdev_tx_capture {
};
@@ -672,6 +677,43 @@ struct dp_mon_soc {
#endif
};
/**
* struct dp_mon_peer_stats - Monitor peer stats
*/
struct dp_mon_peer_stats {
#ifdef QCA_ENHANCED_STATS_SUPPORT
dp_mon_peer_tx_stats tx;
dp_mon_peer_rx_stats rx;
#endif
};
struct dp_mon_peer {
#ifdef WLAN_TX_PKT_CAPTURE_ENH
struct dp_peer_tx_capture tx_capture;
#endif
#ifdef FEATURE_PERPKT_INFO
/* delayed ba ppdu stats handling */
struct cdp_delayed_tx_completion_ppdu_user delayed_ba_ppdu_stats;
/* delayed ba flag */
bool last_delayed_ba;
/* delayed ba ppdu id */
uint32_t last_delayed_ba_ppduid;
#endif
uint8_t tx_cap_enabled:1, /* Peer's tx-capture is enabled */
rx_cap_enabled:1; /* Peer's rx-capture is enabled */
/* Peer level flag to check peer based pktlog enabled or
* disabled
*/
uint8_t peer_based_pktlog_filter;
/* Monitor peer stats */
struct dp_mon_peer_stats stats;
/* rdk statistics context */
struct cdp_peer_rate_stats_ctx *rdkstats_ctx;
};
struct dp_mon_pdev {
/* monitor */
bool monitor_configured;
@@ -854,6 +896,9 @@ struct dp_mon_pdev {
#endif
bool is_tlv_hdr_64_bit;
enum dp_mon_filter_mode current_filter_mode;
/* Invalid monitor peer to account for stats in mcopy mode */
struct dp_mon_peer *invalid_mon_peer;
};
struct dp_mon_vdev {
@@ -864,27 +909,6 @@ struct dp_mon_vdev {
#endif
};
struct dp_mon_peer {
#ifdef WLAN_TX_PKT_CAPTURE_ENH
struct dp_peer_tx_capture tx_capture;
#endif
#ifdef FEATURE_PERPKT_INFO
/* delayed ba ppdu stats handling */
struct cdp_delayed_tx_completion_ppdu_user delayed_ba_ppdu_stats;
/* delayed ba flag */
bool last_delayed_ba;
/* delayed ba ppdu id */
uint32_t last_delayed_ba_ppduid;
#endif
/* Peer level flag to check peer based pktlog enabled or
* disabled
*/
uint8_t peer_based_pktlog_filter;
uint8_t tx_cap_enabled:1, /* Peer's tx-capture is enabled */
rx_cap_enabled:1; /* Peer's rx-capture is enabled */
};
#if defined(QCA_TX_CAPTURE_SUPPORT) || defined(QCA_ENHANCED_STATS_SUPPORT)
void dp_deliver_mgmt_frm(struct dp_pdev *pdev, qdf_nbuf_t nbuf);
#else