diff --git a/src/core/cntlr_map_debug.c b/src/core/cntlr_map_debug.c
index d0fe81513a4dae296d23ee0811f248207c5f61a3..5bf5ad11e5a3285f8ac10b3a9652c50b1c4dfcdf 100644
--- a/src/core/cntlr_map_debug.c
+++ b/src/core/cntlr_map_debug.c
@@ -156,6 +156,100 @@ int debug_ap_caps_report(void *cntlr, struct cmdu_cstruct *cmdu)
 						(p->mu_beamformer_capable ? "true" : "false"));
 				break;
 			}
+		case MAP_TLV_CHANNEL_SCAN_CAPABILITY:
+			{
+				struct tlv_ch_scan_cap *p =
+					(struct tlv_ch_scan_cap *)tlv;
+				int j;
+
+				trace("\tnbr_radios: %d\n", p->nbr_radios);
+				for (j = 0; j < p->nbr_radios; j++) {
+					int k;
+
+					trace("\t\tradio_id: " MACFMT "\n",
+							MAC2STR(p->radio[j].radio_id));
+					trace("\t\ton_boot: %d\n", p->radio[j].on_boot);
+					trace("\t\tscan_impact: 0x%02x\n", p->radio[j].scan_impact);
+					trace("\t\tmin_scan_interval: %d\n",
+							p->radio[j].min_scan_interval);
+					trace("\t\tnbr_op_classes: %d\n",
+						p->radio[j].nbr_op_classes);
+
+					for (k = 0; k < p->radio[j].nbr_op_classes; k++) {
+						int l;
+
+						trace("\t\t\top_class: %d\n",
+							p->radio[j].op_class[k].op_class);
+						trace("\t\t\tnbr_ch: %d\n",
+							p->radio[j].op_class[k].nbr_ch);
+
+						for (l = 0; l < p->radio[j].op_class[k].nbr_ch; l++) {
+							trace("\t\t\t\tch: %d\n",
+								p->radio[j].op_class[k].ch[l]);
+						}
+					}
+					trace("\n");
+				}
+				break;
+			}
+		case MAP_TLV_CAC_CAPABILITY:
+			{
+				struct tlv_cac_cap *p =
+					(struct tlv_cac_cap *)tlv;
+				int j;
+
+				trace("\tnbr_radios: %d\n", p->nbr_radios);
+				for (j = 0; j < p->nbr_radios; j++) {
+					int k;
+
+					trace("\t\tradio_id: " MACFMT "\n",
+							MAC2STR(p->radio_data[j].radio_id));
+					trace("\t\tnbr_cac_types: %d\n",
+							p->radio_data[j].nbr_cac_types);
+					for (k = 0; k < p->radio_data[j].nbr_cac_types; k++) {
+						int l;
+
+						trace("\t\t\tcac_method_supported: 0x%02x\n",
+							p->radio_data[j].cac_data[k].cac_method_supported);
+						trace("\t\t\tduration: %d\n",
+							p->radio_data[j].cac_data[k].duration);
+						trace("\t\t\tnbr_op_classes: %d\n",
+							p->radio_data[j].cac_data[k].nbr_op_classes);
+
+						for (l = 0; l < p->radio_data[j].cac_data[k].nbr_op_classes; l++) {
+							int m;
+
+							trace("\t\t\t\top_class: %d\n",
+								p->radio_data[j].cac_data[k].op_class_data[l].op_class);
+							trace("\t\t\t\tnbr_ch: %d\n",
+								p->radio_data[j].cac_data[k].op_class_data[l].nbr_ch);
+
+							for (m = 0; m < p->radio_data[j].cac_data[k].nbr_op_classes; m++)
+								trace("\t\t\t\t\tch: %d\n",
+									p->radio_data[j].cac_data[k].op_class_data[l].ch[m]);
+						}
+					}
+					trace("\n");
+				}
+				break;
+			}
+		case MAP_TLV_PROFILE2_AP_CAPABILITY:
+			{
+				struct tlv_profile2_ap_cap *p =
+						(struct tlv_profile2_ap_cap *)tlv;
+
+				trace("\tbyte_counter: 0x%02x\n", p->byte_counter);
+				trace("\tmax_vids: 0x%02x\n", p->max_vids);
+				break;
+			}
+		case MAP_TLV_METRIC_COLLECTION_INTERVAL:
+			{
+				struct tlv_metric_collection_interval *p =
+						(struct tlv_metric_collection_interval *)tlv;
+
+				trace("\tcollection_interval: %d ms\n", p->collection_interval);
+				break;
+			}
 		default:
 			fprintf(stdout, "unknown TLV in CMDU:|%s|",
 					map_stringify_cmdu_type(cmdu->message_type));