diff --git a/README.md b/README.md
index 368631dd23fd771bb5bd56ecf9dca66bcf2e3228..71def39b11e786cd323f873eac8f5c2d4889bb58 100644
--- a/README.md
+++ b/README.md
@@ -506,6 +506,7 @@ root@iopsys-021000000001:~# ubus -v list map.controller
 	"sta_metric_query":{"agent":"String","sta":"String"}
 	"unassoc_sta_lm_query":{"agent":"String","opclass":"Integer","metrics":"Array"}
 	"bcn_metrics_query":{"agent":"String","sta":"String","opclass":"Integer","channel":"Integer","bssid":"String","reporting_detail":"Integer","ssid":"String","channel_report":"Array","request_element":"Array"}
+	"bcn_metrics_resp":{"sta":"String"}
 	"bk_caps":{"agent":"String"}
 	"topology_query":{"agent":"String"}
 	"cac_req":{"agent":"String","radiolist":"Array"}
diff --git a/src/cntlr_ubus.c b/src/cntlr_ubus.c
index a788e3e66c2f7381eec949125bc9f8228fdffc70..cfd87f21eb582a4389b162cebbbb2777bc46f122 100644
--- a/src/cntlr_ubus.c
+++ b/src/cntlr_ubus.c
@@ -327,6 +327,16 @@ static const struct blobmsg_policy
 
 };
 
+enum {
+	BCN_METRICS_RESP_STA,
+	__BCN_METRICS_RESP_MAX,
+};
+
+static const struct blobmsg_policy
+		bcn_metrics_resp_params[__BCN_METRICS_RESP_MAX] = {
+	[BCN_METRICS_RESP_STA] = { .name = "sta", .type = BLOBMSG_TYPE_STRING },
+};
+
 static const struct blobmsg_policy bk_caps_policy_params[__BK_CAPS_POLICY_MAX] = {
 	[BK_CAPS_POLICY_AGENT] = { .name = "agent", .type = BLOBMSG_TYPE_STRING },
 };
@@ -2799,6 +2809,86 @@ out:
 	return ret;
 }
 
+int cntlr_bcn_metrics_resp(struct ubus_context *ctx, struct ubus_object *obj,
+			struct ubus_request_data *req, const char *method,
+			struct blob_attr *msg)
+{
+	struct controller *c = container_of(obj, struct controller, obj);
+	struct blob_attr *tb[__BCN_METRICS_RESP_MAX];
+	struct blob_buf bb = {0};
+	struct sta *s = NULL;
+	char sta[18] = {0};
+	uint8_t sta_mac[6] = {0};
+	void *a;
+
+	trace("%s:--->\n", __func__);
+
+	blobmsg_parse(bcn_metrics_resp_params, __BCN_METRICS_RESP_MAX,
+			tb, blob_data(msg), blob_len(msg));
+
+	if (tb[BCN_METRICS_RESP_STA]) {
+		strncpy(sta, blobmsg_data(tb[BCN_METRICS_RESP_STA]),
+				sizeof(sta) - 1);
+
+		if (!hwaddr_aton(sta, sta_mac)) {
+			dbg("|%s:%d|Must provide valid STA address!\n",
+					__func__, __LINE__);
+			return UBUS_STATUS_UNKNOWN_ERROR;
+		}
+	}
+
+	/* Example ubus call:
+	 * ubus call map.controller bcn_metrics_resp '{
+	 * "sta":"44:d4:37:4d:84:83"}'
+	 */
+
+	blob_buf_init(&bb, 0);
+
+	a = blobmsg_open_array(&bb, "stations");
+	list_for_each_entry(s, &c->stalist, list) {
+		struct wifi_sta_meas_report *bcn;
+		void *ttt, *tttt;
+		char stastr[18] = {0};
+		char bssstr[18] = {0};
+
+		if (!hwaddr_is_zero(sta_mac) &&
+				memcmp(s->de_sta->macaddr, sta_mac, 6))
+			continue;
+
+		hwaddr_ntoa(s->de_sta->macaddr, stastr);
+		hwaddr_ntoa(s->bssid, bssstr);
+
+		ttt = blobmsg_open_table(&bb, "");
+
+		blobmsg_add_string(&bb, "macaddr", stastr);
+
+		tttt = blobmsg_open_array(&bb, "meas_reportlist");
+		list_for_each_entry(bcn, &s->de_sta->meas_reportlist, list) {
+			void *ttttt;
+
+			ttttt = blobmsg_open_table(&bb, "");
+
+			blobmsg_add_u16(&bb, "channel", bcn->channel);
+			blobmsg_add_u16(&bb, "opclass", bcn->opclass);
+			blobmsg_add_u16(&bb, "rcpi", bcn->rcpi);
+			blobmsg_add_u16(&bb, "rsni", bcn->rsni);
+			hwaddr_ntoa(bcn->bssid, bssstr);
+			blobmsg_add_string(&bb, "bssid", bssstr);
+			blobmsg_add_u32(&bb, "requested", (bcn->requested) ? 1 : 0);
+			blobmsg_close_table(&bb, ttttt);
+		}
+
+		blobmsg_close_array(&bb, tttt);
+		blobmsg_close_table(&bb, ttt);
+	}
+
+	blobmsg_close_array(&bb, a);
+	ubus_send_reply(ctx, req, bb.head);
+	blob_buf_free(&bb);
+
+	return UBUS_STATUS_OK;
+}
+
 static int cntlr_bk_caps(struct ubus_context *ctx, struct ubus_object *obj,
 			struct ubus_request_data *req, const char *method,
 			struct blob_attr *msg)
@@ -3211,6 +3301,8 @@ int cntlr_publish_object(struct controller *c, const char *objname)
 				unassoc_sta_lm_query_params),
 		UBUS_METHOD("bcn_metrics_query", cntlr_bcn_metrics_query,
 				bcn_metrics_query_params),
+		UBUS_METHOD("bcn_metrics_resp", cntlr_bcn_metrics_resp,
+				bcn_metrics_resp_params),
 		UBUS_METHOD("bk_caps", cntlr_bk_caps,
 				bk_caps_policy_params),
 		UBUS_METHOD("topology_query", cntlr_topology_query,