diff --git a/src/backhaul_topology.c b/src/backhaul_topology.c
index f5a5b6284d88963008c4f3391fab5862da326f6f..6e5285b460f2bc5989da5ccd5f4f467d32df0b72 100644
--- a/src/backhaul_topology.c
+++ b/src/backhaul_topology.c
@@ -300,6 +300,10 @@ void copy_neighbor_info_from_tlvs(const struct tlv_1905neighbor **neighbor_tlvs,
 
 }
 
+void set_bh_toplogy_response_timestamp(struct bh_topology_dev *bh_topo_dev)
+{
+	timestamp_update(&bh_topo_dev->last_topo_response);
+}
 
 static void clear_backhaul_tree_relations(struct list_head *bh_topo_dev_list)
 {
diff --git a/src/backhaul_topology.h b/src/backhaul_topology.h
index fbad280f855fc2f8cca6f24ee461ce0e2b6fcc46..02ceaa97787ef8f9a0162916e207b10d3b3d767f 100644
--- a/src/backhaul_topology.h
+++ b/src/backhaul_topology.h
@@ -3,6 +3,7 @@
 
 #include <libubox/list.h>
 #include <stdint.h>
+#include <time.h>
 
 struct tlv_device_info;
 struct tlv_1905neighbor;
@@ -35,6 +36,7 @@ struct backhaul_info {
 /** Represents single device and its relation to neighbors in BH tree. */
 struct bh_topology_dev {
 	struct list_head list_element;
+	struct timespec last_topo_response;
 
 	uint8_t al_macaddr[6];
 	uint8_t number_of_interfaces;
@@ -106,6 +108,11 @@ void copy_neighbor_info_from_tlvs(const struct tlv_1905neighbor **neighbor_tlvs,
 				  uint8_t tlv_number,
 				  struct bh_topology_dev *bh_topo_dev);
 
+/**
+ * Shall be called each time device provides topology response.
+ */
+void set_bh_toplogy_response_timestamp(struct bh_topology_dev *bh_topo_dev);
+
 /**
  * Builds backhaul topology tree from unordered list of bh_topology_dev structs
  * by setting backhaul_info fields.
diff --git a/src/backhaul_topology_dbg.c b/src/backhaul_topology_dbg.c
index dcd7e2b08702b1a20c0897616742752a2ca7678e..27a5b37dbd83f632f51395495c83b5af4133d4ad 100644
--- a/src/backhaul_topology_dbg.c
+++ b/src/backhaul_topology_dbg.c
@@ -1,6 +1,7 @@
 #include "backhaul_topology_dbg.h"
 #include "backhaul_topology.h"
 #include "utils/debug.h"
+#include "utils/utils.h"
 
 #include <easy/utils.h>
 #include <libubox/list.h>
@@ -82,6 +83,7 @@ void dbg_dump_bh_topo_dev(const struct bh_topology_dev *bh_topo_dev,
 	int i;
 
 	dbg("%s bh_topology_dev:\n", pref);
+	dbg("%s .last_topo_response: %u\n", pref, timestamp_elapsed_sec(&bh_topo_dev->last_topo_response));
 	dbg("%s .al_macaddr: " MACFMT "\n", pref, MAC2STR(bh_topo_dev->al_macaddr));
 	dbg("%s .number_of_interfaces: %d\n", pref, bh_topo_dev->number_of_interfaces);
 	dbg("%s .num_of_ifaces_with_neighbors: %d\n", pref, bh_topo_dev->num_of_ifaces_with_neighbors);
diff --git a/src/cntlr_map.c b/src/cntlr_map.c
index 7acde1d60fb42766843e818471374437a9d1855a..5888d6fe7d6ccc645f432949a4df0c6dd0d5e416 100644
--- a/src/cntlr_map.c
+++ b/src/cntlr_map.c
@@ -345,6 +345,8 @@ int handle_topology_response(void *cntlr, struct cmdu_buff *cmdu, struct node *n
 			new_bh_topo_dev = true;
 		}
 
+		set_bh_toplogy_response_timestamp(bh_topo_dev);
+
 		if (new_bh_topo_dev ||
 			has_interface_info_changed(tlv_dev_info,
 						bh_topo_dev)) {
@@ -355,6 +357,7 @@ int handle_topology_response(void *cntlr, struct cmdu_buff *cmdu, struct node *n
 			copy_interface_info_from_tlv(tlv_dev_info,
 							bh_topo_dev);
 		}
+
 	}
 
 	if (!bh_topo_dev) {
diff --git a/src/cntlr_ubus_dbg.c b/src/cntlr_ubus_dbg.c
index b691d0b1ad5aa7f0c31402ca27aac5e75db3b6c2..30457b6b0bcd212a96f25613faa020c25840d4aa 100644
--- a/src/cntlr_ubus_dbg.c
+++ b/src/cntlr_ubus_dbg.c
@@ -176,13 +176,15 @@ static int cntrl_dbg_bh_topology_dump(struct ubus_context *ctx,
 	struct controller *c = container_of(obj, struct controller, obj_dbg);
 	struct node *node;
 	struct blob_buf bb = { 0 };
-	void *devs_arr;
 	char macaddrstr[18] = { 0 };
 
 	blob_buf_init(&bb, 0);
-	devs_arr = blobmsg_open_array(&bb, "bh_topology_devs");
+
+	blobmsg_add_string(&bb, "topology_model_valid", is_bh_topology_valid() ? "Yes":"No");
 
 	if (is_bh_topology_valid()) {
+		void *devs_arr = blobmsg_open_array(&bb, "bh_topology_devs");
+
 		list_for_each_entry(node, &c->nodelist, list) {
 			const struct bh_topology_dev *topo_dev =
 				find_bh_topology_device(node->alid);
@@ -192,6 +194,8 @@ static int cntrl_dbg_bh_topology_dump(struct ubus_context *ctx,
 				const struct backhaul_info *bh_info =
 					&topo_dev->bh_info;
 
+				blobmsg_add_u32(&bb, "time_since_topo_response",
+					timestamp_elapsed_sec(&topo_dev->last_topo_response));
 				blobmsg_add_string(&bb, "al_mac",
 					hwaddr_ntoa(topo_dev->al_macaddr, macaddrstr));
 				blobmsg_add_u16(&bb, "hops_from_root", bh_info->level_in_tree);
@@ -220,10 +224,9 @@ static int cntrl_dbg_bh_topology_dump(struct ubus_context *ctx,
 				blobmsg_close_table(&bb, dev_table);
 			}
 		}
+		blobmsg_close_array(&bb, devs_arr);
 	}
 
-
-	blobmsg_close_array(&bb, devs_arr);
 	ubus_send_reply(ctx, req, bb.head);
 	blob_buf_free(&bb);
 
diff --git a/src/utils/utils.c b/src/utils/utils.c
index 202506b60a8e87ad6570dd36924586bcf838832e..a872d933687f57ba426208a9ed1d9d7a9ea95c1d 100644
--- a/src/utils/utils.c
+++ b/src/utils/utils.c
@@ -170,7 +170,7 @@ int timestamp_invalid(struct timespec *ts)
 }
 
 /* Time difference in seconds */
-uint32_t timestamp_elapsed_sec(struct timespec *ts)
+uint32_t timestamp_elapsed_sec(const struct timespec *ts)
 {
 	struct timespec now;
 	uint32_t elapsed;
@@ -210,7 +210,7 @@ int timestamp_expired(struct timespec *a, unsigned int tmo_ms)
 	return 0;
 }
 
-char *time_to_timestamp(time_t *t, char *tsp)
+char *time_to_timestamp(const time_t *t, char *tsp)
 {
 	char tmpbuf[64] = {0};
 	struct tm res;
diff --git a/src/utils/utils.h b/src/utils/utils.h
index 2fbebcaab282fb429f89d7c52dd2b5d43d490307..154c50313f52328d972492f31bdc0e29c6e2bc62 100644
--- a/src/utils/utils.h
+++ b/src/utils/utils.h
@@ -45,9 +45,9 @@ int hwaddr_from_ip(char *ifname, char *ipstr, unsigned char *hw);
 void timestamp_reset(struct timespec *ts);
 void timestamp_update(struct timespec *ts);
 int timestamp_invalid(struct timespec *ts);
-uint32_t timestamp_elapsed_sec(struct timespec *ts);
+uint32_t timestamp_elapsed_sec(const struct timespec *ts);
 int timestamp_expired(struct timespec *a, unsigned int tmo_ms);
-char *time_to_timestamp(time_t *t, char *tsp);
+char *time_to_timestamp(const time_t *t, char *tsp);
 time_t timestamp_to_time(const char *tsp);
 struct timespec time_to_timespec(time_t *t);
 struct timespec timestamp_to_timespec(const char *tsp, bool adj_rtime);