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

Commit c0cbb4a3 authored by Mohit Sharma's avatar Mohit Sharma
Browse files

Merge commit '1edc28df' into wlan-cld3.driver.lnx.2.0.r11-rel

Change-Id: Id9e217d81290b724cdde03d2c113560c383fb103
parents 96c299d5 1edc28df
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -3307,6 +3307,11 @@ cppflags-y += -DMON_ENABLE_DROP_FOR_MAC
cppflags-y += -DPCI_LINK_STATUS_SANITY
cppflags-y += -DDP_MON_RSSI_IN_DBM
cppflags-y += -DSYSTEM_PM_CHECK
cppflags-y += -DDISABLE_EAPOL_INTRABSS_FWD
endif

ifeq ($(CONFIG_TX_AGGREGATION_SIZE_ENABLE), y)
cppflags-y += -DTX_AGGREGATION_SIZE_ENABLE
endif

# Enable Low latency optimisation mode
@@ -3481,7 +3486,12 @@ cppflags-$(CONFIG_SAR_SAFETY_FEATURE) += -DSAR_SAFETY_FEATURE

cppflags-$(CONFIG_WLAN_FEATURE_DP_EVENT_HISTORY) += -DWLAN_FEATURE_DP_EVENT_HISTORY
cppflags-$(CONFIG_WLAN_FEATURE_DP_RX_RING_HISTORY) += -DWLAN_FEATURE_DP_RX_RING_HISTORY
cppflags-$(CONFIG_WLAN_FEATURE_DP_TX_DESC_HISTORY) += -DWLAN_FEATURE_DP_TX_DESC_HISTORY
cppflags-$(CONFIG_REO_QDESC_HISTORY) += -DREO_QDESC_HISTORY
cppflags-$(CONFIG_DP_TX_HW_DESC_HISTORY) += -DDP_TX_HW_DESC_HISTORY
ifdef CONFIG_QDF_NBUF_HISTORY_SIZE
ccflags-y += -DQDF_NBUF_HISTORY_SIZE=$(CONFIG_QDF_NBUF_HISTORY_SIZE)
endif
cppflags-$(CONFIG_WLAN_DP_PER_RING_TYPE_CONFIG) += -DWLAN_DP_PER_RING_TYPE_CONFIG
cppflags-$(CONFIG_WLAN_CE_INTERRUPT_THRESHOLD_CONFIG) += -DWLAN_CE_INTERRUPT_THRESHOLD_CONFIG
cppflags-$(CONFIG_SAP_DHCP_FW_IND) += -DSAP_DHCP_FW_IND
+11 −5
Original line number Diff line number Diff line
@@ -1465,6 +1465,8 @@ struct policy_mgr_sme_cbacks {
 * @wlan_hdd_set_sap_csa_reason: Set the sap csa reason in cases like NAN.
 * @hdd_get_ap_6ghz_capable: get ap vdev 6ghz capable info from hdd ap adapter.
 * @wlan_hdd_indicate_active_ndp_cnt: indicate active ndp cnt to hdd
 * @wlan_get_ap_prefer_conc_ch_params: get prefer ap channel bw parameters
 *  based on target channel frequency and concurrent connections.
 */
struct policy_mgr_hdd_cbacks {
	void (*sap_restart_chan_switch_cb)(struct wlan_objmgr_psoc *psoc,
@@ -1486,6 +1488,10 @@ struct policy_mgr_hdd_cbacks {
					    uint8_t vdev_id);
	void (*wlan_hdd_indicate_active_ndp_cnt)(struct wlan_objmgr_psoc *psoc,
						 uint8_t vdev_id, uint8_t cnt);
	QDF_STATUS (*wlan_get_ap_prefer_conc_ch_params)(
			struct wlan_objmgr_psoc *psoc,
			uint8_t vdev_id, uint32_t chan_freq,
			struct ch_params *ch_params);
};


@@ -3194,18 +3200,18 @@ void policy_mgr_set_weight_of_dfs_passive_channels_to_zero(
		struct wlan_objmgr_psoc *psoc, uint32_t *pcl,
		uint32_t *len, uint8_t *weight_list, uint32_t weight_len);
/**
 * policy_mgr_is_sap_allowed_on_dfs_chan() - check if sap allowed on dfs channel
 * policy_mgr_is_sap_allowed_on_dfs_freq() - check if sap allowed on dfs freq
 * @pdev: id of objmgr pdev
 * @vdev_id: vdev id
 * @channel: channel number
 * @ch_freq: channel freq
 * This function is used to check if sta_sap_scc_on_dfs_chan ini is set,
 * DFS master capability is assumed disabled in the driver.
 *
 * Return: true if sap is allowed on dfs channel,
 * Return: true if sap is allowed on dfs freq,
 * otherwise false
 */
bool policy_mgr_is_sap_allowed_on_dfs_chan(struct wlan_objmgr_pdev *pdev,
					   uint8_t vdev_id, uint8_t channel);
bool policy_mgr_is_sap_allowed_on_dfs_freq(struct wlan_objmgr_pdev *pdev,
					   uint8_t vdev_id, qdf_freq_t ch_freq);
/**
 * policy_mgr_is_sta_sap_scc_allowed_on_dfs_chan() - check if sta+sap scc
 * allowed on dfs chan
+37 −4
Original line number Diff line number Diff line
@@ -2148,6 +2148,7 @@ static uint32_t policy_mgr_select_2g_chan(struct wlan_objmgr_psoc *psoc)
 * @sap_ch_freq: SAP starting channel
 * @sap_vdev_id: sap vdev id
 * @vdev_opmode: vdev opmode
 * @ch_params: channel bw parameters
 *
 * Validate whether SAP can be forced scc to 6ghz band or not.
 * If not, select 2G band channel for DBS hw
@@ -2157,10 +2158,18 @@ static uint32_t policy_mgr_select_2g_chan(struct wlan_objmgr_psoc *psoc)
 */
static QDF_STATUS policy_mgr_check_6ghz_sap_conc(
	struct wlan_objmgr_psoc *psoc, uint32_t *con_ch_freq,
	uint32_t sap_ch_freq, uint8_t sap_vdev_id, enum QDF_OPMODE vdev_opmode)
	uint32_t sap_ch_freq, uint8_t sap_vdev_id, enum QDF_OPMODE vdev_opmode,
	struct ch_params *ch_params)
{
	struct policy_mgr_psoc_priv_obj *pm_ctx;
	uint32_t ch_freq = *con_ch_freq;

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

	if (ch_freq && WLAN_REG_IS_6GHZ_CHAN_FREQ(ch_freq) &&
	    !WLAN_REG_IS_6GHZ_CHAN_FREQ(sap_ch_freq) &&
	    !policy_mgr_get_ap_6ghz_capable(psoc, sap_vdev_id, NULL)) {
@@ -2185,6 +2194,10 @@ static QDF_STATUS policy_mgr_check_6ghz_sap_conc(
	}
	if (ch_freq != sap_ch_freq)
		*con_ch_freq = ch_freq;
	if (*con_ch_freq &&
	    pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params)
		pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params(
			psoc, sap_vdev_id, ch_freq, ch_params);

	return QDF_STATUS_SUCCESS;
}
@@ -2202,6 +2215,7 @@ QDF_STATUS policy_mgr_valid_sap_conc_channel_check(
	struct wlan_objmgr_vdev *vdev;
	enum QDF_OPMODE vdev_opmode;
	bool enable_srd_channel;
	enum phy_ch_width old_ch_width;

	vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, sap_vdev_id,
						    WLAN_POLICY_MGR_ID);
@@ -2238,18 +2252,24 @@ QDF_STATUS policy_mgr_valid_sap_conc_channel_check(
	 */
	if (!ch_freq &&
	    sap_ch_freq != policy_mgr_mode_specific_get_channel(psoc,
	    PM_STA_MODE)) {
	    PM_STA_MODE) &&
	    sap_ch_freq != policy_mgr_mode_specific_get_channel(psoc,
	    PM_P2P_CLIENT_MODE)) {
		return QDF_STATUS_SUCCESS;
	} else if (!ch_freq) {
		ch_freq = sap_ch_freq;
	} else if (ch_freq && WLAN_REG_IS_6GHZ_CHAN_FREQ(ch_freq)) {
		return policy_mgr_check_6ghz_sap_conc(
			psoc, con_ch_freq, sap_ch_freq, sap_vdev_id,
			vdev_opmode);
			vdev_opmode, ch_params);
	}

	sta_sap_scc_on_dfs_chan =
		policy_mgr_is_sta_sap_scc_allowed_on_dfs_chan(psoc);
	old_ch_width = ch_params->ch_width;
	if (pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params)
		pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params(
			psoc, sap_vdev_id, ch_freq, ch_params);
	is_dfs = wlan_mlme_check_chan_param_has_dfs(
			pm_ctx->pdev, ch_params, ch_freq);
	if (policy_mgr_valid_sta_channel_check(psoc, ch_freq)) {
@@ -2299,8 +2319,12 @@ QDF_STATUS policy_mgr_valid_sap_conc_channel_check(
	}

update_chan:
	if (ch_freq != sap_ch_freq)
	if (ch_freq != sap_ch_freq || old_ch_width != ch_params->ch_width)
		*con_ch_freq = ch_freq;
	if (*con_ch_freq &&
	    pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params)
		pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params(
			psoc, sap_vdev_id, ch_freq, ch_params);

	return QDF_STATUS_SUCCESS;
}
@@ -2430,12 +2454,21 @@ void policy_mgr_change_sap_channel_with_csa(struct wlan_objmgr_psoc *psoc,
					    uint32_t ch_width, bool forced)
{
	struct policy_mgr_psoc_priv_obj *pm_ctx;
	struct ch_params ch_params = {0};
	QDF_STATUS status;

	pm_ctx = policy_mgr_get_context(psoc);
	if (!pm_ctx) {
		policy_mgr_err("Invalid context");
		return;
	}
	if (pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params) {
		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) &&
		    ch_width > ch_params.ch_width)
			ch_width = ch_params.ch_width;
	}

	if (pm_ctx->hdd_cbacks.sap_restart_chan_switch_cb) {
		policy_mgr_info("SAP change change without restart");
+32 −8
Original line number Diff line number Diff line
@@ -1971,6 +1971,14 @@ QDF_STATUS policy_mgr_decr_active_session(struct wlan_objmgr_psoc *psoc,
			pm_ctx->dp_cbacks.hdd_disable_rx_ol_in_concurrency(false);
	};

	if ((mode == QDF_SAP_MODE || mode == QDF_P2P_GO_MODE) &&
	    (policy_mgr_mode_specific_connection_count(psoc, PM_SAP_MODE,
						       NULL) == 0) &&
	    (policy_mgr_mode_specific_connection_count(psoc, PM_P2P_GO_MODE,
						       NULL) == 0))
		wlan_reg_set_ap_pwr_and_update_chan_list(pm_ctx->pdev,
							 REG_INDOOR_AP);

	/* Disable RPS if SAP interface has come up */
	if (policy_mgr_mode_specific_connection_count(psoc, PM_SAP_MODE, NULL)
		== 0) {
@@ -3992,8 +4000,8 @@ bool policy_mgr_is_force_scc(struct wlan_objmgr_psoc *psoc)
		QDF_MCC_TO_SCC_WITH_PREFERRED_BAND));
}

