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

Commit 145b10b3 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge c73e607c on remote branch

Change-Id: Ice0293eb20c0f1fd8d85ada434a042c55ab743df
parents 31436970 c73e607c
Loading
Loading
Loading
Loading
+236 −162

File changed.

Preview size limit exceeded, changes collapsed.

+7 −3
Original line number Diff line number Diff line
@@ -2287,12 +2287,16 @@ QDF_STATUS policy_mgr_valid_sap_conc_channel_check(
					return QDF_STATUS_E_FAILURE;
				}
			} else {
				policy_mgr_warn("Can't have concurrency on %d",
				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);
					return QDF_STATUS_E_FAILURE;
				}
			}
		}
	}

update_chan:
	if (ch_freq != sap_ch_freq)
+72 −1
Original line number Diff line number Diff line
@@ -658,6 +658,67 @@ policy_mgr_modify_pcl_based_on_srd(struct wlan_objmgr_psoc *psoc,
	return QDF_STATUS_SUCCESS;
}

/**
 * policy_mgr_modify_pcl_based_on_indoor() - filter out indoor channel if needed
 * @psoc: pointer to soc
 * @pcl_list_org: channel list to filter out
 * @weight_list_org: weight of channel list
 * @pcl_len_org: length of channel list
 *
 * Return: QDF_STATUS
 */
static QDF_STATUS
policy_mgr_modify_pcl_based_on_indoor(struct wlan_objmgr_psoc *psoc,
				      uint32_t *pcl_list_org,
				      uint8_t *weight_list_org,
				      uint32_t *pcl_len_org)
{
	uint32_t i, pcl_len = 0;
	uint32_t pcl_list[NUM_CHANNELS];
	uint8_t weight_list[NUM_CHANNELS];
	struct policy_mgr_psoc_priv_obj *pm_ctx;
	bool include_indoor_channel;
	QDF_STATUS status;

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

	if (*pcl_len_org > NUM_CHANNELS) {
		policy_mgr_err("Invalid PCL List Length %d", *pcl_len_org);
		return QDF_STATUS_E_FAILURE;
	}

	status = ucfg_mlme_get_indoor_channel_support(psoc,
						      &include_indoor_channel);
	if (QDF_IS_STATUS_ERROR(status)) {
		policy_mgr_err("failed to get indoor channel skip info");
		return status;
	}

	if (include_indoor_channel) {
		policy_mgr_debug("No more operation on indoor channel");
		return QDF_STATUS_SUCCESS;
	}

	for (i = 0; i < *pcl_len_org; i++) {
		if (wlan_reg_is_freq_indoor(pm_ctx->pdev, pcl_list_org[i]))
			continue;
		pcl_list[pcl_len] = pcl_list_org[i];
		weight_list[pcl_len++] = weight_list_org[i];
	}

	qdf_mem_zero(pcl_list_org, *pcl_len_org * sizeof(*pcl_list_org));
	qdf_mem_zero(weight_list_org, *pcl_len_org);
	qdf_mem_copy(pcl_list_org, pcl_list, pcl_len * sizeof(*pcl_list_org));
	qdf_mem_copy(weight_list_org, weight_list, pcl_len);
	*pcl_len_org = pcl_len;

	return QDF_STATUS_SUCCESS;
}

static QDF_STATUS policy_mgr_pcl_modification_for_sap(
			struct wlan_objmgr_psoc *psoc,
			uint32_t *pcl_channels, uint8_t *pcl_weight,
@@ -667,6 +728,7 @@ static QDF_STATUS policy_mgr_pcl_modification_for_sap(
	bool mandatory_modified_pcl = false;
	bool nol_modified_pcl = false;
	bool dfs_modified_pcl = false;
	bool indoor_modified_pcl = false;
	bool modified_final_pcl = false;
	bool srd_chan_enabled;

@@ -709,11 +771,20 @@ static QDF_STATUS policy_mgr_pcl_modification_for_sap(
		}
	}

	status = policy_mgr_modify_pcl_based_on_indoor(psoc, pcl_channels,
						       pcl_weight, len);
	if (QDF_IS_STATUS_ERROR(status)) {
		policy_mgr_err("failed to get indoor modified pcl for SAP");
		return status;
	}
	indoor_modified_pcl = true;

	modified_final_pcl = true;
	policy_mgr_debug(" %d %d %d %d",
	policy_mgr_debug(" %d %d %d %d %d",
			 mandatory_modified_pcl,
			 nol_modified_pcl,
			 dfs_modified_pcl,
			 indoor_modified_pcl,
			 modified_final_pcl);

	return QDF_STATUS_SUCCESS;
+5 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
 * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
@@ -31,6 +31,10 @@
/* For WMI_MAX_CHAINS */
#include "wmi_unified.h"

#ifdef QCA_SUPPORT_MC_CP_STATS
#include "wlan_cp_stats_public_structs.h"
#endif

#ifdef WLAN_SUPPORT_TWT

#include <wmi_unified_twt_param.h>
+20 −3
Original line number Diff line number Diff line
/*
 * Copyright (c) 2018, 2020 The Linux Foundation. All rights reserved.
 * Copyright (c) 2018, 2021 The Linux Foundation. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
@@ -48,14 +48,31 @@ uint8_t target_if_mc_cp_get_mac_id(struct vdev_mlme_obj *vdev_mlme);
 * @psoc: pointer to psoc object
 * @event: event parameters
 *
 * Return: QDF_STATUS_SUCCESS on Success, other QDF_STATUS error codes on
 * failure
 */
QDF_STATUS
tgt_mc_cp_stats_process_stats_event(struct wlan_objmgr_psoc *psoc,
				    struct stats_event *ev);

#ifdef WLAN_SUPPORT_INFRA_CTRL_PATH_STATS
/**
 * tgt_mc_cp_stats_process_infra_stats_event(): API to process event from
 * cp stats infrastrucure
 * @psoc: pointer to psoc object
 * @infra_event: infra cp stats event parameters
 *
 * Return: status of operation
 */
QDF_STATUS tgt_mc_cp_stats_process_stats_event(struct wlan_objmgr_psoc *psoc,
					       struct stats_event *event);
QDF_STATUS tgt_mc_cp_stats_process_infra_stats_event(
				struct wlan_objmgr_psoc *psoc,
				struct infra_cp_stats_event *infra_event);

#endif
/**
 * tgt_send_mc_cp_stats_req(): API to send stats request to lmac
 * @psoc: pointer to psoc object
 * @req: pointer to stats request
 *
 * Return: status of operation
 */
Loading