diff --git a/umac/cmn_services/mgmt_txrx/dispatcher/inc/wlan_mgmt_txrx_utils_api.h b/umac/cmn_services/mgmt_txrx/dispatcher/inc/wlan_mgmt_txrx_utils_api.h index 1044b04a7233..d9ce0cba7376 100644 --- a/umac/cmn_services/mgmt_txrx/dispatcher/inc/wlan_mgmt_txrx_utils_api.h +++ b/umac/cmn_services/mgmt_txrx/dispatcher/inc/wlan_mgmt_txrx_utils_api.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -112,6 +112,7 @@ enum mgmt_subtype { * @ACTION_CATEGORY_DMG: unprotected dmg action category * @ACTION_CATEGORY_WMM: wmm action category * @ACTION_CATEGORY_FST: fst action category + * @ACTION_CATEGORY_RVS: robust av streaming action category * @ACTION_CATEGORY_UNPROT_DMG: dmg action category * @ACTION_CATEGORY_VHT: vht action category * @ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED: vendor specific protected @@ -138,6 +139,7 @@ enum mgmt_action_category { ACTION_CATEGORY_DMG = 16, ACTION_CATEGORY_WMM = 17, ACTION_CATEGORY_FST = 18, + ACTION_CATEGORY_RVS = 19, ACTION_CATEGORY_UNPROT_DMG = 20, ACTION_CATEGORY_VHT = 21, ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126, @@ -439,6 +441,24 @@ enum fst_actioncode { FST_ON_CHANNEL_TUNNEL, }; +/** + * enum rvs_actioncode - Robust av streaming action frames + * @SCS_REQ: scs request frame + * @SCS_RSP: scs response frame + * @GROUP_MEMBERSHIP_REQ: Group Membership Request frame + * @GROUP_MEMBERSHIP_RSP: Group Membership Response frame + * @MCSC_REQ: mcsc request frame + * @MCSC_RSP: mcsc response frame + */ +enum rvs_actioncode { + SCS_REQ, + SCS_RSP, + GROUP_MEMBERSHIP_REQ, + GROUP_MEMBERSHIP_RSP, + MCSC_REQ, + MCSC_RSP, +}; + /** * enum vht_actioncode - vht action frames * @VHT_ACTION_COMPRESSED_BF: vht compressed bf action frame @@ -573,6 +593,12 @@ struct action_frm_hdr { * @MGMT_ACTION_FST_ACK_REQ: FST ack frame for request * @MGMT_ACTION_FST_ACK_RSP: FST ack frame for response * @MGMT_ACTION_FST_ON_CHANNEL_TUNNEL: FST on channel tunnel frame + * @MGMT_ACTION_SCS_REQ: SCS request frame + * @MGMT_ACTION_SCS_RSP: SCS response frame + * @MGMT_ACTION_GROUP_MEMBERSHIP_REQ: group membership request frame + * @MGMT_ACTION_GROUP_MEMBERSHIP_RSP: group membership response frame + * @MGMT_ACTION_MCSC_REQ: MCSC request frame + * @MGMT_ACTION_MCSC_RSP: MCSC response frame * @MGMT_FRAME_TYPE_ALL: mgmt frame type for all type of frames * @MGMT_MAX_FRAME_TYPE: max. mgmt frame types */ @@ -691,6 +717,12 @@ enum mgmt_frame_type { MGMT_ACTION_FST_ACK_REQ, MGMT_ACTION_FST_ACK_RSP, MGMT_ACTION_FST_ON_CHANNEL_TUNNEL, + MGMT_ACTION_SCS_REQ, + MGMT_ACTION_SCS_RSP, + MGMT_ACTION_GROUP_MEMBERSHIP_REQ, + MGMT_ACTION_GROUP_MEMBERSHIP_RSP, + MGMT_ACTION_MCSC_REQ, + MGMT_ACTION_MCSC_RSP, MGMT_FRAME_TYPE_ALL, MGMT_MAX_FRAME_TYPE, }; diff --git a/umac/cmn_services/mgmt_txrx/dispatcher/src/wlan_mgmt_txrx_tgt_api.c b/umac/cmn_services/mgmt_txrx/dispatcher/src/wlan_mgmt_txrx_tgt_api.c index 21cc0f3e0422..b35df5478296 100644 --- a/umac/cmn_services/mgmt_txrx/dispatcher/src/wlan_mgmt_txrx_tgt_api.c +++ b/umac/cmn_services/mgmt_txrx/dispatcher/src/wlan_mgmt_txrx_tgt_api.c @@ -715,6 +715,46 @@ mgmt_get_fst_action_subtype(uint8_t action_code) return frm_type; } +/** + * mgmt_get_rvs_action_subtype() - gets rvs action subtype + * @action_code: action code + * + * This function returns the subtype for rvs action + * category. + * + * Return: mgmt frame type + */ +static enum mgmt_frame_type +mgmt_get_rvs_action_subtype(uint8_t action_code) +{ + enum mgmt_frame_type frm_type; + + switch (action_code) { + case SCS_REQ: + frm_type = MGMT_ACTION_SCS_REQ; + break; + case SCS_RSP: + frm_type = MGMT_ACTION_SCS_RSP; + break; + case GROUP_MEMBERSHIP_REQ: + frm_type = MGMT_ACTION_GROUP_MEMBERSHIP_REQ; + break; + case GROUP_MEMBERSHIP_RSP: + frm_type = MGMT_ACTION_GROUP_MEMBERSHIP_RSP; + break; + case MCSC_REQ: + frm_type = MGMT_ACTION_MCSC_REQ; + break; + case MCSC_RSP: + frm_type = MGMT_ACTION_MCSC_RSP; + default: + frm_type = MGMT_FRM_UNSPECIFIED; + break; + } + + return frm_type; +} + /** * mgmt_txrx_get_action_frm_subtype() - gets action frm subtype * @mpdu_data_ptr: pointer to mpdu data @@ -794,6 +834,10 @@ mgmt_txrx_get_action_frm_subtype(uint8_t *mpdu_data_ptr) case ACTION_CATEGORY_FST: frm_type = mgmt_get_fst_action_subtype(action_hdr->action_code); break; + case ACTION_CATEGORY_RVS: + frm_type = + mgmt_get_rvs_action_subtype(action_hdr->action_code); + break; default: frm_type = MGMT_FRM_UNSPECIFIED; break;