qcacld-3.0: Define TID to link mapping IE

Tid to link mapping IE is defined as a data buffer.
It's an optional IE that can be present in beacon,
probe response, association and re-association frames.

Change-Id: I30575115836be54fdbaab93d2e45ac4980f6e281
CRs-Fixed: 3256064
This commit is contained in:
Amruta Kulkarni
2022-07-28 15:10:46 -07:00
zatwierdzone przez Madan Koyyalamudi
rodzic ac0237cda5
commit 58271d00af
3 zmienionych plików z 166 dodań i 3 usunięć

Wyświetl plik

@@ -3828,6 +3828,11 @@ IE mlo_ie (EID_EXTN_ID_ELEMENT) OUI (0x6B)
data[9..255];
}
IE t2lm_ie (EID_EXTN_ID_ELEMENT) OUI (0x6D)
{
data[3..255];
}
/////////////////////////////////////////////////////////////////////////////
// Frames
@@ -3887,6 +3892,7 @@ FRAME Beacon // C.f. Sec. 7.2.3.1
OPTIE eht_cap;
OPTIE eht_op;
OPTIE mlo_ie;
OPTIE t2lm_ie;
OPTIE WPA;
OPTIE WMMInfoAp;
@@ -3992,6 +3998,7 @@ FRAME Beacon2
OPTIE eht_cap;
OPTIE eht_op;
OPTIE mlo_ie;
OPTIE t2lm_ie;
OPTIE WPA;
OPTIE WMMInfoAp;
@@ -4071,6 +4078,7 @@ FRAME BeaconIEs
OPTIE eht_cap;
OPTIE eht_op;
OPTIE mlo_ie;
OPTIE t2lm_ie;
OPTIE WPA;
OPTIE WMMInfoAp;
@@ -4131,6 +4139,7 @@ FRAME AssocRequest // 7.2.3.4
OPTIE dh_parameter_element;
OPTIE eht_cap;
OPTIE mlo_ie;
OPTIE t2lm_ie;
OPTIE WPAOpaque;
OPTIE WMMCaps;
@@ -4188,6 +4197,7 @@ FRAME AssocResponse // 7.2.3.5
OPTIE eht_cap;
OPTIE eht_op;
OPTIE mlo_ie;
OPTIE t2lm_ie;
OPTIE WPA;
OPTIE WMMParams;
@@ -4234,6 +4244,7 @@ FRAME ReAssocRequest // 7.2.3.6
OPTIE ESECckmOpaque;
OPTIE eht_cap;
OPTIE mlo_ie;
OPTIE t2lm_ie;
OPTIE WPAOpaque;
OPTIE WMMCaps;
@@ -4285,6 +4296,7 @@ FRAME ReAssocResponse // 7.2.3.7
OPTIE eht_cap;
OPTIE eht_op;
OPTIE mlo_ie;
OPTIE t2lm_ie;
OPTIE WPA;
OPTIE WMMParams;
@@ -4373,6 +4385,7 @@ FRAME ProbeResponse // 7.2.3.9
OPTIE eht_cap;
OPTIE eht_op;
OPTIE mlo_ie;
OPTIE t2lm_ie;
OPTIE WPA;
OPTIE WMMInfoAp;

Wyświetl plik

