qcacld-3.0: Update fourth connection PCL table to avoid MCC
If MLO STA connect with one 5 GHz low link and another 6 GHz (non-PSC) link, and start 2 SAP on 5 GHz band, one SAP will start on 5 GHz low channel doing SCC, another SAP will not start on 6 GHz (non-PSC) channel and start on 5 GHz high doing MCC. Add one PCL type which add SCC on 5 GHz low channel to PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G for this case, so that last SAP can start on 5 GHz low channel doing SCC. Change-Id: I4312873c159ac14652990c7c1079c13476dcd383 CRs-Fixed: 3508539
Cette révision appartient à :

révisé par
Rahul Choudhary

Parent
69dc57263c
révision
34b589ce84
@@ -129,6 +129,7 @@ static inline const char *pcl_type_to_string(uint32_t idx)
|
|||||||
CASE_RETURN_STRING(PM_SBS_CH_2G);
|
CASE_RETURN_STRING(PM_SBS_CH_2G);
|
||||||
CASE_RETURN_STRING(PM_SCC_ON_5G_LOW_5G_LOW_PLUS_SHARED_2G);
|
CASE_RETURN_STRING(PM_SCC_ON_5G_LOW_5G_LOW_PLUS_SHARED_2G);
|
||||||
CASE_RETURN_STRING(PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G);
|
CASE_RETURN_STRING(PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G);
|
||||||
|
CASE_RETURN_STRING(PM_SCC_ON_5G_HIGH_5G_HIGH_SCC_ON_5G_LOW_PLUS_SHARED_2G);
|
||||||
default:
|
default:
|
||||||
return "Unknown";
|
return "Unknown";
|
||||||
}
|
}
|
||||||
|
@@ -236,6 +236,9 @@ enum policy_mgr_pcl_group_id {
|
|||||||
* 5G low band i.e 5G freq < sbs cutoff freq
|
* 5G low band i.e 5G freq < sbs cutoff freq
|
||||||
* @POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH: 5G High SCC frequency followed by
|
* @POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH: 5G High SCC frequency followed by
|
||||||
* 5G High band i.e 5G freq > sbs cutoff freq
|
* 5G High band i.e 5G freq > sbs cutoff freq
|
||||||
|
* @POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH_SCC_5G_LOW: 5 GHz High SCC
|
||||||
|
* frequency followed by 5G High band i.e 5G freq > sbs cutoff freq, add 5 GHz
|
||||||
|
* Low SCC frequency
|
||||||
*
|
*
|
||||||
* Order in which the PCL is requested
|
* Order in which the PCL is requested
|
||||||
*/
|
*/
|
||||||
@@ -247,6 +250,7 @@ enum policy_mgr_pcl_channel_order {
|
|||||||
POLICY_MGR_PCL_ORDER_5G,
|
POLICY_MGR_PCL_ORDER_5G,
|
||||||
POLICY_MGR_PCL_ORDER_SCC_5G_LOW_5G_LOW,
|
POLICY_MGR_PCL_ORDER_SCC_5G_LOW_5G_LOW,
|
||||||
POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH,
|
POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH,
|
||||||
|
POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH_SCC_5G_LOW,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -407,6 +411,10 @@ enum policy_mgr_mac_use {
|
|||||||
* 5 GHz high frequencies, add 2.4 GHZ if its shared with 5GHz high
|
* 5 GHz high frequencies, add 2.4 GHZ if its shared with 5GHz high
|
||||||
* @PM_SBS_CH_MCC_CH: SBS channels followed by MCC channels
|
* @PM_SBS_CH_MCC_CH: SBS channels followed by MCC channels
|
||||||
* @PM_SBS_5G_MCC_24G: SBS channels, 5G MCC channels and 2.4GHz channels
|
* @PM_SBS_5G_MCC_24G: SBS channels, 5G MCC channels and 2.4GHz channels
|
||||||
|
* @PM_SCC_ON_5G_HIGH_5G_HIGH_SCC_ON_5G_LOW_PLUS_SHARED_2G: 5GHZ high SCC
|
||||||
|
* channel followed by 5 GHz high frequencies and 5 GHz low SCC channel,
|
||||||
|
* add 2.4 GHZ if its shared with 5GHz high
|
||||||
|
*
|
||||||
* @PM_MAX_PCL_TYPE: Max place holder
|
* @PM_MAX_PCL_TYPE: Max place holder
|
||||||
*
|
*
|
||||||
* These are generic IDs that identify the various roles
|
* These are generic IDs that identify the various roles
|
||||||
@@ -450,6 +458,7 @@ enum policy_mgr_pcl_type {
|
|||||||
PM_SBS_CH_2G,
|
PM_SBS_CH_2G,
|
||||||
PM_SCC_ON_5G_LOW_5G_LOW_PLUS_SHARED_2G,
|
PM_SCC_ON_5G_LOW_5G_LOW_PLUS_SHARED_2G,
|
||||||
PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G,
|
PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G,
|
||||||
|
PM_SCC_ON_5G_HIGH_5G_HIGH_SCC_ON_5G_LOW_PLUS_SHARED_2G,
|
||||||
|
|
||||||
PM_SBS_CH_MCC_CH,
|
PM_SBS_CH_MCC_CH,
|
||||||
PM_SBS_5G_MCC_24G,
|
PM_SBS_5G_MCC_24G,
|
||||||
|
@@ -2481,7 +2481,9 @@ add_sbs_chlist_to_pcl(struct wlan_objmgr_psoc *psoc,
|
|||||||
pcl_weights[*index] = WEIGHT_OF_GROUP2_PCL_CHANNELS;
|
pcl_weights[*index] = WEIGHT_OF_GROUP2_PCL_CHANNELS;
|
||||||
(*index)++;
|
(*index)++;
|
||||||
}
|
}
|
||||||
} else if (order == POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH) {
|
} else if (order == POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH ||
|
||||||
|
order ==
|
||||||
|
POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH_SCC_5G_LOW) {
|
||||||
/* Add 5G high SCC channel*/
|
/* Add 5G high SCC channel*/
|
||||||
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
|
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
|
||||||
cl = pm_conc_connection_list;
|
cl = pm_conc_connection_list;
|
||||||
@@ -2525,7 +2527,25 @@ add_sbs_chlist_to_pcl(struct wlan_objmgr_psoc *psoc,
|
|||||||
pcl_weights[*index] = WEIGHT_OF_GROUP2_PCL_CHANNELS;
|
pcl_weights[*index] = WEIGHT_OF_GROUP2_PCL_CHANNELS;
|
||||||
(*index)++;
|
(*index)++;
|
||||||
}
|
}
|
||||||
|
if (order ==
|
||||||
|
POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH_SCC_5G_LOW) {
|
||||||
|
conn_index = 0;
|
||||||
|
/* Add 5G low SCC channel*/
|
||||||
|
qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock);
|
||||||
|
cl = pm_conc_connection_list;
|
||||||
|
while (PM_CONC_CONNECTION_LIST_VALID_INDEX(conn_index)) {
|
||||||
|
if (!WLAN_REG_IS_24GHZ_CH_FREQ(cl[conn_index].freq) &&
|
||||||
|
cl[conn_index].freq < sbs_cut_off_freq) {
|
||||||
|
pcl_freqs[*index] = cl[conn_index].freq;
|
||||||
|
pcl_weights[*index] =
|
||||||
|
WEIGHT_OF_GROUP3_PCL_CHANNELS;
|
||||||
|
(*index)++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
conn_index++;
|
||||||
|
}
|
||||||
|
qdf_mutex_release(&pm_ctx->qdf_conc_list_lock);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
policy_mgr_debug("invalid order");
|
policy_mgr_debug("invalid order");
|
||||||
return;
|
return;
|
||||||
@@ -3659,13 +3679,16 @@ QDF_STATUS policy_mgr_get_channel_list(struct wlan_objmgr_psoc *psoc,
|
|||||||
status = QDF_STATUS_SUCCESS;
|
status = QDF_STATUS_SUCCESS;
|
||||||
break;
|
break;
|
||||||
case PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G:
|
case PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G:
|
||||||
|
case PM_SCC_ON_5G_HIGH_5G_HIGH_SCC_ON_5G_LOW_PLUS_SHARED_2G:
|
||||||
add_sbs_chlist_to_pcl(psoc, pcl_channels,
|
add_sbs_chlist_to_pcl(psoc, pcl_channels,
|
||||||
pcl_weights, pcl_sz,
|
pcl_weights, pcl_sz,
|
||||||
len,
|
len,
|
||||||
skip_6ghz_channel,
|
skip_6ghz_channel,
|
||||||
channel_list_5, chan_index_5,
|
channel_list_5, chan_index_5,
|
||||||
channel_list_6, chan_index_6,
|
channel_list_6, chan_index_6,
|
||||||
POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH,
|
(pcl == PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G) ?
|
||||||
|
POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH :
|
||||||
|
POLICY_MGR_PCL_ORDER_SCC_5G_HIGH_5G_HIGH_SCC_5G_LOW,
|
||||||
&high_5_band_scc_present,
|
&high_5_band_scc_present,
|
||||||
&low_5_band_scc_present);
|
&low_5_band_scc_present);
|
||||||
/*
|
/*
|
||||||
|
@@ -2340,9 +2340,9 @@ fourth_connection_pcl_dbs_sbs_table
|
|||||||
[PM_STA_MODE] = {PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G,
|
[PM_STA_MODE] = {PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G,
|
||||||
PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G,
|
PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G,
|
||||||
PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G},
|
PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G},
|
||||||
[PM_SAP_MODE] = {PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G,
|
[PM_SAP_MODE] = {PM_SCC_ON_5G_HIGH_5G_HIGH_SCC_ON_5G_LOW_PLUS_SHARED_2G,
|
||||||
PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G,
|
PM_SCC_ON_5G_HIGH_5G_HIGH_SCC_ON_5G_LOW_PLUS_SHARED_2G,
|
||||||
PM_SCC_ON_5G_HIGH_5G_HIGH_PLUS_SHARED_2G} },
|
PM_SCC_ON_5G_HIGH_5G_HIGH_SCC_ON_5G_LOW_PLUS_SHARED_2G} },
|
||||||
[PM_24_5_PLUS_5_LOW_N_HIGH_SHARE_SBS] = {
|
[PM_24_5_PLUS_5_LOW_N_HIGH_SHARE_SBS] = {
|
||||||
[PM_STA_MODE] = {PM_SCC_ON_5_CH_5G, PM_SCC_ON_5_CH_5G,
|
[PM_STA_MODE] = {PM_SCC_ON_5_CH_5G, PM_SCC_ON_5_CH_5G,
|
||||||
PM_SCC_ON_5_CH_5G},
|
PM_SCC_ON_5_CH_5G},
|
||||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur