mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 07:03:09 -04:00
qcacmn: Add Support for ACTION_CATEGORY_RVS
Currently, mgmt_txrx_get_action_frm_subtype does not handle ACTION_CATEGORY_RVS. In case action_category is ACTION_CATEGORY_RVS, mgmt_txrx_get_action_frm_subtype returns MGMT_FRM_UNSPECIFIED due to default handling. Function tgt_mgmt_txrx_rx_frame_handler returns QDF_STATUS_E_FAILURE on receiving MGMT_FRM_UNSPECIFIED frame type and drops mgmt frames. Fix is to add support for ACTION_CATEGORY_RVS in mgmt_txrx_get_action_frm_subtype to avoid drop of MCSC frames. Add new management frames 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 and new element ACTION_CATEGORY_RVS in mgmt_action_category. mgmt_txrx_get_action_frm_subtype Finds rvs frame subtype and returns subtype instead of returning MGMT_FRM_UNSPECIFIED. Change-Id: Iad1abac120770724f9ae6d86f524c4d722fb0aaa CRs-Fixed: 2649900
This commit is contained in:
parent
4326a54376
commit
c50efb4f56
2 changed files with 77 additions and 1 deletions
|
|
@ -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,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue