Эх сурвалжийг харах

qcacld-3.0: [11AX] Add 11ax related IEs in dot11f.frms

Add 11ax related IEs in dot11f.frms file.

Add new IEs to support 11ax/High Efficiency(HE). HE capabilities and
HE Operation are the two new IEs added and the IE definition is based on
the 11ax D1.0 specification.

Change-Id: Iab4219a7c068faca0337f70f921ec178f7170952
CRs-Fixed: 1073481
Krishna Kumaar Natarajan 8 жил өмнө
parent
commit
7ee45235ca

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

@@ -2621,6 +2621,123 @@ IE MeasurementRequest (EID_MEAS_REQUEST)  // 7.3.2.21
     };
 }
 
+const SUB_EID_PPET = 1;
+const SUB_EID_VHT_INFO = 2;
+
+IE vendor_he_cap (EID_VENDOR_SPECIFIC) OUI (0x00, 0x13, 0x74, 0x01)
+{
+    {
+      htc_he:1;
+      twt_request:1;
+      twt_responder:1;
+      fragmentation:2;
+      max_num_frag_msdu:3;
+      min_frag_size:2;
+      trigger_frm_mac_pad:2;
+      multi_tid_aggr:3;
+      he_link_adaptation:2;
+      all_ack:1;
+      ul_mu_rsp_sched:1;
+      a_bsr:1;
+      broadcast_twt:1;
+      ba_32bit_bitmap:1;
+      mu_cascade:1;
+      ack_enabled_multitid:1;
+      dl_mu_ba:1;
+      omi_a_ctrl:1;
+      ofdma_ra:1;
+      max_ampdu_len:2;
+      amsdu_frag:1;
+      flex_twt_sched:1;
+      rx_ctrl_frame:1;
+    }
+    {
+      bsrp_ampdu_aggr:1;
+      qtp:1;
+      a_bqr:1;
+      reserved1:5;
+    }
+    {
+      dual_band:1;
+      chan_width:7;
+      rx_pream_puncturing:4;
+      device_class:1;
+      ldpc_coding:1;
+      he_ltf_gi_ppdu:2;
+      he_ltf_gi_ndp:2;
+      stbc:2;
+      doppler:2;
+      ul_mu:2;
+      dcm_enc_tx:3;
+      dcm_enc_rx:3;
+      ul_he_mu:1;
+      su_beamformer:1;
+    }
+    {
+      su_beamformee:1;
+      mu_beamformer:1;
+      bfee_sts_lt_80:3;
+      nsts_tol_lt_80:3;
+      bfee_sta_gt_80:3;
+      nsts_tot_gt_80:3;
+      num_sounding_lt_80:3;
+      num_sounding_gt_80:3;
+      su_feedback_tone16:1;
+      mu_feedback_tone16:1;
+      codebook_su:1;
+      codebook_mu:1;
+      beamforming_feedback:3;
+      he_er_su_ppdu:1;
+      dl_mu_mimo_part_bw:1;
+      ppet_present:1;
+      srp:1;
+      power_boost:1;
+    }
+    {
+      he_ltf_gi_4x:1;
+      reserved2:7;
+    }
+    {
+      nss_supported:3;
+      mcs_supported:3;
+      tx_bw_bitmap:5;
+      rx_bw_bitmap:5;
+    }
+    OPTIE IE ppe_threshold (SUB_EID_PPET)
+    {
+      {
+        nss_count:3;
+        ru_idx_mask:4;
+        ppet_b1:1;
+      }
+      ppet[1..24];
+    }
+}
+
+IE vht_info(SUB_EID_VHT_INFO)
+{
+  chan_width, 1;
+  center_freq_seg0, 1;
+  center_freq_seg1, 1;
+}
+
+IE vendor_he_op (EID_VENDOR_SPECIFIC) OUI (0x00, 0x13, 0x74, 0x02)
+{
+    {
+        bss_color: 6;
+        default_pe: 3;
+        twt_required: 1;
+        rts_threshold: 10;
+        partial_bss_col: 1;
+        maxbssid_ind: 8;
+        tx_bssid_ind: 1;
+        bss_col_disabled: 1;
+        dual_beacon: 1;
+    }
+    basic_mcs_nss[3];
+    MANDIE IE vht_info;
+}
+
 /////////////////////////////////////////////////////////////////////////////
 //                                MULTIIEs                                 //
 /////////////////////////////////////////////////////////////////////////////
@@ -3012,6 +3129,8 @@ FRAME Beacon                              // C.f. Sec. 7.2.3.1
     OPTIE  ESEVersion;
     OPTIE  MBO_IE;
     OPTIE  QCN_IE;
