diff --git a/src/cntlr_cmdu.c b/src/cntlr_cmdu.c
index bfb4bf03723e20719299e676ca11bdb667bcb14d..69a0c88263572c0fe6569d221863162135559072 100644
--- a/src/cntlr_cmdu.c
+++ b/src/cntlr_cmdu.c
@@ -558,7 +558,7 @@ struct cmdu_buff *cntlr_gen_ap_autoconfig_response(struct controller *c,
 		if (ret)
 			goto out;
 #endif
-		ret = cntlr_gen_cntlr_capability(c, resp);
+		ret = cntlr_gen_cntlr_capability(c, resp, 0x00);
 		if (ret)
 			goto out;
 	}
diff --git a/src/cntlr_tlv.c b/src/cntlr_tlv.c
index 6f2122acee5cd3f304c3b5b18977106c175c43b7..99d75343ca0a474ecddf7642b7db4f9426201854 100644
--- a/src/cntlr_tlv.c
+++ b/src/cntlr_tlv.c
@@ -1848,7 +1848,7 @@ int cntlr_gen_dpp_bootstrapping_uri_notif(struct controller *c,
 	return 0;
 }
 
-int cntlr_gen_cntlr_capability(struct controller *c, struct cmdu_buff *frm)
+int cntlr_gen_cntlr_capability(struct controller *c, struct cmdu_buff *frm, uint8_t caps)
 {
 	struct tlv *t;
 	struct tlv_controller_cap *data;
@@ -1860,8 +1860,7 @@ int cntlr_gen_cntlr_capability(struct controller *c, struct cmdu_buff *frm)
 	t->type = MAP_TLV_CONTROLLER_CAPS;
 	data = (struct tlv_controller_cap *)t->data;
 
-	/* TODO: fill proper values */
-	data->flag = 0x00;
+	data->flag = caps;
 
 	t->len = sizeof(*data);
 	if (cmdu_put_tlv(frm, t))
diff --git a/src/cntlr_tlv.h b/src/cntlr_tlv.h
index a04286ef27564f7cae0ee11ca8b77f4a85def0e1..6848abbe270317384f198661cd819f9dc4878a10 100644
--- a/src/cntlr_tlv.h
+++ b/src/cntlr_tlv.h
@@ -131,7 +131,7 @@ int cntlr_gen_device_1905_layer_security_cap(struct controller *c,
 int cntlr_gen_dpp_bootstrapping_uri_notif(struct controller *c,
 		struct cmdu_buff *frm, uint8_t *radio, uint8_t *bssid,
 		uint8_t *bsta, int uri_len, char *dpp_uri);
-int cntlr_gen_cntlr_capability(struct controller *c, struct cmdu_buff *frm);
+int cntlr_gen_cntlr_capability(struct controller *c, struct cmdu_buff *frm, uint8_t caps);
 int cntlr_gen_agent_list_tlv(struct controller *c, struct cmdu_buff *frm);
 #endif /* EASYMESH_VERSION > 2 */