summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHsiu-Chang Chen <hsiuchangchen@google.com>2023-09-25 12:53:44 +0530
committerHsiu-Chang Chen <hsiuchangchen@google.com>2023-10-11 02:23:24 +0000
commitb57fdb398c6cbdbcb24031ee3416a7573e7c58c8 (patch)
tree3bdb1bf84dc3ba39bc22f42f0fca87025ce27faf
parent1122008eaef9997e2583ef91890b1516c654c5b0 (diff)
downloadwlan-b57fdb398c6cbdbcb24031ee3416a7573e7c58c8.tar.gz
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.c71
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;