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

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

Merge 4b9e7b8b on remote branch

Change-Id: I5c007b783b3710a9f2631738d57876545cbad089
parents 9ceca865 4b9e7b8b
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -389,6 +389,9 @@ HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_sysfs_dp_aggregation.o
ifeq ($(CONFIG_DP_SWLM), y)
HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_sysfs_swlm.o
endif
ifeq ($(CONFIG_WLAN_DUMP_IN_PROGRESS), y)
HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_sysfs_dump_in_progress.o
endif
endif

ifeq ($(CONFIG_QCACLD_FEATURE_FW_STATE), y)
@@ -2799,6 +2802,7 @@ cppflags-$(CONFIG_WLAN_SYSFS_HE_BSS_COLOR) += -DWLAN_SYSFS_HE_BSS_COLOR
cppflags-$(CONFIG_WLAN_SYSFS_STA_INFO) += -DWLAN_SYSFS_STA_INFO
cppflags-$(CONFIG_WLAN_DL_MODES) += -DCONFIG_WLAN_DL_MODES
cppflags-$(CONFIG_WLAN_THERMAL_MULTI_CLIENT_SUPPORT) += -DFEATURE_WPSS_THERMAL_MITIGATION
cppflags-$(CONFIG_WLAN_DUMP_IN_PROGRESS) += -DCONFIG_WLAN_DUMP_IN_PROGRESS

ifeq ($(CONFIG_LEAK_DETECTION), y)
cppflags-y += \
@@ -2958,6 +2962,7 @@ cppflags-$(CONFIG_LL_DP_SUPPORT) += -DCONFIG_LL_DP_SUPPORT
cppflags-$(CONFIG_LL_DP_SUPPORT) += -DWLAN_FULL_REORDER_OFFLOAD
cppflags-$(CONFIG_WLAN_FEATURE_BIG_DATA_STATS) += -DWLAN_FEATURE_BIG_DATA_STATS
cppflags-$(CONFIG_WLAN_FEATURE_IGMP_OFFLOAD) += -DWLAN_FEATURE_IGMP_OFFLOAD
cppflags-$(CONFIG_WLAN_FEATURE_GET_USABLE_CHAN_LIST) += -DWLAN_FEATURE_GET_USABLE_CHAN_LIST

# For PCIe GEN switch
cppflags-$(CONFIG_PCIE_GEN_SWITCH) += -DPCIE_GEN_SWITCH
@@ -3313,6 +3318,7 @@ cppflags-y += -DPCI_LINK_STATUS_SANITY
cppflags-y += -DDP_MON_RSSI_IN_DBM
cppflags-y += -DSYSTEM_PM_CHECK
cppflags-y += -DDISABLE_EAPOL_INTRABSS_FWD
cppflags-y += -DDISABLE_MON_RING_MSI_CFG
endif

# Enable Low latency optimisation mode
+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
+1 −0
Original line number Diff line number Diff line
@@ -2483,6 +2483,7 @@ void policy_mgr_change_sap_channel_with_csa(struct wlan_objmgr_psoc *psoc,
		return;
	}
	if (pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params) {
		ch_params.ch_width = ch_width;
		status = pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params(
			psoc, vdev_id, ch_freq, &ch_params);
		if (QDF_IS_STATUS_SUCCESS(status) &&
+8 −2
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@

#define POLICY_MGR_MAX_CON_STRING_LEN   100

static const uint16_t sap_mand_5g_freq_list[] = {5745, 5765, 5785, 5805};

struct policy_mgr_conc_connection_info
	pm_conc_connection_list[MAX_NUMBER_OF_CONC_CONNECTIONS];

@@ -629,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();
}

/**
@@ -3612,8 +3617,9 @@ policy_mgr_init_sap_mandatory_chan_by_band(struct wlan_objmgr_psoc *psoc,
		}
	}
	if (band_bitmap & BIT(REG_BAND_5G))
		policy_mgr_add_sap_mandatory_chan(psoc,
						  SAP_MANDATORY_5G_CH_FREQ);
		for (i = 0; i < ARRAY_SIZE(sap_mand_5g_freq_list); i++)
			policy_mgr_add_sap_mandatory_chan(
				psoc, sap_mand_5g_freq_list[i]);
	if (band_bitmap & BIT(REG_BAND_6G))
		policy_mgr_add_sap_mandatory_6ghz_chan(psoc);
}
+106 −0
Original line number Diff line number Diff line
@@ -42,6 +42,34 @@
/* invalid channel id. */
#define INVALID_CHANNEL_ID 0

/**
 * policy_mgr_debug_alert() - fatal error alert
 *
 * This function will flush host drv log and
 * disable all level logs.
 * It can be called in fatal error detected in policy
 * manager.
 * This is to avoid host log overwritten in stress
 * test to help issue debug.
 *
 * Return: none
 */
static void
policy_mgr_debug_alert(void)
{
	int module_id;
	int qdf_print_idx;

	policy_mgr_err("fatal error detected to flush and pause host log");
	qdf_logging_flush_logs();
	qdf_print_idx = qdf_get_pidx();
	for (module_id = 0; module_id < QDF_MODULE_ID_MAX; module_id++)
		qdf_print_set_category_verbose(
					qdf_print_idx,
					module_id, QDF_TRACE_LEVEL_NONE,
					0);
}

QDF_STATUS
policy_mgr_get_allow_mcc_go_diff_bi(struct wlan_objmgr_psoc *psoc,
				    uint8_t *allow_mcc_go_diff_bi)
@@ -1827,6 +1855,64 @@ void policy_mgr_clear_concurrency_mode(struct wlan_objmgr_psoc *psoc,
			 pm_ctx->no_of_open_sessions[mode]);
}

