qcacmn: Enhance the snapshot invalidation logic

Enhance the snapshot invalidation by adding following conditions.

1. (FW consumed snapshot's time stamp, packet counter >= Host snapshot's
   time stamp, packet counter) || (FW consumed snapshot's time stamp,
   packet counter < Host snapshot's time stamp, packet counter).
2. (FW forwarded snapshot's time stamp, packet counter >= Host snapshot's
   time stamp, packet counter) || (FW forwarded snapshot's time stamp,
   packet counter < Host snapshot's time stamp, packet counter).

CRs-Fixed: 3341353
Change-Id: I2ddb715ded8c830b2bdbe702ce6dbfd1facec97e
This commit is contained in:
Edayilliam Jayadev
2022-12-06 13:33:46 +05:30
committed by Madan Koyyalamudi
parent 2b43c860f6
commit 7385e3c88a

View File

@@ -710,6 +710,21 @@ mgmt_rx_reo_invalidate_stale_snapshots
if (!mac_hw_ss->valid)
return QDF_STATUS_SUCCESS;
if (host_ss->valid) {
if (!mgmt_rx_reo_compare_global_timestamps_gte
(mac_hw_ss->global_timestamp,
host_ss->global_timestamp) ||
!mgmt_rx_reo_compare_pkt_ctrs_gte
(mac_hw_ss->mgmt_pkt_ctr,
host_ss->mgmt_pkt_ctr)) {
mgmt_rx_reo_print_snapshots(mac_hw_ss, fw_forwarded_ss,
fw_consumed_ss, host_ss);
mgmt_rx_reo_debug("Invalidate host snapshot, link %u",
link);
host_ss->valid = false;
}
}
if (fw_forwarded_ss->valid) {
if (!mgmt_rx_reo_compare_global_timestamps_gte
(mac_hw_ss->global_timestamp,
@@ -723,6 +738,20 @@ mgmt_rx_reo_invalidate_stale_snapshots
link);
fw_forwarded_ss->valid = false;
}
if (host_ss->valid && fw_forwarded_ss->valid &&
(mgmt_rx_reo_compare_global_timestamps_gte
(host_ss->global_timestamp,
fw_forwarded_ss->global_timestamp) !=
mgmt_rx_reo_compare_pkt_ctrs_gte
(host_ss->mgmt_pkt_ctr,
fw_forwarded_ss->mgmt_pkt_ctr))) {
mgmt_rx_reo_print_snapshots(mac_hw_ss, fw_forwarded_ss,
fw_consumed_ss, host_ss);
mgmt_rx_reo_debug("Invalidate FW forwarded SS, link %u",
link);
fw_forwarded_ss->valid = false;
}
}
if (fw_consumed_ss->valid) {
@@ -738,20 +767,19 @@ mgmt_rx_reo_invalidate_stale_snapshots
link);
fw_consumed_ss->valid = false;
}
}
if (host_ss->valid) {
if (!mgmt_rx_reo_compare_global_timestamps_gte
(mac_hw_ss->global_timestamp,
host_ss->global_timestamp) ||
!mgmt_rx_reo_compare_pkt_ctrs_gte
(mac_hw_ss->mgmt_pkt_ctr,
host_ss->mgmt_pkt_ctr)) {
if (host_ss->valid && fw_consumed_ss->valid &&
(mgmt_rx_reo_compare_global_timestamps_gte
(host_ss->global_timestamp,
fw_consumed_ss->global_timestamp) !=
mgmt_rx_reo_compare_pkt_ctrs_gte
(host_ss->mgmt_pkt_ctr,
fw_consumed_ss->mgmt_pkt_ctr))) {
mgmt_rx_reo_print_snapshots(mac_hw_ss, fw_forwarded_ss,
fw_consumed_ss, host_ss);
mgmt_rx_reo_debug("Invalidate host snapshot, link %u",
mgmt_rx_reo_debug("Invalidate FW consumed SS, link %u",
link);
host_ss->valid = false;
fw_consumed_ss->valid = false;
}
}