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;
+				}
 			}
 		}
 	}