@@ -27,7 +27,7 @@
*
*
* This file was automatically generated by 'framesc'
* Mon Jun 27 14:45:04 2022 from the following file(s):
* Thu Jul 28 13:24:31 2022 from the following file(s):
*
* dot11f.frms
*
@@ -10407,6 +10407,46 @@ uint32_t dot11f_get_packed_ie_spatial_reuse(
}; /* End extern "C". */
#endif /* C++ */
/* EID 255 (0xff) Extended EID 109 (0x6d) */
typedef struct sDot11fIEt2lm_ie {
uint8_t present;
uint8_t num_data;
uint8_t data[255];
} tDot11fIEt2lm_ie;
#define DOT11F_EID_T2LM_IE (255)
/* N.B. These #defines do *not* include the EID & length */
#define DOT11F_IE_T2LM_IE_MIN_LEN (3)
#define DOT11F_IE_T2LM_IE_MAX_LEN (255)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
__must_check uint32_t dot11f_unpack_ie_t2lm_ie(
tpAniSirGlobal,
uint8_t *,
uint8_t,
tDot11fIEt2lm_ie*,
bool);
uint32_t dot11f_pack_ie_t2lm_ie(
tpAniSirGlobal,
tDot11fIEt2lm_ie *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_ie_t2lm_ie(
tpAniSirGlobal,
tDot11fIEt2lm_ie *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* EID 221 (0xdd) {OUI 0x00, 0x90, 0x4c, 0x04} */
typedef struct sDot11fIEvendor_vht_ie {
uint8_t present;
@@ -10558,6 +10598,7 @@ typedef struct sDot11fAssocRequest{
tDot11fIEdh_parameter_element dh_parameter_element;
tDot11fIEeht_cap eht_cap;
tDot11fIEmlo_ie mlo_ie;
tDot11fIEt2lm_ie t2lm_ie;
tDot11fIEWPAOpaque WPAOpaque;
tDot11fIEWMMCaps WMMCaps;
tDot11fIEWMMInfoStation WMMInfoStation;
@@ -10633,6 +10674,7 @@ typedef struct sDot11fAssocResponse{
tDot11fIEeht_cap eht_cap;
tDot11fIEeht_op eht_op;
tDot11fIEmlo_ie mlo_ie;
tDot11fIEt2lm_ie t2lm_ie;
tDot11fIEWPA WPA;
tDot11fIEWMMParams WMMParams;
tDot11fIEWMMCaps WMMCaps;
@@ -10761,6 +10803,7 @@ typedef struct sDot11fBeacon{
tDot11fIEeht_cap eht_cap;
tDot11fIEeht_op eht_op;
tDot11fIEmlo_ie mlo_ie;
tDot11fIEt2lm_ie t2lm_ie;
tDot11fIEWPA WPA;
tDot11fIEWMMInfoAp WMMInfoAp;
tDot11fIEWMMParams WMMParams;
@@ -10871,6 +10914,7 @@ typedef struct sDot11fBeacon2{
tDot11fIEeht_cap eht_cap;
tDot11fIEeht_op eht_op;
tDot11fIEmlo_ie mlo_ie;
tDot11fIEt2lm_ie t2lm_ie;
tDot11fIEWPA WPA;
tDot11fIEWMMInfoAp WMMInfoAp;
tDot11fIEWMMParams WMMParams;
@@ -10961,6 +11005,7 @@ typedef struct sDot11fBeaconIEs{
tDot11fIEeht_cap eht_cap;
tDot11fIEeht_op eht_op;
tDot11fIEmlo_ie mlo_ie;
tDot11fIEt2lm_ie t2lm_ie;
tDot11fIEWPA WPA;
tDot11fIEWMMInfoAp WMMInfoAp;
tDot11fIEWMMParams WMMParams;
@@ -11393,6 +11438,7 @@ typedef struct sDot11fProbeResponse{
tDot11fIEeht_cap eht_cap;
tDot11fIEeht_op eht_op;
tDot11fIEmlo_ie mlo_ie;
tDot11fIEt2lm_ie t2lm_ie;
tDot11fIEWPA WPA;
tDot11fIEWMMInfoAp WMMInfoAp;
tDot11fIEWMMParams WMMParams;
@@ -11545,6 +11591,7 @@ typedef struct sDot11fReAssocRequest{
tDot11fIEESECckmOpaque ESECckmOpaque;
tDot11fIEeht_cap eht_cap;
tDot11fIEmlo_ie mlo_ie;
tDot11fIEt2lm_ie t2lm_ie;
tDot11fIEWPAOpaque WPAOpaque;
tDot11fIEWMMCaps WMMCaps;
tDot11fIEWMMInfoStation WMMInfoStation;
@@ -11615,6 +11662,7 @@ typedef struct sDot11fReAssocResponse{
tDot11fIEeht_cap eht_cap;
tDot11fIEeht_op eht_op;
tDot11fIEmlo_ie mlo_ie;
tDot11fIEt2lm_ie t2lm_ie;
tDot11fIEWPA WPA;
tDot11fIEWMMParams WMMParams;
tDot11fIEESERadMgmtCap ESERadMgmtCap;

Wyświetl plik

@@ -25,7 +25,7 @@
*
*
* This file was automatically generated by 'framesc'
* Mon Jun 27 14:45:04 2022 from the following file(s):
* Thu Jul 28 13:24:31 2022 from the following file(s):
*
* dot11f.frms
*
@@ -10591,6 +10591,26 @@ uint32_t dot11f_unpack_ie_spatial_reuse(tpAniSirGlobal pCtx,
#define SigIespatial_reuse (0x00a1)
uint32_t dot11f_unpack_ie_t2lm_ie(tpAniSirGlobal pCtx,
uint8_t *pBuf,
uint8_t ielen,
tDot11fIEt2lm_ie *pDst,
bool append_ie)
{
uint32_t status = DOT11F_PARSE_SUCCESS;
(void) pBuf; (void)ielen; /* Shutup the compiler */
if (pDst->present)
return DOT11F_DUPLICATE_IE;
pDst->present = 1;
pDst->num_data = (uint8_t)(ielen);
DOT11F_MEMCPY(pCtx, pDst->data, pBuf, (ielen));
(void)pCtx;
return status;
} /* End dot11f_unpack_ie_t2lm_ie. */
#define SigIet2lm_ie (0x00a2)
static const tFFDefn FFS_vendor_vht_ie[] = {
{ NULL, 0, 0, 0,},
};
@@ -10637,7 +10657,7 @@ uint32_t dot11f_unpack_ie_vendor_vht_ie(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_vendor_vht_ie. */
#define SigIevendor_vht_ie (0x00a2)
#define SigIevendor_vht_ie (0x00a3)
static const tFFDefn FFS_AddTSRequest[] = {
@@ -10873,6 +10893,9 @@ static const tIEDefn IES_AssocRequest[] = {
{ offsetof(tDot11fAssocRequest, mlo_ie), offsetof(tDot11fIEmlo_ie,
present), 0, "mlo_ie", 0, 11, 257, SigIemlo_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_MLO_IE, 107, 0, },
{ offsetof(tDot11fAssocRequest, t2lm_ie), offsetof(tDot11fIEt2lm_ie,
present), 0, "t2lm_ie", 0, 5, 257, SigIet2lm_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_T2LM_IE, 109, 0, },
{ offsetof(tDot11fAssocRequest, WPAOpaque), offsetof(tDot11fIEWPAOpaque,
present), 0, "WPAOpaque", 0, 8, 255, SigIeWPAOpaque, {0, 80, 242, 1, 0},
4, DOT11F_EID_WPAOPAQUE, 0, 0, },
@@ -11075,6 +11098,9 @@ static const tIEDefn IES_AssocResponse[] = {
{ offsetof(tDot11fAssocResponse, mlo_ie), offsetof(tDot11fIEmlo_ie,
present), 0, "mlo_ie", 0, 11, 257, SigIemlo_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_MLO_IE, 107, 0, },
{ offsetof(tDot11fAssocResponse, t2lm_ie), offsetof(tDot11fIEt2lm_ie,
present), 0, "t2lm_ie", 0, 5, 257, SigIet2lm_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_T2LM_IE, 109, 0, },
{ offsetof(tDot11fAssocResponse, WPA), offsetof(tDot11fIEWPA, present), 0,
"WPA", 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, 0, },
{ offsetof(tDot11fAssocResponse, WMMParams), offsetof(tDot11fIEWMMParams,
@@ -11386,6 +11412,9 @@ static const tIEDefn IES_Beacon[] = {
{ offsetof(tDot11fBeacon, mlo_ie), offsetof(tDot11fIEmlo_ie, present), 0,
"mlo_ie", 0, 11, 257, SigIemlo_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_MLO_IE, 107, 0, },
{ offsetof(tDot11fBeacon, t2lm_ie), offsetof(tDot11fIEt2lm_ie, present), 0,
"t2lm_ie", 0, 5, 257, SigIet2lm_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_T2LM_IE, 109, 0, },
{ offsetof(tDot11fBeacon, WPA), offsetof(tDot11fIEWPA, present), 0, "WPA",
0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, 0, },
{ offsetof(tDot11fBeacon, WMMInfoAp), offsetof(tDot11fIEWMMInfoAp,
@@ -11642,6 +11671,9 @@ static const tIEDefn IES_Beacon2[] = {
{ offsetof(tDot11fBeacon2, mlo_ie), offsetof(tDot11fIEmlo_ie, present), 0,
"mlo_ie", 0, 11, 257, SigIemlo_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_MLO_IE, 107, 0, },
{ offsetof(tDot11fBeacon2, t2lm_ie), offsetof(tDot11fIEt2lm_ie, present),
0, "t2lm_ie", 0, 5, 257, SigIet2lm_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_T2LM_IE, 109, 0, },
{ offsetof(tDot11fBeacon2, WPA), offsetof(tDot11fIEWPA, present), 0, "WPA",
0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, 0, },
{ offsetof(tDot11fBeacon2, WMMInfoAp), offsetof(tDot11fIEWMMInfoAp,
@@ -11889,6 +11921,9 @@ static const tIEDefn IES_BeaconIEs[] = {
{ offsetof(tDot11fBeaconIEs, mlo_ie), offsetof(tDot11fIEmlo_ie, present),
0, "mlo_ie", 0, 11, 257, SigIemlo_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_MLO_IE, 107, 0, },
{ offsetof(tDot11fBeaconIEs, t2lm_ie), offsetof(tDot11fIEt2lm_ie,
present), 0, "t2lm_ie", 0, 5, 257, SigIet2lm_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_T2LM_IE, 109, 0, },
{ offsetof(tDot11fBeaconIEs, WPA), offsetof(tDot11fIEWPA, present), 0,
"WPA", 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, 0, },
{ offsetof(tDot11fBeaconIEs, WMMInfoAp), offsetof(tDot11fIEWMMInfoAp,
@@ -12569,6 +12604,9 @@ static const tIEDefn IES_ProbeResponse[] = {
{ offsetof(tDot11fProbeResponse, mlo_ie), offsetof(tDot11fIEmlo_ie,
present), 0, "mlo_ie", 0, 11, 257, SigIemlo_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_MLO_IE, 107, 0, },
{ offsetof(tDot11fProbeResponse, t2lm_ie), offsetof(tDot11fIEt2lm_ie,
present), 0, "t2lm_ie", 0, 5, 257, SigIet2lm_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_T2LM_IE, 109, 0, },
{ offsetof(tDot11fProbeResponse, WPA), offsetof(tDot11fIEWPA, present), 0,
"WPA", 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, 0, },
{ offsetof(tDot11fProbeResponse, WMMInfoAp), offsetof(tDot11fIEWMMInfoAp,
@@ -12847,6 +12885,9 @@ static const tIEDefn IES_ReAssocRequest[] = {
{ offsetof(tDot11fReAssocRequest, mlo_ie), offsetof(tDot11fIEmlo_ie,
present), 0, "mlo_ie", 0, 11, 257, SigIemlo_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_MLO_IE, 107, 0, },
{ offsetof(tDot11fReAssocRequest, t2lm_ie), offsetof(tDot11fIEt2lm_ie,
present), 0, "t2lm_ie", 0, 5, 257, SigIet2lm_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_T2LM_IE, 109, 0, },
{ offsetof(tDot11fReAssocRequest, WPAOpaque),
offsetof(tDot11fIEWPAOpaque, present), 0, "WPAOpaque",
0, 8, 255, SigIeWPAOpaque, {0, 80, 242, 1, 0},
@@ -13031,6 +13072,9 @@ static const tIEDefn IES_ReAssocResponse[] = {
{ offsetof(tDot11fReAssocResponse, mlo_ie), offsetof(tDot11fIEmlo_ie,
present), 0, "mlo_ie", 0, 11, 257, SigIemlo_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_MLO_IE, 107, 0, },
{ offsetof(tDot11fReAssocResponse, t2lm_ie), offsetof(tDot11fIEt2lm_ie,
present), 0, "t2lm_ie", 0, 5, 257, SigIet2lm_ie, {0, 0, 0, 0, 0},
0, DOT11F_EID_T2LM_IE, 109, 0, },
{ offsetof(tDot11fReAssocResponse, WPA), offsetof(tDot11fIEWPA, present),
0, "WPA", 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0},
4, DOT11F_EID_WPA, 0, 0, },
@@ -16138,6 +16182,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx,
countOffset),
append_ie);
break;
case SigIet2lm_ie:
status |=
dot11f_unpack_ie_t2lm_ie(
pCtx, pBufRemaining, len,
(tDot11fIEt2lm_ie *)
(pFrm + pIe->offset +
sizeof(tDot11fIEt2lm_ie) *
countOffset),
append_ie);
break;
case SigIevendor_vht_ie:
status |=
dot11f_unpack_ie_vendor_vht_ie(
@@ -19600,6 +19654,15 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx,
(pFrm + pIe->offset + offset * i),
pnNeeded);
break;
case SigIet2lm_ie:
offset = sizeof(tDot11fIEt2lm_ie);
byteCount = ((tDot11fIEt2lm_ie *)
(pFrm + pIe->offset + offset * i))->
num_data;
pIePresent = ((tDot11fIEt2lm_ie *)
(pFrm + pIe->offset + offset * i))->
present;
break;
case SigIevendor_vht_ie:
offset = sizeof(tDot11fIEvendor_vht_ie);
status |=
@@ -30076,6 +30139,37 @@ uint32_t dot11f_pack_ie_spatial_reuse(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_pack_ie_spatial_reuse. */
uint32_t dot11f_pack_ie_t2lm_ie(tpAniSirGlobal pCtx,
tDot11fIEt2lm_ie *pSrc,
uint8_t *pBuf,
uint32_t nBuf,
uint32_t *pnConsumed)
{
uint8_t *pIeLen = 0;
uint32_t nConsumedOnEntry = *pnConsumed;
uint32_t nNeeded = 0U;
nNeeded += pSrc->num_data;
while (pSrc->present) {
if (nNeeded > nBuf)
return DOT11F_BUFFER_OVERFLOW;
*pBuf = 255;
++pBuf; ++(*pnConsumed);
pIeLen = pBuf;
++pBuf; ++(*pnConsumed);
*pBuf = 109;
++pBuf; ++(*pnConsumed);
DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->data), pSrc->num_data);
*pnConsumed += pSrc->num_data;
/* fieldsEndFlag = 1 */
break;
}
(void)pCtx;
if (pIeLen) {
*pIeLen = *pnConsumed - nConsumedOnEntry - 2;
}
return DOT11F_PARSE_SUCCESS;
} /* End dot11f_pack_ie_t2lm_ie. */
uint32_t dot11f_pack_ie_vendor_vht_ie(tpAniSirGlobal pCtx,
tDot11fIEvendor_vht_ie *pSrc,
uint8_t *pBuf,
@@ -32466,6 +32560,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx,
sizeof(tDot11fIEspatial_reuse) * i),
pBufRemaining, nBufRemaining, &len);
break;
case SigIet2lm_ie:
status |=
dot11f_pack_ie_t2lm_ie(
pCtx, (tDot11fIEt2lm_ie *)
(pSrc + pIe->offset +
sizeof(tDot11fIEt2lm_ie) * i),
pBufRemaining, nBufRemaining, &len);
break;
case SigIevendor_vht_ie:
status |=
dot11f_pack_ie_vendor_vht_ie(