qcacmn: Support per-ring CCE protocol tag stats
CCE stats are reported across rings today. Since HKv2 is a SMP, it creates the possibility of missing stats when two or more CPUs are updating the counters for the same protocol type. In order to avoid this, we can either use locks or store stats on a per-CPU basis. Since tagging happens on the core data path, locks are not preferred. Instead, we use a per-ring counter, since each CPU operates on a REO ring. Exception packets today go to Ring-0 (also normal rx Reo-0 go to Ring-0). Hence tags are maintained separately for exception ring as well. Change-Id: Ib01934619fb026bf64a8ac998eaec2d4df7f5a6e CRs-Fixed: 2438143
This commit is contained in:

committed by
nshrivas

parent
b292dd7b1a
commit
d8c7ad2228
@@ -820,8 +820,9 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc, qdf_nbuf_t nbuf,
|
||||
* Update the protocol tag in SKB based on
|
||||
* CCE metadata
|
||||
*/
|
||||
dp_rx_update_protocol_tag(soc, vdev, nbuf,
|
||||
rx_tlv_hdr, true);
|
||||
dp_rx_update_protocol_tag(soc, vdev, nbuf, rx_tlv_hdr,
|
||||
EXCEPTION_DEST_RING_ID,
|
||||
true, true);
|
||||
|
||||
if (qdf_unlikely(hal_rx_msdu_end_da_is_mcbc_get(
|
||||
rx_tlv_hdr) &&
|
||||
@@ -1000,8 +1001,8 @@ process_rx:
|
||||
dp_rx_deliver_raw(vdev, nbuf, peer);
|
||||
} else {
|
||||
/* Update the protocol tag in SKB based on CCE metadata */
|
||||
dp_rx_update_protocol_tag(soc, vdev, nbuf,
|
||||
rx_tlv_hdr, true);
|
||||
dp_rx_update_protocol_tag(soc, vdev, nbuf, rx_tlv_hdr,
|
||||
EXCEPTION_DEST_RING_ID, true, true);
|
||||
DP_STATS_INC(peer, rx.to_stack.num, 1);
|
||||
vdev->osif_rx(vdev->osif_vdev, nbuf);
|
||||
}
|
||||
|
Reference in New Issue
Block a user