diff options
4 files changed, 14 insertions, 20 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c index d3c4fba065ad..af39edae8c62 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c | |||
| @@ -702,7 +702,7 @@ int brcmf_net_attach(struct brcmf_if *ifp, bool rtnl_locked) | |||
| 702 | 702 | ||
| 703 | brcmf_dbg(INFO, "%s: Broadcom Dongle Host Driver\n", ndev->name); | 703 | brcmf_dbg(INFO, "%s: Broadcom Dongle Host Driver\n", ndev->name); |
| 704 | 704 | ||
| 705 | ndev->destructor = free_netdev; | 705 | ndev->destructor = brcmf_cfg80211_free_netdev; |
| 706 | return 0; | 706 | return 0; |
| 707 | 707 | ||
| 708 | fail: | 708 | fail: |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c index af5c4c70f63d..e23c869bfe33 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c | |||
| @@ -2241,23 +2241,6 @@ static void brcmf_p2p_delete_p2pdev(struct brcmf_p2p_info *p2p, | |||
| 2241 | } | 2241 | } |
| 2242 | 2242 | ||
| 2243 | /** | 2243 | /** |
| 2244 | * brcmf_p2p_free_p2p_if() - free up net device related data. | ||
| 2245 | * | ||
| 2246 | * @ndev: net device that needs to be freed. | ||
| 2247 | */ | ||
| 2248 | static void brcmf_p2p_free_p2p_if(struct net_device *ndev) | ||
| 2249 | { | ||
| 2250 | struct brcmf_cfg80211_vif *vif; | ||
| 2251 | struct brcmf_if *ifp; | ||
| 2252 | |||
| 2253 | ifp = netdev_priv(ndev); | ||
| 2254 | vif = ifp->vif; | ||
| 2255 | |||
| 2256 | brcmf_free_vif(vif); | ||
| 2257 | free_netdev(ifp->ndev); | ||
| 2258 | } | ||
| 2259 | |||
| 2260 | /** | ||
| 2261 | * brcmf_p2p_add_vif() - create a new P2P virtual interface. | 2244 | * brcmf_p2p_add_vif() - create a new P2P virtual interface. |
| 2262 | * | 2245 | * |
| 2263 | * @wiphy: wiphy device of new interface. | 2246 | * @wiphy: wiphy device of new interface. |
| @@ -2334,8 +2317,6 @@ struct wireless_dev *brcmf_p2p_add_vif(struct wiphy *wiphy, const char *name, | |||
| 2334 | brcmf_err("Registering netdevice failed\n"); | 2317 | brcmf_err("Registering netdevice failed\n"); |
| 2335 | goto fail; | 2318 | goto fail; |
| 2336 | } | 2319 | } |
| 2337 | /* override destructor */ | ||
| 2338 | ifp->ndev->destructor = brcmf_p2p_free_p2p_if; | ||
| 2339 | 2320 | ||
| 2340 | cfg->p2p.bss_idx[P2PAPI_BSSCFG_CONNECTION].vif = vif; | 2321 | cfg->p2p.bss_idx[P2PAPI_BSSCFG_CONNECTION].vif = vif; |
| 2341 | /* Disable firmware roaming for P2P interface */ | 2322 | /* Disable firmware roaming for P2P interface */ |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c index 3e3de34422bd..aad83aef7d93 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | |||
| @@ -4385,6 +4385,18 @@ void brcmf_free_vif(struct brcmf_cfg80211_vif *vif) | |||
| 4385 | kfree(vif); | 4385 | kfree(vif); |
| 4386 | } | 4386 | } |
| 4387 | 4387 | ||
| 4388 | void brcmf_cfg80211_free_netdev(struct net_device *ndev) | ||
| 4389 | { | ||
| 4390 | struct brcmf_cfg80211_vif *vif; | ||
| 4391 | struct brcmf_if *ifp; | ||
| 4392 | |||
| 4393 | ifp = netdev_priv(ndev); | ||
| 4394 | vif = ifp->vif; | ||
| 4395 | |||
| 4396 | brcmf_free_vif(vif); | ||
| 4397 | free_netdev(ndev); | ||
| 4398 | } | ||
| 4399 | |||
| 4388 | static bool brcmf_is_linkup(const struct brcmf_event_msg *e) | 4400 | static bool brcmf_is_linkup(const struct brcmf_event_msg *e) |
| 4389 | { | 4401 | { |
| 4390 | u32 event = e->event_code; | 4402 | u32 event = e->event_code; |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h index d9b2d62b3892..2dc6a074e8ed 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h | |||
| @@ -505,5 +505,6 @@ s32 brcmf_notify_escan_complete(struct brcmf_cfg80211_info *cfg, | |||
| 505 | bool fw_abort); | 505 | bool fw_abort); |
| 506 | void brcmf_set_mpc(struct brcmf_if *ndev, int mpc); | 506 | void brcmf_set_mpc(struct brcmf_if *ndev, int mpc); |
| 507 | void brcmf_abort_scanning(struct brcmf_cfg80211_info *cfg); | 507 | void brcmf_abort_scanning(struct brcmf_cfg80211_info *cfg); |
| 508 | void brcmf_cfg80211_free_netdev(struct net_device *ndev); | ||
| 508 | 509 | ||
| 509 | #endif /* _wl_cfg80211_h_ */ | 510 | #endif /* _wl_cfg80211_h_ */ |
