Skip to content
Snippets Groups Projects
Commit 8682aabf authored by Filip Matusiak's avatar Filip Matusiak
Browse files

Track number of BTM requests sent

parent 9aa18550
No related branches found
No related tags found
1 merge request!268steering: sticky client handling
...@@ -407,14 +407,24 @@ void cntlr_update_sta_steer_counters(struct controller *c, ...@@ -407,14 +407,24 @@ void cntlr_update_sta_steer_counters(struct controller *c,
a->answered = false; a->answered = false;
a->auto_bssid = dst_bssid ? false : true; a->auto_bssid = dst_bssid ? false : true;
/* Update SteeringSummaryStats */
/*TODO: split counter for opportunity & mandate */
s->stats.btm_attempt_cnt++;
/* Record tsp for most recent steer attempt */ /* Record tsp for most recent steer attempt */
timestamp_update(&s->stats.last_attempt_tsp); timestamp_update(&s->stats.last_attempt_tsp);
s->num_steer_attempts += 1; s->num_steer_attempts += 1;
} }
static void cntlr_btm_req_timer_cb(atimer_t *t)
{
trace("%s:--->\n", __func__);
struct sta *s = container_of(t, struct sta, btm_req_timer);
if (s->pending_btm_resp_num > 0) {
s->failed_steer_attempts += s->pending_btm_resp_num;
s->stats.btm_failure_cnt += s->pending_btm_resp_num;
s->pending_btm_resp_num = 0;
}
}
static int cntlr_steer_sta(struct controller *c, struct sta *s, static int cntlr_steer_sta(struct controller *c, struct sta *s,
struct steer_target *to, uint32_t mode, struct steer_target *to, uint32_t mode,
uint32_t reason) uint32_t reason)
...@@ -460,6 +470,10 @@ static int cntlr_steer_sta(struct controller *c, struct sta *s, ...@@ -460,6 +470,10 @@ static int cntlr_steer_sta(struct controller *c, struct sta *s,
1, (uint8_t (*)[6])s->macaddr, 1, (uint8_t (*)[6])s->macaddr,
1, (uint8_t (*)[6])to->bssid); 1, (uint8_t (*)[6])to->bssid);
/* Expect btm-resp from STA forwarded to cntlr */
s->pending_btm_resp_num++;
uloop_timeout_set(&s->btm_req_timer, BTM_RESP_EXP_TIMEOUT * 1000);
break; break;
case STEER_MODE_UNDEFINED: case STEER_MODE_UNDEFINED:
default: default:
...@@ -615,6 +629,7 @@ static void cntlr_init_sta_steer_counters(struct sta *s) ...@@ -615,6 +629,7 @@ static void cntlr_init_sta_steer_counters(struct sta *s)
//s->stats.btm_failure_cnt = 0; //s->stats.btm_failure_cnt = 0;
//s->stats.btm_query_resp_cnt = 0; //s->stats.btm_query_resp_cnt = 0;
//s->stats.last_attempt_tsp = 0; //s->stats.last_attempt_tsp = 0;
s->pending_btm_resp_num = 0;
} }
struct sta *cntlr_add_sta(struct controller *c, uint8_t *macaddr) struct sta *cntlr_add_sta(struct controller *c, uint8_t *macaddr)
...@@ -635,6 +650,7 @@ struct sta *cntlr_add_sta(struct controller *c, uint8_t *macaddr) ...@@ -635,6 +650,7 @@ struct sta *cntlr_add_sta(struct controller *c, uint8_t *macaddr)
memcpy(s->macaddr, macaddr, 6); memcpy(s->macaddr, macaddr, 6);
list_add(&s->list, &c->stalist); list_add(&s->list, &c->stalist);
s->bcn_metrics_timer.cb = cntlr_bcn_metrics_parse; s->bcn_metrics_timer.cb = cntlr_bcn_metrics_parse;
s->btm_req_timer.cb = cntlr_btm_req_timer_cb;
cntlr_init_sta_steer_counters(s); cntlr_init_sta_steer_counters(s);
return s; return s;
......
...@@ -179,6 +179,7 @@ struct sta { ...@@ -179,6 +179,7 @@ struct sta {
int bcn_report_wait_time; /* maximum time to wait for bcn response in seconds */ int bcn_report_wait_time; /* maximum time to wait for bcn response in seconds */
int failed_steer_attempts; int failed_steer_attempts;
int pending_btm_resp_num;
uint8_t num_steer_attempts; uint8_t num_steer_attempts;
#define MAX_LOG_STEER_ATTEMPTS 10 #define MAX_LOG_STEER_ATTEMPTS 10
...@@ -186,6 +187,9 @@ struct sta { ...@@ -186,6 +187,9 @@ struct sta {
struct steer_stats stats; struct steer_stats stats;
#define BTM_RESP_EXP_TIMEOUT 5
atimer_t btm_req_timer;
struct list_head list; struct list_head list;
}; };
......
...@@ -1955,12 +1955,14 @@ int handle_sta_steer_btm_report(void *cntlr, struct cmdu_buff *cmdu) ...@@ -1955,12 +1955,14 @@ int handle_sta_steer_btm_report(void *cntlr, struct cmdu_buff *cmdu)
resp->status ? NULL : resp->target_bssid[0]); resp->status ? NULL : resp->target_bssid[0]);
if (!attempt) if (!attempt)
dbg("|%s:%d| could not find an attempt matching this btm report\n", warn("|%s:%d| could not find an attempt matching this btm report\n",
__func__, __LINE__); __func__, __LINE__);
else else {
s->pending_btm_resp_num--;
attempt->answered = true; attempt->answered = true;
}
if (resp->status) { if (resp->status != 0x00) { /* error code */
s->failed_steer_attempts++; s->failed_steer_attempts++;
/* Update Steering Summary Stats */ /* Update Steering Summary Stats */
s->stats.btm_failure_cnt++; s->stats.btm_failure_cnt++;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment