diff --git a/src/agent_tlv.c b/src/agent_tlv.c
index ed422a8ff8f2dc53fb71d934daf26e545d9b69ff..85b421774c0e0181bb40ff70e5dbe80d134ce1fb 100644
--- a/src/agent_tlv.c
+++ b/src/agent_tlv.c
@@ -1503,8 +1503,7 @@ int agent_gen_tlv_unassoc_sta_lm_report(struct agent *a,
 
 			memcpy(s->macaddr, metrics[i].macaddr, 6);
 			s->channel = metrics[i].meas.channel;
-			BUF_PUT_BE32(s->time_delta, timestamp_diff_ms(now,
-					metrics[i].meas.read_time));
+			BUF_PUT_BE32(s->time_delta, metrics[i].meas.last_seen_ms);
 			s->ul_rcpi = metrics[i].meas.rcpi; // reporting average RCPI
 
 			offset += sizeof(*s);
diff --git a/src/unasta.c b/src/unasta.c
index 56962528177e9686b98307a246bfd4b8343b919e..fba633496cc6dc4f5f6a39a3adfafe58a7543d0a 100644
--- a/src/unasta.c
+++ b/src/unasta.c
@@ -44,15 +44,27 @@ static int unassoc_sta_meas_valid(struct wifi_unassoc_sta_element *usta)
 
 static int agent_get_monitor_rssi(struct wifi_unassoc_sta_element *usta)
 {
-	struct wifi_monsta monsta = {};
-	int8_t rssi = 0;
-
 	trace("agent: %s: --->\n", __func__);
 
-	if (!wifi_get_monitor_sta(usta->mon_ifname, usta->macaddr, &monsta))
-		rssi = monsta.rssi_avg;
+	struct wifi_monsta monsta = {};
+	int ret = 0;
+
+	ret = wifi_get_monitor_sta(usta->mon_ifname, usta->macaddr, &monsta);
+	if (!ret) {
+		dbg("%s: RSSI measured for " MACFMT ": %d, time delta = %d seconds\n",
+		    __func__, MAC2STR(usta->macaddr), monsta.rssi_avg, monsta.last_seen);
+		usta->meas.rssi = monsta.rssi_avg;
+		usta->meas.rcpi = rssi_to_rcpi(monsta.rssi_avg);
+		usta->meas.last_seen_ms = monsta.last_seen * 1000; /* convert to ms */
+	} else {
+		warn("%s: failed to get RSSI for unassociated STA "MACFMT"\n",
+			 __func__, MAC2STR(usta->macaddr));
+		usta->meas.rssi = 0;
+		usta->meas.rcpi = 255;
+		usta->meas.last_seen_ms = 0;
+	}
 
-	return rssi;
+	return ret;
 }
 
 int radio_free_unassoc_sta(struct wifi_radio_element *re, uint8_t *sta)
@@ -226,7 +238,7 @@ int unassoc_sta_send_link_metrics_response(struct wifi_radio_element *re)
 
 	list_for_each_entry(usta, &re->unassocstalist, list) {
 		bool reset = false;
-		int8_t rssi = 0;
+		int ret = 0;
 
 		if (!unassoc_sta_meas_requested(usta))
 			/* Not requested yet */
@@ -237,27 +249,15 @@ int unassoc_sta_send_link_metrics_response(struct wifi_radio_element *re)
 			continue;
 
 		/* Get most recent RSSI from driver */
-		rssi = agent_get_monitor_rssi(usta);
-		if (rssi) {
-			/* RSSI available: update measurement */
-			dbg("%s: RSSI measured for " MACFMT ": %d\n",
-				__func__, MAC2STR(usta->macaddr), rssi);
-			usta->meas.rssi = rssi;
-			usta->meas.rcpi = rssi_to_rcpi(rssi);
-			timestamp_update(&usta->meas.read_time);
-		} else {
+		ret = agent_get_monitor_rssi(usta);
+		if (ret || !usta->meas.rssi) {
 			/* No RSSI: reenable monitoring in driver */
-			usta->meas.rssi = 0;
-			usta->meas.rcpi = 255;
-			timestamp_reset(&usta->meas.read_time);
-			dbg("%s: no RSSI, restart monitoring of unassoc sta "MACFMT"\n",
-				__func__, MAC2STR(usta->macaddr));
 			if (!wifi_monitor_sta_add(usta->mon_ifname, usta->macaddr)) {
 				dbg("%s: restarted monitoring of unassociated STA " MACFMT "\n",
 					__func__, MAC2STR(usta->macaddr));
 				timestamp_update(&usta->meas.start_time);
 			} else {
-				warn("%s: monitoring of unassoc sta "MACFMT" failed!\n",
+				warn("%s: failed to restart monitoring of unassoc sta "MACFMT"!\n",
 					 __func__, MAC2STR(usta->macaddr));
 				timestamp_reset(&usta->meas.start_time);
 				usta->is_monitored = false;
diff --git a/src/unasta.h b/src/unasta.h
index 36d5d368d7fe398eb4082b64c233e6bc328fa5aa..51cd281c852b0421caa498a0be0c5126e2818551 100644
--- a/src/unasta.h
+++ b/src/unasta.h
@@ -19,8 +19,8 @@ struct wifi_sta_measurement {
 		uint8_t channel;
 		int8_t rssi;
 		uint8_t rcpi;
+		int last_seen_ms;
 		/* of most recent measurement */
-		struct timespec read_time;
 		struct timespec start_time;
 		/* num of failed measurements */
 		int num_tries;