From e5b5b5b78c691b4e65489ca6290fd3b4447de714 Mon Sep 17 00:00:00 2001 From: Balaji Pothunoori Date: Sun, 31 Jan 2021 16:24:15 +0530 Subject: [PATCH] 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 --- components/mlme/core/src/wlan_mlme_main.c | 2 ++ components/mlme/dispatcher/inc/cfg_qos.h | 24 ++++++++++++++++++- .../dispatcher/inc/wlan_mlme_public_struct.h | 2 ++ core/mac/inc/ani_global.h | 1 - .../src/pe/lim/lim_process_sme_req_messages.c | 4 ++-- .../src/pe/lim/lim_send_management_frames.c | 6 +++-- 6 files changed, 33 insertions(+), 6 deletions(-) diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index 6a13078a326d..ddb43ac2667a 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/components/mlme/core/src/wlan_mlme_main.c @@ -767,6 +767,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, diff --git a/components/mlme/dispatcher/inc/cfg_qos.h b/components/mlme/dispatcher/inc/cfg_qos.h index cb51ea3ad339..07f74acdf68c 100644 --- a/components/mlme/dispatcher/inc/cfg_qos.h +++ b/components/mlme/dispatcher/inc/cfg_qos.h @@ -197,6 +197,27 @@ CFG_VALUE_OR_DEFAULT, \ "Rx Aggregation size value") +/* + * + * 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 + * + * + */ +#define CFG_REJECT_ADDBA_REQ CFG_INI_BOOL( \ + "reject_addba_req", \ + 0, \ + "Addba Req Reject") /* * * gTxAggSwRetryBE - Configure Tx aggregation sw retry for BE @@ -521,6 +542,7 @@ CFG(CFG_TX_NON_AGGR_SW_RETRY_VI) \ CFG(CFG_TX_NON_AGGR_SW_RETRY_VO) \ CFG(CFG_TX_NON_AGGR_SW_RETRY) \ - CFG(CFG_SAP_QOS_UAPSD) + CFG(CFG_SAP_QOS_UAPSD) \ + CFG(CFG_REJECT_ADDBA_REQ) #endif /* __CFG_MLME_QOS_H */ diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index 59850fcedd70..25422cdc1511 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -931,6 +931,7 @@ struct wlan_mlme_vht_caps { * @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; @@ -951,6 +952,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 diff --git a/core/mac/inc/ani_global.h b/core/mac/inc/ani_global.h index 38c9b3dc6233..77d54779981d 100644 --- a/core/mac/inc/ani_global.h +++ b/core/mac/inc/ani_global.h @@ -789,7 +789,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; diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c index 17efd413d7d1..f7ba267ea571 100644 --- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c +++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c @@ -3303,9 +3303,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, diff --git a/core/mac/src/pe/lim/lim_send_management_frames.c b/core/mac/src/pe/lim/lim_send_management_frames.c index 26afbc8fb1aa..a310b76a9ecb 100644 --- a/core/mac/src/pe/lim/lim_send_management_frames.c +++ b/core/mac/src/pe/lim/lim_send_management_frames.c @@ -5308,20 +5308,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"); }