Browse Source

qcacld-3.0: Save Beacon Report Error IE in Beacon Report Response

Currently, If STA doesn't send beacon report response to
AP, AP will not be able to know the reason why sta did not
send beacon report as no reason code is defined in
IEEE802.11-2016 standard.

Fix is to add Optional IE in Beacon Report Response which will be
populated based on err code and beacon_report_error_vsie ini.

Change-Id: I91ab0cdfadbe903bdc3085a94b38938a35b693e0
CRs-Fixed: 2614385
sheenam monga 5 years ago
parent
commit
906b86fe3d

+ 10 - 0
core/mac/src/cfg/cfgUtil/dot11f.frms

@@ -2036,6 +2036,14 @@ IE ESERadMgmtCap (EID_VENDOR_SPECIFIC) OUI (0x00, 0x40, 0x96, 0x01)
 
 }
 
+IE BeaconReportStatus (EID_VENDOR_SPECIFIC) OUI (0x00, 0x00, 0x00F, 0x22)
+{
+        sub_type,       1;
+        version,        1;
+        length,         1;
+        reason_code,    1;
+}
+
 IE Vendor1IE (EID_VENDOR_SPECIFIC) OUI (0x00, 0x10, 0x18)
 {
 }
@@ -3803,6 +3811,7 @@ FRAME ReAssocRequest                      // 7.2.3.6
     OPTIE  MobilityDomain;
     OPTIE  FTInfo;
     OPTIE  RICDataDesc[2];
+    OPTIE  SuppOperatingClasses;
     OPTIE  WPAOpaque;
     OPTIE  HTCaps;
     OPTIE  WMMCaps;
@@ -4123,6 +4132,7 @@ FRAME RadioMeasurementReport
    FF   DialogToken;
    //Measurement Report elements.
    MANDIE MeasurementReport[1..4];
+   OPTIE  BeaconReportStatus;
 }
 
 FRAME LinkMeasurementRequest

+ 89 - 46
core/mac/src/include/dot11f.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -26,7 +26,7 @@
  *
  *
  * This file was automatically generated by 'framesc'
- * Thu Sep 19 14:00:22 2019 from the following file(s):
+ * Thu Jan 30 16:28:12 2020 from the following file(s):
  *
  * dot11f.frms
  *
@@ -4408,6 +4408,48 @@ uint32_t dot11f_get_packed_ie_AID(
 }; /* End extern "C". */
 #endif /* C++ */
 