bool policy_mgr_is_sap_allowed_on_dfs_chan(struct wlan_objmgr_pdev *pdev,
					   uint8_t vdev_id, uint8_t channel)
bool policy_mgr_is_sap_allowed_on_dfs_freq(struct wlan_objmgr_pdev *pdev,
					   uint8_t vdev_id, qdf_freq_t ch_freq)
{
	struct wlan_objmgr_psoc *psoc;
	uint32_t sta_sap_scc_on_dfs_chan;
@@ -4016,7 +4024,8 @@ bool policy_mgr_is_sap_allowed_on_dfs_chan(struct wlan_objmgr_pdev *pdev,
	/* if sta_sap_scc_on_dfs_chan ini is set, DFS master capability is
	 * assumed disabled in the driver.
	 */
	if ((wlan_reg_get_channel_state(pdev, channel) == CHANNEL_STATE_DFS) &&
	if ((wlan_reg_get_channel_state_for_freq(pdev, ch_freq) ==
	    CHANNEL_STATE_DFS) &&
	    !sta_cnt && !gc_cnt && sta_sap_scc_on_dfs_chan &&
	    !policy_mgr_get_dfs_master_dynamic_enabled(psoc, vdev_id)) {
		policy_mgr_err("SAP not allowed on DFS channel if no dfs master capability!!");
@@ -4513,8 +4522,10 @@ bool policy_mgr_is_restart_sap_required(struct wlan_objmgr_psoc *psoc,
	bool restart_required = false;
	bool is_sta_p2p_cli;
	bool is_same_mac;
	bool sap_on_dfs = false;
	struct policy_mgr_psoc_priv_obj *pm_ctx;
	struct policy_mgr_conc_connection_info *connection;
	bool sta_sap_scc_on_dfs_chan;

	pm_ctx = policy_mgr_get_context(psoc);
	if (!pm_ctx) {
@@ -4529,8 +4540,14 @@ bool policy_mgr_is_restart_sap_required(struct wlan_objmgr_psoc *psoc,
	qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
	connection = pm_conc_connection_list;
	for (i = 0; i < MAX_NUMBER_OF_CONC_CONNECTIONS; i++) {
		if (connection[i].vdev_id == vdev_id) {
		if (connection[i].vdev_id == vdev_id &&
		    connection[i].in_use) {
			mac = connection[i].mac;

			if (WLAN_REG_IS_5GHZ_CH_FREQ(connection[i].freq) &&
			    (connection[i].ch_flagext & (IEEE80211_CHAN_DFS |
					      IEEE80211_CHAN_DFS_CFREQ2)))
				sap_on_dfs = true;
			break;
		}
	}
@@ -4538,18 +4555,25 @@ bool policy_mgr_is_restart_sap_required(struct wlan_objmgr_psoc *psoc,
		policy_mgr_err("Invalid vdev id: %d", vdev_id);
		return false;
	}
	sta_sap_scc_on_dfs_chan =
		policy_mgr_is_sta_sap_scc_allowed_on_dfs_chan(psoc);

	for (i = 0; i < MAX_NUMBER_OF_CONC_CONNECTIONS; i++) {
		is_sta_p2p_cli =
			connection[i].in_use &&
			(connection[i].mode == PM_STA_MODE ||
			connection[i].mode == PM_P2P_CLIENT_MODE);

		if (!is_sta_p2p_cli)
			continue;
		is_same_mac = connection[i].freq != freq &&
			      (connection[i].mac == mac ||
			       !policy_mgr_is_hw_dbs_capable(psoc));

		if (is_sta_p2p_cli && is_same_mac) {
		if (is_same_mac) {
			restart_required = true;
			break;
		}
		if (connection[i].freq == freq &&
		    !sta_sap_scc_on_dfs_chan && sap_on_dfs) {
			restart_required = true;
			break;
		}
+3 −0
Original line number Diff line number Diff line
@@ -708,6 +708,8 @@ QDF_STATUS policy_mgr_register_hdd_cb(struct wlan_objmgr_psoc *psoc,
		hdd_cbacks->hdd_get_ap_6ghz_capable;
	pm_ctx->hdd_cbacks.wlan_hdd_indicate_active_ndp_cnt =
		hdd_cbacks->wlan_hdd_indicate_active_ndp_cnt;
	pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params =
		hdd_cbacks->wlan_get_ap_prefer_conc_ch_params;

	return QDF_STATUS_SUCCESS;
}
@@ -729,6 +731,7 @@ QDF_STATUS policy_mgr_deregister_hdd_cb(struct wlan_objmgr_psoc *psoc)
	pm_ctx->hdd_cbacks.hdd_is_chan_switch_in_progress = NULL;
	pm_ctx->hdd_cbacks.hdd_is_cac_in_progress = NULL;
	pm_ctx->hdd_cbacks.hdd_get_ap_6ghz_capable = NULL;
	pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params = NULL;

	return QDF_STATUS_SUCCESS;
}
Loading