Browse Source

qcacld-3.0: Relocate HDD ini items (2)

Relocate the following CFG INI Items to the new infrastructure.

1. CFG_INTF0_MAC_ADDR_NAME
2. CFG_INTF1_MAC_ADDR_NAME
3. CFG_INTF2_MAC_ADDR_NAME
4. CFG_INTF3_MAC_ADDR_NAME
5. CFG_ACTION_OUI_CONNECT_1X1_NAME
6. CFG_ACTION_OUI_ITO_EXTENSION_NAME
7. CFG_ACTION_OUI_CCKM_1X1_NAME
8. CFG_ACTION_OUI_ITO_ALTERNATE_NAME
9. CFG_ACTION_OUI_SWITCH_TO_11N_MODE_NAME
10. CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN_NAME
11. CFG_ENABLE_ACTION_OUI

Change-Id: I6984096719a5abd7fa4f0a4f6641a17d29348332
CRs-Fixed: 2357175
Sourav Mohapatra 6 years ago
parent
commit
588410643b
4 changed files with 470 additions and 490 deletions
  1. 443 1
      core/hdd/inc/hdd_config.h
  2. 1 426
      core/hdd/inc/wlan_hdd_cfg.h
  3. 0 61
      core/hdd/src/wlan_hdd_cfg.c
  4. 26 2
      core/hdd/src/wlan_hdd_main.c

+ 443 - 1
core/hdd/inc/hdd_config.h

@@ -30,6 +30,7 @@
 #endif
 
 #define CFG_QDF_TRACE_ENABLE_DEFAULT (0xffff)
