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

Commit 76efcb3e authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge 9f72e233 on remote branch

Change-Id: I6e08808cd33fdb3512fd22c2a5e26bb0130e7211
parents 07bc68ae 9f72e233
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -3513,6 +3513,10 @@ ifdef CONFIG_SCHED_HISTORY_SIZE
ccflags-y += -DWLAN_SCHED_HISTORY_SIZE=$(CONFIG_SCHED_HISTORY_SIZE)
endif

ifdef CONFIG_HANDLE_RX_REROUTE_ERR
cppflags-y += -DHANDLE_RX_REROUTE_ERR
endif

# configure log buffer size
ifdef CONFIG_CFG_NUM_DP_TRACE_RECORD
ccflags-y += -DMAX_QDF_DP_TRACE_RECORDS=$(CONFIG_CFG_NUM_DP_TRACE_RECORD)
+26 −0
Original line number Diff line number Diff line
@@ -2326,6 +2326,16 @@ void policy_mgr_hw_mode_transition_cb(uint32_t old_hw_mode_index,
		struct policy_mgr_vdev_mac_map *vdev_mac_map,
		struct wlan_objmgr_psoc *context);

/**
 * policy_mgr_current_concurrency_is_scc() - To check the current
 * concurrency combination if it is doing SCC
 * @psoc: PSOC object information
 * This routine is called to check if it is doing SCC
 *
 * Return: True - SCC, False - Otherwise
 */
bool policy_mgr_current_concurrency_is_scc(struct wlan_objmgr_psoc *psoc);

/**
 * policy_mgr_current_concurrency_is_mcc() - To check the current
 * concurrency combination if it is doing MCC
@@ -3057,6 +3067,22 @@ QDF_STATUS policy_mgr_valid_sap_conc_channel_check(
	uint32_t sap_ch_freq, uint8_t sap_vdev_id,
	struct ch_params *ch_params);

/**
 * policy_mgr_sap_allowed_on_indoor_freq() - Check whether STA+SAP concurrency
 * allowed on indoor channel or not
 * @psoc: pointer to PSOC object information
 * @pdev: pointer to PDEV object information
 * @sap_ch_freq: initial channel frequency for SAP
 *
 * This function checks whether SAP is allowed to turn on in case of STA+SAP
 * concurrency if STA is on indoor channel.
 *
 * Return: false if SAP not allowed to come up on a indoor channel
 */
bool policy_mgr_sap_allowed_on_indoor_freq(struct wlan_objmgr_psoc *psoc,
					   struct wlan_objmgr_pdev *pdev,
					   uint32_t sap_ch_freq);

