Parcourir la source

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
Balaji Pothunoori il y a 4 ans
Parent
commit
e64a36609f

+ 2 - 0
components/mlme/core/src/wlan_mlme_main.c

@@ -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,

+ 23 - 1
components/mlme/dispatcher/inc/cfg_qos.h

@@ -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 */

+ 2 - 0
components/mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -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

+ 0 - 1
core/mac/inc/ani_global.h

@@ -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;

+ 2 - 2
core/mac/src/pe/lim/lim_process_sme_req_messages.c

@@ -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,

+ 4 - 2
core/mac/src/pe/lim/lim_send_management_frames.c

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