+#include <wlan_action_oui_public_struct.h>
 
 /**
  * enum hdd_wext_control - knob for wireless extensions
@@ -568,21 +569,462 @@ enum hdd_wext_control {
 			"", \
 			"DBS Scan Selection")
 
+
+/*
+ * <ini>
+ * Intf0MacAddress - Interface address
+ * @Default: 000AF58989FF
+ *
+ * Related: None
+ *
+ * Supported Feature: N/A
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define __CFG_INTF0_MAC_ADDR_DEFAULT \
+	{.bytes = {0x00, 0x0a, 0xf5, 0x89, 0x89, 0xff} }
+#define CFG_INTF0_MAC_ADDR CFG_INI_MAC( \
+	"Intf0MacAddress", \
+	__CFG_INTF0_MAC_ADDR_DEFAULT, \
+	"Interface 0 MAC Address")
+
+/*
+ * <ini>
+ * Intf1MacAddress - Interface address
+ * @Default: 000AF58989FE
+ *
+ * Related: None
+ *
+ * Supported Feature: N/A
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define __CFG_INTF1_MAC_ADDR_DEFAULT \
+	{.bytes = {0x00, 0x0a, 0xf5, 0x89, 0x89, 0xfe} }
+#define CFG_INTF1_MAC_ADDR CFG_INI_MAC( \
+	"Intf1MacAddress", \
+	__CFG_INTF1_MAC_ADDR_DEFAULT, \
+	"Interface 1 MAC Address")
+
+/*
+ * <ini>
+ * Intf2MacAddress - Interface address
+ * @Default: 000AF58989FD
+ *
+ * Related: None
+ *
+ * Supported Feature: N/A
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define __CFG_INTF2_MAC_ADDR_DEFAULT \
+	{.bytes = {0x00, 0x0a, 0xf5, 0x89, 0x89, 0xfd} }
+#define CFG_INTF2_MAC_ADDR CFG_INI_MAC( \
+	"Intf2MacAddress", \
+	__CFG_INTF2_MAC_ADDR_DEFAULT, \
+	"Interface 2 MAC Address")
+
+/*
+ * <ini>
+ * Intf3MacAddress - Interface address
+ * @Default: 000AF58989FC
+ *
+ * Related: None
+ *
+ * Supported Feature: N/A
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define __CFG_INTF3_MAC_ADDR_DEFAULT \
+	{.bytes = {0x00, 0x0a, 0xf5, 0x89, 0x89, 0xfc} }
+#define CFG_INTF3_MAC_ADDR CFG_INI_MAC( \
+	"Intf3MacAddress", \
+	__CFG_INTF3_MAC_ADDR_DEFAULT, \
+	"Interface 3 MAC Address")
+
+/*
+ * Start of action oui inis
+ *
+ * To enable action oui feature, set gEnableActionOUI
+ *
+ * Each action oui is expected in the following format:
+ * <Extension 1> <Extension 2> ..... <Extension 10> (maximum 10)
+ *
+ * whereas, each Extension is separated by space and have the following format:
+ * <Token1> <Token2> <Token3> <Token4> <Token5> <Token6> <Token7> <Token8>
+ * where each Token is a string of hexa-decimal digits and
+ * following are the details about each token
+ *
+ * Token1 = OUI
+ * Token2 = Data_Length
+ * Token3 = Data
+ * Token4 = Data_Mask
+ * Token5 = Info_Presence_Bit
+ * Token6 = MAC_Address
+ * Token7 = Mac_Address Mask
+ * Token8 = Capability
+ *
+ * <OUI> is mandatory and it can be either 3 or 5 bytes means 6 or 10
+ * hexa-decimal characters
+ * If the OUI and Data checks needs to be ignored, the oui FFFFFF
+ * needs to be provided as OUI and bit 0 of Info_Presence_Bit should
+ * be set to 0.
+ *
+ * <Data_Length> is mandatory field and should give length of
+ * the <Data> if present else zero
+ *
+ * Presence of <Data> is controlled by <Data_Length>, if <Data_Length> is 0,
+ * then <Data> is not expected else Data of the size Data Length bytes are
+ * expected which means the length of Data string is 2 * Data Length,
+ * since every byte constitutes two hexa-decimal characters.
+ *
+ * <Data_Mask> is mandatory if <Data> is present and length of the
+ * Data mask string depends on the <Data Length>
+ * If <Data Length> is 06, then length of Data Mask string is
+ * 2 characters (represents 1 byte)
+ * data_mask_length = ((Data_Length - (Data_Length % 8)) / 8) +
+ *		      ((Data_Length % 8) ? 1 : 0)
+ * and <Data_Mask> has to be constructed from left to right.
+ *
+ * Presence of <Mac_Address> and <Capability> is
+ * controlled by <Info_Presence_Bit> which is mandatory
+ * <Info_Presence_Bit> will give the information for
+ *   OUI – bit 0 Should be set to 1
+ *		 Setting to 0 will ignore OUI and data check
+ *   Mac Address present – bit 1
+ *   NSS – bit 2
+ *   HT check – bit 3
+ *   VHT check – bit 4
+ *   Band info – bit 5
+ *   reserved – bit 6 (should always be zero)
+ *   reserved – bit 7 (should always be zero)
+ * and should be constructed from right to left (b7b6b5b4b3b2b1b0)
+ *
+ * <Mac_Address_Mask> for <Mac_Address> should be constructed from left to right
+ *
+ * <Capability> is 1 byte long and it contains the below info
+ *   NSS – 4 bits starting from LSB (b0 – b3)
+ *   HT enabled – bit 4
+ *   VHT enabled – bit 5
+ *   2G band – bit 6
+ *   5G band – bit 7
+ * and should be constructed from right to left (b7b6b5b4b3b2b1b0)
+ * <Capability> is present if atleast one of the bit is set
+ * from b2 - b6 in <Info_Presence_Bit>
+ *
+ * Example 1:
+ *
+ * OUI is 00-10-18, data length is 05 (hex form), data is 02-11-04-5C-DE and
+ * need to consider first 3 bytes and last byte of data for comparision
+ * mac-addr EE-1A-59-FE-FD-AF is present and first 3 bytes and last byte of
+ * mac address should be considered for comparision
+ * capability is not present
+ * then action OUI for gActionOUIITOExtension is as follows:
+ *
+ * gActionOUIITOExtension=001018 05 0211045CDE E8 03 EE1A59FEFDAF E4
+ *
+ * data mask calculation in above example:
+ * Data[0] = 02 ---- d0 = 1
+ * Data[1] = 11 ---- d1 = 1
+ * Data[2] = 04 ---- d2 = 1
+ * Data[3] = 5C ---- d3 = 0
+ * Data[4] = DE ---- d4 = 1
+ * data_mask = d0d1d2d3d4 + append with zeros to complete 8-bit = 11101000 = E8
+ *
+ * mac mask calculation in above example:
+ * mac_addr[0] = EE ---- m0 = 1
+ * mac_addr[1] = 1A ---- m1 = 1
+ * mac_addr[2] = 59 ---- m2 = 1
+ * mac_addr[3] = FE ---- m3 = 0
+ * mac_addr[4] = FD ---- m4 = 0
+ * mac_addr[5] = AF ---- m5 = 1
+ * mac_mask = m0m1m2m3m4m5 + append with zeros to complete 8-bit = 11100100 = E4
+ *
+ * Example 2:
+ *
+ * OUI is 00-10-18, data length is 00 and no Mac Address and capability
+ *
+ * gActionOUIITOExtension=001018 00 01
+ *
+ */
+
+#define CFG_ACTION_OUI_MAX_LEN 256
+
+/*
+ * <ini>
+ * gEnableActionOUI - Enable/Disable action oui feature
+ * @Min: 0 (disable)
+ * @Max: 1 (enable)
+ * @Default: 1 (enable)
+ *
+ * This ini is used to enable the action oui feature to control
+ * mode of connection, connected AP's in-activity time, Tx rate etc.,
+ *
+ * Related: If gEnableActionOUI is set, then at least one of the following inis
+ * must be set with the proper action oui extensions:
+ * gActionOUIConnect1x1, gActionOUIITOExtension, gActionOUICCKM1X1
+ *
+ * Supported Feature: action ouis
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_ENABLE_ACTION_OUI CFG_INI_BOOL( \
+	"gEnableActionOUI", \
+	1, \
+	"Enable/Disable action oui feature")
+
+/*
+ * <ini>
+ * gActionOUIConnect1x1 - Used to specify action OUIs for 1x1 connection
+ * @Default: 000C43 00 25 42 001018 06 02FFF02C0000 BC 25 42 001018 06 02FF040C0000 BC 25 42 00037F 00 35 6C
+ * Note: User should strictly add new action OUIs at the end of this
+ * default value.
+ *
+ * Default OUIs: (All values in Hex)
+ * OUI 1 : 000C43
+ *   OUI data Len : 00
+ *   Info Mask : 25 - Check for NSS and Band
+ *   Capabilities: 42 - NSS == 2 && Band == 2G
+ * OUI 2 : 001018
+ *   OUI data Len : 06
+ *   OUI Data : 02FFF02C0000
+ *   OUI data Mask: BC - 10111100
+ *   Info Mask : 25 - Check for NSS and Band
+ *   Capabilities: 42 - NSS == 2 && Band == 2G
+ * OUI 3 : 001018
+ *   OUI data Len : 06
+ *   OUI Data : 02FF040C0000
+ *   OUI data Mask: BC - 10111100
+ *   Info Mask : 25 - Check for NSS and Band
+ *   Capabilities: 42 - NSS == 2 && Band == 2G
+ * OUI 4 : 00037F
+ *   OUI data Len : 00
+ *   Info Mask : 35 - Check for NSS, VHT Caps and Band
+ *   Capabilities: 6C - (NSS == 3 or 4) && VHT Caps Preset && Band == 2G
+ *
+ * This ini is used to specify the AP OUIs with which only 1x1 connection
+ * is allowed.
+ *
+ * Related: None
+ *
+ * Supported Feature: Action OUIs
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_ACTION_OUI_CONNECT_1X1 CFG_INI_STRING( \
+	"gActionOUIConnect1x1", \
+	0, \
+	ACTION_OUI_MAX_STR_LEN, \
+	"000C43 00 25 42 001018 06 02FFF02C0000 BC 25 42 001018 06 02FF040C0000 BC 25 42 00037F 00 35 6C", \
+	"Used to specify action OUIs for 1x1 connection")
+
+/*
+ * <ini>
+ * gActionOUIITOExtension - Used to extend in-activity time for specified APs
+ * @Default: 00037F 06 01010000FF7F FC 01 000AEB 02 0100 C0 01 000B86 03 010408 E0 01
+ * Note: User should strictly add new action OUIs at the end of this
+ * default value.
+ *
+ * Default OUIs: (All values in Hex)
+ * OUI 1: 00037F
+ *   OUI data Len: 06
+ *   OUI Data: 01010000FF7F
+ *   OUI data Mask: FC - 11111100
+ *   Info Mask : 01 - only OUI present in Info mask
+ *
+ * OUI 2: 000AEB
+ *   OUI data Len: 02
+ *   OUI Data: 0100
+ *   OUI data Mask: C0 - 11000000
+ *   Info Mask : 01 - only OUI present in Info mask
+ *
+ * OUI 3: 000B86
+ *   OUI data Len: 03
+ *   OUI Data: 010408
+ *   OUI data Mask: E0 - 11100000
+ *   Info Mask : 01 - only OUI present in Info mask
+ *
+ * This ini is used to specify AP OUIs using which station's in-activity time
+ * can be extended with the respective APs
+ *
+ * Related: None
+ *
+ * Supported Feature: Action OUIs
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_ACTION_OUI_ITO_EXTENSION CFG_INI_STRING( \
+	"gActionOUIITOExtension", \
+	0, \
+	ACTION_OUI_MAX_STR_LEN, \
+	"00037F 06 01010000FF7F FC 01 000AEB 02 0100 C0 01 000B86 03 010408 E0 01", \
+	"Used to extend in-activity time for specified APs")
+
+/*
+ * <ini>
+ * gActionOUICCKM1X1 - Used to specify action OUIs to control station's TX rates
+ *
+ * This ini is used to specify AP OUIs for which station's CCKM TX rates
+ * should be 1x1 only.
+ *
+ * Related: None
+ *
+ * Supported Feature: Action OUIs
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_ACTION_OUI_CCKM_1X1 CFG_INI_STRING( \
+	"gActionOUICCKM1X1", \
+	0, \
+	ACTION_OUI_MAX_STR_LEN, \
+	"", \
+	"Used to specify action OUIs to control station's TX rates")
+
+/*
+ * <ini>
+ * gActionOUIITOAlternate - Used to specify action OUIs to have alternate ITO in
+ * weak RSSI state
+ *
+ * This ini is used to specify AP OUIs for which the stations will have
+ * alternate ITOs for the case when the RSSI is weak.
+ *
+ * Related: None
+ *
+ * Supported Feature: Action OUIs
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_ACTION_OUI_ITO_ALTERNATE CFG_INI_STRING( \
+	"gActionOUIITOAlternate", \
+	0, \
+	ACTION_OUI_MAX_STR_LEN, \
+	"001018 06 0202001c0000 FC 01", \
+	"Used to specify action OUIs to have alternate ITO")
+
+/*
+ * <ini>
+ * gActionOUISwitchTo11nMode - Used to specify action OUIs for switching to 11n
+ *
+ * This ini is used to specify which AP for which the connection has to be
+ * made in 2x2 mode with HT capabilities only and not VHT.
+ *
+ * Default OUIs: (All values in Hex)
+ * OUI 1 : 00904C
+ *   OUI data Len : 03
+ *   OUI Data : 0418BF
+ *   OUI data Mask: E0 - 11100000
+ *   Info Mask : 21 - Check for Band
+ *   Capabilities: 40 - Band == 2G
+ *
+ * Related: None
+ *
+ * Supported Feature: Action OUIs
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_ACTION_OUI_SWITCH_TO_11N_MODE CFG_INI_STRING( \
+	"gActionOUISwitchTo11nMode", \
+	0, \
+	ACTION_OUI_MAX_STR_LEN, \
+	"00904C 03 0418BF E0 21 40", \
+	"Used to specify action OUIs for switching to 11n")
+
+/*
+ * <ini>
+ * gActionOUIConnect1x1with1TxRxChain - Used to specify action OUIs for
+ *					 1x1 connection with one Tx/Rx Chain
+ * @Default:
+ * Note: User should strictly add new action OUIs at the end of this
+ * default value.
+ *
+ * Default OUIs: (All values in Hex)
+ * OUI 1 : 001018
+ *   OUI data Len : 06
+ *   OUI Data : 02FFF0040000
+ *   OUI data Mask: BC - 10111100
+ *   Info Mask : 21 - Check for Band
+ *   Capabilities: 40 - Band == 2G
+ *
+ * OUI 2 : 001018
+ *   OUI data Len : 06
+ *   OUI Data : 02FFF0050000
+ *   OUI data Mask: BC - 10111100
+ *   Info Mask : 21 - Check for Band
+ *   Capabilities: 40 - Band == 2G
+ *
+ * OUI 3 : 001018
+ *   OUI data Len : 06
+ *   OUI Data : 02FFF4050000
+ *   OUI data Mask: BC - 10111100
+ *   Info Mask : 21 - Check for Band
+ *   Capabilities: 40 - Band == 2G
+ *
+ * This ini is used to specify the AP OUIs with which only 1x1 connection
+ * with one Tx/Rx Chain is allowed.
+ *
+ * Related: gEnableActionOUI
+ *
+ * Supported Feature: Action OUIs
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN CFG_INI_STRING( \
+	 "gActionOUIConnect1x1with1TxRxChain", \
+	 0, \
+	 ACTION_OUI_MAX_STR_LEN, \
+	 "001018 06 02FFF0040000 BC 21 40 001018 06 02FFF0050000 BC 21 40 001018 06 02FFF4050000 BC 21 40", \
+	 "Used to specify action OUIs for 1x1 connection with one Tx/Rx Chain")
+
+ /* End of action oui inis */
+
 #define CFG_HDD_ALL \
 	CFG_ENABLE_PACKET_LOG_ALL \
 	CFG_ENABLE_RUNTIME_PM_ALL \
 	CFG_VC_MODE_BITMAP_ALL \
 	CFG_WLAN_AUTO_SHUTDOWN_ALL \
 	CFG_WLAN_LOGGING_SUPPORT_ALL \
