Bladeren bron

qcacld-3.0: Enable FILS capability bit in extended capability IE

With I446c7d7589534688e04579ed434de0803ed8b4ff, STA adds
FILS request parameters IE in Probe Requests. But FILS capability
is not set in extended capability IE.

Enable FILS capability bit in extended capability IE.

Change-Id: If409185f785a4c1905b60df5935baf313f638887
CRs-Fixed: 2018546
Selvaraj, Sridhar 8 jaren geleden
bovenliggende
commit
2c46d83624

+ 1 - 1
core/mac/src/cfg/cfgUtil/dot11f.frms

@@ -2302,7 +2302,7 @@ IE ChannelSwitchWrapper (EID_CHANNEL_SWITCH_WRAPPER)
 }
 IE ExtCap (EID_EXT_CAP)
 {
-    bytes[1..9];
+    bytes[1..15];
 }
 
 IE HTCaps (EID_HT_CAPABILITIES)

+ 3 - 3
core/mac/src/include/dot11f.h

@@ -35,7 +35,7 @@
  *
  *
  * This file was automatically generated by 'framesc'
- * Fri Mar 31 11:36:15 2017 from the following file(s):
+ * Mon Apr  3 16:17:19 2017 from the following file(s):
  *
  * dot11f.frms
  *
