diff --git a/src/cntlr.c b/src/cntlr.c
index ee04438ce808d6c0f7187bae3b46a8a014159bcb..4fa2428a31d9004f164ac48a4ca92221e2d63bb3 100644
--- a/src/cntlr.c
+++ b/src/cntlr.c
@@ -1521,20 +1521,31 @@ bool cntlr_check_config_diff(struct controller *c, uint8_t diff)
 		/* send the policy config cmdu to the marked agent */
 		list_for_each_entry(n, &c->nodelist, list) {
 			struct cmdu_buff *cmdu;
-			int num_bk = 1;
-			uint8_t bk_id[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-			struct radio_policy *rp = NULL;
+			int num_bk = 0;
+			uint8_t bk_id[16 * 6] = {0};
 			uint8_t radio_id[MAX_NUM_RADIO * 6] = {0};
+			struct netif_radio *r = NULL;
 			int num_radio = 0;
 
 			if ((diff & CONFIG_DIFF_AGENT_POLICY) && !n->np->is_policy_diff)
 				continue;
 
-			list_for_each_entry(rp, &n->np->radiolist, list) {
+			list_for_each_entry(r, &n->radiolist, list) {
+				struct netif_iface *iface = NULL;
+
 				memcpy(&radio_id[num_radio * 6],
-					rp->macaddr,
-					6);
+				       r->radio_el->macaddr, 6);
 				num_radio++;
+
+				list_for_each_entry(iface, &r->iflist, list) {
+					if (!iface->bss->is_bbss)
+						continue;
+
+					memcpy(&bk_id[num_bk * 6],
+					       iface->bss->bssid, 6);
+					num_bk++;
+				}
+
 			}
 
 			cmdu = cntlr_gen_policy_config_req(c, n->alid,