qcacmn: Update legacy fixes in new policy manager component

Update legacy fixes in new policy manager component:
1. Avoid race condition to get pcl while stopping P2P GO
2. Add 160/80+80 MHz support for STA mode
3. Fix SBS is set to true by policy manager in SCC mode

Change-Id: I161ebe382915a6d9eefd6b4e3e2158ff14ad02c1
CRs-Fixed: 2009818
Этот коммит содержится в:
Archana Ramachandran
2017-03-23 11:34:02 -07:00
коммит произвёл Sandeep Puligilla
родитель 3dcc6ff112
Коммит 0b69ec4998
3 изменённых файлов: 9 добавлений и 59 удалений

Просмотреть файл

@@ -570,6 +570,11 @@ void policy_mgr_store_and_del_conn_info(struct wlan_objmgr_psoc *psoc,
bool found = false;
struct policy_mgr_psoc_priv_obj *pm_ctx;
if (!info) {
policy_mgr_err("Invalid connection info");
return;
}
qdf_mem_zero(info, sizeof(*info));
pm_ctx = policy_mgr_get_context(psoc);
if (!pm_ctx) {
policy_mgr_err("Invalid Context");
@@ -2142,44 +2147,6 @@ bool policy_mgr_allow_new_home_channel(struct wlan_objmgr_psoc *psoc,
return status;
}
/**
* policy_mgr_vht160_conn_exist() - to check if we have a connection
* already using vht160 or vht80+80
*
* This routine will check if vht160 connection already exist or
* no. If it exist then this routine will return true.
*
* Return: true if vht160 connection exist else false
*/
bool policy_mgr_vht160_conn_exist(struct wlan_objmgr_psoc *psoc)
{
uint32_t conn_index;
bool status = 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 status;
}
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
for (conn_index = 0; conn_index < MAX_NUMBER_OF_CONC_CONNECTIONS;
conn_index++) {
if (pm_conc_connection_list[conn_index].in_use &&
((pm_conc_connection_list[conn_index].bw ==
HW_MODE_80_PLUS_80_MHZ) ||
(pm_conc_connection_list[conn_index].bw ==
HW_MODE_160_MHZ))) {
status = true;
break;
}
}
qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);
return status;
}
/**
* policy_mgr_is_5g_channel_allowed() - check if 5g channel is allowed
* @channel: channel number which needs to be validated

Просмотреть файл

@@ -563,17 +563,15 @@ bool policy_mgr_is_hw_sbs_capable(struct wlan_objmgr_psoc *psoc)
return false;
}
policy_mgr_notice("SBS service bit map: %d",
pm_ctx->wma_cbacks.wma_is_service_enabled(
WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT));
/* The agreement with FW is that: To know if the target is SBS
* capable, SBS needs to be supported both in the HW mode list
* and DBS needs to be supported in the service ready event
*/
if (!(pm_ctx->wma_cbacks.wma_is_service_enabled(
WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT)))
WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT))) {
policy_mgr_err("SBS cannot be supported since DBS is disabled");
return false;
}
for (i = 0; i < pm_ctx->num_dbs_hw_modes; i++) {
param = pm_ctx->hw_mode.hw_mode_list[i];
@@ -588,7 +586,7 @@ bool policy_mgr_is_hw_sbs_capable(struct wlan_objmgr_psoc *psoc)
if (found)
return true;
return true;
return false;
}
QDF_STATUS policy_mgr_get_dbs_hw_modes(struct wlan_objmgr_psoc *psoc,
@@ -1600,20 +1598,6 @@ bool policy_mgr_allow_concurrency(struct wlan_objmgr_psoc *psoc,
qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);
}
/* don't allow concurrency on vht160 or vht 80+80 */
if (num_connections &&
((bw == HW_MODE_80_PLUS_80_MHZ) ||
(bw == HW_MODE_160_MHZ))) {
policy_mgr_err("No VHT160, we have one connection already");
goto done;
}
if (policy_mgr_vht160_conn_exist(psoc)) {
policy_mgr_err("VHT160/80+80 connection exists, no concurrency");
goto done;
}
status = true;
done:

Просмотреть файл

@@ -389,7 +389,6 @@ bool policy_mgr_disallow_mcc(struct wlan_objmgr_psoc *psoc,
uint8_t channel);
bool policy_mgr_allow_new_home_channel(struct wlan_objmgr_psoc *psoc,
uint8_t channel, uint32_t num_connections);
bool policy_mgr_vht160_conn_exist(struct wlan_objmgr_psoc *psoc);
bool policy_mgr_is_5g_channel_allowed(struct wlan_objmgr_psoc *psoc,
uint8_t channel, uint32_t *list,
enum policy_mgr_con_mode mode);