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

qcacld-3.0: Add ini to disable some aggressive TX features

Add action_oui ini gActionOUIDisableAggressiveTX to identify peers for
which some of aggressive TX features are to be disabled in firmware,
when DUT is operating in softap mode.

Aggressive TX features disabled are SIFS bursting, assist and support of
more than 32 frames in AMPDU.

Change-Id: I89fb6d40be5110b0331e84ed3239cd997ce0c899
CRs-Fixed: 2364888
Rajeev Kumar Sirasanagandla 6 жил өмнө
parent
commit
7743eb9e03

+ 19 - 5
action_oui/core/src/wlan_action_oui_parse.c

@@ -747,6 +747,9 @@ check_for_vendor_oui_data(struct action_oui_extension *extension,
 	uint8_t i, j, elem_len, data_len;
 	uint8_t data_mask = 0x80;
 
+	if (!oui_ptr)
+		return false;
+
 	elem_len = oui_ptr[1];
 	if (elem_len < extension->oui_length)
 		return false;
@@ -857,6 +860,19 @@ check_for_vendor_ap_capabilities(struct action_oui_extension *extension,
 	return true;
 }
 
+static const uint8_t *
+action_oui_get_oui_ptr(struct action_oui_extension *extension,
+		       struct action_oui_search_attr *attr)
+{
+	if (!attr->ie_data || !attr->ie_length)
+		return NULL;
+
+	return wlan_get_vendor_ie_ptr_from_oui(extension->oui,
+					       extension->oui_length,
+					       attr->ie_data,
+					       attr->ie_length);
+}
+
 bool
 action_oui_search(struct action_oui_psoc_priv *psoc_priv,
 		  struct action_oui_search_attr *attr,
@@ -904,10 +920,8 @@ action_oui_search(struct action_oui_psoc_priv *psoc_priv,
 			wildcard_oui = true;
 		}
 
-		oui_ptr = wlan_get_vendor_ie_ptr_from_oui(extension->oui,
-							 extension->oui_length,
-							 attr->ie_data,
-							 attr->ie_length);
+		oui_ptr = action_oui_get_oui_ptr(extension, attr);
+
 		if (!oui_ptr  && !wildcard_oui) {
 			action_oui_debug("No matching IE found for OUI");
 			QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_PE,
@@ -940,7 +954,7 @@ action_oui_search(struct action_oui_psoc_priv *psoc_priv,
 			goto next;
 		}
 
-		action_oui_debug("Vendor AP found for OUI");
+		action_oui_debug("Vendor AP/STA found for OUI");
 		QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_PE, QDF_TRACE_LEVEL_DEBUG,
 				   extension->oui, extension->oui_length);
 		qdf_mutex_release(&oui_priv->extension_lock);

+ 5 - 0
action_oui/dispatcher/inc/wlan_action_oui_public_struct.h

@@ -84,6 +84,10 @@
  * @ACTION_OUI_CONNECT_1X1: for 1x1 connection only
  * @ACTION_OUI_ITO_EXTENSION: for extending inactivity time of station
  * @ACTION_OUI_CCKM_1X1: for TX with CCKM 1x1 only
+ * @ACTION_OUI_ITO_ALTERNATE: alternate ITO extensions used by firmware
+ * @ACTION_OUI_SWITCH_TO_11N_MODE: connect in 11n
+ * @ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN: connect in 1x1 & disable diversity gain
+ * @ACTION_OUI_DISABLE_AGGRESSIVE_TX: disable aggressive TX in firmware
  * @ACTION_OUI_MAXIMUM_ID: maximun number of action oui types
  */
 enum action_oui_id {
@@ -93,6 +97,7 @@ enum action_oui_id {
 	ACTION_OUI_ITO_ALTERNATE = 3,
 	ACTION_OUI_SWITCH_TO_11N_MODE = 4,
 	ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN = 5,
+	ACTION_OUI_DISABLE_AGGRESSIVE_TX = 6,
 	ACTION_OUI_MAXIMUM_ID
 };
 

+ 1 - 2
action_oui/dispatcher/src/wlan_action_oui_ucfg_api.c

@@ -179,8 +179,7 @@ bool ucfg_action_oui_search(struct wlan_objmgr_psoc *psoc,
 		goto exit;
 	}
 
-	if (action_id >= ACTION_OUI_MAXIMUM_ID ||
-	    !attr->ie_data || !attr->ie_length) {
+	if (action_id >= ACTION_OUI_MAXIMUM_ID) {
 		action_oui_err("Invalid action_oui id: %u", action_id);
 		goto exit;
 	}