diff --git a/src/cntlr.c b/src/cntlr.c
index 2dfc1a0dab95c04a90a8f457cd4719af32079c91..c889c09b592e6866640e98b9baa4b7063492fa76 100644
--- a/src/cntlr.c
+++ b/src/cntlr.c
@@ -1912,24 +1912,23 @@ static void cntlr_ageout_nodes(struct controller *c)
 static void combined_link_metric_periodic_collection(struct controller *c)
 {
 	trace("%s: --->\n", __func__);
-	struct node *p = NULL;
 	uint8_t *radiolist = NULL, *bsslist = NULL;
+	struct cmdu_buff *cmdu;
+	struct node *n = NULL;
 
 	/* AP metrics query 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;
-		struct node *n;
-		struct cmdu_buff *cmdu;
 		struct netif_radio *r = NULL;
 		int num_bss = 0, num_radio = 0;
 		uint8_t hwaddr[6];
 
 		num_radio = 0;
 		num_bss = 0;
-		memcpy(hwaddr, p->alid, 6);
+		memcpy(hwaddr, n->alid, 6);
 		/* For each radio */
-		list_for_each_entry(r, &p->radiolist, list) {
+		list_for_each_entry(r, &n->radiolist, list) {
 			struct netif_iface *bss = NULL;
 			int radio_index;
 
@@ -1975,7 +1974,7 @@ static void combined_link_metric_periodic_collection(struct controller *c)
 		if (num_bss > 0) {
 			cmdu = cntlr_gen_ap_metrics_query(c, hwaddr, num_bss, bsslist, num_radio, radiolist);
 			if (!cmdu) {
-				trace("cmdu_gen failed!\n");
+				trace("cmdu cntlr_gen_ap_metrics_query failed!\n");
 				goto error;
 			}
 			send_cmdu(c, cmdu);
@@ -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");
 		}
 
-		/* 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 = cntlr_gen_1905_link_metric_query(c, n->alid);
+		if (!cmdu) {
+			trace("cmdu cntlr_gen_1905_link_metric_query failed!\n");
 			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);
+		goto error;
 	}
+
+	handle_link_metrics_response(c, cmdu, n);
+	cmdu_free(cmdu);
 error:
 	if (radiolist)
 		free(radiolist);