|
@@ -18,6 +18,7 @@
|
|
|
#include "brcmu_wifi.h"
|
|
|
#include "brcmu_utils.h"
|
|
|
|
|
|
+#include "cfg80211.h"
|
|
|
#include "core.h"
|
|
|
#include "debug.h"
|
|
|
#include "tracepoint.h"
|
|
@@ -182,8 +183,13 @@ static void brcmf_fweh_handle_if_event(struct brcmf_pub *drvr,
|
|
|
|
|
|
err = brcmf_fweh_call_event_handler(ifp, emsg->event_code, emsg, data);
|
|
|
|
|
|
- if (ifp && ifevent->action == BRCMF_E_IF_DEL)
|
|
|
- brcmf_remove_interface(ifp, false);
|
|
|
+ if (ifp && ifevent->action == BRCMF_E_IF_DEL) {
|
|
|
+ bool armed = brcmf_cfg80211_vif_event_armed(drvr->config);
|
|
|
+
|
|
|
+ /* Default handling in case no-one waits for this event */
|
|
|
+ if (!armed)
|
|
|
+ brcmf_remove_interface(ifp, false);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|