qcacld-3.0: Add edca_pifs_param attribute in QCN ie

Add edca_pifs_param attribute in QCN ie. This attribute will
be use to configure edca and pifs param for XPAN.

Change-Id: Iab16c36fbdb2f66afb6c1cebee10b43d64aec4a6
CRs-Fixed: 3334861
This commit is contained in:
Jyoti Kumari
2022-11-11 17:07:43 +05:30
committed by Madan Koyyalamudi
parent dfc6dc8316
commit 0ff4e53681
3 changed files with 169 additions and 28 deletions

View File

@@ -2737,6 +2737,10 @@ IE TimeAdvertisement (EID_TIME_ADVERTISEMENT) // 8.4.2.63
time_error[5];
}
/**
* This all attributes are defined under qcn_attribute_id enum of
* cmn code in wlan_cmn_ieee80211.h file.
*/
const TLV_VERSION_ATTR_ID = 1;
const TLV_VHT_MCS_10_11_ATTR_ID = 2;
const TLV_HE_400NS_SGI_SUPP_ATTR_ID = 3;
@@ -2746,6 +2750,7 @@ 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;
const TLV_EDCA_PIFS_PARAM_ATTR_ID = 13;
TLV qcn_version(TLV_VERSION_ATTR_ID) ( 1 : 1 ) LSB
{
@@ -2794,6 +2799,13 @@ TLV he_mcs13_attr (TLV_HE_MCS_11_12_ATTR_ID) ( 1 : 1 ) LSB
he_mcs_12_13_supp_160, 1;
}
TLV edca_pifs_param_attr (TLV_EDCA_PIFS_PARAM_ATTR_ID) ( 1 : 1 ) LSB
{
// Configure EDCA or PIFS param based on edca_param_type
edca_param_type, 1;
data[3..4];
}
MULTIIE qcn_ie (EID_VENDOR_SPECIFIC) OUI ( 0x8C, 0xFD, 0xF0, 0x01 )
{
OPTIONALTLV qcn_version;
@@ -2805,6 +2817,7 @@ MULTIIE qcn_ie (EID_VENDOR_SPECIFIC) OUI ( 0x8C, 0xFD, 0xF0, 0x01 )
OPTIONALTLV trans_rejectp_attr;
OPTIONALTLV he_dl_mumimo_attr;
OPTIONALTLV he_mcs13_attr;
OPTIONALTLV edca_pifs_param_attr;
}
IE esp_information (EID_EXTN_ID_ELEMENT) OUI ( 0x0B )

View File

