diff --git a/src/agent.c b/src/agent.c
index 9c8eb0c9de966ce3d061c5864d8ed6f694ec10c5..afa06ee07d71d2e3d70d387f3fbc05bbc9e1afcf 100644
--- a/src/agent.c
+++ b/src/agent.c
@@ -3424,6 +3424,18 @@ static void agent_update_active_uplink(struct agent *a, char *ifname)
runCmd("/lib/wifi/multiap set_uplink wifi %s", ifname);
}
+static bool wifi_is_band_onboarded(struct agent *a, enum wifi_band band)
+{
+ struct agent_config_radio *rcfg = NULL;
+
+ list_for_each_entry(rcfg, &a->cfg.radiolist, list) {
+ if (rcfg->onboarded && rcfg->band == band)
+ return true;
+ }
+
+ return false;
+}
+
static void wifi_bsta_connect(struct agent *a, struct netif_bk *bk,
uint8_t *bssid)
{
@@ -3431,6 +3443,13 @@ static void wifi_bsta_connect(struct agent *a, struct netif_bk *bk,
char fmt[64] = {0};
int bssid_expired = 0;
+ /* no operation if no bsta on same band is onboarded! */
+ if (!wifi_is_band_onboarded(a, bk->cfg->band)) {
+ dbg("|%s:%d| band %d is not onboard\n", __func__, __LINE__,
+ bk->cfg->band);
+ return;
+ }
+
bk->connected = true;
a->connected = true;
diff --git a/src/config.c b/src/config.c
index a8982ea57ce6ed4ae2ee365baa72d2c11a26f0ea..15c1637b4547dde78d2be13e36f3717e06055e80 100644
--- a/src/config.c
+++ b/src/config.c
@@ -1986,13 +1986,23 @@ static int agent_config_get_wifi_radio(struct agent_config *a,
strncpy(n->name, ifname, 16);
n->name[15] = '\0';
- n->band = band;
+ if (band == 2)
+ n->band = BAND_2;
+ else if (band == 5)
+ n->band = BAND_5;
+ else
+ n->band = BAND_UNKNOWN;
if (tb[WIFI_RADIO_CONFIGURED]) {
n->configured = atoi(tb[WIFI_RADIO_CONFIGURED]->v.string) == 1 ?
true : false;
}
+ if (tb[WIFI_RADIO_ONBOARDED]) {
+ n->onboarded = atoi(tb[WIFI_RADIO_ONBOARDED]->v.string) == 1 ?
+ true : false;
+ }
+
if (tb[WIFI_RADIO_DEDICATED]) {
n->dedicated_backhaul = atoi(tb[WIFI_RADIO_DEDICATED]->v.string) == 1 ?
true : false;