+/* EID 221 (0xdd) {OUI 0x00, 0x00, 0x0f, 0x22} */
+typedef struct sDot11fIEBeaconReportStatus {
+	uint8_t             present;
+	uint8_t             sub_type;
+	uint8_t             version;
+	uint8_t             length;
+	uint8_t             reason_code;
+} tDot11fIEBeaconReportStatus;
+
+#define DOT11F_EID_BEACONREPORTSTATUS (221)
+
+/* N.B. These #defines do *not* include the EID & length */
+#define DOT11F_IE_BEACONREPORTSTATUS_MIN_LEN (8)
+
+#define DOT11F_IE_BEACONREPORTSTATUS_MAX_LEN (8)
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+__must_check uint32_t dot11f_unpack_ie_BeaconReportStatus(
+	tpAniSirGlobal,
+	uint8_t *,
+	uint8_t,
+	tDot11fIEBeaconReportStatus*,
+	bool);
+
+uint32_t dot11f_pack_ie_BeaconReportStatus(
+	tpAniSirGlobal,
+	tDot11fIEBeaconReportStatus *,
+	uint8_t *,
+	uint32_t,
+	uint32_t*);
+
+uint32_t dot11f_get_packed_ie_BeaconReportStatus(
+	tpAniSirGlobal,
+	tDot11fIEBeaconReportStatus *,
+	uint32_t*);
+
+#ifdef __cplusplus
+}; /* End extern "C". */
+#endif /* C++ */
+
 /* EID 4 (0x04) */
 typedef struct sDot11fIECFParams {
 	uint8_t             present;
@@ -10502,11 +10544,12 @@ uint32_t dot11f_get_packed_qos_map_configure_size(tpAniSirGlobal pCtx,
 #endif /* C++ */
 
 typedef struct sDot11fRadioMeasurementReport{
-	tDot11fFfCategory                 Category;
-	tDot11fFfAction                   Action;
-	tDot11fFfDialogToken              DialogToken;
-	uint16_t                          num_MeasurementReport;
-	tDot11fIEMeasurementReport        MeasurementReport[4];
+	tDot11fFfCategory                  Category;
+	tDot11fFfAction                    Action;
+	tDot11fFfDialogToken               DialogToken;
+	uint16_t                           num_MeasurementReport;
+	tDot11fIEMeasurementReport         MeasurementReport[4];
+	tDot11fIEBeaconReportStatus        BeaconReportStatus;
 } tDot11fRadioMeasurementReport;
 
 #define DOT11F_RADIOMEASUREMENTREPORT (24)
@@ -10559,45 +10602,45 @@ uint32_t dot11f_get_packed_radio_measurement_request_size(tpAniSirGlobal pCtx,
 #endif /* C++ */
 
 typedef struct sDot11fReAssocRequest{
-	tDot11fFfCapabilities              Capabilities;
-	tDot11fFfListenInterval            ListenInterval;
-	tDot11fFfCurrentAPAddress          CurrentAPAddress;
-	tDot11fIESSID                      SSID;
-	tDot11fIESuppRates                 SuppRates;
-	tDot11fIEExtSuppRates              ExtSuppRates;
-	tDot11fIEPowerCaps                 PowerCaps;
-	tDot11fIESuppChannels              SuppChannels;
-	tDot11fIERSNOpaque                 RSNOpaque;
-	tDot11fIEQOSCapsStation            QOSCapsStation;
-	tDot11fIERRMEnabledCap             RRMEnabledCap;
-	tDot11fIEMobilityDomain            MobilityDomain;
-	tDot11fIEFTInfo                    FTInfo;
-	uint16_t                           num_RICDataDesc;
-	tDot11fIERICDataDesc               RICDataDesc[2];
-	tDot11fIESuppOperatingClasses      SuppOperatingClasses;
-	tDot11fIEWPAOpaque                 WPAOpaque;
-	tDot11fIEHTCaps                    HTCaps;
-	tDot11fIEWMMCaps                   WMMCaps;
-	tDot11fIEWMMInfoStation            WMMInfoStation;
-	tDot11fIEWscIEOpaque               WscIEOpaque;
-	tDot11fIEWAPIOpaque                WAPIOpaque;
-	tDot11fIEWAPI                      WAPI;
-	tDot11fIEESERadMgmtCap             ESERadMgmtCap;
-	tDot11fIEESEVersion                ESEVersion;
-	tDot11fIEESECckmOpaque             ESECckmOpaque;
-	uint16_t                           num_WMMTSPEC;
-	tDot11fIEWMMTSPEC                  WMMTSPEC[4];
-	tDot11fIEESETrafStrmRateSet        ESETrafStrmRateSet;
-	tDot11fIEP2PIEOpaque               P2PIEOpaque;
-	tDot11fIEWFDIEOpaque               WFDIEOpaque;
-	tDot11fIEVHTCaps                   VHTCaps;
-	tDot11fIEExtCap                    ExtCap;
-	tDot11fIEOperatingMode             OperatingMode;
-	tDot11fIEQosMapSet                 QosMapSet;
-	tDot11fIEvendor_vht_ie             vendor_vht_ie;
-	tDot11fIEhs20vendor_ie             hs20vendor_ie;
-	tDot11fIEhe_cap                    he_cap;
-	tDot11fIEhe_6ghz_band_cap          he_6ghz_band_cap;
+	tDot11fFfCapabilities                Capabilities;
+	tDot11fFfListenInterval              ListenInterval;
+	tDot11fFfCurrentAPAddress            CurrentAPAddress;
+	tDot11fIESSID                        SSID;
+	tDot11fIESuppRates                   SuppRates;
+	tDot11fIEExtSuppRates                ExtSuppRates;
+	tDot11fIEPowerCaps                   PowerCaps;
+	tDot11fIESuppChannels                SuppChannels;
+	tDot11fIERSNOpaque                   RSNOpaque;
+	tDot11fIEQOSCapsStation              QOSCapsStation;
+	tDot11fIERRMEnabledCap               RRMEnabledCap;
+	tDot11fIEMobilityDomain              MobilityDomain;
+	tDot11fIEFTInfo                      FTInfo;
+	uint16_t                             num_RICDataDesc;
+	tDot11fIERICDataDesc                 RICDataDesc[2];
+	tDot11fIESuppOperatingClasses        SuppOperatingClasses;
+	tDot11fIEWPAOpaque                   WPAOpaque;
+	tDot11fIEHTCaps                      HTCaps;
+	tDot11fIEWMMCaps                     WMMCaps;
+	tDot11fIEWMMInfoStation              WMMInfoStation;
+	tDot11fIEWscIEOpaque                 WscIEOpaque;
+	tDot11fIEWAPIOpaque                  WAPIOpaque;
+	tDot11fIEWAPI                        WAPI;
+	tDot11fIEESERadMgmtCap               ESERadMgmtCap;
+	tDot11fIEESEVersion                  ESEVersion;
+	tDot11fIEESECckmOpaque               ESECckmOpaque;
+	uint16_t                             num_WMMTSPEC;
+	tDot11fIEWMMTSPEC                    WMMTSPEC[4];
+	tDot11fIEESETrafStrmRateSet          ESETrafStrmRateSet;
+	tDot11fIEP2PIEOpaque                 P2PIEOpaque;
+	tDot11fIEWFDIEOpaque                 WFDIEOpaque;
+	tDot11fIEVHTCaps                     VHTCaps;
+	tDot11fIEExtCap                      ExtCap;
+	tDot11fIEOperatingMode               OperatingMode;
+	tDot11fIEQosMapSet                   QosMapSet;
+	tDot11fIEvendor_vht_ie               vendor_vht_ie;
+	tDot11fIEhs20vendor_ie               hs20vendor_ie;
+	tDot11fIEhe_cap                      he_cap;
+	tDot11fIEhe_6ghz_band_cap            he_6ghz_band_cap;
 } tDot11fReAssocRequest;
 
 #define DOT11F_REASSOCREQUEST (26)

File diff suppressed because it is too large
+ 154 - 106
core/mac/src/sys/legacy/src/utils/src/dot11f.c


Some files were not shown because too many files changed in this diff