qcacld-3.0: Change the QCN IE attributes to TLV type

Use the TLV type for QCN IE attributes to fix the duplicate IE
detection and update QCN IE with new attributes.

Change-Id: Ia1be2d1754a3ed82ad3f01b68e719c504f624309
CRs-Fixed: 2760822
This commit is contained in:
Kiran Kumar Lokere 2020-09-29 11:47:57 -07:00 • committed by snandini
commit 65f53c0f74
5 changed files with 1240 additions and 615 deletions

View file

@ -2613,27 +2613,74 @@ IE TimeAdvertisement (EID_TIME_ADVERTISEMENT) // 8.4.2.63
time_error[5];
}
const QTI_VERSION_ATTR_ID = 1;
const QTI_VHT_MCS_10_11_ATTR_ID = 2;
const QTI_HE_MCS_11_12_ATTR_ID = 9;
const TLV_VERSION_ATTR_ID = 1;
const TLV_VHT_MCS_10_11_ATTR_ID = 2;
const TLV_HE_400NS_SGI_SUPP_ATTR_ID = 3;
const TLV_HE_2XLTF_160_80P80_SUPP_ATTR_ID = 4;
const TLV_HE_DL_OFDMA_SUPPP_ATTR_ID = 5;
const TLV_TRANSITION_REASONP_ATTR_ID = 6;
const TLV_TRANSITION_REJECTIONP_ATTR_ID = 7;
const TLV_HE_DL_MUMIMO_SUPPP_ATTR_ID = 8;
const TLV_HE_MCS_11_12_ATTR_ID = 9;
IE qcn_ie (EID_VENDOR_SPECIFIC) OUI ( 0x8C, 0xFD, 0xF0, 0x01 )
TLV qcn_version(TLV_VERSION_ATTR_ID) ( 1 : 1 ) LSB
{
version, 1;
sub_version, 1;
}
TLV vht_mcs11_attr (TLV_VHT_MCS_10_11_ATTR_ID) ( 1 : 1 ) LSB
{
OPTIE IE version_attr (QTI_VERSION_ATTR_ID)
{
version, 1;
sub_version, 1;
}
OPTIE IE vht_mcs11_attr (QTI_VHT_MCS_10_11_ATTR_ID)
{
vht_mcs_10_11_supp, 1;
}
}
TLV he_400ns_sgi_attr (TLV_HE_400NS_SGI_SUPP_ATTR_ID) ( 1 : 1 ) LSB
{
he_ltf1x_400ns_sgi, 1;
he_ltf2x_400ns_sgi, 1;
he_ltf4x_400ns_sgi, 1;
}
OPTIE IE he_mcs13_attr (QTI_HE_MCS_11_12_ATTR_ID)
{
he_mcs_12_13_supp, 2;
}
TLV he_2xltf_160mhz_supp (TLV_HE_2XLTF_160_80P80_SUPP_ATTR_ID) ( 1 : 1 ) LSB
{
he_2xltf_160MHz_supp, 1;
}
TLV he_dl_ofdma_attr (TLV_HE_DL_OFDMA_SUPPP_ATTR_ID) ( 1 : 1 ) LSB
{
he_dl_ofdma_supp, 1;
}
TLV trans_reasonp_attr (TLV_TRANSITION_REASONP_ATTR_ID) ( 1 : 1 ) LSB
{
transition_reasonp, 1;
}
TLV trans_rejectp_attr (TLV_TRANSITION_REJECTIONP_ATTR_ID) ( 1 : 1 ) LSB
{
transition_rejp, 1;
}
TLV he_dl_mumimo_attr (TLV_HE_DL_MUMIMO_SUPPP_ATTR_ID) ( 1 : 1 ) LSB
{
he_dl_mumimo_supp, 1;
}
TLV he_mcs13_attr (TLV_HE_MCS_11_12_ATTR_ID) ( 1 : 1 ) LSB
{
he_mcs_12_13_supp_80, 1;
he_mcs_12_13_supp_160, 1;
}
MULTIIE qcn_ie (EID_VENDOR_SPECIFIC) OUI ( 0x8C, 0xFD, 0xF0, 0x01 )
{
OPTIONALTLV qcn_version;
OPTIONALTLV vht_mcs11_attr;
OPTIONALTLV he_400ns_sgi_attr;
OPTIONALTLV he_2xltf_160mhz_supp;
OPTIONALTLV he_dl_ofdma_attr;
OPTIONALTLV trans_reasonp_attr;
OPTIONALTLV trans_rejectp_attr;
OPTIONALTLV he_dl_mumimo_attr;
OPTIONALTLV he_mcs13_attr;
}
IE esp_information (EID_EXTN_ID_ELEMENT) OUI ( 0x0B )