@@ -27,7 +27,7 @@
*
*
* This file was automatically generated by 'framesc'
* Mon Oct 31 15:26:23 2022 from the following file(s):
* Mon Nov 14 15:58:33 2022 from the following file(s):
*
* dot11f.frms
*
@@ -2213,6 +2213,46 @@ uint32_t dot11f_get_packed_tlv_cellular_data_con_pref(
}; /* End extern "C". */
#endif /* C++ */
/* ID 13 (0x000d) */
typedef struct sDot11fTLVedca_pifs_param_attr {
uint8_t present;
uint8_t edca_param_type;
uint8_t num_data;
uint8_t data[4];
} tDot11fTLVedca_pifs_param_attr;
#define DOT11F_TLV_EDCA_PIFS_PARAM_ATTR (13)
/* N.B. These #defines do *not* include the ID & length */
#define DOT11F_TLV_EDCA_PIFS_PARAM_ATTR_MIN_LEN (4)
#define DOT11F_TLV_EDCA_PIFS_PARAM_ATTR_MAX_LEN (5)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
uint32_t dot11f_unpack_tlv_edca_pifs_param_attr(
tpAniSirGlobal,
uint8_t *,
uint16_t,
tDot11fTLVedca_pifs_param_attr*);
uint32_t dot11f_pack_tlv_edca_pifs_param_attr(
tpAniSirGlobal,
tDot11fTLVedca_pifs_param_attr *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_tlv_edca_pifs_param_attr(
tpAniSirGlobal,
tDot11fTLVedca_pifs_param_attr *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* ID 4 (0x0004) */
typedef struct sDot11fTLVhe_2xltf_160mhz_supp {
uint8_t present;
@@ -10128,6 +10168,7 @@ typedef struct sDot11fIEqcn_ie {
tDot11fTLVtrans_rejectp_attr trans_rejectp_attr;
tDot11fTLVhe_dl_mumimo_attr he_dl_mumimo_attr;
tDot11fTLVhe_mcs13_attr he_mcs13_attr;
tDot11fTLVedca_pifs_param_attr edca_pifs_param_attr;
} tDot11fIEqcn_ie;
#define DOT11F_EID_QCN_IE (221)
@@ -10135,7 +10176,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 (35)
#define DOT11F_IE_QCN_IE_MAX_LEN (42)
#ifdef __cplusplus
extern "C" {

View File

@@ -25,7 +25,7 @@
*
*
* This file was automatically generated by 'framesc'
* Mon Oct 31 15:26:23 2022 from the following file(s):
* Mon Nov 14 15:58:33 2022 from the following file(s):
*
* dot11f.frms
*
@@ -1551,7 +1551,38 @@ uint32_t dot11f_unpack_tlv_version(tpAniSirGlobal pCtx,
#define SigTlvcellular_data_con_pref (0x0027)
#define SigTlvhe_2xltf_160mhz_supp (0x0028)
uint32_t dot11f_unpack_tlv_edca_pifs_param_attr(tpAniSirGlobal pCtx,
uint8_t *pBuf,
uint16_t tlvlen,
tDot11fTLVedca_pifs_param_attr *pDst)
{
uint32_t status = DOT11F_PARSE_SUCCESS;
pDst->present = 1;
if (unlikely(tlvlen < 1)) {
pDst->present = 0;
return DOT11F_INCOMPLETE_IE;
}
pDst->edca_param_type = *pBuf;
pBuf += 1;
tlvlen -= (uint8_t)1;
pDst->num_data = (uint8_t)(tlvlen);
if (tlvlen > 4) {
pDst->present = 0;
return DOT11F_SKIPPED_BAD_IE;
}
DOT11F_MEMCPY(pCtx, pDst->data, pBuf, (tlvlen));
pBuf += (tlvlen);
tlvlen -= (tlvlen);
(void)pCtx;
return status;
} /* End dot11f_unpack_tlv_edca_pifs_param_attr. */
#define SigTlvedca_pifs_param_attr (0x0028)
#define SigTlvhe_2xltf_160mhz_supp (0x0029)
uint32_t dot11f_unpack_tlv_he_400ns_sgi_attr(tpAniSirGlobal pCtx,
@@ -1589,13 +1620,13 @@ uint32_t dot11f_unpack_tlv_he_400ns_sgi_attr(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_tlv_he_400ns_sgi_attr. */
#define SigTlvhe_400ns_sgi_attr (0x0029)
#define SigTlvhe_400ns_sgi_attr (0x002a)
#define SigTlvhe_dl_mumimo_attr (0x002a)
#define SigTlvhe_dl_mumimo_attr (0x002b)
#define SigTlvhe_dl_ofdma_attr (0x002b)
#define SigTlvhe_dl_ofdma_attr (0x002c)
uint32_t dot11f_unpack_tlv_he_mcs13_attr(tpAniSirGlobal pCtx,
@@ -1625,10 +1656,10 @@ uint32_t dot11f_unpack_tlv_he_mcs13_attr(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_tlv_he_mcs13_attr. */
#define SigTlvhe_mcs13_attr (0x002c)
#define SigTlvhe_mcs13_attr (0x002d)
#define SigTlvmbo_ap_cap (0x002d)
#define SigTlvmbo_ap_cap (0x002e)
uint32_t dot11f_unpack_tlv_non_prefferd_chan_rep(tpAniSirGlobal pCtx,
@@ -1659,7 +1690,7 @@ uint32_t dot11f_unpack_tlv_non_prefferd_chan_rep(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_tlv_non_prefferd_chan_rep. */
#define SigTlvnon_prefferd_chan_rep (0x002e)
#define SigTlvnon_prefferd_chan_rep (0x002f)
uint32_t dot11f_unpack_tlv_oce_cap(tpAniSirGlobal pCtx,
@@ -1686,7 +1717,7 @@ uint32_t dot11f_unpack_tlv_oce_cap(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_tlv_oce_cap. */
#define SigTlvoce_cap (0x002f)
#define SigTlvoce_cap (0x0030)
uint32_t dot11f_unpack_tlv_qcn_version(tpAniSirGlobal pCtx,
@@ -1716,7 +1747,7 @@ uint32_t dot11f_unpack_tlv_qcn_version(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_tlv_qcn_version. */
#define SigTlvqcn_version (0x0030)
#define SigTlvqcn_version (0x0031)
uint32_t dot11f_unpack_tlv_reduced_wan_metrics(tpAniSirGlobal pCtx,
@@ -1741,7 +1772,7 @@ uint32_t dot11f_unpack_tlv_reduced_wan_metrics(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_tlv_reduced_wan_metrics. */
#define SigTlvreduced_wan_metrics (0x0031)
#define SigTlvreduced_wan_metrics (0x0032)
uint32_t dot11f_unpack_tlv_rssi_assoc_rej(tpAniSirGlobal pCtx,
@@ -1771,22 +1802,22 @@ uint32_t dot11f_unpack_tlv_rssi_assoc_rej(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_tlv_rssi_assoc_rej. */
#define SigTlvrssi_assoc_rej (0x0032)
#define SigTlvrssi_assoc_rej (0x0033)
#define SigTlvtrans_reasonp_attr (0x0033)
#define SigTlvtrans_reasonp_attr (0x0034)
#define SigTlvtrans_rejectp_attr (0x0034)
#define SigTlvtrans_rejectp_attr (0x0035)
#define SigTlvtransition_reason (0x0035)
#define SigTlvtransition_reason (0x0036)
#define SigTlvtransition_reject_reason (0x0036)
#define SigTlvtransition_reject_reason (0x0037)
#define SigTlvvht_mcs11_attr (0x0037)
#define SigTlvvht_mcs11_attr (0x0038)
uint32_t dot11f_unpack_tlv_p2_p_interface(tpAniSirGlobal pCtx,
@@ -1808,10 +1839,10 @@ uint32_t dot11f_unpack_tlv_p2_p_interface(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_tlv_p2_p_interface. */
#define SigTlvP2PInterface (0x0038)
#define SigTlvP2PInterface (0x0039)
#define SigTlvP2PManageability (0x0039)
#define SigTlvP2PManageability (0x003a)
uint32_t dot11f_unpack_ie_gtk(tpAniSirGlobal pCtx,
@@ -10080,6 +10111,10 @@ static const tTLVDefn TLVS_qcn_ie[] = {
{ offsetof(tDot11fIEqcn_ie, he_mcs13_attr),
offsetof(tDot11fTLVhe_mcs13_attr, present), "he_mcs13_attr",
SigTlvhe_mcs13_attr, DOT11F_TLV_HE_MCS13_ATTR, 0, 4, 4, 0, 1, 1, 0, },
{ offsetof(tDot11fIEqcn_ie, edca_pifs_param_attr),
offsetof(tDot11fTLVedca_pifs_param_attr, present),
"edca_pifs_param_attr", SigTlvedca_pifs_param_attr,
DOT11F_TLV_EDCA_PIFS_PARAM_ATTR, 0, 6, 7, 0, 1, 1, 0, },
{0, 0, NULL, 0, 0xffff, 0, 0, 0, 0, 0, 0},
};
@@ -10935,7 +10970,7 @@ static const tIEDefn IES_AssocRequest[] = {
0, 7, 9, SigIehs20vendor_ie, {80, 111, 154, 16, 0},
4, DOT11F_EID_HS20VENDOR_IE, 0, 0, },
{ offsetof(tDot11fAssocRequest, qcn_ie), offsetof(tDot11fIEqcn_ie,
present), 0, "qcn_ie", 0, 6, 37, SigIeqcn_ie, {140, 253, 240, 1, 0},
present), 0, "qcn_ie", 0, 6, 44, SigIeqcn_ie, {140, 253, 240, 1, 0},
4, DOT11F_EID_QCN_IE, 0, 0, },
{ offsetof(tDot11fAssocRequest, osen_ie), offsetof(tDot11fIEosen_ie,
present), 0, "osen_ie", 0, 6, 261, SigIeosen_ie, {80, 111, 154, 18, 0},
@@ -11134,7 +11169,7 @@ static const tIEDefn IES_AssocResponse[] = {
0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 4, 0},
4, DOT11F_EID_VENDOR_VHT_IE, 0, 0, },
{ offsetof(tDot11fAssocResponse, qcn_ie), offsetof(tDot11fIEqcn_ie,
present), 0, "qcn_ie", 0, 6, 37, SigIeqcn_ie, {140, 253, 240, 1, 0},
present), 0, "qcn_ie", 0, 6, 44, SigIeqcn_ie, {140, 253, 240, 1, 0},
4, DOT11F_EID_QCN_IE, 0, 0, },
{ offsetof(tDot11fAssocResponse, MBO_IE), offsetof(tDot11fIEMBO_IE,
present), 0, "MBO_IE", 0, 6, 295, SigIeMBO_IE, {80, 111, 154, 22, 0},
@@ -11464,7 +11499,7 @@ static const tIEDefn IES_Beacon[] = {
"MBO_IE", 0, 6, 295, SigIeMBO_IE, {80, 111, 154, 22, 0},
4, DOT11F_EID_MBO_IE, 0, 0, },
{ offsetof(tDot11fBeacon, qcn_ie), offsetof(tDot11fIEqcn_ie, present), 0,
"qcn_ie", 0, 6, 37, SigIeqcn_ie, {140, 253, 240, 1, 0},
"qcn_ie", 0, 6, 44, SigIeqcn_ie, {140, 253, 240, 1, 0},
4, DOT11F_EID_QCN_IE, 0, 0, },
{ offsetof(tDot11fBeacon, reduced_neighbor_report),
offsetof(tDot11fIEreduced_neighbor_report, present), 0,
@@ -11721,7 +11756,7 @@ static const tIEDefn IES_Beacon2[] = {
present), 0, "ESEVersion", 0, 7, 7, SigIeESEVersion, {0, 64, 150, 3, 0},
4, DOT11F_EID_ESEVERSION, 0, 0, },
{ offsetof(tDot11fBeacon2, qcn_ie), offsetof(tDot11fIEqcn_ie, present), 0,
"qcn_ie", 0, 6, 37, SigIeqcn_ie, {140, 253, 240, 1, 0},
"qcn_ie", 0, 6, 44, SigIeqcn_ie, {140, 253, 240, 1, 0},
4, DOT11F_EID_QCN_IE, 0, 0, },
{ offsetof(tDot11fBeacon2, reduced_neighbor_report),
offsetof(tDot11fIEreduced_neighbor_report, present), 0,
@@ -11978,7 +12013,7 @@ static const tIEDefn IES_BeaconIEs[] = {
0, "MBO_IE", 0, 6, 295, SigIeMBO_IE, {80, 111, 154, 22, 0},
4, DOT11F_EID_MBO_IE, 0, 0, },
{ offsetof(tDot11fBeaconIEs, qcn_ie), offsetof(tDot11fIEqcn_ie, present),
0, "qcn_ie", 0, 6, 37, SigIeqcn_ie, {140, 253, 240, 1, 0},
0, "qcn_ie", 0, 6, 44, SigIeqcn_ie, {140, 253, 240, 1, 0},
4, DOT11F_EID_QCN_IE, 0, 0, },
{ offsetof(tDot11fBeaconIEs, reduced_neighbor_report),
offsetof(tDot11fIEreduced_neighbor_report, present), 0,
@@ -12412,7 +12447,7 @@ static const tIEDefn IES_ProbeRequest[] = {
0, 6, 43, SigIeP2PProbeReq, {80, 111, 154, 9, 0},
4, DOT11F_EID_P2PPROBEREQ, 0, 0, },
{ offsetof(tDot11fProbeRequest, qcn_ie), offsetof(tDot11fIEqcn_ie,
present), 0, "qcn_ie", 0, 6, 37, SigIeqcn_ie, {140, 253, 240, 1, 0},
present), 0, "qcn_ie", 0, 6, 44, SigIeqcn_ie, {140, 253, 240, 1, 0},
4, DOT11F_EID_QCN_IE, 0, 0, },
{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },};
@@ -12663,7 +12698,7 @@ static const tIEDefn IES_ProbeResponse[] = {
present), 0, "MBO_IE", 0, 6, 295, SigIeMBO_IE, {80, 111, 154, 22, 0},
4, DOT11F_EID_MBO_IE, 0, 0, },
{ offsetof(tDot11fProbeResponse, qcn_ie), offsetof(tDot11fIEqcn_ie,
present), 0, "qcn_ie", 0, 6, 37, SigIeqcn_ie, {140, 253, 240, 1, 0},
present), 0, "qcn_ie", 0, 6, 44, SigIeqcn_ie, {140, 253, 240, 1, 0},
4, DOT11F_EID_QCN_IE, 0, 0, },
{ offsetof(tDot11fProbeResponse, reduced_neighbor_report),
offsetof(tDot11fIEreduced_neighbor_report, present), 0,
@@ -16718,6 +16753,13 @@ static uint32_t unpack_tlv_core(tpAniSirGlobal pCtx,
(uint8_t *)&(((tDot11fTLVcellular_data_con_pref *)
(pFrm + pTlv->offset))->cellular_preference));
break;
case SigTlvedca_pifs_param_attr:
status |=
dot11f_unpack_tlv_edca_pifs_param_attr(pCtx,
pBufRemaining, len,
(tDot11fTLVedca_pifs_param_attr *)
(pFrm + pTlv->offset));
break;
case SigTlvhe_2xltf_160mhz_supp:
status |=
dot11f_unpack_tlv_common_func(pCtx,
@@ -19910,6 +19952,11 @@ static uint32_t get_packed_size_tlv_core(tpAniSirGlobal pCtx,
pTlvPresent = ((tDot11fTLVcellular_data_con_pref *)
(pFrm + pTlv->offset))->present;
break;
case SigTlvedca_pifs_param_attr:
byteCount = ((tDot11fTLVedca_pifs_param_attr *)(pFrm + pTlv->offset))->num_data+1;
pTlvPresent = ((tDot11fTLVedca_pifs_param_attr *)
(pFrm + pTlv->offset))->present;
break;
case SigTlvhe_2xltf_160mhz_supp:
byteCount = 1;
pTlvPresent = ((tDot11fTLVhe_2xltf_160mhz_supp *)
@@ -21600,6 +21647,39 @@ uint32_t dot11f_pack_tlv_cellular_data_con_pref(tpAniSirGlobal pCtx,
return DOT11F_PARSE_SUCCESS;
} /* End dot11f_pack_tlv_cellular_data_con_pref. */
uint32_t dot11f_pack_tlv_edca_pifs_param_attr(tpAniSirGlobal pCtx,
tDot11fTLVedca_pifs_param_attr *pSrc,
uint8_t *pBuf,
uint32_t nBuf,
uint32_t *pnConsumed)
{
uint8_t *pTlvLen = 0;
uint32_t nConsumedOnEntry = *pnConsumed;
uint32_t nNeeded = 0U;
nNeeded += (pSrc->num_data + 3) ;
if (nNeeded > nBuf)
return DOT11F_BUFFER_OVERFLOW;
while (pSrc->present) {
*pBuf = 13;
pBuf += 1; *pnConsumed += 1;
pTlvLen = pBuf;
pBuf += 1; *pnConsumed += 1;
*pBuf = pSrc->edca_param_type;
*pnConsumed += 1;
pBuf += 1;
DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->data), pSrc->num_data);
*pnConsumed += pSrc->num_data;
pBuf += pSrc->num_data;
break;
}
(void)pCtx;
if (pTlvLen) {
*pTlvLen = *pnConsumed - nConsumedOnEntry - 2;
}
return DOT11F_PARSE_SUCCESS;
} /* End dot11f_pack_tlv_edca_pifs_param_attr. */
uint32_t dot11f_pack_tlv_he_2xltf_160mhz_supp(tpAniSirGlobal pCtx,
tDot11fTLVhe_2xltf_160mhz_supp *pSrc,
uint8_t *pBuf,
@@ -32907,6 +32987,13 @@ static uint32_t pack_tlv_core(tpAniSirGlobal pCtx,
(pSrc + pTlv->offset), pBufRemaining,
nBufRemaining, &len);
break;
case SigTlvedca_pifs_param_attr:
status |=
dot11f_pack_tlv_edca_pifs_param_attr(
pCtx, (tDot11fTLVedca_pifs_param_attr *)
(pSrc + pTlv->offset), pBufRemaining,
nBufRemaining, &len);
break;
case SigTlvhe_2xltf_160mhz_supp:
status |=
dot11f_pack_tlv_he_2xltf_160mhz_supp(