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");
}