View file

@ -26,7 +26,7 @@
*
*
* This file was automatically generated by 'framesc'
* Fri Aug 14 16:33:26 2020 from the following file(s):
* Tue Sep 29 11:31:39 2020 from the following file(s):
*
* dot11f.frms
*
@ -2212,6 +2212,199 @@ uint32_t dot11f_get_packed_tlv_cellular_data_con_pref(
}; /* End extern "C". */
#endif /* C++ */
/* ID 4 (0x0004) */
typedef struct sDot11fTLVhe_2xltf_160mhz_supp {
uint8_t present;
uint8_t he_2xltf_160MHz_supp;
} tDot11fTLVhe_2xltf_160mhz_supp;
#define DOT11F_TLV_HE_2XLTF_160MHZ_SUPP (4)
/* N.B. These #defines do *not* include the ID & length */
#define DOT11F_TLV_HE_2XLTF_160MHZ_SUPP_MIN_LEN (1)
#define DOT11F_TLV_HE_2XLTF_160MHZ_SUPP_MAX_LEN (1)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
uint32_t dot11f_unpack_tlv_he_2xltf_160mhz_supp(
tpAniSirGlobal,
uint8_t *,
uint16_t,
tDot11fTLVhe_2xltf_160mhz_supp*);
uint32_t dot11f_pack_tlv_he_2xltf_160mhz_supp(
tpAniSirGlobal,
tDot11fTLVhe_2xltf_160mhz_supp *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_tlv_he_2xltf_160mhz_supp(
tpAniSirGlobal,
tDot11fTLVhe_2xltf_160mhz_supp *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* ID 3 (0x0003) */
typedef struct sDot11fTLVhe_400ns_sgi_attr {
uint8_t present;
uint8_t he_ltf1x_400ns_sgi;
uint8_t he_ltf2x_400ns_sgi;
uint8_t he_ltf4x_400ns_sgi;
} tDot11fTLVhe_400ns_sgi_attr;
#define DOT11F_TLV_HE_400NS_SGI_ATTR (3)
/* N.B. These #defines do *not* include the ID & length */
#define DOT11F_TLV_HE_400NS_SGI_ATTR_MIN_LEN (3)
#define DOT11F_TLV_HE_400NS_SGI_ATTR_MAX_LEN (3)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
uint32_t dot11f_unpack_tlv_he_400ns_sgi_attr(
tpAniSirGlobal,
uint8_t *,
uint16_t,
tDot11fTLVhe_400ns_sgi_attr*);
uint32_t dot11f_pack_tlv_he_400ns_sgi_attr(
tpAniSirGlobal,
tDot11fTLVhe_400ns_sgi_attr *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_tlv_he_400ns_sgi_attr(
tpAniSirGlobal,
tDot11fTLVhe_400ns_sgi_attr *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* ID 8 (0x0008) */
typedef struct sDot11fTLVhe_dl_mumimo_attr {
uint8_t present;
uint8_t he_dl_mumimo_supp;
} tDot11fTLVhe_dl_mumimo_attr;
#define DOT11F_TLV_HE_DL_MUMIMO_ATTR (8)
/* N.B. These #defines do *not* include the ID & length */
#define DOT11F_TLV_HE_DL_MUMIMO_ATTR_MIN_LEN (1)
#define DOT11F_TLV_HE_DL_MUMIMO_ATTR_MAX_LEN (1)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
uint32_t dot11f_unpack_tlv_he_dl_mumimo_attr(
tpAniSirGlobal,
uint8_t *,
uint16_t,
tDot11fTLVhe_dl_mumimo_attr*);
uint32_t dot11f_pack_tlv_he_dl_mumimo_attr(
tpAniSirGlobal,
tDot11fTLVhe_dl_mumimo_attr *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_tlv_he_dl_mumimo_attr(
tpAniSirGlobal,
tDot11fTLVhe_dl_mumimo_attr *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* ID 5 (0x0005) */
typedef struct sDot11fTLVhe_dl_ofdma_attr {
uint8_t present;
uint8_t he_dl_ofdma_supp;
} tDot11fTLVhe_dl_ofdma_attr;
#define DOT11F_TLV_HE_DL_OFDMA_ATTR (5)
/* N.B. These #defines do *not* include the ID & length */
#define DOT11F_TLV_HE_DL_OFDMA_ATTR_MIN_LEN (1)
#define DOT11F_TLV_HE_DL_OFDMA_ATTR_MAX_LEN (1)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
uint32_t dot11f_unpack_tlv_he_dl_ofdma_attr(
tpAniSirGlobal,
uint8_t *,
uint16_t,
tDot11fTLVhe_dl_ofdma_attr*);
uint32_t dot11f_pack_tlv_he_dl_ofdma_attr(
tpAniSirGlobal,
tDot11fTLVhe_dl_ofdma_attr *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_tlv_he_dl_ofdma_attr(
tpAniSirGlobal,
tDot11fTLVhe_dl_ofdma_attr *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* ID 9 (0x0009) */
typedef struct sDot11fTLVhe_mcs13_attr {
uint8_t present;
uint8_t he_mcs_12_13_supp_80;
uint8_t he_mcs_12_13_supp_160;
} tDot11fTLVhe_mcs13_attr;
#define DOT11F_TLV_HE_MCS13_ATTR (9)
/* N.B. These #defines do *not* include the ID & length */
#define DOT11F_TLV_HE_MCS13_ATTR_MIN_LEN (2)
#define DOT11F_TLV_HE_MCS13_ATTR_MAX_LEN (2)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
uint32_t dot11f_unpack_tlv_he_mcs13_attr(
tpAniSirGlobal,
uint8_t *,
uint16_t,
tDot11fTLVhe_mcs13_attr*);
uint32_t dot11f_pack_tlv_he_mcs13_attr(
tpAniSirGlobal,
tDot11fTLVhe_mcs13_attr *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_tlv_he_mcs13_attr(
tpAniSirGlobal,
tDot11fTLVhe_mcs13_attr *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* ID 1 (0x0001) */
typedef struct sDot11fTLVmbo_ap_cap {
uint8_t present;
@ -2331,6 +2524,45 @@ uint32_t dot11f_get_packed_tlv_oce_cap(
}; /* End extern "C". */
#endif /* C++ */
/* ID 1 (0x0001) */
typedef struct sDot11fTLVqcn_version {
uint8_t present;
uint8_t version;
uint8_t sub_version;
} tDot11fTLVqcn_version;
#define DOT11F_TLV_QCN_VERSION (1)
/* N.B. These #defines do *not* include the ID & length */
#define DOT11F_TLV_QCN_VERSION_MIN_LEN (2)
#define DOT11F_TLV_QCN_VERSION_MAX_LEN (2)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
uint32_t dot11f_unpack_tlv_qcn_version(
tpAniSirGlobal,
uint8_t *,
uint16_t,
tDot11fTLVqcn_version*);
uint32_t dot11f_pack_tlv_qcn_version(
tpAniSirGlobal,
tDot11fTLVqcn_version *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_tlv_qcn_version(
tpAniSirGlobal,
tDot11fTLVqcn_version *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* ID 103 (0x0067) */
typedef struct sDot11fTLVreduced_wan_metrics {
uint8_t present;
@ -2409,6 +2641,82 @@ uint32_t dot11f_get_packed_tlv_rssi_assoc_rej(
}; /* End extern "C". */
#endif /* C++ */
/* ID 6 (0x0006) */
typedef struct sDot11fTLVtrans_reasonp_attr {
uint8_t present;
uint8_t transition_reasonp;
} tDot11fTLVtrans_reasonp_attr;
#define DOT11F_TLV_TRANS_REASONP_ATTR (6)
/* N.B. These #defines do *not* include the ID & length */
#define DOT11F_TLV_TRANS_REASONP_ATTR_MIN_LEN (1)
#define DOT11F_TLV_TRANS_REASONP_ATTR_MAX_LEN (1)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
uint32_t dot11f_unpack_tlv_trans_reasonp_attr(
tpAniSirGlobal,
uint8_t *,
uint16_t,
tDot11fTLVtrans_reasonp_attr*);
uint32_t dot11f_pack_tlv_trans_reasonp_attr(
tpAniSirGlobal,
tDot11fTLVtrans_reasonp_attr *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_tlv_trans_reasonp_attr(
tpAniSirGlobal,
tDot11fTLVtrans_reasonp_attr *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* ID 7 (0x0007) */
typedef struct sDot11fTLVtrans_rejectp_attr {
uint8_t present;
uint8_t transition_rejp;
} tDot11fTLVtrans_rejectp_attr;
#define DOT11F_TLV_TRANS_REJECTP_ATTR (7)
/* N.B. These #defines do *not* include the ID & length */
#define DOT11F_TLV_TRANS_REJECTP_ATTR_MIN_LEN (1)
#define DOT11F_TLV_TRANS_REJECTP_ATTR_MAX_LEN (1)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
uint32_t dot11f_unpack_tlv_trans_rejectp_attr(
tpAniSirGlobal,
uint8_t *,
uint16_t,
tDot11fTLVtrans_rejectp_attr*);
uint32_t dot11f_pack_tlv_trans_rejectp_attr(
tpAniSirGlobal,
tDot11fTLVtrans_rejectp_attr *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_tlv_trans_rejectp_attr(
tpAniSirGlobal,
tDot11fTLVtrans_rejectp_attr *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* ID 6 (0x0006) */
typedef struct sDot11fTLVtransition_reason {
uint8_t present;
@ -2485,6 +2793,44 @@ uint32_t dot11f_get_packed_tlv_transition_reject_reason(
}; /* End extern "C". */
#endif /* C++ */
/* ID 2 (0x0002) */
typedef struct sDot11fTLVvht_mcs11_attr {
uint8_t present;
uint8_t vht_mcs_10_11_supp;
} tDot11fTLVvht_mcs11_attr;
#define DOT11F_TLV_VHT_MCS11_ATTR (2)
/* N.B. These #defines do *not* include the ID & length */
#define DOT11F_TLV_VHT_MCS11_ATTR_MIN_LEN (1)
#define DOT11F_TLV_VHT_MCS11_ATTR_MAX_LEN (1)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
uint32_t dot11f_unpack_tlv_vht_mcs11_attr(
tpAniSirGlobal,
uint8_t *,
uint16_t,
tDot11fTLVvht_mcs11_attr*);
uint32_t dot11f_pack_tlv_vht_mcs11_attr(
tpAniSirGlobal,
tDot11fTLVvht_mcs11_attr *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_tlv_vht_mcs11_attr(
tpAniSirGlobal,
tDot11fTLVvht_mcs11_attr *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* ID 16 (0x0010) */
typedef struct sDot11fTLVP2PInterface {
uint8_t present;
@ -2730,124 +3076,6 @@ uint32_t dot11f_get_packed_ie_R1KH_ID(
}; /* End extern "C". */
#endif /* C++ */
/* EID 9 (0x09) */
typedef struct sDot11fIEhe_mcs13_attr {
uint8_t present;
uint16_t he_mcs_12_13_supp;
} tDot11fIEhe_mcs13_attr;
#define DOT11F_EID_HE_MCS13_ATTR (9)
/* N.B. These #defines do *not* include the EID & length */
#define DOT11F_IE_HE_MCS13_ATTR_MIN_LEN (2)
#define DOT11F_IE_HE_MCS13_ATTR_MAX_LEN (2)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
__must_check uint32_t dot11f_unpack_ie_he_mcs13_attr(
tpAniSirGlobal,
uint8_t *,
uint8_t,
tDot11fIEhe_mcs13_attr*,
bool);
uint32_t dot11f_pack_ie_he_mcs13_attr(
tpAniSirGlobal,
tDot11fIEhe_mcs13_attr *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_ie_he_mcs13_attr(
tpAniSirGlobal,
tDot11fIEhe_mcs13_attr *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* EID 1 (0x01) */
typedef struct sDot11fIEversion_attr {
uint8_t present;
uint8_t version;
uint8_t sub_version;
} tDot11fIEversion_attr;
#define DOT11F_EID_VERSION_ATTR (1)
/* N.B. These #defines do *not* include the EID & length */
#define DOT11F_IE_VERSION_ATTR_MIN_LEN (2)
#define DOT11F_IE_VERSION_ATTR_MAX_LEN (2)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
__must_check uint32_t dot11f_unpack_ie_version_attr(
tpAniSirGlobal,
uint8_t *,
uint8_t,
tDot11fIEversion_attr*,
bool);
uint32_t dot11f_pack_ie_version_attr(
tpAniSirGlobal,
tDot11fIEversion_attr *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_ie_version_attr(
tpAniSirGlobal,
tDot11fIEversion_attr *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* EID 2 (0x02) */
typedef struct sDot11fIEvht_mcs11_attr {
uint8_t present;
uint8_t vht_mcs_10_11_supp;
} tDot11fIEvht_mcs11_attr;
#define DOT11F_EID_VHT_MCS11_ATTR (2)
/* N.B. These #defines do *not* include the EID & length */
#define DOT11F_IE_VHT_MCS11_ATTR_MIN_LEN (1)
#define DOT11F_IE_VHT_MCS11_ATTR_MAX_LEN (1)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
__must_check uint32_t dot11f_unpack_ie_vht_mcs11_attr(
tpAniSirGlobal,
uint8_t *,
uint8_t,
tDot11fIEvht_mcs11_attr*,
bool);
uint32_t dot11f_pack_ie_vht_mcs11_attr(
tpAniSirGlobal,
tDot11fIEvht_mcs11_attr *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_ie_vht_mcs11_attr(
tpAniSirGlobal,
tDot11fIEvht_mcs11_attr *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* EID 51 (0x33) */
typedef struct sDot11fIEAPChannelReport {
uint8_t present;
@ -9371,12 +9599,18 @@ uint32_t dot11f_get_packed_ie_osen_ie(
}; /* End extern "C". */
#endif /* C++ */
/* EID 221 (0xdd) {OUI 0x8c, 0xfd, 0xf0, 0x01} */
/* EID 221 (0xdd) {OUI 0x8c, 0xfd, 0xf0, 0x01} (Multi-IE) */
typedef struct sDot11fIEqcn_ie {
uint8_t present;
tDot11fIEversion_attr version_attr;
tDot11fIEvht_mcs11_attr vht_mcs11_attr;
tDot11fIEhe_mcs13_attr he_mcs13_attr;
uint8_t present;
tDot11fTLVqcn_version qcn_version;
tDot11fTLVvht_mcs11_attr vht_mcs11_attr;
tDot11fTLVhe_400ns_sgi_attr he_400ns_sgi_attr;
tDot11fTLVhe_2xltf_160mhz_supp he_2xltf_160mhz_supp;
tDot11fTLVhe_dl_ofdma_attr he_dl_ofdma_attr;
tDot11fTLVtrans_reasonp_attr trans_reasonp_attr;
tDot11fTLVtrans_rejectp_attr trans_rejectp_attr;
tDot11fTLVhe_dl_mumimo_attr he_dl_mumimo_attr;
tDot11fTLVhe_mcs13_attr he_mcs13_attr;
} tDot11fIEqcn_ie;
#define DOT11F_EID_QCN_IE (221)
@ -9384,7 +9618,7 @@ typedef struct sDot11fIEqcn_ie {
/* N.B. These #defines do *not* include the EID & length */
#define DOT11F_IE_QCN_IE_MIN_LEN (4)
#define DOT11F_IE_QCN_IE_MAX_LEN (15)
#define DOT11F_IE_QCN_IE_MAX_LEN (35)
#ifdef __cplusplus
extern "C" {

View file

@ -6552,7 +6552,8 @@ void lim_add_he_cap(struct mac_context *mac_ctx, struct pe_session *pe_session,
sizeof(add_sta_params->he_config));
add_sta_params->he_mcs_12_13_map =
assoc_req->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp;
assoc_req->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp_80 |
assoc_req->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp_160 << 8;
if (lim_is_he_6ghz_band(pe_session))
lim_update_he_6ghz_band_caps(mac_ctx,
@ -6661,7 +6662,8 @@ void lim_intersect_sta_he_caps(struct mac_context *mac_ctx,
if (assoc_req->qcn_ie.present &&
assoc_req->qcn_ie.he_mcs13_attr.present) {
sta_ds->he_mcs_12_13_map =
assoc_req->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp;
assoc_req->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp_80 |
assoc_req->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp_160 << 8;
} else {
return;
}
@ -6833,7 +6835,8 @@ void lim_update_stads_he_caps(struct mac_context *mac_ctx,
if (assoc_rsp->qcn_ie.present &&
assoc_rsp->qcn_ie.he_mcs13_attr.present) {
sta_ds->he_mcs_12_13_map =
assoc_rsp->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp;
assoc_rsp->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp_80 |
assoc_rsp->qcn_ie.he_mcs13_attr.he_mcs_12_13_supp_160 << 8;
} else {
return;
}

File diff suppressed because it is too large Load diff

View file

@ -1239,7 +1239,8 @@ static void populate_dot11f_qcn_ie_he_params(struct mac_context *mac,
qcn_ie->present = 1;
qcn_ie->he_mcs13_attr.present = 1;
qcn_ie->he_mcs13_attr.he_mcs_12_13_supp = mcs_12_13_supp;
qcn_ie->he_mcs13_attr.he_mcs_12_13_supp_80 = mcs_12_13_supp & 0xFF;
qcn_ie->he_mcs13_attr.he_mcs_12_13_supp_160 = mcs_12_13_supp >> 8;
}
#else /* WLAN_FEATURE_11AX */
static void populate_dot11f_qcn_ie_he_params(struct mac_context *mac,
@ -1259,9 +1260,9 @@ void populate_dot11f_qcn_ie(struct mac_context *mac,
((attr_id == QCN_IE_ATTR_ID_ALL) ||
(attr_id == QCN_IE_ATTR_ID_VERSION))) {
qcn_ie->present = 1;
qcn_ie->version_attr.present = 1;
qcn_ie->version_attr.version = QCN_IE_VERSION_SUPPORTED;
qcn_ie->version_attr.sub_version = QCN_IE_SUBVERSION_SUPPORTED;
qcn_ie->qcn_version.present = 1;
qcn_ie->qcn_version.version = QCN_IE_VERSION_SUPPORTED;
qcn_ie->qcn_version.sub_version = QCN_IE_SUBVERSION_SUPPORTED;
}
if (mac->mlme_cfg->vht_caps.vht_cap_info.vht_mcs_10_11_supp) {
qcn_ie->present = 1;