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
|
* @rx_rssi_measured_time: Time at which rssi is measured
|
||||||
* @rssi: RSSI of received signal
|
* @rssi: RSSI of received signal
|
||||||
* @last_rssi: Previous rssi
|
* @last_rssi: Previous rssi
|
||||||
|
* @multipass_rx_pkt_drop: Dropped multipass rx pkt
|
||||||
*/
|
*/
|
||||||
struct cdp_rx_stats {
|
struct cdp_rx_stats {
|
||||||
struct cdp_pkt_info to_stack;
|
struct cdp_pkt_info to_stack;
|
||||||
@@ -902,6 +903,7 @@ struct cdp_rx_stats {
|
|||||||
uint32_t rx_rssi_measured_time;
|
uint32_t rx_rssi_measured_time;
|
||||||
uint8_t rssi;
|
uint8_t rssi;
|
||||||
uint8_t last_rssi;
|
uint8_t last_rssi;
|
||||||
|
uint32_t multipass_rx_pkt_drop;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* struct cdp_tx_ingress_stats - Tx ingress Stats
|
/* 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;
|
srcobj->tx.last_ack_rssi;
|
||||||
tgtobj->stats.rx.mec_drop.num += srcobj->rx.mec_drop.num;
|
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.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,
|
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;
|
srcobj->stats.tx.last_ack_rssi;
|
||||||
tgtobj->rx.mec_drop.num += srcobj->stats.rx.mec_drop.num;
|
tgtobj->rx.mec_drop.num += srcobj->stats.rx.mec_drop.num;
|
||||||
tgtobj->rx.mec_drop.bytes += srcobj->stats.rx.mec_drop.bytes;
|
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) \
|
#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 = \
|
_tgtobj->stats.tx.last_ack_rssi = \
|
||||||
_srcobj->stats.tx.last_ack_rssi; \
|
_srcobj->stats.tx.last_ack_rssi; \
|
||||||
|
DP_STATS_AGGR(_tgtobj, _srcobj, rx.multipass_rx_pkt_drop); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
extern int dp_peer_find_attach(struct dp_soc *soc);
|
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->safemode = 0;
|
||||||
vdev->drop_unenc = 1;
|
vdev->drop_unenc = 1;
|
||||||
vdev->sec_type = cdp_sec_type_none;
|
vdev->sec_type = cdp_sec_type_none;
|
||||||
|
vdev->multipass_en = false;
|
||||||
#ifdef notyet
|
#ifdef notyet
|
||||||
vdev->filters_num = 0;
|
vdev->filters_num = 0;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -2129,7 +2129,13 @@ done:
|
|||||||
* process frame for mulitpass phrase processing
|
* process frame for mulitpass phrase processing
|
||||||
*/
|
*/
|
||||||
if (qdf_unlikely(vdev->multipass_en)) {
|
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)) {
|
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);
|
peer->stats.rx.rx_byte_rate);
|
||||||
DP_PRINT_STATS(" Data received in last sec: %d",
|
DP_PRINT_STATS(" Data received in last sec: %d",
|
||||||
peer->stats.rx.rx_data_rate);
|
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)
|
void dp_print_per_ring_stats(struct dp_soc *soc)
|
||||||
|
Reference in New Issue
Block a user