diff --git a/src/cntlr_ubus.c b/src/cntlr_ubus.c
index e198b8954d86c7cca27298da0e4f0a4df2bddf50..c1c2389e512a01155b3d1897f2a493f45e2ec239 100644
--- a/src/cntlr_ubus.c
+++ b/src/cntlr_ubus.c
@@ -481,8 +481,8 @@ static char *cntrl_status_reason(uint8_t reason)
 	return "unknown";
 }
 
-static void cntlr_status_add_opclass(struct blob_buf *bb, struct wifi_radio_opclass *opclass,
-				const char *name, int opclass_id)
+void cntlr_status_add_opclass(struct blob_buf *bb, struct wifi_radio_opclass *opclass,
+			      const char *name, int opclass_id)
 {
 	char age[64];
 	void *a, *aa, *t, *tt;
diff --git a/src/cntlr_ubus.h b/src/cntlr_ubus.h
index f7b439e4de58cb33eb8468d52c4c56b6e2793038..4bd785889f5c6e247795da4cbcd85bafe7ee1764 100644
--- a/src/cntlr_ubus.h
+++ b/src/cntlr_ubus.h
@@ -32,5 +32,7 @@ int cntlr_wait_for_object_timeout(struct controller *c, void *object,
 int ieee1905_buildcmdu_linkmetric_resp(struct controller *c, uint16_t msg_type);
 
 int cntlr_get_ieee1905_almac(struct controller *c, uint8_t *almac);
+void cntlr_status_add_opclass(struct blob_buf *bb, struct wifi_radio_opclass *opclass,
+			      const char *name, int opclass_id);
 
 #endif /* CNTLR_UBUS_H */
diff --git a/src/cntlr_ubus_dbg.c b/src/cntlr_ubus_dbg.c
index 383d059cf40685beb04156d86d76c47f6d7d2acf..f32e2ef389891d455d3354e7a443564a0b6d0b16 100644
--- a/src/cntlr_ubus_dbg.c
+++ b/src/cntlr_ubus_dbg.c
@@ -49,6 +49,7 @@
 #include "cntlr_cmdu.h"
 #include "backhaul_topology.h"
 #include "backhaul_topology_dbg.h"
+#include "cntlr_ubus.h"
 
 #define OBJECT_INVALID	((uint32_t)-1)
 
@@ -168,6 +169,35 @@ static int cntlr_dbg_clear_steer_summary(struct ubus_context *ctx, struct ubus_o
 	return UBUS_STATUS_OK;
 }
 
+static struct wifi_radio_opclass *
+cntrl_dbg_get_cur_opclass_by_bssid(struct controller *c, const unsigned char *bssid)
+{
+	struct node *node;
+
+	list_for_each_entry(node, &c->nodelist, list) {
+		struct netif_radio *radio = NULL;
+
+		list_for_each_entry(radio, &node->radiolist, list) {
+			struct netif_iface *iface = NULL;
+
+			list_for_each_entry(iface, &radio->iflist, list) {
+				if (!iface->bss)
+					continue;
+				if (!iface->bss->enabled)
+					continue;
+				if (!iface->bss->is_bbss)
+					continue;
+				if (memcmp(iface->bss->bssid, bssid, 6))
+					continue;
+
+				return &radio->radio_el->cur_opclass;
+			}
+		}
+	}
+
+	return NULL;
+}
+
 static int cntrl_dbg_bh_topology_dump(struct ubus_context *ctx,
 				      struct ubus_object *obj,
 				      struct ubus_request_data *req,
@@ -202,6 +232,7 @@ static int cntrl_dbg_bh_topology_dump(struct ubus_context *ctx,
 				/* If device is not root device */
 				if (bh_info->parent_in_tree) {
 					void  *bh_table = blobmsg_open_table(&bb, "bh_info");
+					struct wifi_radio_opclass *opclass;
 
 					blobmsg_add_string(&bb, "parent_in_tree",
 						hwaddr_ntoa(bh_info->parent_in_tree->al_macaddr, macaddrstr));
@@ -215,6 +246,12 @@ static int cntrl_dbg_bh_topology_dump(struct ubus_context *ctx,
 							hwaddr_ntoa(bh_info->own_iface->macaddr, macaddrstr));
 					}
 
+					if ((bh_info->parent_iface->media_type >> 8) == 1) {
+						opclass = cntrl_dbg_get_cur_opclass_by_bssid(c, bh_info->parent_iface->macaddr);
+						if (opclass)
+							cntlr_status_add_opclass(&bb, opclass, "cur_opclass", 0);
+					}
+
 					blobmsg_close_table(&bb, bh_table);
 				}