From b1fb8f6257ae7f3508278fb5e5da540ec730c567 Mon Sep 17 00:00:00 2001 From: Paul Zhang Date: Tue, 30 May 2023 10:00:26 +0800 Subject: [PATCH] qcacld-3.0: Add dot11f support to handle EPCS action frames Add dot11f support to handle EPCS action frames, such as request, response, and teardown action frames. CRs-Fixed: 3511067 Change-Id: I1896d7fcf89a8dd9b60a89f2902567bc60667972 --- core/mac/src/cfg/cfgUtil/dot11f.frms | 21 +++ core/mac/src/include/dot11f.h | 96 ++++++++++- .../mac/src/sys/legacy/src/utils/src/dot11f.c | 161 +++++++++++++++++- 3 files changed, 268 insertions(+), 10 deletions(-) diff --git a/core/mac/src/cfg/cfgUtil/dot11f.frms b/core/mac/src/cfg/cfgUtil/dot11f.frms index ef069bce7d..fdc1c63730 100644 --- a/core/mac/src/cfg/cfgUtil/dot11f.frms +++ b/core/mac/src/cfg/cfgUtil/dot11f.frms @@ -4926,6 +4926,27 @@ FRAME mscs_request_action_frame MANDIE descriptor_element; } +FRAME epcs_neg_req +{ + FF Category; + FF Action; + FF DialogToken; +} + +FRAME epcs_neg_rsp +{ + FF Category; + FF Action; + FF DialogToken; + FF Status; +} + +FRAME epcs_teardown +{ + FF Category; + FF Action; +} + // Local Variables: // mode: c++ // fill-column: 77 diff --git a/core/mac/src/include/dot11f.h b/core/mac/src/include/dot11f.h index 09e7e903e6..9241879695 100644 --- a/core/mac/src/include/dot11f.h +++ b/core/mac/src/include/dot11f.h @@ -27,7 +27,7 @@ * * * This file was automatically generated by 'framesc' - * Thu May 18 15:31:21 2023 from the following file(s): + * Tue May 30 09:55:35 2023 from the following file(s): * * dot11f.frms * @@ -12439,6 +12439,84 @@ uint32_t dot11f_get_packed_delba_req_size(tpAniSirGlobal pCtx, } /* End extern "C". */ #endif /* C++ */ +typedef struct sDot11fepcs_neg_req{ + tDot11fFfCategory Category; + tDot11fFfAction Action; + tDot11fFfDialogToken DialogToken; +} tDot11fepcs_neg_req; + +#define DOT11F_EPCS_NEG_REQ (49) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ + +uint32_t dot11f_unpack_epcs_neg_req(tpAniSirGlobal pCtx, + uint8_t *pBuf, uint32_t nBuf, + tDot11fepcs_neg_req * pFrm, bool append_ie); +uint32_t dot11f_pack_epcs_neg_req(tpAniSirGlobal pCtx, + tDot11fepcs_neg_req *pFrm, uint8_t *pBuf, + uint32_t nBuf, uint32_t *pnConsumed); +uint32_t dot11f_get_packed_epcs_neg_reqSize(tpAniSirGlobal pCtx, + tDot11fepcs_neg_req *pFrm, + uint32_t *pnNeeded); + +#ifdef __cplusplus +} /* End extern "C". */ +#endif /* C++ */ + +typedef struct sDot11fepcs_neg_rsp{ + tDot11fFfCategory Category; + tDot11fFfAction Action; + tDot11fFfDialogToken DialogToken; + tDot11fFfStatus Status; +} tDot11fepcs_neg_rsp; + +#define DOT11F_EPCS_NEG_RSP (50) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ + +uint32_t dot11f_unpack_epcs_neg_rsp(tpAniSirGlobal pCtx, + uint8_t *pBuf, uint32_t nBuf, + tDot11fepcs_neg_rsp * pFrm, bool append_ie); +uint32_t dot11f_pack_epcs_neg_rsp(tpAniSirGlobal pCtx, + tDot11fepcs_neg_rsp *pFrm, uint8_t *pBuf, + uint32_t nBuf, uint32_t *pnConsumed); +uint32_t dot11f_get_packed_epcs_neg_rspSize(tpAniSirGlobal pCtx, + tDot11fepcs_neg_rsp *pFrm, + uint32_t *pnNeeded); + +#ifdef __cplusplus +} /* End extern "C". */ +#endif /* C++ */ + +typedef struct sDot11fepcs_teardown{ + tDot11fFfCategory Category; + tDot11fFfAction Action; +} tDot11fepcs_teardown; + +#define DOT11F_EPCS_TEARDOWN (51) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ + +uint32_t dot11f_unpack_epcs_teardown(tpAniSirGlobal pCtx, + uint8_t *pBuf, uint32_t nBuf, + tDot11fepcs_teardown * pFrm, bool append_ie); +uint32_t dot11f_pack_epcs_teardown(tpAniSirGlobal pCtx, + tDot11fepcs_teardown *pFrm, uint8_t *pBuf, + uint32_t nBuf, uint32_t *pnConsumed); +uint32_t dot11f_get_packed_epcs_teardownSize(tpAniSirGlobal pCtx, + tDot11fepcs_teardown *pFrm, + uint32_t *pnNeeded); + +#ifdef __cplusplus +} /* End extern "C". */ +#endif /* C++ */ + typedef struct sDot11fext_channel_switch_action_frame{ tDot11fFfCategory Category; tDot11fFfAction Action; @@ -12447,7 +12525,7 @@ typedef struct sDot11fext_channel_switch_action_frame{ tDot11fIEqcn_ie qcn_ie; } tDot11fext_channel_switch_action_frame; -#define DOT11F_EXT_CHANNEL_SWITCH_ACTION_FRAME (49) +#define DOT11F_EXT_CHANNEL_SWITCH_ACTION_FRAME (52) #ifdef __cplusplus extern "C" { @@ -12474,7 +12552,7 @@ typedef struct sDot11fht2040_bss_coexistence_mgmt_action_frame{ tDot11fIEht2040_bss_intolerant_report ht2040_bss_intolerant_report; } tDot11fht2040_bss_coexistence_mgmt_action_frame; -#define DOT11F_HT2040_BSS_COEXISTENCE_MGMT_ACTION_FRAME (50) +#define DOT11F_HT2040_BSS_COEXISTENCE_MGMT_ACTION_FRAME (53) #ifdef __cplusplus extern "C" { @@ -12501,7 +12579,7 @@ typedef struct sDot11fmscs_request_action_frame{ tDot11fIEdescriptor_element descriptor_element; } tDot11fmscs_request_action_frame; -#define DOT11F_MSCS_REQUEST_ACTION_FRAME (51) +#define DOT11F_MSCS_REQUEST_ACTION_FRAME (54) #ifdef __cplusplus extern "C" { @@ -12531,7 +12609,7 @@ typedef struct sDot11fp2p_oper_chan_change_confirm{ tDot11fIEOperatingMode OperatingMode; } tDot11fp2p_oper_chan_change_confirm; -#define DOT11F_P2P_OPER_CHAN_CHANGE_CONFIRM (52) +#define DOT11F_P2P_OPER_CHAN_CHANGE_CONFIRM (55) #ifdef __cplusplus extern "C" { @@ -12559,7 +12637,7 @@ typedef struct sDot11ft2lm_neg_req{ tDot11fIEt2lm_ie t2lm_ie[2]; } tDot11ft2lm_neg_req; -#define DOT11F_T2LM_NEG_REQ (53) +#define DOT11F_T2LM_NEG_REQ (56) #ifdef __cplusplus extern "C" { @@ -12586,7 +12664,7 @@ typedef struct sDot11ft2lm_neg_rsp{ tDot11fFfStatus Status; } tDot11ft2lm_neg_rsp; -#define DOT11F_T2LM_NEG_RSP (54) +#define DOT11F_T2LM_NEG_RSP (57) #ifdef __cplusplus extern "C" { @@ -12611,7 +12689,7 @@ typedef struct sDot11ft2lm_teardown{ tDot11fFfAction Action; } tDot11ft2lm_teardown; -#define DOT11F_T2LM_TEARDOWN (55) +#define DOT11F_T2LM_TEARDOWN (58) #ifdef __cplusplus extern "C" { @@ -12637,7 +12715,7 @@ typedef struct sDot11fvendor_action_frame{ tDot11fFfvendor_action_subtype vendor_action_subtype; } tDot11fvendor_action_frame; -#define DOT11F_VENDOR_ACTION_FRAME (56) +#define DOT11F_VENDOR_ACTION_FRAME (59) #ifdef __cplusplus extern "C" { diff --git a/core/mac/src/sys/legacy/src/utils/src/dot11f.c b/core/mac/src/sys/legacy/src/utils/src/dot11f.c index 1b69c5e8f5..192baeed6d 100644 --- a/core/mac/src/sys/legacy/src/utils/src/dot11f.c +++ b/core/mac/src/sys/legacy/src/utils/src/dot11f.c @@ -25,7 +25,7 @@ * * * This file was automatically generated by 'framesc' - * Thu May 18 15:31:21 2023 from the following file(s): + * Tue May 30 09:55:35 2023 from the following file(s): * * dot11f.frms * @@ -14134,6 +14134,90 @@ uint32_t dot11f_unpack_delba_req(tpAniSirGlobal pCtx, } /* End dot11f_unpack_delba_req. */ +static const tFFDefn FFS_epcs_neg_req[] = { + { "Category", offsetof(tDot11fepcs_neg_req, Category), SigFfCategory, + DOT11F_FF_CATEGORY_LEN, }, + { "Action", offsetof(tDot11fepcs_neg_req, Action), SigFfAction, + DOT11F_FF_ACTION_LEN, }, + { "DialogToken", offsetof(tDot11fepcs_neg_req, DialogToken), + SigFfDialogToken, DOT11F_FF_DIALOGTOKEN_LEN, }, + { NULL, 0, 0, 0,}, +}; + +static const tIEDefn IES_epcs_neg_req[] = { + {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },}; + +uint32_t dot11f_unpack_epcs_neg_req(tpAniSirGlobal pCtx, + uint8_t *pBuf, uint32_t nBuf, + tDot11fepcs_neg_req *pFrm, bool append_ie) +{ + uint32_t i = 0; + uint32_t status = 0; + status = unpack_core(pCtx, pBuf, nBuf, + FFS_epcs_neg_req, IES_epcs_neg_req, + (uint8_t *)pFrm, sizeof(*pFrm), append_ie); + + (void)i; + return status; + +} /* End dot11f_unpack_epcs_neg_req. */ + +static const tFFDefn FFS_epcs_neg_rsp[] = { + { "Category", offsetof(tDot11fepcs_neg_rsp, Category), SigFfCategory, + DOT11F_FF_CATEGORY_LEN, }, + { "Action", offsetof(tDot11fepcs_neg_rsp, Action), SigFfAction, + DOT11F_FF_ACTION_LEN, }, + { "DialogToken", offsetof(tDot11fepcs_neg_rsp, DialogToken), + SigFfDialogToken, DOT11F_FF_DIALOGTOKEN_LEN, }, + { "Status", offsetof(tDot11fepcs_neg_rsp, Status), SigFfStatus, + DOT11F_FF_STATUS_LEN, }, + { NULL, 0, 0, 0,}, +}; + +static const tIEDefn IES_epcs_neg_rsp[] = { + {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },}; + +uint32_t dot11f_unpack_epcs_neg_rsp(tpAniSirGlobal pCtx, + uint8_t *pBuf, uint32_t nBuf, + tDot11fepcs_neg_rsp *pFrm, bool append_ie) +{ + uint32_t i = 0; + uint32_t status = 0; + status = unpack_core(pCtx, pBuf, nBuf, + FFS_epcs_neg_rsp, IES_epcs_neg_rsp, + (uint8_t *)pFrm, sizeof(*pFrm), append_ie); + + (void)i; + return status; + +} /* End dot11f_unpack_epcs_neg_rsp. */ + +static const tFFDefn FFS_epcs_teardown[] = { + { "Category", offsetof(tDot11fepcs_teardown, Category), SigFfCategory, + DOT11F_FF_CATEGORY_LEN, }, + { "Action", offsetof(tDot11fepcs_teardown, Action), SigFfAction, + DOT11F_FF_ACTION_LEN, }, + { NULL, 0, 0, 0,}, +}; + +static const tIEDefn IES_epcs_teardown[] = { + {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },}; + +uint32_t dot11f_unpack_epcs_teardown(tpAniSirGlobal pCtx, + uint8_t *pBuf, uint32_t nBuf, + tDot11fepcs_teardown *pFrm, bool append_ie) +{ + uint32_t i = 0; + uint32_t status = 0; + status = unpack_core(pCtx, pBuf, nBuf, + FFS_epcs_teardown, IES_epcs_teardown, + (uint8_t *)pFrm, sizeof(*pFrm), append_ie); + + (void)i; + return status; + +} /* End dot11f_unpack_epcs_teardown. */ + static const tFFDefn FFS_ext_channel_switch_action_frame[] = { { "Category", offsetof(tDot11fext_channel_switch_action_frame, Category), SigFfCategory, DOT11F_FF_CATEGORY_LEN, }, @@ -18504,6 +18588,36 @@ uint32_t dot11f_get_packed_delba_req_size(tpAniSirGlobal pCtx, return status; } /* End dot11f_get_packed_delba_req_size. */ +uint32_t dot11f_get_packed_epcs_neg_reqSize(tpAniSirGlobal pCtx, + tDot11fepcs_neg_req *pFrm, uint32_t *pnNeeded) +{ + uint32_t status = 0; + *pnNeeded = 3; + status = get_packed_size_core(pCtx, (uint8_t *)pFrm, pnNeeded, + IES_epcs_neg_req); + return status; +} /* End dot11f_get_packed_epcs_neg_reqSize. */ + +uint32_t dot11f_get_packed_epcs_neg_rspSize(tpAniSirGlobal pCtx, + tDot11fepcs_neg_rsp *pFrm, uint32_t *pnNeeded) +{ + uint32_t status = 0; + *pnNeeded = 5; + status = get_packed_size_core(pCtx, (uint8_t *)pFrm, pnNeeded, + IES_epcs_neg_rsp); + return status; +} /* End dot11f_get_packed_epcs_neg_rspSize. */ + +uint32_t dot11f_get_packed_epcs_teardownSize(tpAniSirGlobal pCtx, + tDot11fepcs_teardown *pFrm, uint32_t *pnNeeded) +{ + uint32_t status = 0; + *pnNeeded = 2; + status = get_packed_size_core(pCtx, (uint8_t *)pFrm, pnNeeded, + IES_epcs_teardown); + return status; +} /* End dot11f_get_packed_epcs_teardownSize. */ + uint32_t dot11f_get_packed_ext_channel_switch_action_frame_size(tpAniSirGlobal pCtx, tDot11fext_channel_switch_action_frame *pFrm, uint32_t *pnNeeded) { @@ -31233,6 +31347,51 @@ uint32_t dot11f_pack_delba_req(tpAniSirGlobal pCtx, } /* End dot11f_unpack_delba_req. */ +uint32_t dot11f_pack_epcs_neg_req(tpAniSirGlobal pCtx, + tDot11fepcs_neg_req *pFrm, + uint8_t *pBuf, uint32_t nBuf, uint32_t *pnConsumed) +{ + uint32_t i = 0; + uint32_t status = 0; + (void)i; + *pnConsumed = 0U; + status = pack_core(pCtx, (uint8_t *)pFrm, pBuf, nBuf, pnConsumed, + FFS_epcs_neg_req, IES_epcs_neg_req); + + return status; + +} /* End dot11f_unpack_epcs_neg_req. */ + +uint32_t dot11f_pack_epcs_neg_rsp(tpAniSirGlobal pCtx, + tDot11fepcs_neg_rsp *pFrm, + uint8_t *pBuf, uint32_t nBuf, uint32_t *pnConsumed) +{ + uint32_t i = 0; + uint32_t status = 0; + (void)i; + *pnConsumed = 0U; + status = pack_core(pCtx, (uint8_t *)pFrm, pBuf, nBuf, pnConsumed, + FFS_epcs_neg_rsp, IES_epcs_neg_rsp); + + return status; + +} /* End dot11f_unpack_epcs_neg_rsp. */ + +uint32_t dot11f_pack_epcs_teardown(tpAniSirGlobal pCtx, + tDot11fepcs_teardown *pFrm, + uint8_t *pBuf, uint32_t nBuf, uint32_t *pnConsumed) +{ + uint32_t i = 0; + uint32_t status = 0; + (void)i; + *pnConsumed = 0U; + status = pack_core(pCtx, (uint8_t *)pFrm, pBuf, nBuf, pnConsumed, + FFS_epcs_teardown, IES_epcs_teardown); + + return status; + +} /* End dot11f_unpack_epcs_teardown. */ + uint32_t dot11f_pack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx, tDot11fext_channel_switch_action_frame *pFrm, uint8_t *pBuf, uint32_t nBuf, uint32_t *pnConsumed)