Эх сурвалжийг харах

qcacmn: Handle reorder list overflow

Handle overflow in reorder list.

Change-Id: I15195cb02a53458971090b02b26df5d8d220500a
CRs-Fixed: 3071047
Edayilliam Jayadev 3 жил өмнө
parent
commit
5766b9730c

+ 5 - 1
umac/cmn_services/mgmt_txrx/core/src/wlan_mgmt_txrx_rx_reo.c

@@ -1071,7 +1071,7 @@ mgmt_rx_reo_list_entry_get_release_reason(
 	if (!reo_list || !entry)
 		return 0;
 
-	if (mgmt_rx_reo_list_max_size_exceeded(reo_list))
+	if (MGMT_RX_REO_LIST_ENTRY_IS_MAX_SIZE_EXCEEDED(entry))
 		release_reason |=
 		   MGMT_RX_REO_LIST_ENTRY_RELEASE_REASON_LIST_MAX_SIZE_EXCEEDED;
 
@@ -1255,6 +1255,10 @@ mgmt_rx_reo_list_release_entries(struct mgmt_rx_reo_context *reo_context)
 			goto exit_unlock_list_lock;
 		}
 
+		if (mgmt_rx_reo_list_max_size_exceeded(reo_list))
+			first_entry->status |=
+				MGMT_RX_REO_STATUS_LIST_MAX_SIZE_EXCEEDED;
+
 		status = qdf_list_remove_node(&reo_list->list,
 					      &first_entry->node);
 		if (QDF_IS_STATUS_ERROR(status)) {

+ 3 - 0
umac/cmn_services/mgmt_txrx/core/src/wlan_mgmt_txrx_rx_reo_i.h

@@ -39,6 +39,7 @@
 #define MGMT_RX_REO_STATUS_WAIT_FOR_FRAME_ON_OTHER_LINKS         (BIT(0))
 #define MGMT_RX_REO_STATUS_AGED_OUT                              (BIT(1))
 #define MGMT_RX_REO_STATUS_OLDER_THAN_LATEST_AGED_OUT_FRAME      (BIT(2))
+#define MGMT_RX_REO_STATUS_LIST_MAX_SIZE_EXCEEDED                (BIT(3))
 
 /**
  * TODO: Dummy macro for Maximum MLO links on the system
@@ -61,6 +62,8 @@
 	((entry)->status & MGMT_RX_REO_STATUS_AGED_OUT)
 #define MGMT_RX_REO_LIST_ENTRY_IS_OLDER_THAN_LATEST_AGED_OUT_FRAME(entry)  \
 	((entry)->status & MGMT_RX_REO_STATUS_OLDER_THAN_LATEST_AGED_OUT_FRAME)
+#define MGMT_RX_REO_LIST_ENTRY_IS_MAX_SIZE_EXCEEDED(entry)  \
+	((entry)->status & MGMT_RX_REO_STATUS_LIST_MAX_SIZE_EXCEEDED)
 
 #ifdef WLAN_MGMT_RX_REO_DEBUG_SUPPORT
 #define MGMT_RX_REO_INGRESS_FRAME_DEBUG_ENTRIES_MAX             (1000)