+    OPTIE  vendor_he_cap;
+    OPTIE  vendor_he_op;
 } // End frame Beacon.
 
 // Ok, here's  the story on  Beacon1 & Beacon2.   We presumably beacon  a lot
@@ -3101,6 +3220,8 @@ FRAME Beacon2
     OPTIE  QComVendorIE;
     OPTIE  ESEVersion;
     OPTIE  QCN_IE;
+    OPTIE  vendor_he_cap;
+    OPTIE  vendor_he_op;
 }
 
 // This frame is just Beacon with its Fixed Fields stripped out.  It's handy
@@ -3167,6 +3288,8 @@ FRAME BeaconIEs
     OPTIE  QComVendorIE;
     OPTIE  MBO_IE;
     OPTIE  QCN_IE;
+    OPTIE  vendor_he_cap;
+    OPTIE  vendor_he_op;
 } // End frame BeaconIEs.
 
 FRAME Disassociation                      // 7.3.3.3
@@ -3207,6 +3330,7 @@ FRAME AssocRequest                        // 7.2.3.4
     OPTIE  vendor_vht_ie;
     OPTIE  hs20vendor_ie;
     OPTIE  QCN_IE;
+    OPTIE  vendor_he_cap;
 } // End frame AssocRequest.
 
 FRAME AssocResponse                       // 7.2.3.5
@@ -3242,6 +3366,8 @@ FRAME AssocResponse                       // 7.2.3.5
     OPTIE  QosMapSet;
     OPTIE  vendor_vht_ie;
     OPTIE  QCN_IE;
+    OPTIE  vendor_he_cap;
+    OPTIE  vendor_he_op;
 } // End frame AssocResponse.
 
 FRAME ReAssocRequest                      // 7.2.3.6
@@ -3280,6 +3406,7 @@ FRAME ReAssocRequest                      // 7.2.3.6
     OPTIE  QosMapSet;
     OPTIE  vendor_vht_ie;
     OPTIE  hs20vendor_ie;
+    OPTIE  vendor_he_cap;
 } // End frame ReAssocRequest.
 
 FRAME ReAssocResponse                     // 7.2.3.7
@@ -3315,6 +3442,8 @@ FRAME ReAssocResponse                     // 7.2.3.7
     OPTIE  OBSSScanParameters;
     OPTIE  QosMapSet;
     OPTIE  vendor_vht_ie;
+    OPTIE  vendor_he_cap;
+    OPTIE  vendor_he_op;
 } // End frame ReAssocResponse.
 
 FRAME ProbeRequest                        // 7.2.3.8
@@ -3331,6 +3460,7 @@ FRAME ProbeRequest                        // 7.2.3.8
     OPTIE  VHTCaps;
     OPTIE  ExtCap;
     OPTIE  QCN_IE;
+    OPTIE  vendor_he_cap;
 } // End frame ProbeRequest.
 
 FRAME ProbeResponse                       // 7.2.3.9
@@ -3390,6 +3520,8 @@ FRAME ProbeResponse                       // 7.2.3.9
     OPTIE  ESEVersion;
     OPTIE  MBO_IE;
     OPTIE  QCN_IE;
+    OPTIE  vendor_he_cap;
+    OPTIE  vendor_he_op;
 } // End frame ProbeResponse.
 
 FRAME Authentication                      // 7.2.3.10

+ 249 - 1
core/mac/src/include/dot11f.h

@@ -35,7 +35,7 @@
  *
  *
  * This file was automatically generated by 'framesc'
- * Tue Feb 14 11:22:39 2017 from the following file(s):
+ * Mon Mar 13 16:57:31 2017 from the following file(s):
  *
  * dot11f.frms
  *
@@ -2276,6 +2276,48 @@ uint32_t dot11f_get_packed_ie_R1KH_ID(
 }; /* End extern "C". */
 #endif /* C++ */
 
