Browse Source

qcacld-3.0: Add Multi-link IE support

Add Multi-link IE support.

Change-Id: I0d4811c6dfb0758c284c299c90ab1832f95dff2b
CRs-Fixed: 2942499
Gururaj Pandurangi 3 years ago
parent
commit
c627a01463

+ 1 - 1
components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_offload.c

@@ -390,7 +390,7 @@ cm_roam_scan_offload_fill_lfr3_config(struct wlan_objmgr_vdev *vdev,
 	if (mlme_obj->cfg.ht_caps.short_preamble)
 		self_caps.shortPreamble = 1;
 
-	self_caps.pbcc = 0;
+	self_caps.criticalUpdateFlag = 0;
 	self_caps.channelAgility = 0;
 
 	if (mlme_obj->cfg.feature_flags.enable_short_slot_time_11g)

+ 2 - 2
core/mac/inc/sir_mac_prot_def.h

@@ -485,7 +485,7 @@ typedef struct sSirMacCapabilityInfo {
 	uint16_t qos:1;
 	uint16_t spectrumMgt:1;
 	uint16_t channelAgility:1;
-	uint16_t pbcc:1;
+	uint16_t criticalUpdateFlag:1;
 	uint16_t shortPreamble:1;
 	uint16_t privacy:1;
 	uint16_t cfPollReq:1;
@@ -499,7 +499,7 @@ typedef struct sSirMacCapabilityInfo {
 	uint16_t cfPollReq:1;
 	uint16_t privacy:1;
 	uint16_t shortPreamble:1;
-	uint16_t pbcc:1;
+	uint16_t criticalUpdateFlag:1;
 	uint16_t channelAgility:1;
 	uint16_t spectrumMgt:1;
 	uint16_t qos:1;

+ 199 - 16
core/mac/src/cfg/cfgUtil/dot11f.frms

@@ -266,22 +266,22 @@ FF BeaconInterval (2)                     // 7.3.1.3
 FF Capabilities (2)                       // 7.3.1.4
 {
     {
-        ess:            1;
-        ibss:           1;
-        cfPollable:     1;
-        cfPollReq:      1;
-        privacy:        1;
-        shortPreamble:  1;
-        pbcc:           1;
-        channelAgility: 1;
-        spectrumMgt:    1;
-        qos:            1;
-        shortSlotTime:  1;
-        apsd:           1;
-        rrm:            1;
-        dsssOfdm:       1;
-        delayedBA:      1;
-        immediateBA:    1;
+        ess:                1;
+        ibss:               1;
+        cfPollable:         1;
+        cfPollReq:          1;
+        privacy:            1;
+        shortPreamble:      1;
+        criticalUpdateFlag: 1;
+        channelAgility:     1;
+        spectrumMgt:        1;
+        qos:                1;
+        shortSlotTime:      1;
+        apsd:               1;
+        rrm:                1;
+        dsssOfdm:           1;
+        delayedBA:          1;
+        immediateBA:        1;
     }
 }
 
@@ -3580,6 +3580,180 @@ IE vendor_vht_ie (EID_VENDOR_SPECIFIC) OUI (0x00, 0x90, 0x4c, 0x04)
    OPTIE IE VHTOperation;
 }
 
+IE mlo_capabilities (0)
+{
+    {
+        ess:                1;
+        ibss:               1;
+        cfPollable:         1;
+        cfPollReq:          1;
+        privacy:            1;
+        shortPreamble:      1;
+        criticalUpdateFlag: 1;
+        channelAgility:     1;
+        spectrumMgt:        1;
+        qos:                1;
+        shortSlotTime:      1;
+        apsd:               1;
+        rrm:                1;
+        dsssOfdm:           1;
+        delayedBA:          1;
+        immediateBA:        1;
+    }
+}
+
+IE sta_profile (0)
+{
+  {
+    link_id:  4;
+    complete_profile:  1;
+    sta_mac_addr_present:  1;
+    beacon_interval_present: 1;
+    dtim_info_present: 1;
+    nstr_link_pair_present: 1;
+    nstr_bitmap_size: 1;
+    reserved: 6;
+  }
+  OPTIONAL UNION sta_mac_addr (DISCRIMINATOR sta_mac_addr_present)
+  {
+        info (sta_mac_addr_present IS 1)
+        {
+            sta_mac_addr[6];
+        }
+  };
+  OPTIONAL UNION beacon_interval (DISCRIMINATOR beacon_interval_present)
+  {
+      info (beacon_interval_present IS 1)
+      {
+          beacon_interval, 2;
+      }
+  };
+  OPTIONAL UNION dtim_info (DISCRIMINATOR dtim_info_present)
+  {
+      info (dtim_info_present IS 1)
+      {
+          dtim_count,  1;
+          dtim_period, 1;
+      }
+  };
+  OPTIONAL UNION nstr_link_pair (DISCRIMINATOR nstr_link_pair_present)
+  {
+      info (nstr_link_pair_present IS 1)
+      {
+          nstr_link_pair_num, 1;
+      }
+  };
+  OPTIE IE mlo_capabilities;
+  MANDIE IE SuppRates;
+  OPTIE IE ExtSuppRates;
+  OPTIE IE SuppOperatingClasses;
+  OPTIE IE WPA;
+  OPTIE IE ChanSwitchAnn;
+  OPTIE IE Quiet;
+  OPTIE IE ext_chan_switch_ann;
+  OPTIE IE RSN;
+  OPTIE IE EDCAParamSet;
+  OPTIE IE P2PAssocRes;
+  OPTIE IE HTCaps;
+  OPTIE IE HTInfo;
+  OPTIE IE WMMParams;
+  OPTIE IE WMMCaps;
+  OPTIE IE VHTCaps;
+  OPTIE IE VHTOperation;
+  OPTIE IE ExtCap;
+  OPTIE IE OperatingMode;
+  OPTIE IE fils_indication;
+  OPTIE IE qcn_ie;
+  OPTIE IE he_cap;
+  OPTIE IE he_op;
+  OPTIE IE he_6ghz_band_cap;
+  OPTIE IE eht_cap;
+  OPTIE IE eht_op;
+  OPTIE IE max_chan_switch_time;
+}
+
+IE mlo_ie (EID_EXTN_ID_ELEMENT) OUI (0x5e)
+{
+    {
+        type: 3;
+        reserved: 1;
+        mld_mac_addr_present: 1;
+        link_id_info_present: 1;
+        bss_param_change_cnt_present: 1;
+        medium_sync_delay_info_present: 1;
+        eml_capab_present: 1;
+        mld_capab_present: 1;
+        reserved_1: 6;
+    }
+    OPTIONAL UNION mld_mac_addr (DISCRIMINATOR mld_mac_addr_present)
+    {
+        info (mld_mac_addr_present IS 1)
+        {
+            mld_mac_addr[6];
+        }
+    };
+    OPTIONAL UNION link_id_info (DISCRIMINATOR link_id_info_present)
+    {
+        info (link_id_info_present IS 1)
+        {
+            {
+                link_id:  4;
+                reserved: 4;
+            }
+        }
+    };
+    OPTIONAL UNION bss_param_change_cnt (DISCRIMINATOR bss_param_change_cnt_present)
+    {
+        info (bss_param_change_cnt_present IS 1)
+        {
+            bss_param_change_count, 1;
+        }
+    };
+    OPTIONAL UNION medium_sync_delay_info (DISCRIMINATOR medium_sync_delay_info_present)
+    {
+        info (medium_sync_delay_info_present IS 1)
+        {
+            {
+                medium_sync_duration: 8;
+                medium_sync_ofdm_ed_thresh: 4;
+                medium_sync_max_txop_num: 4;
+            }
+        }
+    };
+    OPTIONAL UNION eml_capabilities (DISCRIMINATOR eml_capab_present)
+    {
+        info (eml_capab_present IS 1)
+        {
+            {
+                emlsr_support: 1;
+                emlsr_delay: 3;
+                emlmr_support: 1;
+                emlmr_delay: 3;
+                transition_timeout: 4;
+                reserved: 4;
+            }
+            {
+                emlmr_rx_nss: 4;
+                emlmr_tx_nss: 4;
+            }
+        }
+    };
+    OPTIONAL UNION mld_capabilities (DISCRIMINATOR mld_capab_present)
+    {
+        info (mld_capab_present IS 1)
+        {
+            {
+                max_simultaneous_link_num: 4;
+                srs_support: 1;
+                tid_link_map_supported: 2;
+                str_freq_separation: 5;
+                reserved: 4;
+            }
+        }
+    };
+    OPTIE sta_profile[2];
+}
+
 /////////////////////////////////////////////////////////////////////////////
 // Frames
 
@@ -3653,6 +3827,7 @@ FRAME Beacon                              // C.f. Sec. 7.2.3.1
     OPTIE  eht_cap;
     OPTIE  eht_op;
     OPTIE  max_chan_switch_time;
+    OPTIE  mlo_ie;
 } // End frame Beacon.
 
 // Ok, here's  the story on  Beacon1 & Beacon2.   We presumably beacon  a lot
@@ -3752,6 +3927,7 @@ FRAME Beacon2
     OPTIE  eht_cap;
     OPTIE  eht_op;
     OPTIE  max_chan_switch_time;
+    OPTIE  mlo_ie;
 }
 
 // This frame is just Beacon with its Fixed Fields stripped out.  It's handy