/**
 * policy_mgr_validate_conn_info() - validate conn info list
 * @psoc: PSOC object data
 *
 * This function will check connection list to see duplicated
 * vdev entry existing or not.
 *
 * Return: true if conn list is in abnormal state.
 */
static bool
policy_mgr_validate_conn_info(struct wlan_objmgr_psoc *psoc)
{
	uint32_t i, j, conn_num = 0;
	bool panic = 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 true;
	}

	qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
	for (i = 0; i < MAX_NUMBER_OF_CONC_CONNECTIONS; i++) {
		if (pm_conc_connection_list[i].in_use) {
			for (j = i + 1; j < MAX_NUMBER_OF_CONC_CONNECTIONS;
									j++) {
				if (pm_conc_connection_list[j].in_use &&
				    pm_conc_connection_list[i].vdev_id ==
				    pm_conc_connection_list[j].vdev_id) {
					policy_mgr_debug(
					"dup entry %d",
					pm_conc_connection_list[i].vdev_id);
					panic = true;
				}
			}
			conn_num++;
		}
	}
	if (panic)
		policy_mgr_err("dup entry");

	for (i = 0, j = 0; i < QDF_MAX_NO_OF_MODE; i++)
		j += pm_ctx->no_of_active_sessions[i];

	if (j != conn_num) {
		policy_mgr_err("active session/conn count mismatch %d %d",
			       j, conn_num);
		panic = true;
	}
	qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);

	if (panic)
		policy_mgr_debug_alert();

	return panic;
}

void policy_mgr_incr_active_session(struct wlan_objmgr_psoc *psoc,
				enum QDF_OPMODE mode,
				uint8_t session_id)
@@ -2148,6 +2234,7 @@ QDF_STATUS policy_mgr_decr_connection_count(struct wlan_objmgr_psoc *psoc,
	uint32_t conn_index = 0, next_conn_index = 0;
	bool found = false;
	struct policy_mgr_psoc_priv_obj *pm_ctx;
	bool panic = false;

	pm_ctx = policy_mgr_get_context(psoc);
	if (!pm_ctx) {
@@ -2197,7 +2284,23 @@ QDF_STATUS policy_mgr_decr_connection_count(struct wlan_objmgr_psoc *psoc,
	/* clean up the entry */
	qdf_mem_zero(&pm_conc_connection_list[next_conn_index - 1],
		sizeof(*pm_conc_connection_list));

	conn_index = 0;
	while (PM_CONC_CONNECTION_LIST_VALID_INDEX(conn_index)) {
		if (vdev_id == pm_conc_connection_list[conn_index].vdev_id) {
			panic = true;
			break;
		}
		conn_index++;
	}

	qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);
	if (panic) {
		policy_mgr_err("dup entry occur");
		policy_mgr_debug_alert();
	}
	if (pm_ctx->conc_cbacks.connection_info_update)
		pm_ctx->conc_cbacks.connection_info_update();

	return QDF_STATUS_SUCCESS;
}
@@ -2544,6 +2647,7 @@ bool policy_mgr_is_concurrency_allowed(struct wlan_objmgr_psoc *psoc,
	if (policy_mgr_max_concurrent_connections_reached(psoc)) {
		policy_mgr_rl_debug("Reached max concurrent connections: %d",
				    pm_ctx->cfg.max_conc_cxns);
		policy_mgr_validate_conn_info(psoc);
		goto done;
	}

@@ -3538,6 +3642,8 @@ void policy_mgr_dump_connection_status_info(struct wlan_objmgr_psoc *psoc)
				 pm_conc_connection_list[i].ch_flagext);
	}
	qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);

	policy_mgr_validate_conn_info(psoc);
}

bool policy_mgr_is_any_mode_active_on_band_along_with_session(
Loading