qcacmn: Fix 6 GHz bss beamformee score 0 issue

Since 6 GHz bss doesn't support vht, can't get beamformer cap from vht cap,
beamformee score is always 0. 5 GHz bss has vht and beamformee score, so
always win 6 GHz bss of same mld if other conditions are same when select
candidate by score.

To fix it, for 6 GHz bss, get beamformer cap from eht cap.

Change-Id: Ic057928876a6ee58a96c3881d004886d0ac0d3fa
CRs-Fixed: 3249097
Dieser Commit ist enthalten in:
Jianmin Zhu
2022-07-21 23:23:03 +08:00
committet von Madan Koyyalamudi
Ursprung a7a1ff47f1
Commit b67f4a7465

Datei anzeigen

@@ -1459,6 +1459,21 @@ static uint16_t cm_get_puncture_bw(struct scan_cache_entry *entry)
}
return num_puncture_bw * 20;
}
static bool cm_get_su_beam_former(struct scan_cache_entry *entry)
{
struct wlan_ie_ehtcaps *eht_cap;
struct wlan_eht_cap_info *eht_cap_info;
eht_cap = (struct wlan_ie_ehtcaps *)util_scan_entry_ehtcap(entry);
if (eht_cap) {
eht_cap_info = (struct wlan_eht_cap_info *)eht_cap->eht_mac_cap;
if (eht_cap_info->su_beamformer)
return true;
}
return false;
}
#else
static int cm_calculate_eht_score(struct scan_cache_entry *entry,
struct scoring_cfg *score_config,
@@ -1472,6 +1487,11 @@ static uint16_t cm_get_puncture_bw(struct scan_cache_entry *entry)
{
return 0;
}
static bool cm_get_su_beam_former(struct scan_cache_entry *entry)
{
return false;
}
#endif
#define CM_BAND_WIDTH_NUM 16
@@ -2081,6 +2101,8 @@ static int cm_calculate_bss_score(struct wlan_objmgr_psoc *psoc,
vht_cap = (struct wlan_ie_vhtcaps *)util_scan_entry_vhtcap(entry);
if (vht_cap && vht_cap->su_beam_former)
ap_su_beam_former = true;
else
ap_su_beam_former = cm_get_su_beam_former(entry);
if (phy_config->beamformee_cap && is_vht &&
ap_su_beam_former &&
(entry->rssi_raw > rssi_pref_5g_rssi_thresh) && !same_bucket)