瀏覽代碼

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
Edayilliam Jayadev 2 年之前
父節點
當前提交
7385e3c88a
共有 1 個文件被更改,包括 38 次插入10 次删除
  1. 38 10
      umac/cmn_services/mgmt_txrx/core/src/wlan_mgmt_txrx_rx_reo.c

+ 38 - 10
umac/cmn_services/mgmt_txrx/core/src/wlan_mgmt_txrx_rx_reo.c

@@ -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;
 		}
 	}