diff --git a/src/cntlr.c b/src/cntlr.c index 81bf00b171d34ecd684ce8e98b4c39d82499949e..1992b6d82ce269cfa2aef00f77c37ef7a6867fd3 100644 --- a/src/cntlr.c +++ b/src/cntlr.c @@ -528,15 +528,15 @@ void cntlr_notify_client_steer_req_evt(struct controller *c, } void cntlr_notify_client_steer_result(struct controller *c, - uint8_t *sta_mac, bool steer_success) + uint8_t *sta_mac, int result) { char ev_data[1024] = {0}; snprintf(ev_data, sizeof(ev_data), "{\"sta_mac\":\""MACFMT"\"" - ",\"status\":%s}", - MAC2STR(sta_mac), - steer_success ? "SUCCESS" : "FAIL"); + ",\"status\":%d}", + MAC2STR(sta_mac), result); + cntlr_notify_event(c, "client_steer_result", ev_data); } @@ -582,7 +582,8 @@ static void cntlr_btm_req_timer_cb(atimer_t *t) s->de_sta->mapsta.pending_btm_resp_num; s->de_sta->mapsta.pending_btm_resp_num = 0; - cntlr_notify_client_steer_result(c, s->de_sta->macaddr, false); + cntlr_notify_client_steer_result(c, s->de_sta->macaddr, + STEER_RESULT_FAIL_TIMEOUT); } } diff --git a/src/cntlr.h b/src/cntlr.h index 809094cdf3efab3b7a30b946656e2e7d326f2830..2e1a4324e373c6e230baa15e261e4ad72033f08f 100644 --- a/src/cntlr.h +++ b/src/cntlr.h @@ -391,7 +391,7 @@ void cntlr_notify_client_steer_req_evt(struct controller *c, uint8_t *bssid, uint32_t sta_nr, uint8_t stas[][6], uint32_t bssid_nr, uint8_t target_bssid[][6]); void cntlr_notify_client_steer_result(struct controller *c, - uint8_t *sta_mac, bool steer_success); + uint8_t *sta_mac, int result); struct steer_control_config *get_steer_control_config(struct controller *c); struct sta *cntlr_add_sta(struct controller *c, uint8_t *macaddr); struct sta *cntlr_find_sta(struct controller *c, uint8_t *mac); diff --git a/src/cntlr_map.c b/src/cntlr_map.c index 06a2c20dd988a339e21176f983b034754601a01e..20df08c9d284f30938cf62228461da58e0200afd 100644 --- a/src/cntlr_map.c +++ b/src/cntlr_map.c @@ -1150,7 +1150,8 @@ int handle_1905_ack(void *cntlr, struct cmdu_buff *cmdu, struct node *n) if (s->latest_assoc_cntrl_mid == mid) { s->de_sta->mapsta.stats.failed_steer_attempts++; - cntlr_notify_client_steer_result(c, s->de_sta->macaddr, false); + cntlr_notify_client_steer_result(c, s->de_sta->macaddr, + STEER_RESULT_FAIL_ASOC_CTRL); } } } @@ -2754,7 +2755,8 @@ int handle_sta_steer_btm_report(void *cntlr, struct cmdu_buff *cmdu, s->de_sta->mapsta.stats.btm_failure_cnt++; c->dlem.network.steer_summary.btm_failure_cnt++; - cntlr_notify_client_steer_result(c, s->de_sta->macaddr, false); + cntlr_notify_client_steer_result(c, s->de_sta->macaddr, + STEER_RESULT_FAIL_RSP); } /* else: counters already updated in cntlr_btm_req_timer_cb */ @@ -2766,7 +2768,8 @@ int handle_sta_steer_btm_report(void *cntlr, struct cmdu_buff *cmdu, s->de_sta->mapsta.stats.btm_success_cnt++; c->dlem.network.steer_summary.btm_success_cnt++; - cntlr_notify_client_steer_result(c, s->de_sta->macaddr, true); + cntlr_notify_client_steer_result(c, s->de_sta->macaddr, + STEER_RESULT_SUCCESS); if (s->de_sta->mapsta.pending_btm_resp_num == 0) { /* Received succesful btm report, after the btm timeout, diff --git a/src/steer.h b/src/steer.h index 7c851b40d63381a168adf06f26bf596b6d68d40a..63d73dc8987f558ff2484b9b00e8fc1002d2b710 100644 --- a/src/steer.h +++ b/src/steer.h @@ -45,6 +45,13 @@ enum steer_mode { STEER_MODE_OPPORTUNITY, }; +enum steer_result { + STEER_RESULT_SUCCESS, + STEER_RESULT_FAIL_RSP, /* got BTM response frame with result != 0 */ + STEER_RESULT_FAIL_TIMEOUT, /* no BTM response recvd within specified time */ + STEER_RESULT_FAIL_ASOC_CTRL, /* tried to assoc control an associated STA */ +}; + typedef enum steer_verdict steer_verdict_t; typedef enum steer_reason steer_reason_t; typedef enum steer_mode steer_mode_t;