Prechádzať zdrojové kódy

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 rokov pred
rodič
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 i, j, elem_len, data_len;
 	uint8_t data_mask = 0x80;
 	uint8_t data_mask = 0x80;
 
 
+	if (!oui_ptr)
+		return false;
+
 	elem_len = oui_ptr[1];
 	elem_len = oui_ptr[1];
 	if (elem_len < extension->oui_length)
 	if (elem_len < extension->oui_length)
 		return false;
 		return false;
@@ -857,6 +860,19 @@ check_for_vendor_ap_capabilities(struct action_oui_extension *extension,
 	return true;
 	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
 bool
 action_oui_search(struct action_oui_psoc_priv *psoc_priv,
 action_oui_search(struct action_oui_psoc_priv *psoc_priv,
 		  struct action_oui_search_attr *attr,
 		  struct action_oui_search_attr *attr,
@@ -904,10 +920,8 @@ action_oui_search(struct action_oui_psoc_priv *psoc_priv,
 			wildcard_oui = true;
 			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) {
 		if (!oui_ptr  && !wildcard_oui) {
 			action_oui_debug("No matching IE found for OUI");
 			action_oui_debug("No matching IE found for OUI");
 			QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_PE,
 			QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_PE,
@@ -940,7 +954,7 @@ action_oui_search(struct action_oui_psoc_priv *psoc_priv,
 			goto next;
 			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,
 		QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_PE, QDF_TRACE_LEVEL_DEBUG,
 				   extension->oui, extension->oui_length);
 				   extension->oui, extension->oui_length);
 		qdf_mutex_release(&oui_priv->extension_lock);
 		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_CONNECT_1X1: for 1x1 connection only
  * @ACTION_OUI_ITO_EXTENSION: for extending inactivity time of station
  * @ACTION_OUI_ITO_EXTENSION: for extending inactivity time of station
  * @ACTION_OUI_CCKM_1X1: for TX with CCKM 1x1 only
  * @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
  * @ACTION_OUI_MAXIMUM_ID: maximun number of action oui types
  */
  */
 enum action_oui_id {
 enum action_oui_id {
@@ -93,6 +97,7 @@ enum action_oui_id {
 	ACTION_OUI_ITO_ALTERNATE = 3,
 	ACTION_OUI_ITO_ALTERNATE = 3,
 	ACTION_OUI_SWITCH_TO_11N_MODE = 4,
 	ACTION_OUI_SWITCH_TO_11N_MODE = 4,
 	ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN = 5,
 	ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN = 5,
+	ACTION_OUI_DISABLE_AGGRESSIVE_TX = 6,
 	ACTION_OUI_MAXIMUM_ID
 	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;
 		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);
 		action_oui_err("Invalid action_oui id: %u", action_id);
 		goto exit;
 		goto exit;
 	}
 	}