/**
 * policy_mgr_get_alternate_channel_for_sap() - Get an alternate
 * channel to move the SAP to
+24 −4
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include "wlan_mlme_api.h"
#include "sap_api.h"
#include "wlan_mlme_api.h"
#include "wlan_mlme_ucfg_api.h"

enum policy_mgr_conc_next_action (*policy_mgr_get_current_pref_hw_mode_ptr)
	(struct wlan_objmgr_psoc *psoc);
@@ -2202,6 +2203,23 @@ static QDF_STATUS policy_mgr_check_6ghz_sap_conc(
	return QDF_STATUS_SUCCESS;
}

bool policy_mgr_sap_allowed_on_indoor_freq(struct wlan_objmgr_psoc *psoc,
					   struct wlan_objmgr_pdev *pdev,
					   uint32_t sap_ch_freq)
{
	bool include_indoor_channel = 0;

	ucfg_mlme_get_indoor_channel_support(psoc, &include_indoor_channel);

	if (!include_indoor_channel &&
	    wlan_reg_is_freq_indoor(pdev, sap_ch_freq)) {
		policy_mgr_debug("No more operation on indoor channel");
		return false;
	}

	return true;
}

QDF_STATUS policy_mgr_valid_sap_conc_channel_check(
	struct wlan_objmgr_psoc *psoc, uint32_t *con_ch_freq,
	uint32_t sap_ch_freq, uint8_t sap_vdev_id,
@@ -2307,11 +2325,13 @@ QDF_STATUS policy_mgr_valid_sap_conc_channel_check(
					return QDF_STATUS_E_FAILURE;
				}
			} else {
				if (!(policy_mgr_sta_sap_scc_on_lte_coex_chan
				if ((!(policy_mgr_sta_sap_scc_on_lte_coex_chan
				    (psoc)) && !(policy_mgr_is_safe_channel
				    (psoc, ch_freq))) {
					policy_mgr_warn("Can't have concurrency due to unsafe channel %d",
							ch_freq);
				    (psoc, ch_freq))) ||
				    !policy_mgr_sap_allowed_on_indoor_freq(psoc,
						pm_ctx->pdev, sap_ch_freq)) {
					policy_mgr_warn("Can't have concurrency due to unsafe/indoor channel:%d, sap_ch_freq:%d",
							ch_freq, sap_ch_freq);
					return QDF_STATUS_E_FAILURE;
				}
			}
+14 −0
Original line number Diff line number Diff line
@@ -1404,8 +1404,22 @@ void policy_mgr_set_pcl_for_connected_vdev(struct wlan_objmgr_psoc *psoc,
					   uint8_t vdev_id, bool clear_pcl)
{
	struct policy_mgr_pcl_list msg = { {0} };
	struct wlan_objmgr_vdev *vdev;
	uint8_t roam_enabled_vdev_id;

	vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
						    WLAN_POLICY_MGR_ID);
	if (!vdev) {
		policy_mgr_err("vdev is NULL");
		return;
	}

	if (wlan_vdev_mlme_get_opmode(vdev) != QDF_STA_MODE) {
		wlan_objmgr_vdev_release_ref(vdev, WLAN_POLICY_MGR_ID);
		return;
	}
	wlan_objmgr_vdev_release_ref(vdev, WLAN_POLICY_MGR_ID);

	/*
	 * Get the vdev id of the STA on which roaming is already
	 * initialized and set the vdev PCL for that STA vdev if dual
+52 −0
Original line number Diff line number Diff line
@@ -1609,6 +1609,58 @@ bool policy_mgr_is_scc_with_this_vdev_id(struct wlan_objmgr_psoc *psoc,
	return false;
}

bool policy_mgr_current_concurrency_is_scc(struct wlan_objmgr_psoc *psoc)
{
	uint32_t num_connections = 0;
	bool is_scc = false;
	struct policy_mgr_psoc_priv_obj *pm_ctx;

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

	num_connections = policy_mgr_get_connection_count(psoc);

	qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
	switch (num_connections) {
	case 1:
		break;
	case 2:
		if (pm_conc_connection_list[0].freq ==
		    pm_conc_connection_list[1].freq &&
		    pm_conc_connection_list[0].mac ==
		    pm_conc_connection_list[1].mac) {
			is_scc = true;
		}
		break;
	case 3:
		if (policy_mgr_is_current_hwmode_dbs(psoc) &&
		    (pm_conc_connection_list[0].freq ==
		     pm_conc_connection_list[1].freq ||
		     pm_conc_connection_list[0].freq ==
		     pm_conc_connection_list[2].freq ||
		     pm_conc_connection_list[1].freq ==
		     pm_conc_connection_list[2].freq)) {
			is_scc = true;
		} else if ((pm_conc_connection_list[0].freq ==
			    pm_conc_connection_list[1].freq) &&
			   (pm_conc_connection_list[0].freq ==
			   pm_conc_connection_list[2].freq)) {
			is_scc = true;
		}
		break;
	default:
		policy_mgr_debug("unexpected num_connections value %d",
				 num_connections);
		break;
	}
	qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);

	return is_scc;
}

bool policy_mgr_current_concurrency_is_mcc(struct wlan_objmgr_psoc *psoc)
{
	uint32_t num_connections = 0;
Loading