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 à :
Will Huang
2023-06-08 13:57:07 +08:00
révisé par Rahul Choudhary
Parent 69dc57263c
révision 34b589ce84
4 fichiers modifiés avec 39 ajouts et 6 suppressions

Voir le fichier

@@ -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";
} }

Voir le fichier

@@ -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,

Voir le fichier

@@ -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);
/* /*

Voir le fichier

@@ -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},