@@ -3828,6 +4004,7 @@ FRAME BeaconIEs
     OPTIE  eht_cap;
     OPTIE  eht_op;
     OPTIE  max_chan_switch_time;
+    OPTIE  mlo_ie;
 } // End frame BeaconIEs.
 
 FRAME Disassociation                      // 7.3.3.3
@@ -3881,6 +4058,7 @@ FRAME AssocRequest                        // 7.2.3.4
     OPTIE  osen_ie;
     OPTIE roaming_consortium_sel;
     OPTIE  eht_cap;
+    OPTIE  mlo_ie;
 } // End frame AssocRequest.
 
 FRAME AssocResponse                       // 7.2.3.5
@@ -3931,6 +4109,7 @@ FRAME AssocResponse                       // 7.2.3.5
     OPTIE  MBO_IE;
     OPTIE  eht_cap;
     OPTIE  eht_op;
+    OPTIE  mlo_ie;
 } // End frame AssocResponse.
 
 FRAME ReAssocRequest                      // 7.2.3.6
@@ -3974,6 +4153,7 @@ FRAME ReAssocRequest                      // 7.2.3.6
     OPTIE  he_cap;
     OPTIE  he_6ghz_band_cap;
     OPTIE  eht_cap;
+    OPTIE  mlo_ie;
 } // End frame ReAssocRequest.
 
 FRAME ReAssocResponse                     // 7.2.3.7
