qcacmn: Update counter in mutipass rx packet drop
multipass_rx_pkt_drop is peer level stats counter used to count multipass rx packet dropped frame. Accumulate this counter at vdev and pdev level. It also initializes multipass_en flag to false at vdev attach. Change-Id: Idaa85a71c80eefb9359abb026402b71aa28ad6a2 CRs-Fixed: 2595551
This commit is contained in:
@@ -839,6 +839,7 @@ struct cdp_tx_stats {
|
||||
* @rx_rssi_measured_time: Time at which rssi is measured
|
||||
* @rssi: RSSI of received signal
|
||||
* @last_rssi: Previous rssi
|
||||
* @multipass_rx_pkt_drop: Dropped multipass rx pkt
|
||||
*/
|
||||
struct cdp_rx_stats {
|
||||
struct cdp_pkt_info to_stack;
|
||||
@@ -902,6 +903,7 @@ struct cdp_rx_stats {
|
||||
uint32_t rx_rssi_measured_time;
|
||||
uint8_t rssi;
|
||||
uint8_t last_rssi;
|
||||
uint32_t multipass_rx_pkt_drop;
|
||||
};
|
||||
|
||||
/* struct cdp_tx_ingress_stats - Tx ingress Stats
|
||||
|
@@ -591,6 +591,8 @@ static inline void dp_update_pdev_stats(struct dp_pdev *tgtobj,
|
||||
srcobj->tx.last_ack_rssi;
|
||||
tgtobj->stats.rx.mec_drop.num += srcobj->rx.mec_drop.num;
|
||||
tgtobj->stats.rx.mec_drop.bytes += srcobj->rx.mec_drop.bytes;
|
||||
tgtobj->stats.rx.multipass_rx_pkt_drop +=
|
||||
srcobj->rx.multipass_rx_pkt_drop;
|
||||
}
|
||||
|
||||
static inline void dp_update_pdev_ingress_stats(struct dp_pdev *tgtobj,
|
||||
@@ -774,6 +776,8 @@ static inline void dp_update_vdev_stats(struct cdp_vdev_stats *tgtobj,
|
||||
srcobj->stats.tx.last_ack_rssi;
|
||||
tgtobj->rx.mec_drop.num += srcobj->stats.rx.mec_drop.num;
|
||||
tgtobj->rx.mec_drop.bytes += srcobj->stats.rx.mec_drop.bytes;
|
||||
tgtobj->rx.multipass_rx_pkt_drop +=
|
||||
srcobj->stats.rx.multipass_rx_pkt_drop;
|
||||
}
|
||||
|
||||
#define DP_UPDATE_STATS(_tgtobj, _srcobj) \
|
||||
@@ -868,6 +872,7 @@ static inline void dp_update_vdev_stats(struct cdp_vdev_stats *tgtobj,
|
||||
\
|
||||
_tgtobj->stats.tx.last_ack_rssi = \
|
||||
_srcobj->stats.tx.last_ack_rssi; \
|
||||
DP_STATS_AGGR(_tgtobj, _srcobj, rx.multipass_rx_pkt_drop); \
|
||||
} while (0)
|
||||
|
||||
extern int dp_peer_find_attach(struct dp_soc *soc);
|
||||
|
@@ -4974,6 +4974,7 @@ static struct cdp_vdev *dp_vdev_attach_wifi3(struct cdp_soc_t *cdp_soc,
|
||||
vdev->safemode = 0;
|
||||
vdev->drop_unenc = 1;
|
||||
vdev->sec_type = cdp_sec_type_none;
|
||||
vdev->multipass_en = false;
|
||||
#ifdef notyet
|
||||
vdev->filters_num = 0;
|
||||
#endif
|
||||
|
@@ -2129,7 +2129,13 @@ done:
|
||||
* process frame for mulitpass phrase processing
|
||||
*/
|
||||
if (qdf_unlikely(vdev->multipass_en)) {
|
||||
dp_rx_multipass_process(peer, nbuf, tid);
|
||||
if (dp_rx_multipass_process(peer, nbuf, tid) == false) {
|
||||
DP_STATS_INC(peer, rx.multipass_rx_pkt_drop, 1);
|
||||
qdf_nbuf_free(nbuf);
|
||||
nbuf = next;
|
||||
dp_peer_unref_del_find_by_id(peer);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!dp_wds_rx_policy_check(rx_tlv_hdr, vdev, peer)) {
|
||||
|
@@ -5282,6 +5282,8 @@ void dp_print_peer_stats(struct dp_peer *peer)
|
||||
peer->stats.rx.rx_byte_rate);
|
||||
DP_PRINT_STATS(" Data received in last sec: %d",
|
||||
peer->stats.rx.rx_data_rate);
|
||||
DP_PRINT_STATS("Multipass Rx Packet Drop = %d",
|
||||
peer->stats.rx.multipass_rx_pkt_drop);
|
||||
}
|
||||
|
||||
void dp_print_per_ring_stats(struct dp_soc *soc)
|
||||
|
Reference in New Issue
Block a user