@@ -4428,7 +4428,7 @@ uint32_t dot11f_get_packed_ie_ESEVersion(
 typedef struct sDot11fIEExtCap {
 	uint8_t             present;
 	uint8_t             num_bytes;
-	uint8_t             bytes[9];
+	uint8_t             bytes[15];
 } tDot11fIEExtCap;
 
 #define DOT11F_EID_EXTCAP (127)
@@ -4436,7 +4436,7 @@ typedef struct sDot11fIEExtCap {
 /* N.B. These #defines do *not* include the EID & length */
 #define DOT11F_IE_EXTCAP_MIN_LEN (1)
 
-#define DOT11F_IE_EXTCAP_MAX_LEN (9)
+#define DOT11F_IE_EXTCAP_MAX_LEN (15)
 
 #ifdef __cplusplus
 extern "C" {

+ 1 - 0
core/mac/src/include/parser_api.h

@@ -425,6 +425,7 @@ struct s_ext_cap {
 	uint8_t chan_avail_query:1;
 	uint8_t fine_time_meas_responder:1;
 	uint8_t fine_time_meas_initiator:1;
+	uint8_t fils_capability:1;
 };
 
 uint8_t sirIsPropCapabilityEnabled(struct sAniSirGlobal *pMac, uint32_t bitnum);

+ 2 - 2
core/mac/src/pe/lim/lim_api.c

@@ -2480,8 +2480,8 @@ QDF_STATUS lim_update_ext_cap_ie(tpAniSirGlobal mac_ctx,
 	lim_merge_extcap_struct(&driver_ext_cap, &default_scan_ext_cap, true);
 
 	qdf_mem_copy(local_ie_buf + (*local_ie_len),
-			driver_ext_cap.bytes, DOT11F_IE_EXTCAP_MAX_LEN);
-	(*local_ie_len) += DOT11F_IE_EXTCAP_MAX_LEN;
+			driver_ext_cap.bytes, driver_ext_cap.num_bytes);
+	(*local_ie_len) += driver_ext_cap.num_bytes;
 	return QDF_STATUS_SUCCESS;
 }
 

+ 15 - 15
core/mac/src/sys/legacy/src/utils/src/dot11f.c

@@ -33,7 +33,7 @@
  *
  *
  * This file was automatically generated by 'framesc'
- * Fri Mar 31 11:36:15 2017 from the following file(s):
+ * Mon Apr  3 16:17:19 2017 from the following file(s):
  *
  * dot11f.frms
  *
@@ -3116,7 +3116,7 @@ uint32_t dot11f_unpack_ie_ext_cap(tpAniSirGlobal pCtx,
 	if (!ielen) /* Check to ensure copying of ielen bytes */
 		goto endUnpackIeExtCap;
 	pDst->num_bytes = (uint8_t)(ielen);
-	if (ielen > 9) {
+	if (ielen > 15) {
 		pDst->present = 0;
 		return DOT11F_SKIPPED_BAD_IE;
 	}
@@ -6509,7 +6509,7 @@ static const tIEDefn IES_AssocRequest[] = {
 	present), 0, "QosMapSet", 0, 2, 62, SigIeQosMapSet, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_QOSMAPSET, 0, },
 	{ offsetof(tDot11fAssocRequest, ExtCap), offsetof(tDot11fIEExtCap,
-	present), 0, "ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
+	present), 0, "ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fAssocRequest, VHTCaps), offsetof(tDot11fIEVHTCaps,
 	present), 0, "VHTCaps", 0, 14, 14, SigIeVHTCaps, {0, 0, 0, 0, 0},
@@ -6670,7 +6670,7 @@ static const tIEDefn IES_AssocResponse[] = {
 	0, 7, 7, SigIeVHTOperation, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_VHTOPERATION, 0, },
 	{ offsetof(tDot11fAssocResponse, ExtCap), offsetof(tDot11fIEExtCap,
-	present), 0, "ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
+	present), 0, "ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fAssocResponse, OBSSScanParameters),
 	offsetof(tDot11fIEOBSSScanParameters, present), 0, "OBSSScanParameters",
@@ -6904,7 +6904,7 @@ static const tIEDefn IES_Beacon[] = {
 	0, 7, 7, SigIeVHTExtBssLoad, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_VHTEXTBSSLOAD, 0, },
 	{ offsetof(tDot11fBeacon, ExtCap), offsetof(tDot11fIEExtCap, present), 0,
-	"ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
+	"ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fBeacon, OperatingMode),
 	offsetof(tDot11fIEOperatingMode, present), 0, "OperatingMode",
@@ -7116,7 +7116,7 @@ static const tIEDefn IES_Beacon2[] = {
 	0, 7, 7, SigIeVHTExtBssLoad, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_VHTEXTBSSLOAD, 0, },
 	{ offsetof(tDot11fBeacon2, ExtCap), offsetof(tDot11fIEExtCap, present), 0,
-	"ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
+	"ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fBeacon2, OperatingMode),
 	offsetof(tDot11fIEOperatingMode, present), 0, "OperatingMode",
@@ -7324,7 +7324,7 @@ static const tIEDefn IES_BeaconIEs[] = {
 	0, 7, 7, SigIeVHTExtBssLoad, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_VHTEXTBSSLOAD, 0, },
 	{ offsetof(tDot11fBeaconIEs, ExtCap), offsetof(tDot11fIEExtCap, present),
-	0, "ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
+	0, "ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fBeaconIEs, OperatingMode),
 	offsetof(tDot11fIEOperatingMode, present), 0, "OperatingMode",
@@ -7786,7 +7786,7 @@ static const tIEDefn IES_ProbeRequest[] = {
 	present), 0, "VHTCaps", 0, 14, 14, SigIeVHTCaps, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_VHTCAPS, 0, },
 	{ offsetof(tDot11fProbeRequest, ExtCap), offsetof(tDot11fIEExtCap,
-	present), 0, "ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
+	present), 0, "ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fProbeRequest, QCN_IE), offsetof(tDot11fIEQCN_IE,
 	present), 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0},
@@ -7959,7 +7959,7 @@ static const tIEDefn IES_ProbeResponse[] = {
 	0, 7, 7, SigIeVHTExtBssLoad, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_VHTEXTBSSLOAD, 0, },
 	{ offsetof(tDot11fProbeResponse, ExtCap), offsetof(tDot11fIEExtCap,
-	present), 0, "ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
+	present), 0, "ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fProbeResponse, OBSSScanParameters),
 	offsetof(tDot11fIEOBSSScanParameters, present), 0, "OBSSScanParameters",
@@ -8228,7 +8228,7 @@ static const tIEDefn IES_ReAssocRequest[] = {
 	present), 0, "VHTCaps", 0, 14, 14, SigIeVHTCaps, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_VHTCAPS, 0, },
 	{ offsetof(tDot11fReAssocRequest, ExtCap), offsetof(tDot11fIEExtCap,
-	present), 0, "ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
+	present), 0, "ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fReAssocRequest, OperatingMode),
 	offsetof(tDot11fIEOperatingMode, present), 0, "OperatingMode",
@@ -8366,7 +8366,7 @@ static const tIEDefn IES_ReAssocResponse[] = {
 	0, 7, 7, SigIeVHTOperation, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_VHTOPERATION, 0, },
 	{ offsetof(tDot11fReAssocResponse, ExtCap), offsetof(tDot11fIEExtCap,
-	present), 0, "ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
+	present), 0, "ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fReAssocResponse, OBSSScanParameters),
 	offsetof(tDot11fIEOBSSScanParameters, present), 0, "OBSSScanParameters",
@@ -8551,7 +8551,7 @@ static const tIEDefn IES_TDLSDisRsp[] = {
 	{ offsetof(tDot11fTDLSDisRsp, RSN), offsetof(tDot11fIERSN, present), 0,
 	"RSN", 0, 8, 116, SigIeRSN, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RSN, 0, },
 	{ offsetof(tDot11fTDLSDisRsp, ExtCap), offsetof(tDot11fIEExtCap, present),
-	0, "ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
+	0, "ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fTDLSDisRsp, FTInfo), offsetof(tDot11fIEFTInfo, present),
 	0, "FTInfo", 0, 84, 222, SigIeFTInfo, {0, 0, 0, 0, 0},
@@ -8757,7 +8757,7 @@ static const tIEDefn IES_TDLSSetupReq[] = {
 	{ offsetof(tDot11fTDLSSetupReq, RSN), offsetof(tDot11fIERSN, present), 0,
 	"RSN", 0, 8, 116, SigIeRSN, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RSN, 0, },
 	{ offsetof(tDot11fTDLSSetupReq, ExtCap), offsetof(tDot11fIEExtCap,
-	present), 0, "ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
+	present), 0, "ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fTDLSSetupReq, SuppOperatingClasses),
 	offsetof(tDot11fIESuppOperatingClasses, present), 0,
@@ -8846,7 +8846,7 @@ static const tIEDefn IES_TDLSSetupRsp[] = {
 	{ offsetof(tDot11fTDLSSetupRsp, RSN), offsetof(tDot11fIERSN, present), 0,
 	"RSN", 0, 8, 116, SigIeRSN, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RSN, 0, },
 	{ offsetof(tDot11fTDLSSetupRsp, ExtCap), offsetof(tDot11fIEExtCap,
-	present), 0, "ExtCap", 0, 3, 11, SigIeExtCap, {0, 0, 0, 0, 0},
+	present), 0, "ExtCap", 0, 3, 17, SigIeExtCap, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fTDLSSetupRsp, SuppOperatingClasses),
 	offsetof(tDot11fIESuppOperatingClasses, present), 0,
@@ -9025,7 +9025,7 @@ static const tIEDefn IES_TimingAdvertisementFrame[] = {
 	0, 18, 18, SigIeTimeAdvertisement, {0, 0, 0, 0, 0},
 	0, DOT11F_EID_TIMEADVERTISEMENT, 0, },
 	{ offsetof(tDot11fTimingAdvertisementFrame, ExtCap),
-	offsetof(tDot11fIEExtCap, present), 0, "ExtCap", 0, 3, 11, SigIeExtCap,
+	offsetof(tDot11fIEExtCap, present), 0, "ExtCap", 0, 3, 17, SigIeExtCap,
 	{0, 0, 0, 0, 0}, 0, DOT11F_EID_EXTCAP, 0, },
 	{ offsetof(tDot11fTimingAdvertisementFrame, Vendor1IE),
 	offsetof(tDot11fIEVendor1IE, present), 0, "Vendor1IE",

+ 3 - 0
core/mac/src/sys/legacy/src/utils/src/parser_api.c

@@ -1258,6 +1258,9 @@ populate_dot11f_ext_cap(tpAniSirGlobal pMac,
 #endif
 	p_ext_cap->ext_chan_switch = 1;
 
+	if (pMac->roam.configParam.enable_bcast_probe_rsp)
+		p_ext_cap->fils_capability = 1;
+
 	/* Need to calulate the num_bytes based on bits set */
 	if (pDot11f->present)
 		pDot11f->num_bytes = lim_compute_ext_cap_ie_length(pDot11f);