diff --git a/src/interfacestack.c b/src/interfacestack.c
index 58e5612b5db7203d9b44bb0fc4975435f813a25b..082de86e7f2df524038205732fb0912b40f313a8 100644
--- a/src/interfacestack.c
+++ b/src/interfacestack.c
@@ -263,11 +263,18 @@ static int browseInterfaceStackInst(struct dmctx *dmctx, DMNODE *parent_node, vo
dmuci_get_value_by_section_string(port_s, "port", &port);
wl_s = get_dup_section_in_config_opt("wireless", "wifi-iface", "ifname", port);
- wl_s = get_dup_section_in_dmmap_opt("dmmap_wireless", "ssid", "ap_section_name", section_name(wl_s));
+ if (wl_s != NULL) {
+ char *ssid = NULL, *device = NULL;
- if (create_interface_stack_instance(dmctx, parent_node, &curr_interfacestack_data, wl_s,
- "Device.WiFi.SSID.", "ssid_instance", "ssid_alias", &idx))
- goto end;
+ dmuci_get_value_by_section_string(wl_s, "device", &device);
+ dmuci_get_value_by_section_string(wl_s, "ssid", &ssid);
+
+ wl_s = get_section_in_dmmap_with_options_eq("dmmap_wireless", "ssid", "device", device, "ssid", ssid);
+
+ if (create_interface_stack_instance(dmctx, parent_node, &curr_interfacestack_data, wl_s,
+ "Device.WiFi.SSID.", "ssid_instance", "ssid_alias", &idx))
+ goto end;
+ }
}
}
}