Browse Source

qcacmn: Skip management Rx reorder for CTRL frames

Skip management Rx reorder for all the frame types
other than management.

CRs-Fixed: 3166120
Change-Id: I4b056cf89ee1e1cf3e7d18a51fbe2c09a40d0b66
Edayilliam Jayadev 3 years ago
parent
commit
7685147fb3

+ 10 - 1
umac/cmn_services/mgmt_txrx/dispatcher/src/wlan_mgmt_txrx_rx_reo_tgt_api.c

@@ -239,6 +239,10 @@ QDF_STATUS tgt_mgmt_rx_reo_frame_handler(
 	QDF_STATUS status;
 	struct mgmt_rx_reo_frame_descriptor desc = {0};
 	bool is_queued;
+	int8_t link_id;
+	uint8_t frame_type;
+	uint8_t frame_subtype;
+	struct ieee80211_frame *wh;
 
 	if (!pdev) {
 		mgmt_rx_reo_err("pdev is NULL");
@@ -275,8 +279,13 @@ QDF_STATUS tgt_mgmt_rx_reo_frame_handler(
 	desc.list_size_rx = -1;
 	desc.list_insertion_pos = -1;
 
+	wh = (struct ieee80211_frame *)qdf_nbuf_data(buf);
+	frame_type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK;
+	frame_subtype = wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK;
+
 	/* If REO is not required for this frame, process it right away */
-	if (!is_mgmt_rx_reo_required(pdev, &desc)) {
+	if (frame_type != IEEE80211_FC0_TYPE_MGT ||
+	    !is_mgmt_rx_reo_required(pdev, &desc)) {
 		return tgt_mgmt_txrx_process_rx_frame(pdev, buf,
 						      mgmt_rx_params);
 	}