aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/330-brcmfmac-introduce-brcmf_net_detach-function.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/330-brcmfmac-introduce-brcmf_net_detach-function.patch')
-rw-r--r--package/kernel/mac80211/patches/330-brcmfmac-introduce-brcmf_net_detach-function.patch99
1 files changed, 0 insertions, 99 deletions
diff --git a/package/kernel/mac80211/patches/330-brcmfmac-introduce-brcmf_net_detach-function.patch b/package/kernel/mac80211/patches/330-brcmfmac-introduce-brcmf_net_detach-function.patch
deleted file mode 100644
index 0651a2f027..0000000000
--- a/package/kernel/mac80211/patches/330-brcmfmac-introduce-brcmf_net_detach-function.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From: Arend van Spriel <arend@broadcom.com>
-Date: Wed, 26 Aug 2015 22:15:04 +0200
-Subject: [PATCH] brcmfmac: introduce brcmf_net_detach() function
-
-In case of error during brcmf_bus_start() the network interfaces were
-freed using free_netdev(). However, the interfaces may have additional
-memory allocated which is not freed. The netdev has destructor set to
-brcmf_cfg80211_free_netdev() which frees the additional memory if
-allocated and call free_netdev(). The brcmf_net_detach() either calls
-brcmf_cfg80211_free_netdev() directly or uses unregister_netdev() when
-struct net_device::reg_state indicates the netdev was registered.
-
-Reported-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
-Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
-Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
-Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
-Signed-off-by: Arend van Spriel <arend@broadcom.com>
----
-
---- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
-+++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
-@@ -4747,7 +4747,8 @@ void brcmf_cfg80211_free_netdev(struct n
- ifp = netdev_priv(ndev);
- vif = ifp->vif;
-
-- brcmf_free_vif(vif);
-+ if (vif)
-+ brcmf_free_vif(vif);
- free_netdev(ndev);
- }
-
---- a/drivers/net/wireless/brcm80211/brcmfmac/core.c
-+++ b/drivers/net/wireless/brcm80211/brcmfmac/core.c
-@@ -718,8 +718,6 @@ int brcmf_net_attach(struct brcmf_if *if
- }
-
- brcmf_dbg(INFO, "%s: Broadcom Dongle Host Driver\n", ndev->name);
--
-- ndev->destructor = brcmf_cfg80211_free_netdev;
- return 0;
-
- fail:
-@@ -729,6 +727,14 @@ fail:
- return -EBADE;
- }
-
-+static void brcmf_net_detach(struct net_device *ndev)
-+{
-+ if (ndev->reg_state == NETREG_REGISTERED)
-+ unregister_netdev(ndev);
-+ else
-+ brcmf_cfg80211_free_netdev(ndev);
-+}
-+
- static int brcmf_net_p2p_open(struct net_device *ndev)
- {
- brcmf_dbg(TRACE, "Enter\n");
-@@ -805,8 +811,7 @@ struct brcmf_if *brcmf_add_if(struct brc
- ifp->ndev->name);
- if (ifidx) {
- netif_stop_queue(ifp->ndev);
-- unregister_netdev(ifp->ndev);
-- free_netdev(ifp->ndev);
-+ brcmf_net_detach(ifp->ndev);
- drvr->iflist[bssidx] = NULL;
- } else {
- brcmf_err("ignore IF event\n");
-@@ -828,6 +833,7 @@ struct brcmf_if *brcmf_add_if(struct brc
- if (!ndev)
- return ERR_PTR(-ENOMEM);
-
-+ ndev->destructor = brcmf_cfg80211_free_netdev;
- ifp = netdev_priv(ndev);
- ifp->ndev = ndev;
- /* store mapping ifidx to bssidx */
-@@ -879,8 +885,7 @@ static void brcmf_del_if(struct brcmf_pu
- cancel_work_sync(&ifp->setmacaddr_work);
- cancel_work_sync(&ifp->multicast_work);
- }
-- /* unregister will take care of freeing it */
-- unregister_netdev(ifp->ndev);
-+ brcmf_net_detach(ifp->ndev);
- }
- }
-
-@@ -1056,11 +1061,11 @@ fail:
- brcmf_fws_deinit(drvr);
- }
- if (drvr->iflist[0]) {
-- free_netdev(ifp->ndev);
-+ brcmf_net_detach(ifp->ndev);
- drvr->iflist[0] = NULL;
- }
- if (p2p_ifp) {
-- free_netdev(p2p_ifp->ndev);
-+ brcmf_net_detach(p2p_ifp->ndev);
- drvr->iflist[1] = NULL;
- }
- return ret;