Skip to content
Snippets Groups Projects
Commit c0083f8f authored by Jakob Olsson's avatar Jakob Olsson Committed by Filip Matusiak
Browse files

periodically query 1905 link metrics

parent 5eb51d87
No related tags found
1 merge request!377Backport changes in combined_link_metric_periodic_collection
Pipeline #172549 passed
...@@ -1912,24 +1912,23 @@ static void cntlr_ageout_nodes(struct controller *c) ...@@ -1912,24 +1912,23 @@ static void cntlr_ageout_nodes(struct controller *c)
static void combined_link_metric_periodic_collection(struct controller *c) static void combined_link_metric_periodic_collection(struct controller *c)
{ {
trace("%s: --->\n", __func__); trace("%s: --->\n", __func__);
struct node *p = NULL;
uint8_t *radiolist = NULL, *bsslist = NULL; uint8_t *radiolist = NULL, *bsslist = NULL;
struct cmdu_buff *cmdu;
struct node *n = NULL;
/* AP metrics query for each agent */ /* AP metrics query for each agent */
/* For each agent */ /* For each agent */
list_for_each_entry(p, &c->nodelist, list) { list_for_each_entry(n, &c->nodelist, list) {
uint8_t *new_radiolist; uint8_t *new_radiolist;
struct node *n;
struct cmdu_buff *cmdu;
struct netif_radio *r = NULL; struct netif_radio *r = NULL;
int num_bss = 0, num_radio = 0; int num_bss = 0, num_radio = 0;
uint8_t hwaddr[6]; uint8_t hwaddr[6];
num_radio = 0; num_radio = 0;
num_bss = 0; num_bss = 0;
memcpy(hwaddr, p->alid, 6); memcpy(hwaddr, n->alid, 6);
/* For each radio */ /* For each radio */
list_for_each_entry(r, &p->radiolist, list) { list_for_each_entry(r, &n->radiolist, list) {
struct netif_iface *bss = NULL; struct netif_iface *bss = NULL;
int radio_index; int radio_index;
...@@ -1975,7 +1974,7 @@ static void combined_link_metric_periodic_collection(struct controller *c) ...@@ -1975,7 +1974,7 @@ static void combined_link_metric_periodic_collection(struct controller *c)
if (num_bss > 0) { if (num_bss > 0) {
cmdu = cntlr_gen_ap_metrics_query(c, hwaddr, num_bss, bsslist, num_radio, radiolist); cmdu = cntlr_gen_ap_metrics_query(c, hwaddr, num_bss, bsslist, num_radio, radiolist);
if (!cmdu) { if (!cmdu) {
trace("cmdu_gen failed!\n"); trace("cmdu cntlr_gen_ap_metrics_query failed!\n");
goto error; goto error;
} }
send_cmdu(c, cmdu); send_cmdu(c, cmdu);
...@@ -1984,21 +1983,30 @@ static void combined_link_metric_periodic_collection(struct controller *c) ...@@ -1984,21 +1983,30 @@ static void combined_link_metric_periodic_collection(struct controller *c)
dbg("Skip sending AP metrics query, no BSS to query\n"); dbg("Skip sending AP metrics query, no BSS to query\n");
} }
/* query i1905d base CMDU */ cmdu = cntlr_gen_1905_link_metric_query(c, n->alid);
cmdu = ieee1905_ubus_buildcmdu(c->ubus_ctx, CMDU_TYPE_LINK_METRIC_RESPONSE); if (!cmdu) {
if (!cmdu) trace("cmdu cntlr_gen_1905_link_metric_query failed!\n");
dbg("No response from stack when generating 0x%04x\n",
CMDU_TYPE_LINK_METRIC_RESPONSE);
n = cntlr_find_node(c, c->almac);
if (!n) {
cmdu_free(cmdu);
goto error; goto error;
} }
handle_link_metrics_response(c, cmdu, n); send_cmdu(c, cmdu);
cmdu_free(cmdu);
}
/* query i1905d base CMDU */
cmdu = ieee1905_ubus_buildcmdu(c->ubus_ctx, CMDU_TYPE_LINK_METRIC_RESPONSE);
if (!cmdu)
dbg("No response from stack when generating 0x%04x\n",
CMDU_TYPE_LINK_METRIC_RESPONSE);
n = cntlr_find_node(c, c->almac);
if (!n) {
cmdu_free(cmdu); cmdu_free(cmdu);
goto error;
} }
handle_link_metrics_response(c, cmdu, n);
cmdu_free(cmdu);
error: error:
if (radiolist) if (radiolist)
free(radiolist); free(radiolist);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment