usteer: Fix better candidate not being set in policy
[project/usteer.git] / policy.c
index 43becc1d690434eb92b01acdd949a3b3b848a00d..8155e245f4398fe8ee7d77bf95a3603283ee4c2e 100644 (file)
--- a/policy.c
+++ b/policy.c
@@ -143,7 +143,7 @@ find_better_candidate(struct sta_info *si_ref, struct uevent *ev, uint32_t requi
                        ev->select_reasons = reasons;
                }
 
-               if (candidate && si->signal > candidate->signal)
+               if (!candidate || si->signal > candidate->signal)
                        candidate = si;
        }
 
@@ -361,8 +361,10 @@ usteer_roam_trigger_sm(struct usteer_local_node *ln, struct sta_info *si)
        case ROAM_TRIGGER_SCAN_DONE:
                candidate = usteer_roam_sm_found_better_node(si, &ev, ROAM_TRIGGER_SCAN_DONE);
                /* Kick back in case no better node is found */
-               if (!candidate)
+               if (!candidate) {
                        usteer_roam_set_state(si, ROAM_TRIGGER_IDLE, &ev);
+                       break;
+               }
 
                usteer_ubus_bss_transition_request(si, 1, false, false, 100, candidate->node);
                si->kick_time = current_time + config.roam_kick_delay;