+/* EID 1 (0x01) */
+typedef struct sDot11fIEppe_threshold {
+	uint8_t             present;
+	uint8_t            nss_count:3;
+	uint8_t          ru_idx_mask:4;
+	uint8_t              ppet_b1:1;
+	uint8_t             num_ppet;
+	uint8_t             ppet[24];
+} tDot11fIEppe_threshold;
+
+#define DOT11F_EID_PPE_THRESHOLD (1)
+
+/* N.B. These #defines do *not* include the EID & length */
+#define DOT11F_IE_PPE_THRESHOLD_MIN_LEN (2)
+
+#define DOT11F_IE_PPE_THRESHOLD_MAX_LEN (25)
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+uint32_t dot11f_unpack_ie_ppe_threshold(
+	tpAniSirGlobal,
+	uint8_t *,
+	uint8_t,
+	tDot11fIEppe_threshold*);
+
+uint32_t dot11f_pack_ie_ppe_threshold(
+	tpAniSirGlobal,
+	tDot11fIEppe_threshold *,
+	uint8_t *,
+	uint32_t,
+	uint32_t*);
+
+uint32_t dot11f_get_packed_ie_ppe_threshold(
+	tpAniSirGlobal,
+	tDot11fIEppe_threshold *,
+	uint32_t*);
+
+#ifdef __cplusplus
+}; /* End extern "C". */
+#endif /* C++ */
+
 /* EID 51 (0x33) */
 typedef struct sDot11fIEAPChannelReport {
 	uint8_t             present;
@@ -3684,6 +3726,46 @@ uint32_t dot11f_get_packed_ie_tgt_mac_addr(
 }; /* End extern "C". */
 #endif /* C++ */
 
+/* EID 2 (0x02) */
+typedef struct sDot11fIEvht_info {
+	uint8_t             present;
+	uint8_t             chan_width;
+	uint8_t             center_freq_seg0;
+	uint8_t             center_freq_seg1;
+} tDot11fIEvht_info;
+
+#define DOT11F_EID_VHT_INFO (2)
+
+/* N.B. These #defines do *not* include the EID & length */
+#define DOT11F_IE_VHT_INFO_MIN_LEN (3)
+
+#define DOT11F_IE_VHT_INFO_MAX_LEN (3)
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+uint32_t dot11f_unpack_ie_vht_info(
+	tpAniSirGlobal,
+	uint8_t *,
+	uint8_t,
+	tDot11fIEvht_info*);
+
+uint32_t dot11f_pack_ie_vht_info(
+	tpAniSirGlobal,
+	tDot11fIEvht_info *,
+	uint8_t *,
+	uint32_t,
+	uint32_t*);
+
+uint32_t dot11f_get_packed_ie_vht_info(
+	tpAniSirGlobal,
+	tDot11fIEvht_info *,
+	uint32_t*);
+
+#ifdef __cplusplus
+}; /* End extern "C". */
+#endif /* C++ */
+
 /* EID 195 (0xc3) */
 typedef struct sDot11fIEvht_transmit_power_env {
 	uint8_t             present;
@@ -7752,6 +7834,157 @@ uint32_t dot11f_get_packed_ie_sec_chan_offset_ele(
 }; /* End extern "C". */
 #endif /* C++ */
 
+/* EID 221 (0xdd) {OUI 0x00, 0x13, 0x74, 0x01} */
+typedef struct sDot11fIEvendor_he_cap {
+	uint8_t                       present;
+	uint32_t                         htc_he:1;
+	uint32_t                    twt_request:1;
+	uint32_t                  twt_responder:1;
+	uint32_t                  fragmentation:2;
+	uint32_t              max_num_frag_msdu:3;
+	uint32_t                  min_frag_size:2;
+	uint32_t            trigger_frm_mac_pad:2;
+	uint32_t                 multi_tid_aggr:3;
+	uint32_t             he_link_adaptation:2;
+	uint32_t                        all_ack:1;
+	uint32_t                ul_mu_rsp_sched:1;
+	uint32_t                          a_bsr:1;
+	uint32_t                  broadcast_twt:1;
+	uint32_t                ba_32bit_bitmap:1;
+	uint32_t                     mu_cascade:1;
+	uint32_t           ack_enabled_multitid:1;
+	uint32_t                       dl_mu_ba:1;
+	uint32_t                     omi_a_ctrl:1;
+	uint32_t                       ofdma_ra:1;
+	uint32_t                  max_ampdu_len:2;
+	uint32_t                     amsdu_frag:1;
+	uint32_t                 flex_twt_sched:1;
+	uint32_t                  rx_ctrl_frame:1;
+	uint8_t                bsrp_ampdu_aggr:1;
+	uint8_t                            qtp:1;
+	uint8_t                          a_bqr:1;
+	uint8_t                      reserved1:5;
+	uint32_t                      dual_band:1;
+	uint32_t                     chan_width:7;
+	uint32_t            rx_pream_puncturing:4;
+	uint32_t                   device_class:1;
+	uint32_t                    ldpc_coding:1;
+	uint32_t                 he_ltf_gi_ppdu:2;
+	uint32_t                  he_ltf_gi_ndp:2;
+	uint32_t                           stbc:2;
+	uint32_t                        doppler:2;
+	uint32_t                          ul_mu:2;
+	uint32_t                     dcm_enc_tx:3;
+	uint32_t                     dcm_enc_rx:3;
+	uint32_t                       ul_he_mu:1;
+	uint32_t                  su_beamformer:1;
+	uint32_t                  su_beamformee:1;
+	uint32_t                  mu_beamformer:1;
+	uint32_t                 bfee_sts_lt_80:3;
+	uint32_t                 nsts_tol_lt_80:3;
+	uint32_t                 bfee_sta_gt_80:3;
+	uint32_t                 nsts_tot_gt_80:3;
+	uint32_t             num_sounding_lt_80:3;
+	uint32_t             num_sounding_gt_80:3;
+	uint32_t             su_feedback_tone16:1;
+	uint32_t             mu_feedback_tone16:1;
+	uint32_t                    codebook_su:1;
+	uint32_t                    codebook_mu:1;
+	uint32_t           beamforming_feedback:3;
+	uint32_t                  he_er_su_ppdu:1;
+	uint32_t             dl_mu_mimo_part_bw:1;
+	uint32_t                   ppet_present:1;
+	uint32_t                            srp:1;
+	uint32_t                    power_boost:1;
+	uint8_t                   he_ltf_gi_4x:1;
+	uint8_t                      reserved2:7;
+	uint16_t                  nss_supported:3;
+	uint16_t                  mcs_supported:3;
+	uint16_t                   tx_bw_bitmap:5;
+	uint16_t                   rx_bw_bitmap:5;
+	tDot11fIEppe_threshold        ppe_threshold;
+} tDot11fIEvendor_he_cap;
+
+#define DOT11F_EID_VENDOR_HE_CAP (221)
+
+/* N.B. These #defines do *not* include the EID & length */
+#define DOT11F_IE_VENDOR_HE_CAP_MIN_LEN (20)
+
+#define DOT11F_IE_VENDOR_HE_CAP_MAX_LEN (47)
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+uint32_t dot11f_unpack_ie_vendor_he_cap(
+	tpAniSirGlobal,
+	uint8_t *,
+	uint8_t,
+	tDot11fIEvendor_he_cap*);
+
+uint32_t dot11f_pack_ie_vendor_he_cap(
+	tpAniSirGlobal,
+	tDot11fIEvendor_he_cap *,
+	uint8_t *,
+	uint32_t,
+	uint32_t*);
+
+uint32_t dot11f_get_packed_ie_vendor_he_cap(
+	tpAniSirGlobal,
+	tDot11fIEvendor_he_cap *,
+	uint32_t*);
+
+#ifdef __cplusplus
+}; /* End extern "C". */
+#endif /* C++ */
+
+/* EID 221 (0xdd) {OUI 0x00, 0x13, 0x74, 0x02} */
+typedef struct sDot11fIEvendor_he_op {
+	uint8_t                  present;
+	uint32_t                 bss_color:6;
+	uint32_t                default_pe:3;
+	uint32_t              twt_required:1;
+	uint32_t             rts_threshold:10;
+	uint32_t           partial_bss_col:1;
+	uint32_t              maxbssid_ind:8;
+	uint32_t              tx_bssid_ind:1;
+	uint32_t          bss_col_disabled:1;
+	uint32_t               dual_beacon:1;
+	uint8_t                  basic_mcs_nss[3];
+	tDot11fIEvht_info        vht_info;
+} tDot11fIEvendor_he_op;
+
+#define DOT11F_EID_VENDOR_HE_OP (221)
+
+/* N.B. These #defines do *not* include the EID & length */
+#define DOT11F_IE_VENDOR_HE_OP_MIN_LEN (11)
+
+#define DOT11F_IE_VENDOR_HE_OP_MAX_LEN (16)
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+uint32_t dot11f_unpack_ie_vendor_he_op(
+	tpAniSirGlobal,
+	uint8_t *,
+	uint8_t,
+	tDot11fIEvendor_he_op*);
+
+uint32_t dot11f_pack_ie_vendor_he_op(
+	tpAniSirGlobal,
+	tDot11fIEvendor_he_op *,
+	uint8_t *,
+	uint32_t,
+	uint32_t*);
+
+uint32_t dot11f_get_packed_ie_vendor_he_op(
+	tpAniSirGlobal,
+	tDot11fIEvendor_he_op *,
+	uint32_t*);
+
+#ifdef __cplusplus
+}; /* End extern "C". */
+#endif /* C++ */
+
 /* EID 221 (0xdd) {OUI 0x00, 0x90, 0x4c} */
 typedef struct sDot11fIEvendor_vht_ie {
 	uint8_t                      present;
@@ -7902,6 +8135,7 @@ typedef struct sDot11fAssocRequest{
 	tDot11fIEvendor_vht_ie               vendor_vht_ie;
 	tDot11fIEhs20vendor_ie               hs20vendor_ie;
 	tDot11fIEQCN_IE                      QCN_IE;
+	tDot11fIEvendor_he_cap               vendor_he_cap;
 } tDot11fAssocRequest;
 
 #define DOT11F_ASSOCREQUEST (3)
@@ -7958,6 +8192,8 @@ typedef struct sDot11fAssocResponse{
 	tDot11fIEQosMapSet                 QosMapSet;
 	tDot11fIEvendor_vht_ie             vendor_vht_ie;
 	tDot11fIEQCN_IE                    QCN_IE;
+	tDot11fIEvendor_he_cap             vendor_he_cap;
+	tDot11fIEvendor_he_op              vendor_he_op;
 } tDot11fAssocResponse;
 
 #define DOT11F_ASSOCRESPONSE (4)
@@ -8071,6 +8307,8 @@ typedef struct sDot11fBeacon{
 	tDot11fIEESEVersion                  ESEVersion;
 	tDot11fIEMBO_IE                      MBO_IE;
 	tDot11fIEQCN_IE                      QCN_IE;
+	tDot11fIEvendor_he_cap               vendor_he_cap;
+	tDot11fIEvendor_he_op                vendor_he_op;
 } tDot11fBeacon;
 
 #define DOT11F_BEACON (6)
@@ -8166,6 +8404,8 @@ typedef struct sDot11fBeacon2{
 	tDot11fIEQComVendorIE                QComVendorIE;
 	tDot11fIEESEVersion                  ESEVersion;
 	tDot11fIEQCN_IE                      QCN_IE;
+	tDot11fIEvendor_he_cap               vendor_he_cap;
+	tDot11fIEvendor_he_op                vendor_he_op;
 } tDot11fBeacon2;
 
 #define DOT11F_BEACON2 (8)
@@ -8243,6 +8483,8 @@ typedef struct sDot11fBeaconIEs{
 	tDot11fIEQComVendorIE                QComVendorIE;
 	tDot11fIEMBO_IE                      MBO_IE;
 	tDot11fIEQCN_IE                      QCN_IE;
+	tDot11fIEvendor_he_cap               vendor_he_cap;
+	tDot11fIEvendor_he_op                vendor_he_op;
 } tDot11fBeaconIEs;
 
 #define DOT11F_BEACONIES (9)
@@ -8581,6 +8823,7 @@ typedef struct sDot11fProbeRequest{
 	tDot11fIEVHTCaps              VHTCaps;
 	tDot11fIEExtCap               ExtCap;
 	tDot11fIEQCN_IE               QCN_IE;
+	tDot11fIEvendor_he_cap        vendor_he_cap;
 } tDot11fProbeRequest;
 
 #define DOT11F_PROBEREQUEST (21)
@@ -8657,6 +8900,8 @@ typedef struct sDot11fProbeResponse{
 	tDot11fIEESEVersion                  ESEVersion;
 	tDot11fIEMBO_IE                      MBO_IE;
 	tDot11fIEQCN_IE                      QCN_IE;
+	tDot11fIEvendor_he_cap               vendor_he_cap;
+	tDot11fIEvendor_he_op                vendor_he_op;
 } tDot11fProbeResponse;
 
 #define DOT11F_PROBERESPONSE (22)
@@ -8799,6 +9044,7 @@ typedef struct sDot11fReAssocRequest{
 	tDot11fIEQosMapSet                 QosMapSet;
 	tDot11fIEvendor_vht_ie             vendor_vht_ie;
 	tDot11fIEhs20vendor_ie             hs20vendor_ie;
+	tDot11fIEvendor_he_cap             vendor_he_cap;
 } tDot11fReAssocRequest;
 
 #define DOT11F_REASSOCREQUEST (26)
@@ -8855,6 +9101,8 @@ typedef struct sDot11fReAssocResponse{
 	tDot11fIEOBSSScanParameters        OBSSScanParameters;
 	tDot11fIEQosMapSet                 QosMapSet;
 	tDot11fIEvendor_vht_ie             vendor_vht_ie;
+	tDot11fIEvendor_he_cap             vendor_he_cap;
+	tDot11fIEvendor_he_op              vendor_he_op;
 } tDot11fReAssocResponse;
 
 #define DOT11F_REASSOCRESPONSE (27)

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 282 - 220
core/mac/src/sys/legacy/src/utils/src/dot11f.c


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно