qcacmn: Select best partner for MLO of 2+ links

Select best candidate by mlo score algorithm.

Check bss mlo type first by mlo info, mlo config, partner frequency and
dbs/sbs cap, calculate candidate score for SLO/MLMR/EMLSR bss types.

For SLO case, same as before except:
Decrease percent of legacy band and nss to include 320M and 8x8.
Decrease max percent of congestion from 100 to 80 to include MLMR joint
congestion.
Increase weight of both band width and nss to 20.

For EMLSR case, same as SLO except adding EMLSR boost score.

For MLMR case, besides adding MLMR boost score,
calculate joint RSSI/band width/congestion score for combination of
scan entry + each partner link by new mlo algorithm, select partner with
highest total joint score as candidate combination, only activate that
partner link.

Change-Id: I640c6825d945caf5fab504a77717195c2eac0c93
CRs-Fixed: 3234912
This commit is contained in:
Jianmin Zhu
2022-07-07 10:10:00 +08:00
committad av Madan Koyyalamudi
förälder fc00c5bb21
incheckning f2a742540b
5 ändrade filer med 590 tillägg och 261 borttagningar

Visa fil

@@ -536,6 +536,7 @@ struct reduced_neighbor_report {
* @ecsa_ie: Pointer to eCSA IE
* @max_cst_ie: Pointer to Max Channel Switch Time IE
* @is_valid_link: The partner link can be used if true
* @op_class: Operting class
*/
struct partner_link_info {
struct qdf_mac_addr link_addr;
@@ -546,6 +547,7 @@ struct partner_link_info {
const uint8_t *ecsa_ie;
const uint8_t *max_cst_ie;
uint8_t is_valid_link;
uint32_t op_class;
};
/**

Visa fil

@@ -1927,6 +1927,11 @@ static void util_get_partner_link_info(struct scan_cache_entry *scan_entry)
wlan_reg_chan_opclass_to_freq(rnr->channel_number,
rnr->operating_class,
true);
if (!link_info->freq)
scm_debug("freq 0 rnr channel %d op_class %d",
rnr->channel_number,
rnr->operating_class);
link_info->op_class = rnr->operating_class;
link_idx++;
}
rnr_idx++;