patches: refresh on kernel v4.16-rc3
[openwrt/staging/blogic.git] / patches / 0079-netdev-destructor / brcmfmac.patch
1 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
2 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
3 @@ -500,6 +500,23 @@ static const struct net_device_ops brcmf
4 .ndo_set_rx_mode = brcmf_netdev_set_multicast_list
5 };
6
7 +#undef netdev_set_priv_destructor
8 +#if LINUX_VERSION_IS_LESS(4,11,9)
9 +#define netdev_set_priv_destructor(_dev, _destructor) \
10 + (_dev)->destructor = (_destructor)
11 +#else
12 +#define netdev_set_priv_destructor(_dev, _destructor) \
13 + (_dev)->priv_destructor = (_destructor)
14 +#endif
15 +
16 +#if LINUX_VERSION_IS_LESS(4,12,0)
17 +static void __brcmf_cfg80211_free_netdev(struct net_device *ndev)
18 +{
19 + brcmf_cfg80211_free_netdev(ndev);
20 + free_netdev(ndev);
21 +}
22 +#endif
23 +
24 int brcmf_net_attach(struct brcmf_if *ifp, bool rtnl_locked)
25 {
26 struct brcmf_pub *drvr = ifp->drvr;
27 @@ -672,7 +689,11 @@ struct brcmf_if *brcmf_add_if(struct brc
28 if (!ndev)
29 return ERR_PTR(-ENOMEM);
30
31 +#if LINUX_VERSION_IS_LESS(4,12,0)
32 + ndev->priv_destructor = __brcmf_cfg80211_free_netdev;
33 +#else
34 ndev->needs_free_netdev = true;
35 +#endif
36 ifp = netdev_priv(ndev);
37 ifp->ndev = ndev;
38 /* store mapping ifidx to bsscfgidx */