Browse Source

qcacmn: Add definitions for basic variant Multi Link IE

Add definitions specific to the basic variant of Multi Link IE. These
are based on IEEE802.11be D1.0.

CRs-Fixed: 2996746
Change-Id: I2779b325a74913bca8b1aca7c048f54bccc1d4d5
Krishna Rao 4 years ago
parent
commit
dd6ac7346c
1 changed files with 267 additions and 0 deletions
  1. 267 0
      umac/cmn_services/cmn_defs/inc/wlan_cmn_ieee80211.h

+ 267 - 0
umac/cmn_services/cmn_defs/inc/wlan_cmn_ieee80211.h

@@ -1535,6 +1535,273 @@ enum wlan_ml_variant {
  * across variants.
  */
 
+/* Definitions related to Basic variant Multi-Link element. */
+
+/* Definitions for bits in the Presence Bitmap subfield in Basic variant
+ * Multi-Link element Control field. Any unused bits are reserved.
+ */
+/* MLD MAC Address Present */
+#define WLAN_ML_BV_CTRL_PBM_MLDMACADDR_P               ((uint16_t)BIT(0))
+/* Link ID Info Present */
+#define WLAN_ML_BV_CTRL_PBM_LINKIDINFO_P               ((uint16_t)BIT(1))
+/* BSS Parameters Change Count Present */
+#define WLAN_ML_BV_CTRL_PBM_BSSPARAMCHANGECNT_P        ((uint16_t)BIT(2))
+/* Medium Synchronization Delay Information Present */
+#define WLAN_ML_BV_CTRL_PBM_MEDIUMSYNCDELAYINFO_P      ((uint16_t)BIT(3))
+/* EML Capabilities Present */
+#define WLAN_ML_BV_CTRL_PBM_EMLCAP_P                   ((uint16_t)BIT(4))
+/* MLD Capabilities */
+#define WLAN_ML_BV_CTRL_PBM_MLDCAP_P                   ((uint16_t)BIT(5))
+
+/* Definitions related to Basic variant Multi-Link element Common Info field */
+
+/* Definitions for sub-sub fields in Link ID Info subfield in Basic variant
+ * Multi-Link element Common Info field. Any unused bits are reserved.
+ */
+/* Link ID */
+#define WLAN_ML_BV_CINFO_LINKIDINFO_LINKID_IDX                      0
+#define WLAN_ML_BV_CINFO_LINKIDINFO_LINKID_BITS                     4
+
+/* Definitions for sub-sub fields in Medium Synchronization Delay Information
+ * subfield in Basic variant Multi-Link element Common Info field.
+ */
+/* Medium Synchronization Duration */
+#define WLAN_ML_BV_CINFO_MEDMSYNCDELAYINFO_DURATION_IDX             0
+#define WLAN_ML_BV_CINFO_MEDMSYNCDELAYINFO_DURATION_BITS            8
+/* Medium Synchronization OFDM ED Threshold  */
+#define WLAN_ML_BV_CINFO_MEDMSYNCDELAYINFO_OFDMEDTHRESH_IDX         8
+#define WLAN_ML_BV_CINFO_MEDMSYNCDELAYINFO_OFDMEDTHRESH_BITS        4
+/* Medium Synchronization Maximum Number Of TXOPs  */
+#define WLAN_ML_BV_CINFO_MEDMSYNCDELAYINFO_MAXTXOPS_IDX             12
+#define WLAN_ML_BV_CINFO_MEDMSYNCDELAYINFO_MAXTXOPS_BITS            4
+
+/* Definitions for sub-sub fields in EML Capabilities subfield in Basic variant
+ * Multi-Link element Common Info field. Any unused bits are reserved.
+ */
+/* EMLSR Support */
+#define WLAN_ML_BV_CINFO_EMLCAP_EMLSRSUPPORT_IDX                    0
+#define WLAN_ML_BV_CINFO_EMLCAP_EMLSRSUPPORT_BITS                   1
+/* EMLSR Delay */
+#define WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_IDX                      1
+#define WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_BITS                     3
+/* EMLMR Support */
+#define WLAN_ML_BV_CINFO_EMLCAP_EMLMRSUPPORT_IDX                    4
+#define WLAN_ML_BV_CINFO_EMLCAP_EMLMRSUPPORT_BITS                   1
+/* EMLMR Delay */
+#define WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_IDX                      5
+#define WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_BITS                     3
+/* Transition Timeout */
+#define WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_IDX                    8
+#define WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_BITS                   4
+/* EMLMR Rx NSS */
+#define WLAN_ML_BV_CINFO_EMLCAP_EMLMRRXNSS_IDX                      16
+#define WLAN_ML_BV_CINFO_EMLCAP_EMLMRRXNSS_BITS                     4
+/* EMLMR Tx NSS */
+#define WLAN_ML_BV_CINFO_EMLCAP_EMLMRTXNSS_IDX                      20
+#define WLAN_ML_BV_CINFO_EMLCAP_EMLMRTXNSS_BITS                     4
+
+/**
+ * wlan_ml_bv_cinfo_emlcap_emlsrdelay - Encoding for EMLSR Delay sub-sub field
+ * in EML Capabilities subfield in Basic variant Multi-Link element Common Info
+ * field.
+ * Note: In case of holes in the enumeration, scheme for invalid value
+ * determination should be changed.
+ * @WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_0US: EMLSR delay of 0 us
+ * @WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_32US: EMLSR delay of 32 us
+ * @WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_64US: EMLSR delay of 64 us
+ * @WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_128US: EMLSR delay of 128 us
+ * @WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_256US: EMLSR delay of 256 us
+ * @WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_INVALIDSTART: Start of invalid value
+ * range
+ */
+enum wlan_ml_bv_cinfo_emlcap_emlsrdelay {
+	WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_0US = 0,
+	WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_32US = 1,
+	WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_64US = 2,
+	WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_128US = 3,
+	WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_256US = 4,
+	WLAN_ML_BV_CINFO_EMLCAP_EMLSRDELAY_INVALIDSTART,
+};
+
+/**
+ * wlan_ml_bv_cinfo_emlcap_emlmrdelay - Encoding for EMLMR Delay sub-sub field
+ * in EML Capabilities subfield in Basic variant Multi-Link element Common Info
+ * field.
+ * Note: In case of holes in the enumeration, scheme for invalid value
+ * determination should be changed.
+ * @WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_0US: EMLMR delay of 0 us
+ * @WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_32US: EMLMR delay of 32 us
+ * @WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_64US: EMLMR delay of 64 us
+ * @WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_128US: EMLMR delay of 128 us
+ * @WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_256US: EMLMR delay of 256 us
+ * @WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_INVALIDSTART: Start of invalid
+ * value range
+ */
+enum wlan_ml_bv_cinfo_emlcap_emlmrdelay {
+	WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_0US = 0,
+	WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_32US = 1,
+	WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_64US = 2,
+	WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_128US = 3,
+	WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_256US = 4,
+	WLAN_ML_BV_CINFO_EMLCAP_EMLMRDELAY_INVALIDSTART,
+};
+
+/**
+ * wlan_ml_bv_cinfo_emlcap_transtimeout - Encoding for Transition Timeout
+ * sub-sub field in EML Capabilities subfield in Basic variant Multi-Link
+ * element Common Info field.
+ * Note: a) In case of holes in the enumeration, scheme for invalid value
+ * determination should be changed. b) A mathematical formula could have been
+ * used instead of an enumeration. However, the standard explicitly lists out
+ * values instead of using a formula, and we reflect this accordingly using an
+ * enumeration.
+ * WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_0TU: Transition Timeout value of 0 TUs
+ * WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_1TU: Transition Timeout value of 1 TU
+ * WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_2TU: Transition Timeout value of 2 TUs
+ * WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_4TU: Transition Timeout value of 4 TUs
+ * WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_8TU: Transition Timeout value of 8 TUs
+ * WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_16TU: Transition Timeout value of 16
+ * TUs
+ * WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_32TU: Transition Timeout value of 32
+ * TUs
+ * WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_64TU: Transition Timeout value of 64
+ * TUs
+ * WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_128TU: Transition Timeout value of 128
+ * TUs
+ * @WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_INVALIDSTART: Start of invalid value
+ * range
+ */
+enum wlan_ml_bv_cinfo_emlcap_transtimeout {
+	WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_0TU = 0,
+	WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_1TU = 1,
+	WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_2TU = 2,
+	WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_4TU = 3,
+	WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_8TU = 4,
+	WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_16TU = 5,
+	WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_32TU = 6,
+	WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_64TU = 7,
+	WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_128TU = 8,
+	WLAN_ML_BV_CINFO_EMLCAP_TRANSTIMEOUT_INVALIDSTART,
+};
+
+/* Definitions for sub-sub fields in MLD Capabilities subfield in Basic variant
+ * Multi-Link element Common Info field. Any unused bits are reserved.
+ */
+/* Maximum Number Of Simultaneous Links */
+#define WLAN_ML_BV_CINFO_MLDCAP_MAXSIMULLINKS_IDX                   0
+#define WLAN_ML_BV_CINFO_MLDCAP_MAXSIMULLINKS_BITS                  4
+/* SRS Support */
+#define WLAN_ML_BV_CINFO_MLDCAP_SRSSUPPORT_IDX                      4
+#define WLAN_ML_BV_CINFO_MLDCAP_SRSSUPPORT_BITS                     1
+/* TID-To-Link Mapping Negotiation Supported */
+#define WLAN_ML_BV_CINFO_MLDCAP_TIDTOLINKMAPNEGSUPPORT_IDX          5
+#define WLAN_ML_BV_CINFO_MLDCAP_TIDTOLINKMAPNEGSUPPORT_BITS         2
+/* Frequency Separation For STR */
+#define WLAN_ML_BV_CINFO_MLDCAP_STRFREQSEPARATION_IDX               7
+#define WLAN_ML_BV_CINFO_MLDCAP_STRFREQSEPARATION_BITS              5
+
+/* End of definitions related to Basic variant Multi-Link element Common Info
+ * field.
+ */
+
+/* Definitions related to Basic variant Multi-Link element Link Info field */
+
+/* Basic variant Multi-Link element Link Info field contains zero or more
+ * subelements.
+ */
+
+/**
+ *  enum wlan_ml_bv_linfo_subelementid - IDs for subelements in Basic variant
+ *  Multi-Link element Link Info field.
+ *  @WLAN_ML_BV_LINFO_SUBELEMID_PERSTAPROFILE: Per-STA Profile
+ *  @WLAN_ML_BV_LINFO_SUBELEMID_VENDOR: Vendor specific
+ */
+enum wlan_ml_bv_linfo_subelementid {
+	WLAN_ML_BV_LINFO_SUBELEMID_PERSTAPROFILE  = 0,
+	WLAN_ML_BV_LINFO_SUBELEMID_VENDOR = 221,
+};
+
+/**
+ * struct wlan_ml_bv_linfo_perstaprof - Fixed fields of Per-STA Profile
+ * subelement in Basic variant Multi-Link element Link Info field
+ * @subelem_id: Subelement ID
+ * @subelem_len: Subelement length
+ * @stacontrol: STA Control
+ */
+struct wlan_ml_bv_linfo_perstaprof {
+	uint8_t subelem_id;
+	uint8_t subelem_len;
+	uint16_t stacontrol;
+} qdf_packed;
+
+/* The above fixed fields may be followed by:
+ * STA Info (variable size)
+ * STA Profile (variable size)
+ */
+
+/* Definitions for subfields in STA Control field of Per-STA Profile subelement
+ * in Basic variant Multi-Link element Link Info field. Any unused bits are
+ * reserved.
+ */
+/* Link ID */
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_LINKID_IDX              0
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_LINKID_BITS             4
+/* Complete Profile */
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_CMPLTPROF_IDX           4
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_CMPLTPROF_BITS          1
+/* MAC Address Present */
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_MACADDRP_IDX            5
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_MACADDRP_BITS           1
+/* Beacon Interval Present */
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_BCNINTP_IDX             6
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_BCNINTP_BITS            1
+/* DTIM Info Present */
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_DTIMINFOP_IDX           7
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_DTIMINFOP_BITS          1
+/* NSTR Link Pair Present */
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_NSTRLINKPRP_IDX         8
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_NSTRLINKPRP_BITS        1
+/* NSTR Bitmap Size */
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_NSTRBMSZ_IDX            9
+#define WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_NSTRBMSZ_BITS           1
+
+/**
+ * wlan_ml_bv_linfo_perstaprof_stactrl_nstrbmsz - Encoding for NSTR Bitmap Size
+ * in STA Control field of Per-STA Profile subelement in Basic variant
+ * Multi-Link element Link Info field.
+ * Note: In case of holes in the enumeration, scheme for invalid value
+ * determination should be changed.
+ * @WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_NSTRBMSZ_1_OCTET: NSTR Indication
+ * Bitmap size of 1 octet
+ * @WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_NSTRBMSZ_2_OCTETS: NSTR Indication
+ * Bitmap size of 2 octets
+ * @WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_NSTRBMSZ_INVALIDSTART: Start of invalid
+ * value range
+ */
+enum wlan_ml_bv_linfo_perstaprof_stactrl_nstrbmsz {
+	WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_NSTRBMSZ_1_OCTET = 0,
+	WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_NSTRBMSZ_2_OCTETS = 1,
+	WLAN_ML_BV_LINFO_PERSTAPROF_STACTRL_NSTRBMSZ_INVALIDSTART,
+};
+
+/**
+ * struct wlan_ml_bv_linfo_perstaprof_stainfo_dtiminfo - DTIM info in STA info
+ * in Per-STA Profile subelement in Basic variant Multi-Link element Link Info
+ * field.
+ * @dtimcount: DTIM Count
+ * @dtimperiod: DTIM Period
+ */
+struct wlan_ml_bv_linfo_perstaprof_stainfo_dtiminfo {
+	uint8_t dtimcount;
+	uint8_t dtimperiod;
+} qdf_packed;
+
+/* End of definitions related to Basic variant Multi-Link element Link Info
+ * field.
+ */
+
+/* End of definitions related to Basic variant Multi-Link element. */
+
 #endif /* WLAN_FEATURE_11BE_MLO */
 #endif /* WLAN_FEATURE_11BE */