qcacmn: per-peer protocol count tracking

Maintain packet counters for each peer based on protocol. Following 3
protocols are supported
* ICMP (IPv4)
* ARP (IPv4)
* EAP

Change-Id: I56dd9bbedd7b6698b7d155a524b242e8cabd76c3
CRs-Fixed: 2604877
此提交包含在:
Adil Saeed Musthafa
2019-12-12 14:34:44 -08:00
提交者 nshrivas
父節點 ab1127c636
當前提交 bbc4de06d7
共有 10 個檔案被更改,包括 538 行新增1 行删除

查看文件

@@ -1070,6 +1070,31 @@ static void dp_tx_raw_prepare_unset(struct dp_soc *soc,
} while (cur_nbuf);
}
#ifdef VDEV_PEER_PROTOCOL_COUNT
#define dp_vdev_peer_stats_update_protocol_cnt_tx(vdev_hdl, nbuf) \
{ \
qdf_nbuf_t nbuf_local; \
struct dp_vdev *vdev_local = vdev_hdl; \
do { \
if (qdf_likely(!((vdev_local)->peer_protocol_count_track))) \
break; \
nbuf_local = nbuf; \
if (qdf_unlikely(((vdev_local)->tx_encap_type) == \
htt_cmn_pkt_type_raw)) \
break; \
else if (qdf_unlikely(qdf_nbuf_is_nonlinear((nbuf_local)))) \
break; \
else if (qdf_nbuf_is_tso((nbuf_local))) \
break; \
dp_vdev_peer_stats_update_protocol_cnt((vdev_local), \
(nbuf_local), \
NULL, 1, 0); \
} while (0); \
}
#else
#define dp_vdev_peer_stats_update_protocol_cnt_tx(vdev_hdl, skb)
#endif
/**
* dp_tx_hw_enqueue() - Enqueue to TCL HW for transmit
* @soc: DP Soc Handle
@@ -1181,6 +1206,7 @@ static QDF_STATUS dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev,
}
tx_desc->flags |= DP_TX_DESC_FLAG_QUEUED_TX;
dp_vdev_peer_stats_update_protocol_cnt_tx(vdev, tx_desc->nbuf);
hal_tx_desc_sync(hal_tx_desc_cached, hal_tx_desc);
DP_STATS_INC_PKT(vdev, tx_i.processed, 1, length);