diff options
author | Hsiu-Chang Chen <hsiuchangchen@google.com> | 2023-09-25 12:53:44 +0530 |
---|---|---|
committer | Hsiu-Chang Chen <hsiuchangchen@google.com> | 2023-10-11 02:23:24 +0000 |
commit | b57fdb398c6cbdbcb24031ee3416a7573e7c58c8 (patch) | |
tree | 3bdb1bf84dc3ba39bc22f42f0fca87025ce27faf | |
parent | 1122008eaef9997e2583ef91890b1516c654c5b0 (diff) | |
download | wlan-b57fdb398c6cbdbcb24031ee3416a7573e7c58c8.tar.gz |
qcacmn: Parse 11AX RNR TBTT info field even if 11BE is disabledandroid-u-qpr2-beta-2_r0.7android-u-qpr2-beta-2_r0.5android-u-qpr2-beta-2_r0.4android-u-qpr2-beta-2_r0.3android-u-qpr2-beta-2_r0.2android-u-qpr2-beta-2_r0.1
Currently, below 11BE RNR TBTT field doesn't get processed when
11BE is not defined,
TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD_MLD_PARAM
So, station is not able to parse the RNR IEs from the 11BE APs.
Parse TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD_MLD_PARAM
always but extract 11be info only when 11BE define is enabled.
Also, cleanup the duplicate code.
Bug: 299869614
Test: Roaming test with 11BE AP
Change-Id: I49e38875f3f0a3ab238636f7a8e0f93c7aa4d04b
CRs-Fixed: 3624227
Signed-off-by: Hsiu-Chang Chen <hsiuchangchen@google.com>
-rw-r--r-- | qca-wifi-host-cmn/umac/scan/dispatcher/src/wlan_scan_utils_api.c | 71 |
1 files changed, 18 insertions, 53 deletions
diff --git a/qca-wifi-host-cmn/umac/scan/dispatcher/src/wlan_scan_utils_api.c b/qca-wifi-host-cmn/umac/scan/dispatcher/src/wlan_scan_utils_api.c index ce73103..a2699a5 100644 --- a/qca-wifi-host-cmn/umac/scan/dispatcher/src/wlan_scan_utils_api.c +++ b/qca-wifi-host-cmn/umac/scan/dispatcher/src/wlan_scan_utils_api.c @@ -742,23 +742,10 @@ static void util_scan_update_rnr_mld(struct rnr_bss_info *rnr, struct neighbor_ap_info_field *ap_info, uint8_t *data) { - uint8_t tbtt_info_length; bool mld_info_present = false; - tbtt_info_length = ap_info->tbtt_header.tbtt_info_length; - if (tbtt_info_length >= - TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD_MLD_PARAM) - tbtt_info_length = - TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD_MLD_PARAM; - - switch (tbtt_info_length) { + switch (ap_info->tbtt_header.tbtt_info_length) { case TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD_MLD_PARAM: - rnr->channel_number = ap_info->channel_number; - rnr->operating_class = ap_info->operting_class; - qdf_mem_copy(&rnr->bssid, &data[1], QDF_MAC_ADDR_SIZE); - qdf_mem_copy(&rnr->short_ssid, &data[7], SHORT_SSID_LEN); - rnr->bss_params = data[11]; - rnr->psd_20mhz = data[12]; qdf_mem_copy(&rnr->mld_info, &data[13], sizeof(struct rnr_mld_info)); mld_info_present = true; @@ -770,7 +757,6 @@ static void util_scan_update_rnr_mld(struct rnr_bss_info *rnr, struct neighbor_ap_info_field *ap_info, uint8_t *data) { - scm_debug("Wrong fieldtype"); } #endif @@ -792,66 +778,45 @@ util_scan_update_rnr(struct rnr_bss_info *rnr, /* Dont store it skip*/ break; - case TBTT_NEIGHBOR_AP_SHORTSSID: - rnr->channel_number = ap_info->channel_number; - rnr->operating_class = ap_info->operting_class; - qdf_mem_copy(&rnr->short_ssid, &data[1], SHORT_SSID_LEN); - break; - case TBTT_NEIGHBOR_AP_S_SSID_BSS_PARAM: - rnr->channel_number = ap_info->channel_number; - rnr->operating_class = ap_info->operting_class; - qdf_mem_copy(&rnr->short_ssid, &data[1], SHORT_SSID_LEN); rnr->bss_params = data[5]; - break; - - case TBTT_NEIGHBOR_AP_BSSID: - rnr->channel_number = ap_info->channel_number; - rnr->operating_class = ap_info->operting_class; - qdf_mem_copy(&rnr->bssid, &data[1], QDF_MAC_ADDR_SIZE); - break; - - case TBTT_NEIGHBOR_AP_BSSID_BSS_PARAM: + fallthrough; + case TBTT_NEIGHBOR_AP_SHORTSSID: rnr->channel_number = ap_info->channel_number; rnr->operating_class = ap_info->operting_class; - qdf_mem_copy(&rnr->bssid, &data[1], QDF_MAC_ADDR_SIZE); - rnr->bss_params = data[7]; + qdf_mem_copy(&rnr->short_ssid, &data[1], SHORT_SSID_LEN); break; case TBTT_NEIGHBOR_AP_BSSID_BSS_PARAM_20MHZ_PSD: - rnr->channel_number = ap_info->channel_number; - rnr->operating_class = ap_info->operting_class; - qdf_mem_copy(&rnr->bssid, &data[1], QDF_MAC_ADDR_SIZE); - rnr->bss_params = data[7]; rnr->psd_20mhz = data[8]; - break; - - case TBTT_NEIGHBOR_AP_BSSSID_S_SSID: + fallthrough; + case TBTT_NEIGHBOR_AP_BSSID_BSS_PARAM: + rnr->bss_params = data[7]; + fallthrough; + case TBTT_NEIGHBOR_AP_BSSID: rnr->channel_number = ap_info->channel_number; rnr->operating_class = ap_info->operting_class; qdf_mem_copy(&rnr->bssid, &data[1], QDF_MAC_ADDR_SIZE); - qdf_mem_copy(&rnr->short_ssid, &data[7], SHORT_SSID_LEN); break; + case TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD_MLD_PARAM: + util_scan_update_rnr_mld(rnr, ap_info, data); + fallthrough; + case TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD: + rnr->psd_20mhz = data[12]; + fallthrough; case TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM: - rnr->channel_number = ap_info->channel_number; - rnr->operating_class = ap_info->operting_class; - qdf_mem_copy(&rnr->bssid, &data[1], QDF_MAC_ADDR_SIZE); - qdf_mem_copy(&rnr->short_ssid, &data[7], SHORT_SSID_LEN); rnr->bss_params = data[11]; - break; - - case TBTT_NEIGHBOR_AP_BSSID_S_SSID_BSS_PARAM_20MHZ_PSD: + fallthrough; + case TBTT_NEIGHBOR_AP_BSSSID_S_SSID: rnr->channel_number = ap_info->channel_number; rnr->operating_class = ap_info->operting_class; qdf_mem_copy(&rnr->bssid, &data[1], QDF_MAC_ADDR_SIZE); qdf_mem_copy(&rnr->short_ssid, &data[7], SHORT_SSID_LEN); - rnr->bss_params = data[11]; - rnr->psd_20mhz = data[12]; break; default: - util_scan_update_rnr_mld(rnr, ap_info, data); + scm_debug("Wrong fieldtype"); } return QDF_STATUS_SUCCESS; |