qcacld-3.0: addba request reject for peer ap

Add user controlled rx addba request reject for peer AP based
on ini configuration.

Change-Id: I80a4b78c1af77f5bfa68be3163f9e9a78cc64245
CRs-fixed: 2835511
This commit is contained in:
Balaji Pothunoori
2021-01-23 20:43:45 +05:30
committed by snandini
parent f33de00449
commit e64a36609f
6 changed files with 33 additions and 6 deletions

View File

@@ -791,6 +791,8 @@ static void mlme_init_qos_cfg(struct wlan_objmgr_psoc *psoc,
cfg_get(psoc, CFG_SAP_MAX_INACTIVITY_OVERRIDE);
qos_aggr_params->sap_uapsd_enabled =
cfg_get(psoc, CFG_SAP_QOS_UAPSD);
qos_aggr_params->reject_addba_req =
cfg_get(psoc, CFG_REJECT_ADDBA_REQ);
}
static void mlme_init_mbo_cfg(struct wlan_objmgr_psoc *psoc,

View File

@@ -197,6 +197,27 @@
CFG_VALUE_OR_DEFAULT, \
"Rx Aggregation size value")
/*
* <ini>
* reject_addba_req - Configure Rx ADDBA Req reject for PEER AP
* @Min: 0
* @Max: 1
* @Default: 0
*
* reject_addba_req gives an option to reject ADDBA Req from PEER AP
*
* Related: None
*
* Supported Feature: STA
*
* Usage: External
*
* </ini>
*/
#define CFG_REJECT_ADDBA_REQ CFG_INI_BOOL( \
"reject_addba_req", \
0, \
"Addba Req Reject")
/*
* <ini>
* gTxAggSwRetryBE - Configure Tx aggregation sw retry for BE
@@ -567,6 +588,7 @@
CFG(CFG_TX_NON_AGGR_SW_RETRY_VO) \
CFG(CFG_TX_NON_AGGR_SW_RETRY) \
CFG(CFG_SAP_QOS_UAPSD) \
CFG(CFG_TX_IOT_AGGR)
CFG(CFG_TX_IOT_AGGR) \
CFG(CFG_REJECT_ADDBA_REQ)
#endif /* __CFG_MLME_QOS_H */

View File

@@ -1008,6 +1008,7 @@ struct wlan_vht_config {
* @sap_max_inactivity_override: Override updating ap_sta_inactivity from
* hostapd.conf
* @sap_uapsd_enabled: Flag to enable/disable UAPSD for SAP
* @reject_addba_req: Flag to decline ADDBA Req from SAP
*/
struct wlan_mlme_qos {
uint32_t tx_aggregation_size;
@@ -1028,6 +1029,7 @@ struct wlan_mlme_qos {
uint32_t tx_non_aggr_sw_retry_threshold;
bool sap_max_inactivity_override;
bool sap_uapsd_enabled;
bool reject_addba_req;
};
#ifdef WLAN_FEATURE_11AX

View File

@@ -788,7 +788,6 @@ struct mac_context {
uint32_t rx_mc_bc_cnt;
/* 11k Offload Support */
bool is_11k_offload_supported;
uint8_t reject_addba_req;
bool usr_cfg_ps_enable;
uint16_t usr_cfg_ba_buff_size;
bool is_usr_cfg_amsdu_enabled;

View File

@@ -5505,9 +5505,9 @@ static void lim_process_sme_set_addba_accept(struct mac_context *mac_ctx,
return;
}
if (!msg->addba_accept)
mac_ctx->reject_addba_req = 1;
mac_ctx->mlme_cfg->qos_mlme_params.reject_addba_req = 1;
else
mac_ctx->reject_addba_req = 0;
mac_ctx->mlme_cfg->qos_mlme_params.reject_addba_req = 0;
}
static void lim_process_sme_update_edca_params(struct mac_context *mac_ctx,

View File

@@ -5335,20 +5335,22 @@ QDF_STATUS lim_send_addba_response_frame(struct mac_context *mac_ctx,
tpDphHashNode sta_ds;
uint16_t aid;
bool he_cap = false;
struct wlan_mlme_qos *qos_aggr;
vdev_id = session->vdev_id;
cdp_addba_responsesetup(soc, peer_mac, vdev_id, tid,
&dialog_token, &status_code, &buff_size,
&batimeout);
qos_aggr = &mac_ctx->mlme_cfg->qos_mlme_params;
qdf_mem_zero((uint8_t *) &frm, sizeof(frm));
frm.Category.category = ACTION_CATEGORY_BACK;
frm.Action.action = ADDBA_RESPONSE;
frm.DialogToken.token = dialog_token;
frm.Status.status = status_code;
if (mac_ctx->reject_addba_req) {
if (qos_aggr->reject_addba_req) {
frm.Status.status = STATUS_REQUEST_DECLINED;
pe_err("refused addba req");
}