+	CFG(CFG_ACTION_OUI_CCKM_1X1) \
+	CFG(CFG_ACTION_OUI_CONNECT_1X1) \
+	CFG(CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN) \
+	CFG(CFG_ACTION_OUI_ITO_ALTERNATE) \
+	CFG(CFG_ACTION_OUI_ITO_EXTENSION) \
+	CFG(CFG_ACTION_OUI_SWITCH_TO_11N_MODE) \
 	CFG(CFG_BUG_ON_REINIT_FAILURE) \
 	CFG(CFG_DBS_SCAN_SELECTION) \
 	CFG(CFG_ENABLE_CONCURRENT_STA) \
+	CFG(CFG_ENABLE_ACTION_OUI) \
 	CFG(CFG_ENABLE_FW_LOG) \
 	CFG(CFG_ENABLE_FW_UART_PRINT) \
-	CFG(CFG_ENABLE_RAMDUMP_COLLECTION) \
 	CFG(CFG_ENABLE_MCC_ENABLED) \
+	CFG(CFG_ENABLE_RAMDUMP_COLLECTION) \
 	CFG(CFG_INTERFACE_CHANGE_WAIT) \
 	CFG(CFG_INFORM_BSS_RSSI_RAW) \
+	CFG(CFG_INTF0_MAC_ADDR) \
+	CFG(CFG_INTF1_MAC_ADDR) \
+	CFG(CFG_INTF2_MAC_ADDR) \
+	CFG(CFG_INTF3_MAC_ADDR) \
 	CFG(CFG_MULTICAST_HOST_FW_MSGS) \
 	CFG(CFG_NUM_VDEV_ENABLE) \
 	CFG(CFG_OPERATING_CHANNEL) \

