qcacld-3.0: Add runtime support for Inter-Band MCC

To handle no-inter-band MCC scenarios for dual MAC non-DBS solutions,
add changes to detect capability at run-time based on service bits.
If the service is set then code for only intra-band MCC will be
exercised.

Change-Id: If62068f8f05c17278d279f36ec11bc9ca123dfbd
CRs-Fixed: 2730359
This commit is contained in:
Rachit Kankane 2020-07-02 08:16:31 +05:30 • committed by snandini
commit 3c6bd4eed3
3 changed files with 26 additions and 18 deletions

View file

@ -35,6 +35,7 @@
#include "qdf_types.h"
#include "qdf_trace.h"
#include "wlan_objmgr_global_obj.h"
#include "target_if.h"
static QDF_STATUS policy_mgr_psoc_obj_create_cb(struct wlan_objmgr_psoc *psoc,
void *data)
@ -408,15 +409,32 @@ static void policy_mgr_update_5g_scc_prefer(struct wlan_objmgr_psoc *psoc)
}
#ifdef FEATURE_NO_DBS_INTRABAND_MCC_SUPPORT
static void policy_mgr_init_non_dbs_pcl(void)
static void policy_mgr_init_non_dbs_pcl(struct wlan_objmgr_psoc *psoc)
{
second_connection_pcl_non_dbs_table =
&second_connection_pcl_nodbs_no_interband_mcc_table;
third_connection_pcl_non_dbs_table =
&third_connection_pcl_nodbs_no_interband_mcc_table;
struct wmi_unified *wmi_handle = get_wmi_unified_hdl_from_psoc(psoc);
if (!wmi_handle) {
policy_mgr_debug("Invalid WMI handle");
return;
}
if (wmi_service_enabled(wmi_handle,
wmi_service_no_interband_mcc_support) &&
!wmi_service_enabled(wmi_handle,
wmi_service_dual_band_simultaneous_support)) {
second_connection_pcl_non_dbs_table =
&second_connection_pcl_nodbs_no_interband_mcc_table;
third_connection_pcl_non_dbs_table =
&third_connection_pcl_nodbs_no_interband_mcc_table;
} else {
second_connection_pcl_non_dbs_table =
&second_connection_pcl_nodbs_table;
third_connection_pcl_non_dbs_table =
&third_connection_pcl_nodbs_table;
}
}
#else
static void policy_mgr_init_non_dbs_pcl(void)
static void policy_mgr_init_non_dbs_pcl(struct wlan_objmgr_psoc *psoc)
{
second_connection_pcl_non_dbs_table =
&second_connection_pcl_nodbs_table;
@ -523,7 +541,7 @@ QDF_STATUS policy_mgr_psoc_enable(struct wlan_objmgr_psoc *psoc)
&pm_third_connection_pcl_dbs_1x1_table;
/* Initialize non-DBS pcl table pointer to particular table*/
policy_mgr_init_non_dbs_pcl();
policy_mgr_init_non_dbs_pcl(psoc);
if (policy_mgr_is_hw_dbs_2x2_capable(psoc) ||
policy_mgr_is_hw_dbs_required_for_band(psoc,

View file

@ -21,7 +21,6 @@
#include "wlan_policy_mgr_api.h"
#ifndef FEATURE_NO_DBS_INTRABAND_MCC_SUPPORT
/**
* second_connection_pcl_nodbs_table - table which provides PCL
* for the 2nd connection, when we have a connection already in
@ -1529,7 +1528,7 @@ third_connection_pcl_nodbs_table[PM_MAX_TWO_CONNECTION_MODE]
[PM_NDI_MODE] = {PM_NONE, PM_NONE, PM_NONE} },
};
#else /* FEATURE_NO_DBS_INTRABAND_MCC_SUPPORT */
#ifdef FEATURE_NO_DBS_INTRABAND_MCC_SUPPORT
/**
* second_connection_pcl_nodbs_no_interband_mcc_table - table

View file

@ -1533,7 +1533,6 @@ prnt_log:
return QDF_STATUS_SUCCESS;
}
#ifdef FEATURE_NO_DBS_INTRABAND_MCC_SUPPORT
static bool lim_is_csa_channel_allowed(struct mac_context *mac_ctx,
qdf_freq_t ch_freq1,
uint32_t ch_freq2)
@ -1549,14 +1548,6 @@ static bool lim_is_csa_channel_allowed(struct mac_context *mac_ctx,
return is_allowed;
}
#else
static bool lim_is_csa_channel_allowed(struct mac_context *mac_ctx,
qdf_freq_t ch_freq1,
uint32_t ch_freq2)
{
return true;
}
#endif
/**
* lim_handle_csa_offload_msg() - Handle CSA offload message