Browse Source

qcacld-3.0: add ini to extend ITO value under WoWLAN mode

Some APs sometimes don't honor Qos null frames under WoWLAN
mode if station's ITO is too small. Introduce a new ini
gActionOUIExtendWowITO to specify AP OUIs which exhibit
this behavior. When connected to such an AP, the station's
ITO value will be extended when in WoWLAN mode.

Change-Id: I41ade7e6a6f5ca8d9b2aac2ae25427ca7fa8fe6b
CRs-Fixed: 3238200
Yu Wang 2 years ago
parent
commit
85e898d01a

+ 3 - 0
components/action_oui/dispatcher/inc/wlan_action_oui_public_struct.h

@@ -93,6 +93,8 @@
  * @ACTION_OUI_DISABLE_AGGRESSIVE_EDCA: disable aggressive EDCA with the ap
  * @ACTION_OUI_DISABLE_TWT: disable TWT with the ap
  * @ACTION_OUI_DISABLE_MU_EDCA: host don't config MU EDCA with the ap
+ * @ACTION_OUI_EXTEND_WOW_ITO: extend ITO under WOW mode if vendor OUI is
+ * received in beacon.
  * @ACTION_OUI_HOST_ONLY: host only action id start - placeholder.
  * New Firmware related "ACTION" needs to be added before this placeholder.
  * @ACTION_OUI_HOST_RECONN: reconnect to the same BSSID when wait for
@@ -112,6 +114,7 @@ enum action_oui_id {
 	ACTION_OUI_DISABLE_AGGRESSIVE_EDCA = 8,
 	ACTION_OUI_DISABLE_TWT = 9,
 	ACTION_OUI_DISABLE_MU_EDCA = 10,
+	ACTION_OUI_EXTEND_WOW_ITO = 11,
 	ACTION_OUI_HOST_ONLY,
 	ACTION_OUI_HOST_RECONN = ACTION_OUI_HOST_ONLY,
 	ACTION_OUI_TAKE_ALL_BAND_INFO,

+ 38 - 0
core/hdd/inc/hdd_config.h

@@ -1343,6 +1343,43 @@ struct dhcp_server {
 	"000CE7 08 00000000BF0CB101 FF 01", \
 	"Used to specify action OUIs to control mu edca configuration")
 
+/*
+ * <ini>
+ * gActionOUIExtendWowITO - Used to extend ITO(Inactivity Time-Out) value under
+ * WoWLAN mode for specified APs.
+ *
+ * @Default: NULL
+ *
+ * Some APs sometimes don't honor Qos null frames under WoWLAN mode if
+ * station's ITO is too small. This ini is used to specify AP OUIs which
+ * exhibit this behavior. When connected to such an AP, the station's ITO
+ * value will be extended when in WoWLAN mode.
+ * For example, it extends the ITO value(under WoWLAN mode) when connected
+ * to AP whose OUI is 001018 and vendor specific data is 0201009C0000 with
+ * the following setting:
+ *     gActionOUIExtendWowITO=001018 06 0201009C0000 FC 01
+ *         OUI: 001018
+ *         OUI data Len : 06
+ *         OUI Data : 0201009C0000
+ *         OUI data Mask: FC - 11111100
+ *         Info Mask : 01 - only OUI present in Info mask
+ * Refer to gEnableActionOUI for more detail about the format.
+ *
+ * Related: gEnableActionOUI
+ *
+ * Supported Feature: Action OUIs
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_ACTION_OUI_EXTEND_WOW_ITO CFG_INI_STRING( \
+	"gActionOUIExtendWowITO", \
+	0, \
+	ACTION_OUI_MAX_STR_LEN, \
+	"", \
+	"Used to extend inactivity time out under WoWLAN mode for specified APs")
+
 /*
  * <ini>
  * gActionOUIReconnAssocTimeout - Used to specify action OUIs to
@@ -1876,6 +1913,7 @@ enum host_log_level {
 	CFG(CFG_ACTION_OUI_FORCE_MAX_NSS) \
 	CFG(CFG_ACTION_OUI_DISABLE_AGGRESSIVE_EDCA) \
 	CFG(CFG_ACTION_OUI_DISABLE_MU_EDCA) \
+	CFG(CFG_ACTION_OUI_EXTEND_WOW_ITO) \
 	CFG(CFG_ACTION_OUI_SWITCH_TO_11N_MODE) \
 	CFG(CFG_ACTION_OUI_RECONN_ASSOCTIMEOUT) \
 	CFG(CFG_ACTION_OUI_DISABLE_TWT) \

+ 3 - 0
core/hdd/src/wlan_hdd_main.c

@@ -13568,6 +13568,9 @@ static void hdd_cfg_params_init(struct hdd_context *hdd_ctx)
 		      cfg_get(psoc,
 			      CFG_ACTION_OUI_DISABLE_MU_EDCA),
 		      ACTION_OUI_MAX_STR_LEN);
+	qdf_str_lcopy(config->action_oui_str[ACTION_OUI_EXTEND_WOW_ITO],
+		      cfg_get(psoc, CFG_ACTION_OUI_EXTEND_WOW_ITO),
+		      ACTION_OUI_MAX_STR_LEN);
 	qdf_str_lcopy(config->action_oui_str[ACTION_OUI_DISABLE_TWT],
 		      cfg_get(psoc, CFG_ACTION_OUI_DISABLE_TWT),
 		      ACTION_OUI_MAX_STR_LEN);