Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e1479951 authored by Arend van Spriel's avatar Arend van Spriel Committed by John W. Linville
Browse files

brcmfmac: call brcmf_cfg80211_detach() after removal of interfaces



Instead of calling brcmf_cfg80211_detach() in brcmf_del_if() when
deleting the primary interface, call it in brcmf_detach() after
deleting all interfaces.

Reviewed-by: default avatarHante Meuleman <meuleman@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 427dec5f
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -859,8 +859,6 @@ void brcmf_del_if(struct brcmf_pub *drvr, s32 bssidx)
		}
		/* unregister will take care of freeing it */
		unregister_netdev(ifp->ndev);
		if (bssidx == 0)
			brcmf_cfg80211_detach(drvr->config);
	} else {
		kfree(ifp);
	}
@@ -963,7 +961,6 @@ int brcmf_bus_start(struct device *dev)
fail:
	if (ret < 0) {
		brcmf_err("failed: %d\n", ret);
		if (drvr->config)
		brcmf_cfg80211_detach(drvr->config);
		if (drvr->fws) {
			brcmf_fws_del_interface(ifp);
@@ -1039,6 +1036,8 @@ void brcmf_detach(struct device *dev)
			brcmf_del_if(drvr, i);
		}

	brcmf_cfg80211_detach(drvr->config);

	brcmf_bus_detach(drvr);

	brcmf_proto_detach(drvr);
+3 −0
Original line number Diff line number Diff line
@@ -4975,6 +4975,9 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr,

void brcmf_cfg80211_detach(struct brcmf_cfg80211_info *cfg)
{
	if (!cfg)
		return;

	WARN_ON(!list_empty(&cfg->vif_list));
	wiphy_unregister(cfg->wiphy);
	brcmf_btcoex_detach(cfg);