Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2471a4f0 authored by Utkarsh Bhatnagar's avatar Utkarsh Bhatnagar Committed by Madan Koyyalamudi
Browse files

qcacld-3.0: Handle A-EDCA based on STA-SAP concurrency

Handle A-EDCA based on STA-SAP concurrency. Also, update
RTS profile based on the concurrency such that:
1) For STA and SAP concurrency, send STA's AP EDCA
   params to fw. Also, for SAP or P2P Go, update the
   value in Broadcast EDCA params as well so that it
   should be broadcasted to other stations connected
   to that BSS. Also, update the RTS profile value to
   0x11. It will let FW disable SIFS bursting and send
   RTS for every frame.
2) For standalone STA (can even happen after SAP/P2P Go
   disconnects), if the parameters are updated, reset
   them to original parameters and send them to FW.
   Also, update the RTS profile value to the value
   it was set before.
3) For standalone SAP (can even happen after STA
   disconnects), if the parameters are updated, reset
   them to original parameters and send them to FW and
   reset the  Broadcast EDCA params as well so that it
   should be broadcasted to other stations connected
   to that BSS Also, update the RTS profile value to
   which it was set before.

Change-Id: Idb2b04b1b0bddb51cea9c5665847d04817a90aca
CRs-Fixed: 2949484
parent 515a16d5
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -1494,6 +1494,18 @@ struct policy_mgr_hdd_cbacks {
			struct ch_params *ch_params);
};

/**
 * struct policy_mgr_conc_cbacks - lim Callbacks to be invoked
 * from policy manager
 * @connection_info_update: check and update params based on STA/SAP
 *                          concurrency.such as EDCA params and RTS threshold.
 *                          If updated, it will also send the updated parameters
 *                          to FW.
 */

struct policy_mgr_conc_cbacks {
	void (*connection_info_update)(void);
};

/**
 * struct policy_mgr_tdls_cbacks - TDLS Callbacks to be invoked
@@ -2397,6 +2409,21 @@ QDF_STATUS policy_mgr_register_hdd_cb(struct wlan_objmgr_psoc *psoc,
 */
QDF_STATUS policy_mgr_deregister_hdd_cb(struct wlan_objmgr_psoc *psoc);

/**
 * policy_mgr_register_conc_cb() - register Lim callbacks
 * @psoc: PSOC object information
 * @hdd_cbacks: function pointers from lim
 *
 * API, allows Lim to register callbacks to be invoked by policy
 * mgr
 *
 * Return: SUCCESS,
 *         Failure (if registration fails)
 */

QDF_STATUS policy_mgr_register_conc_cb(struct wlan_objmgr_psoc *psoc,
				struct policy_mgr_conc_cbacks *conc_cbacks);

/**
 * policy_mgr_register_tdls_cb() - register TDLS callbacks
 * @psoc: PSOC object information
+3 −0
Original line number Diff line number Diff line
@@ -631,6 +631,9 @@ void policy_mgr_update_conc_list(struct wlan_objmgr_psoc *psoc,
		if (pm_ctx->dp_cbacks.hdd_ipa_set_mcc_mode_cb)
			pm_ctx->dp_cbacks.hdd_ipa_set_mcc_mode_cb(mcc_mode);
	}

	if (pm_ctx->conc_cbacks.connection_info_update)
		pm_ctx->conc_cbacks.connection_info_update();
}

/**
+3 −0
Original line number Diff line number Diff line
@@ -2199,6 +2199,9 @@ QDF_STATUS policy_mgr_decr_connection_count(struct wlan_objmgr_psoc *psoc,
		sizeof(*pm_conc_connection_list));
	qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);

	if (pm_ctx->conc_cbacks.connection_info_update)
		pm_ctx->conc_cbacks.connection_info_update();

	return QDF_STATUS_SUCCESS;
}

+3 −0
Original line number Diff line number Diff line
@@ -296,6 +296,8 @@ struct policy_mgr_cfg {
 * interaction with Policy Manager
 * @cdp_cbacks: callbacks to be registered by SME for
 * interaction with Policy Manager
 * @conc_cbacks: callbacks to be registered by lim for
 * interaction with Policy Manager
 * @sap_mandatory_channels: The user preferred master list on
 *                        which SAP can be brought up. This
 *                        mandatory channel freq list would be as per
@@ -342,6 +344,7 @@ struct policy_mgr_psoc_priv_obj {
	struct policy_mgr_tdls_cbacks tdls_cbacks;
	struct policy_mgr_cdp_cbacks cdp_cbacks;
	struct policy_mgr_dp_cbacks dp_cbacks;
	struct policy_mgr_conc_cbacks conc_cbacks;
	uint32_t sap_mandatory_channels[NUM_CHANNELS];
	uint32_t sap_mandatory_channels_len;
	bool do_sap_unsafe_ch_check;
+16 −0
Original line number Diff line number Diff line
@@ -637,6 +637,22 @@ QDF_STATUS policy_mgr_psoc_disable(struct wlan_objmgr_psoc *psoc)
	return status;
}

QDF_STATUS policy_mgr_register_conc_cb(struct wlan_objmgr_psoc *psoc,
				struct policy_mgr_conc_cbacks *conc_cbacks)
{
	struct policy_mgr_psoc_priv_obj *pm_ctx;

	pm_ctx = policy_mgr_get_context(psoc);
	if (!pm_ctx) {
		policy_mgr_err("Invalid Context");
		return QDF_STATUS_E_FAILURE;
	}

	pm_ctx->conc_cbacks.connection_info_update =
					conc_cbacks->connection_info_update;
	return QDF_STATUS_SUCCESS;
}

QDF_STATUS policy_mgr_register_sme_cb(struct wlan_objmgr_psoc *psoc,
		struct policy_mgr_sme_cbacks *sme_cbacks)
{
Loading