@@ -4018,6 +4198,7 @@ FRAME ReAssocResponse                     // 7.2.3.7
     OPTIE  MBO_IE;
     OPTIE  eht_cap;
     OPTIE  eht_op;
+    OPTIE  mlo_ie;
 } // End frame ReAssocResponse.
 
 FRAME ProbeRequest                        // 7.2.3.8
@@ -4037,6 +4218,7 @@ FRAME ProbeRequest                        // 7.2.3.8
     OPTIE  he_cap;
     OPTIE  he_6ghz_band_cap;
     OPTIE  eht_cap;
+    OPTIE  mlo_ie;
 } // End frame ProbeRequest.
 
 FRAME ProbeResponse                       // 7.2.3.9
@@ -4106,6 +4288,7 @@ FRAME ProbeResponse                       // 7.2.3.9
     OPTIE  eht_cap;
     OPTIE  eht_op;
     OPTIE  max_chan_switch_time;
+    OPTIE  mlo_ie;
 } // End frame ProbeResponse.
 
 FRAME Authentication                      // 7.2.3.10

File diff suppressed because it is too large
+ 3101 - 2867
core/mac/src/include/dot11f.h


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

@@ -8897,8 +8897,8 @@ QDF_STATUS lim_get_capability_info(struct mac_context *mac, uint16_t *pcap,
 		pcap_info->shortPreamble =
 			mac->mlme_cfg->ht_caps.short_preamble;
 
-	/* PBCC bit */
-	pcap_info->pbcc = 0;
+	/* criticalUpdateFlag bit */
+	pcap_info->criticalUpdateFlag = 0;
 
 	/* Channel agility bit */
 	pcap_info->channelAgility = 0;

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


+ 9 - 5
core/mac/src/sys/legacy/src/utils/src/parser_api.c

@@ -2521,7 +2521,7 @@ void sir_copy_caps_info(struct mac_context *mac_ctx, tDot11fFfCapabilities caps,
 	pProbeResp->capabilityInfo.cfPollReq = caps.cfPollReq;
 	pProbeResp->capabilityInfo.privacy = caps.privacy;
 	pProbeResp->capabilityInfo.shortPreamble = caps.shortPreamble;
-	pProbeResp->capabilityInfo.pbcc = caps.pbcc;
+	pProbeResp->capabilityInfo.criticalUpdateFlag = caps.criticalUpdateFlag;
 	pProbeResp->capabilityInfo.channelAgility =	caps.channelAgility;
 	pProbeResp->capabilityInfo.spectrumMgt = caps.spectrumMgt;
 	pProbeResp->capabilityInfo.qos = caps.qos;
@@ -2969,7 +2969,8 @@ sir_convert_assoc_req_frame2_struct(struct mac_context *mac,
 	pAssocReq->capabilityInfo.privacy = ar->Capabilities.privacy;
 	pAssocReq->capabilityInfo.shortPreamble =
 		ar->Capabilities.shortPreamble;
-	pAssocReq->capabilityInfo.pbcc = ar->Capabilities.pbcc;
+	pAssocReq->capabilityInfo.criticalUpdateFlag =
+		ar->Capabilities.criticalUpdateFlag;
 	pAssocReq->capabilityInfo.channelAgility =
 		ar->Capabilities.channelAgility;
 	pAssocReq->capabilityInfo.spectrumMgt = ar->Capabilities.spectrumMgt;
@@ -3414,7 +3415,8 @@ sir_convert_assoc_resp_frame2_struct(struct mac_context *mac,
 	pAssocRsp->capabilityInfo.privacy = ar->Capabilities.privacy;
 	pAssocRsp->capabilityInfo.shortPreamble =
 		ar->Capabilities.shortPreamble;
-	pAssocRsp->capabilityInfo.pbcc = ar->Capabilities.pbcc;
+	pAssocRsp->capabilityInfo.criticalUpdateFlag =
+		ar->Capabilities.criticalUpdateFlag;
 	pAssocRsp->capabilityInfo.channelAgility =
 		ar->Capabilities.channelAgility;
 	pAssocRsp->capabilityInfo.spectrumMgt = ar->Capabilities.spectrumMgt;
@@ -3711,7 +3713,8 @@ sir_convert_reassoc_req_frame2_struct(struct mac_context *mac,
 	pAssocReq->capabilityInfo.cfPollReq = ar->Capabilities.cfPollReq;
 	pAssocReq->capabilityInfo.privacy = ar->Capabilities.privacy;
 	pAssocReq->capabilityInfo.shortPreamble = ar->Capabilities.shortPreamble;
-	pAssocReq->capabilityInfo.pbcc = ar->Capabilities.pbcc;
+	pAssocReq->capabilityInfo.criticalUpdateFlag =
+		ar->Capabilities.criticalUpdateFlag;
 	pAssocReq->capabilityInfo.channelAgility =
 		ar->Capabilities.channelAgility;
 	pAssocReq->capabilityInfo.spectrumMgt = ar->Capabilities.spectrumMgt;
@@ -4504,7 +4507,8 @@ sir_convert_beacon_frame2_struct(struct mac_context *mac,
 	pBeaconStruct->capabilityInfo.privacy = pBeacon->Capabilities.privacy;
 	pBeaconStruct->capabilityInfo.shortPreamble =
 		pBeacon->Capabilities.shortPreamble;
-	pBeaconStruct->capabilityInfo.pbcc = pBeacon->Capabilities.pbcc;
+	pBeaconStruct->capabilityInfo.criticalUpdateFlag =
+		pBeacon->Capabilities.criticalUpdateFlag;
 	pBeaconStruct->capabilityInfo.channelAgility =
 		pBeacon->Capabilities.channelAgility;
 	pBeaconStruct->capabilityInfo.spectrumMgt =

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