diff --git a/components/blacklist_mgr/core/src/wlan_blm_core.c b/components/blacklist_mgr/core/src/wlan_blm_core.c index 38a41e8a64817..dfa0fbf574b30 100644 --- a/components/blacklist_mgr/core/src/wlan_blm_core.c +++ b/components/blacklist_mgr/core/src/wlan_blm_core.c @@ -46,7 +46,7 @@ blm_update_ap_info(struct blm_reject_ap *blm_entry, struct blm_config *cfg, entry_add_time = blm_entry->ap_timestamp.userspace_avoid_timestamp; - if ((cur_timestamp - entry_add_time) > + if ((cur_timestamp - entry_add_time) >= MINUTES_TO_MS(cfg->avoid_list_exipry_time)) { /* Move AP to monitor list as avoid list time is over */ blm_entry->userspace_avoidlist = false; @@ -62,7 +62,7 @@ blm_update_ap_info(struct blm_reject_ap *blm_entry, struct blm_config *cfg, if (BLM_IS_AP_AVOIDED_BY_DRIVER(blm_entry)) { entry_add_time = blm_entry->ap_timestamp.driver_avoid_timestamp; - if ((cur_timestamp - entry_add_time) > + if ((cur_timestamp - entry_add_time) >= MINUTES_TO_MS(cfg->avoid_list_exipry_time)) { /* Move AP to monitor list as avoid list time is over */ blm_entry->driver_avoidlist = false; @@ -79,7 +79,7 @@ blm_update_ap_info(struct blm_reject_ap *blm_entry, struct blm_config *cfg, entry_add_time = blm_entry->ap_timestamp.driver_blacklist_timestamp; - if ((cur_timestamp - entry_add_time) > + if ((cur_timestamp - entry_add_time) >= MINUTES_TO_MS(cfg->black_list_exipry_time)) { /* Move AP to monitor list as black list time is over */ blm_entry->driver_blacklist = false; @@ -97,8 +97,8 @@ blm_update_ap_info(struct blm_reject_ap *blm_entry, struct blm_config *cfg, blm_entry->ap_timestamp.rssi_reject_timestamp; if ((blm_entry->rssi_reject_params.retry_delay && - entry_age > blm_entry->rssi_reject_params.retry_delay) || - (scan_entry && (scan_entry->rssi_raw > blm_entry-> + entry_age >= blm_entry->rssi_reject_params.retry_delay) || + (scan_entry && (scan_entry->rssi_raw >= blm_entry-> rssi_reject_params.expected_rssi))) { /* * Remove from the rssi reject list as:- @@ -133,6 +133,8 @@ blm_update_ap_info(struct blm_reject_ap *blm_entry, struct blm_config *cfg, blm_entry->reject_ap_type); } +#define MAX_BL_TIME 255000 + static enum cm_blacklist_action blm_prune_old_entries_and_get_action(struct blm_reject_ap *blm_entry, struct blm_config *cfg, @@ -153,6 +155,15 @@ blm_prune_old_entries_and_get_action(struct blm_reject_ap *blm_entry, return CM_BLM_NO_ACTION; } + if (BLM_IS_AP_IN_RSSI_REJECT_LIST(blm_entry) && + blm_entry->rssi_reject_params.retry_delay > MAX_BL_TIME) { + blm_info("Allow BSSID %pM as the retry delay is greater than %d ms, expected RSSI = %d, current RSSI = %d, retry delay = %d ms", + blm_entry->bssid.bytes, MAX_BL_TIME, + blm_entry->rssi_reject_params.expected_rssi, + entry ? entry->rssi_raw : 0, + blm_entry->rssi_reject_params.retry_delay); + return CM_BLM_NO_ACTION; + } if (BLM_IS_AP_IN_BLACKLIST(blm_entry)) return CM_BLM_REMOVE; @@ -404,16 +415,16 @@ blm_get_delta_of_bssid(enum blm_reject_ap_type list_type, * de-blacklisting the AP from rssi reject list. */ case DRIVER_RSSI_REJECT_TYPE: - if (blm_entry->rssi_reject_params.retry_delay) { - return blm_entry->rssi_reject_params.retry_delay - + if (blm_entry->rssi_reject_params.retry_delay) + disallowed_time = + blm_entry->rssi_reject_params.retry_delay - (cur_timestamp - - blm_entry->ap_timestamp.rssi_reject_timestamp); - } else { + blm_entry->ap_timestamp.rssi_reject_timestamp); + else disallowed_time = (int32_t)(MINUTES_TO_MS(RSSI_TIMEOUT_VALUE) - (cur_timestamp - blm_entry->ap_timestamp.rssi_reject_timestamp)); - return ((disallowed_time < 0) ? 0 : disallowed_time); - } + return ((disallowed_time < 0) ? 0 : disallowed_time); case DRIVER_MONITOR_TYPE: return cur_timestamp - blm_entry->ap_timestamp.driver_monitor_timestamp; @@ -601,8 +612,10 @@ static void blm_fill_reject_list(qdf_list_t *reject_db_list, reject_list[*num_of_reject_bssid].bssid = blm_entry->bssid; (*num_of_reject_bssid)++; - blm_debug("Adding BSSID %pM of type %d to reject ap list, total entries added yet = %d", + blm_debug("Adding BSSID %pM of type %d retry delay %d expected RSSI %d, entries added = %d", blm_entry->bssid.bytes, reject_ap_type, + reject_list[*num_of_reject_bssid -1].reject_duration, + blm_entry->rssi_reject_params.expected_rssi, *num_of_reject_bssid); } cur_node = next_node; diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c index e87320c81c5df..7f54a4cc3c10d 100644 --- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c +++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c @@ -6128,6 +6128,8 @@ void lim_add_roam_blacklist_ap(struct mac_context *mac_ctx, struct sir_rssi_disallow_lst entry; struct roam_blacklist_timeout *blacklist; + pe_debug("Received Blacklist event from FW num entries %d", + src_lst->num_entries); blacklist = &src_lst->roam_blacklist[0]; for (i = 0; i < src_lst->num_entries; i++) {