+ 1 - 426
core/hdd/inc/wlan_hdd_cfg.h

@@ -1494,102 +1494,6 @@ enum hdd_dot11_mode {
 #define CFG_LATENCY_FLAGS_ULTRALOW_MAX     (0xffffffff)
 #define CFG_LATENCY_FLAGS_ULTRALOW_DEFAULT (0xc83)
 
-/*
- * <ini>
- * Intf0MacAddress - Default MAC address of VIF0
- * @Min: 000000000000
- * @Max: ffffffffffff
- * @Default: 000AF58989FF
- *
- * This ini is used to set the default MAC address of virtual interface 0
- * created by WLAN driver.
- *
- * Related: None.
- *
- * Supported Feature: SAP
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-
-#define CFG_INTF0_MAC_ADDR_NAME                  "Intf0MacAddress"
-#define CFG_INTF0_MAC_ADDR_MIN                   "000000000000"
-#define CFG_INTF0_MAC_ADDR_MAX                   "ffffffffffff"
-#define CFG_INTF0_MAC_ADDR_DEFAULT               "000AF58989FF"
-
-/*
- * <ini>
- * Intf1MacAddress - Default MAC address of VIF1
- * @Min: 000000000000
- * @Max: ffffffffffff
- * @Default: 000AF58989FE
- *
- * This ini is used to set the default MAC address of virtual interface 1
- * created by WLAN driver.
- *
- * Related: None.
- *
- * Supported Feature: SAP
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-
-#define CFG_INTF1_MAC_ADDR_NAME                  "Intf1MacAddress"
-#define CFG_INTF1_MAC_ADDR_MIN                   "000000000000"
-#define CFG_INTF1_MAC_ADDR_MAX                   "ffffffffffff"
-#define CFG_INTF1_MAC_ADDR_DEFAULT               "000AF58989FE"
-
-/*
- * <ini>
- * Intf2MacAddress - Default MAC address of VIF2
- * @Min: 000000000000
- * @Max: ffffffffffff
- * @Default: 000AF58989FD
- *
- * This ini is used to set the default MAC address of virtual interface 2
- * created by WLAN driver.
- *
- * Related: None.
- *
- * Supported Feature: SAP
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-
-#define CFG_INTF2_MAC_ADDR_NAME                  "Intf2MacAddress"
-#define CFG_INTF2_MAC_ADDR_MIN                   "000000000000"
-#define CFG_INTF2_MAC_ADDR_MAX                   "ffffffffffff"
-#define CFG_INTF2_MAC_ADDR_DEFAULT               "000AF58989FD"
-
-/*
- * <ini>
- * Intf3MacAddress - Default MAC address of VIF3
- * @Min: 000000000000
- * @Max: ffffffffffff
- * @Default: 000AF58989FC
- *
- * This ini is used to set the default MAC address of virtual interface 3
- * created by WLAN driver.
- *
- * Related: None.
- *
- * Supported Feature: SAP
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-
-#define CFG_INTF3_MAC_ADDR_NAME                  "Intf3MacAddress"
-#define CFG_INTF3_MAC_ADDR_MIN                   "000000000000"
-#define CFG_INTF3_MAC_ADDR_MAX                   "ffffffffffff"
-#define CFG_INTF3_MAC_ADDR_DEFAULT               "000AF58989FC"
-
 /*
  * <ini>
  * gDot11Mode - SAP phy mode
@@ -4098,335 +4002,6 @@ enum hdd_link_speed_rpt_type {
 #define CFG_TX_SCH_DELAY_MAX           (5)
 #define CFG_TX_SCH_DELAY_DEFAULT       (0)
 
-/*
- * Start of action oui inis
- *
- * To enable action oui feature, set gEnableActionOUI
- *
- * Each action oui is expected in the following format:
- * <Extension 1> <Extension 2> ..... <Extension 10> (maximum 10)
- *
- * whereas, each Extension is separated by space and have the following format:
- * <Token1> <Token2> <Token3> <Token4> <Token5> <Token6> <Token7> <Token8>
- * where each Token is a string of hexa-decimal digits and
- * following are the details about each token
- *
- * Token1 = OUI
- * Token2 = Data_Length
- * Token3 = Data
- * Token4 = Data_Mask
- * Token5 = Info_Presence_Bit
- * Token6 = MAC_Address
- * Token7 = Mac_Address Mask
- * Token8 = Capability
- *
- * <OUI> is mandatory and it can be either 3 or 5 bytes means 6 or 10
- * hexa-decimal characters
- * If the OUI and Data checks needs to be ignored, the oui FFFFFF
- * needs to be provided as OUI and bit 0 of Info_Presence_Bit should
- * be set to 0.
- *
- * <Data_Length> is mandatory field and should give length of
- * the <Data> if present else zero
- *
- * Presence of <Data> is controlled by <Data_Length>, if <Data_Length> is 0,
- * then <Data> is not expected else Data of the size Data Length bytes are
- * expected which means the length of Data string is 2 * Data Length,
- * since every byte constitutes two hexa-decimal characters.
- *
- * <Data_Mask> is mandatory if <Data> is present and length of the
- * Data mask string depends on the <Data Length>
- * If <Data Length> is 06, then length of Data Mask string is
- * 2 characters (represents 1 byte)
- * data_mask_length = ((Data_Length - (Data_Length % 8)) / 8) +
- *                    ((Data_Length % 8) ? 1 : 0)
- * and <Data_Mask> has to be constructed from left to right.
- *
- * Presence of <Mac_Address> and <Capability> is
- * controlled by <Info_Presence_Bit> which is mandatory
- * <Info_Presence_Bit> will give the information for
- *   OUI – bit 0 Should be set to 1
- *               Setting to 0 will ignore OUI and data check
- *   Mac Address present – bit 1
- *   NSS – bit 2
- *   HT check – bit 3
- *   VHT check – bit 4
- *   Band info – bit 5
- *   reserved – bit 6 (should always be zero)
- *   reserved – bit 7 (should always be zero)
- * and should be constructed from right to left (b7b6b5b4b3b2b1b0)
- *
- * <Mac_Address_Mask> for <Mac_Address> should be constructed from left to right
- *
- * <Capability> is 1 byte long and it contains the below info
- *   NSS – 4 bits starting from LSB (b0 – b3)
- *   HT enabled – bit 4
- *   VHT enabled – bit 5
- *   2G band – bit 6
- *   5G band – bit 7
- * and should be constructed from right to left (b7b6b5b4b3b2b1b0)
- * <Capability> is present if atleast one of the bit is set
- * from b2 - b6 in <Info_Presence_Bit>
- *
- * Example 1:
- *
- * OUI is 00-10-18, data length is 05 (hex form), data is 02-11-04-5C-DE and
- * need to consider first 3 bytes and last byte of data for comparision
- * mac-addr EE-1A-59-FE-FD-AF is present and first 3 bytes and last byte of
- * mac address should be considered for comparision
- * capability is not present
- * then action OUI for gActionOUIITOExtension is as follows:
- *
- * gActionOUIITOExtension=001018 05 0211045CDE E8 03 EE1A59FEFDAF E4
- *
- * data mask calculation in above example:
- * Data[0] = 02 ---- d0 = 1
- * Data[1] = 11 ---- d1 = 1
- * Data[2] = 04 ---- d2 = 1
- * Data[3] = 5C ---- d3 = 0
- * Data[4] = DE ---- d4 = 1
- * data_mask = d0d1d2d3d4 + append with zeros to complete 8-bit = 11101000 = E8
- *
- * mac mask calculation in above example:
- * mac_addr[0] = EE ---- m0 = 1
- * mac_addr[1] = 1A ---- m1 = 1
- * mac_addr[2] = 59 ---- m2 = 1
- * mac_addr[3] = FE ---- m3 = 0
- * mac_addr[4] = FD ---- m4 = 0
- * mac_addr[5] = AF ---- m5 = 1
- * mac_mask = m0m1m2m3m4m5 + append with zeros to complete 8-bit = 11100100 = E4
- *
- * Example 2:
- *
- * OUI is 00-10-18, data length is 00 and no Mac Address and capability
- *
- * gActionOUIITOExtension=001018 00 01
- *
- */
-
-/*
- * <ini>
- * gEnableActionOUI - Enable/Disable action oui feature
- * @Min: 0 (disable)
- * @Max: 1 (enable)
- * @Default: 1 (enable)
- *
- * This ini is used to enable the action oui feature to control
- * mode of connection, connected AP's in-activity time, Tx rate etc.,
- *
- * Related: If gEnableActionOUI is set, then at least one of the following inis
- * must be set with the proper action oui extensions:
- * gActionOUIConnect1x1, gActionOUIITOExtension, gActionOUICCKM1X1
- *
- * Supported Feature: action ouis
- *
- * Usage: External
- *
- * </ini>
- */
-#define CFG_ENABLE_ACTION_OUI         "gEnableActionOUI"
-#define CFG_ENABLE_ACTION_OUI_MIN     (0)
-#define CFG_ENABLE_ACTION_OUI_MAX     (1)
-#define CFG_ENABLE_ACTION_OUI_DEFAULT (1)
-
-/*
- * <ini>
- * gActionOUIConnect1x1 - Used to specify action OUIs for 1x1 connection
- * @Default: 000C43 00 25 42 001018 06 02FFF02C0000 BC 25 42 001018 06 02FF040C0000 BC 25 42 00037F 00 35 6C
- * Note: User should strictly add new action OUIs at the end of this
- * default value.
- *
- * Default OUIs: (All values in Hex)
- * OUI 1 : 000C43
- *   OUI data Len : 00
- *   Info Mask : 25 - Check for NSS and Band
- *   Capabilities: 42 - NSS == 2 && Band == 2G
- * OUI 2 : 001018
- *   OUI data Len : 06
- *   OUI Data : 02FFF02C0000
- *   OUI data Mask: BC - 10111100
- *   Info Mask : 25 - Check for NSS and Band
- *   Capabilities: 42 - NSS == 2 && Band == 2G
- * OUI 3 : 001018
- *   OUI data Len : 06
- *   OUI Data : 02FF040C0000
- *   OUI data Mask: BC - 10111100
- *   Info Mask : 25 - Check for NSS and Band
- *   Capabilities: 42 - NSS == 2 && Band == 2G
- * OUI 4 : 00037F
- *   OUI data Len : 00
- *   Info Mask : 35 - Check for NSS, VHT Caps and Band
- *   Capabilities: 6C - (NSS == 3 or 4) && VHT Caps Preset && Band == 2G
- * OUI 5 : 001018
- *   OUI data Len : 06
- *   OUI Data : 02FF009C0000
- *   OUI data Mask: BC - 10111100
- *   Info Mask : 25 - Check for NSS and Band
- *   Capabilities: 48 - NSS == 4 && Band == 2G
- * This ini is used to specify the AP OUIs with which only 1x1 connection
- * is allowed.
- *
- * Related: None
- *
- * Supported Feature: Action OUIs
- *
- * Usage: External
- *
- * </ini>
- */
-#define CFG_ACTION_OUI_CONNECT_1X1_NAME    "gActionOUIConnect1x1"
-#define CFG_ACTION_OUI_CONNECT_1X1_DEFAULT "000C43 00 25 42 001018 06 02FFF02C0000 BC 25 42 001018 06 02FF040C0000 BC 25 42 00037F 00 35 6C 001018 06 02FF009C0000 BC 25 48"
-
-/*
- * <ini>
- * gActionOUIITOExtension - Used to extend in-activity time for specified APs
- * @Default: 00037F 06 01010000FF7F FC 01 000AEB 02 0100 C0 01 000B86 03 010408 E0 01
- * Note: User should strictly add new action OUIs at the end of this
- * default value.
- *
- * Default OUIs: (All values in Hex)
- * OUI 1: 00037F
- *   OUI data Len: 06
- *   OUI Data: 01010000FF7F
- *   OUI data Mask: FC - 11111100
- *   Info Mask : 01 - only OUI present in Info mask
- *
- * OUI 2: 000AEB
- *   OUI data Len: 02
- *   OUI Data: 0100
- *   OUI data Mask: C0 - 11000000
- *   Info Mask : 01 - only OUI present in Info mask
- *
- * OUI 3: 000B86
- *   OUI data Len: 03
- *   OUI Data: 010408
- *   OUI data Mask: E0 - 11100000
- *   Info Mask : 01 - only OUI present in Info mask
- *
- * This ini is used to specify AP OUIs using which station's in-activity time
- * can be extended with the respective APs
- *
- * Related: None
- *
- * Supported Feature: Action OUIs
- *
- * Usage: External
- *
- * </ini>
- */
-#define CFG_ACTION_OUI_ITO_EXTENSION_NAME    "gActionOUIITOExtension"
-#define CFG_ACTION_OUI_ITO_EXTENSION_DEFAULT "00037F 06 01010000FF7F FC 01 000AEB 02 0100 C0 01 000B86 03 010408 E0 01"
-
-/*
- * <ini>
- * gActionOUICCKM1X1 - Used to specify action OUIs to control station's TX rates
- *
- * This ini is used to specify AP OUIs for which station's CCKM TX rates
- * should be 1x1 only.
- *
- * Related: None
- *
- * Supported Feature: Action OUIs
- *
- * Usage: External
- *
- * </ini>
- */
-#define CFG_ACTION_OUI_CCKM_1X1_NAME    "gActionOUICCKM1X1"
-#define CFG_ACTION_OUI_CCKM_1X1_DEFAULT ""
-
-/*
- * <ini>
- * gActionOUIITOAlternate - Used to specify action OUIs to have alternate ITO in
- * weak RSSI state
- *
- * This ini is used to specify AP OUIs for which the stations will have
- * alternate ITOs for the case when the RSSI is weak.
- *
- * Related: None
- *
- * Supported Feature: Action OUIs
- *
- * Usage: External
- *
- * </ini>
- */
- #define CFG_ACTION_OUI_ITO_ALTERNATE_NAME    "gActionOUIITOAlternate"
- #define CFG_ACTION_OUI_ITO_ALTERNATE_DEFAULT "001018 06 0202001c0000 FC 01"
-
-/*
- * <ini>
- * gActionOUISwitchTo11nMode - Used to specify action OUIs for switching to 11n
- *
- * This ini is used to specify which AP for which the connection has to be
- * made in 2x2 mode with HT capabilities only and not VHT.
- *
- * Default OUIs: (All values in Hex)
- * OUI 1 : 00904C
- *   OUI data Len : 03
- *   OUI Data : 0418BF
- *   OUI data Mask: E0 - 11100000
- *   Info Mask : 21 - Check for Band
- *   Capabilities: 40 - Band == 2G
- *
- * Related: None
- *
- * Supported Feature: Action OUIs
- *
- * Usage: External
- *
- * </ini>
- */
-#define CFG_ACTION_OUI_SWITCH_TO_11N_MODE_NAME    "gActionOUISwitchTo11nMode"
-#define CFG_ACTION_OUI_SWITCH_TO_11N_MODE_DEFAULT "00904C 03 0418BF E0 21 40"
-
-/*
- * <ini>
- * gActionOUIConnect1x1with1TxRxChain - Used to specify action OUIs for
- *					 1x1 connection with one Tx/Rx Chain
- * @Default:
- * Note: User should strictly add new action OUIs at the end of this
- * default value.
- *
- * Default OUIs: (All values in Hex)
- * OUI 1 : 001018
- *   OUI data Len : 06
- *   OUI Data : 02FFF0040000
- *   OUI data Mask: BC - 10111100
- *   Info Mask : 21 - Check for Band
- *   Capabilities: 40 - Band == 2G
- *
- * OUI 2 : 001018
- *   OUI data Len : 06
- *   OUI Data : 02FFF0050000
- *   OUI data Mask: BC - 10111100
- *   Info Mask : 21 - Check for Band
- *   Capabilities: 40 - Band == 2G
- *
- * OUI 3 : 001018
- *   OUI data Len : 06
- *   OUI Data : 02FFF4050000
- *   OUI data Mask: BC - 10111100
- *   Info Mask : 21 - Check for Band
- *   Capabilities: 40 - Band == 2G
- *
- * This ini is used to specify the AP OUIs with which only 1x1 connection
- * with one Tx/Rx Chain is allowed.
- *
- * Related: gEnableActionOUI
- *
- * Supported Feature: Action OUIs
- *
- * Usage: External
- *
- * </ini>
- */
-#define CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN_NAME    "gActionOUIConnect1x1with1TxRxChain"
-#define CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN_DEFAULT "001018 06 02FFF0040000 BC 21 40 001018 06 02FFF0050000 BC 21 40 001018 06 02FFF4050000 BC 21 40"
-
- /* End of action oui inis */
-
-
 /*
  * <ini>
  * gEnableUnitTestFramework - Enable/Disable unit test framework
@@ -4589,7 +4164,6 @@ struct hdd_config {
 	uint32_t AdHocChannel5G;
 	uint32_t AdHocChannel24G;
 	uint8_t intfAddrMask;
-	struct qdf_mac_addr intfMacAddr[QDF_MAX_CONCURRENCY_PERSONA];
 
 	bool apProtEnabled;
 	uint8_t nTxPowerCap;    /* In dBm */
@@ -4921,6 +4495,7 @@ struct hdd_config {
 #endif
 	uint8_t enableMCC;
 	uint8_t inform_bss_rssi_raw;
+	struct qdf_mac_addr intfMacAddr[QDF_MAX_CONCURRENCY_PERSONA];
 };
 
 #define VAR_OFFSET(_Struct, _Var) (offsetof(_Struct, _Var))

+ 0 - 61
core/hdd/src/wlan_hdd_cfg.c

@@ -140,26 +140,6 @@ struct reg_table_entry g_registry_table[] = {
 			    VAR_FLAGS_OPTIONAL,
 			    (void *)CFG_IBSS_BSSID_DEFAULT),
 
-	REG_VARIABLE_STRING(CFG_INTF0_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
-			    struct hdd_config, intfMacAddr[0],
-			    VAR_FLAGS_OPTIONAL,
-			    (void *)CFG_INTF0_MAC_ADDR_DEFAULT),
-
-	REG_VARIABLE_STRING(CFG_INTF1_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
-			    struct hdd_config, intfMacAddr[1],
-			    VAR_FLAGS_OPTIONAL,
-			    (void *)CFG_INTF1_MAC_ADDR_DEFAULT),
-
-	REG_VARIABLE_STRING(CFG_INTF2_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
-			    struct hdd_config, intfMacAddr[2],
-			    VAR_FLAGS_OPTIONAL,
-			    (void *)CFG_INTF2_MAC_ADDR_DEFAULT),
-
-	REG_VARIABLE_STRING(CFG_INTF3_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
-			    struct hdd_config, intfMacAddr[3],
-			    VAR_FLAGS_OPTIONAL,
-			    (void *)CFG_INTF3_MAC_ADDR_DEFAULT),
-
 	REG_VARIABLE(CFG_AP_ENABLE_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
 		     struct hdd_config, apProtEnabled,
 		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -978,47 +958,6 @@ struct reg_table_entry g_registry_table[] = {
 		CFG_LPRx_MIN,
 		CFG_LPRx_MAX),
 
-	REG_VARIABLE(CFG_ENABLE_ACTION_OUI, WLAN_PARAM_Integer,
-		     struct hdd_config, action_oui_enable,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_ENABLE_ACTION_OUI_DEFAULT,
-		     CFG_ENABLE_ACTION_OUI_MIN,
-		     CFG_ENABLE_ACTION_OUI_MAX),
-
-	REG_VARIABLE_STRING(CFG_ACTION_OUI_CONNECT_1X1_NAME, WLAN_PARAM_String,
-			    struct hdd_config, action_oui_str[0],
-			    VAR_FLAGS_OPTIONAL,
-			    (void *)CFG_ACTION_OUI_CONNECT_1X1_DEFAULT),
-
-	REG_VARIABLE_STRING(CFG_ACTION_OUI_ITO_EXTENSION_NAME,
-			    WLAN_PARAM_String,
-			    struct hdd_config, action_oui_str[1],
-			    VAR_FLAGS_OPTIONAL,
-			    (void *)CFG_ACTION_OUI_ITO_EXTENSION_DEFAULT),
-
-	REG_VARIABLE_STRING(CFG_ACTION_OUI_CCKM_1X1_NAME, WLAN_PARAM_String,
-			    struct hdd_config, action_oui_str[2],
-			    VAR_FLAGS_OPTIONAL,
-			    (void *)CFG_ACTION_OUI_CCKM_1X1_DEFAULT),
-
-	REG_VARIABLE_STRING(CFG_ACTION_OUI_ITO_ALTERNATE_NAME,
-			    WLAN_PARAM_String,
-			    struct hdd_config, action_oui_str[3],
-			    VAR_FLAGS_OPTIONAL,
-			    (void *)CFG_ACTION_OUI_ITO_ALTERNATE_DEFAULT),
-	REG_VARIABLE_STRING(CFG_ACTION_OUI_SWITCH_TO_11N_MODE_NAME,
-			    WLAN_PARAM_String,
-			    struct hdd_config, action_oui_str[4],
-			    VAR_FLAGS_OPTIONAL,
-			    (void *)CFG_ACTION_OUI_SWITCH_TO_11N_MODE_DEFAULT),
-
-	REG_VARIABLE_STRING(CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN_NAME,
-			    WLAN_PARAM_String,
-			    struct hdd_config, action_oui_str[5],
-			    VAR_FLAGS_OPTIONAL,
-			    (void *)
-			    CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN_DEFAULT),
-
 	REG_VARIABLE(CFG_SCAN_11D_INTERVAL_NAME, WLAN_PARAM_Integer,
 		struct hdd_config, scan_11d_interval,
 		VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,

+ 26 - 2
core/hdd/src/wlan_hdd_main.c

@@ -9034,8 +9034,7 @@ static void hdd_override_ini_config(struct hdd_context *hdd_ctx)
 
 	if (hdd_ctx->config->action_oui_enable && !ucfg_action_oui_enabled()) {
 		hdd_ctx->config->action_oui_enable = 0;
-		hdd_err("Ignore ini: %s, since no action_oui component",
-			CFG_ENABLE_ACTION_OUI);
+		hdd_err("Ignore action oui ini, since no action_oui component");
 	}
 }
 
@@ -9355,6 +9354,31 @@ static void hdd_cfg_params_init(struct hdd_context *hdd_ctx)
 		      CFG_DBS_SCAN_PARAM_LENGTH);
 	config->enableMCC = cfg_get(psoc, CFG_ENABLE_MCC_ENABLED);
 	config->inform_bss_rssi_raw = cfg_get(psoc, CFG_INFORM_BSS_RSSI_RAW);
+	config->intfMacAddr[0] = cfg_get(psoc, CFG_INTF0_MAC_ADDR);
+	config->intfMacAddr[1] = cfg_get(psoc, CFG_INTF1_MAC_ADDR);
+	config->intfMacAddr[2] = cfg_get(psoc, CFG_INTF2_MAC_ADDR);
+	config->intfMacAddr[3] = cfg_get(psoc, CFG_INTF3_MAC_ADDR);
+	config->action_oui_enable = cfg_get(psoc, CFG_ENABLE_ACTION_OUI);
+
+	qdf_str_lcopy(config->action_oui_str[0],
+		      cfg_get(psoc, CFG_ACTION_OUI_CONNECT_1X1),
+			      ACTION_OUI_MAX_STR_LEN);
+	qdf_str_lcopy(config->action_oui_str[1],
+		      cfg_get(psoc, CFG_ACTION_OUI_ITO_EXTENSION),
+			      ACTION_OUI_MAX_STR_LEN);
+	qdf_str_lcopy(config->action_oui_str[2],
+		      cfg_get(psoc, CFG_ACTION_OUI_CCKM_1X1),
+			      ACTION_OUI_MAX_STR_LEN);
+	qdf_str_lcopy(config->action_oui_str[3],
+		      cfg_get(psoc, CFG_ACTION_OUI_ITO_ALTERNATE),
+			      ACTION_OUI_MAX_STR_LEN);
+	qdf_str_lcopy(config->action_oui_str[4],
+		      cfg_get(psoc, CFG_ACTION_OUI_SWITCH_TO_11N_MODE),
+			      ACTION_OUI_MAX_STR_LEN);
+	qdf_str_lcopy(config->action_oui_str[5],
+		      cfg_get(psoc,
+			      CFG_ACTION_OUI_CONNECT_1X1_WITH_1_CHAIN),
+			      ACTION_OUI_MAX_STR_LEN);
 
 	hdd_init_vc_mode_cfg_bitmap(config, psoc);
 	hdd_init_runtime_pm(config, psoc);