mac80211: rt2x00: reorder patches and prepare for MT7620 external PA
[oweals/openwrt.git] / package / kernel / mac80211 / patches / 323-0001-brcmfmac-Use-net_device_stats-from-struct-net_device.patch
1 From 91b632803ee4e47c5a5c4dc3d8bf5abf9c16107a Mon Sep 17 00:00:00 2001
2 From: Tobias Klauser <tklauser@distanz.ch>
3 Date: Mon, 13 Feb 2017 11:14:09 +0100
4 Subject: [PATCH] brcmfmac: Use net_device_stats from struct net_device
5
6 Instead of using a private copy of struct net_device_stats in struct
7 brcm_if, use stats from struct net_device.  Also remove the now
8 unnecessary .ndo_get_stats function.
9
10 Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
11 Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
12 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
13 ---
14  .../wireless/broadcom/brcm80211/brcmfmac/core.c    | 26 +++++++---------------
15  .../wireless/broadcom/brcm80211/brcmfmac/core.h    |  2 --
16  2 files changed, 8 insertions(+), 20 deletions(-)
17
18 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
19 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
20 @@ -249,10 +249,10 @@ static netdev_tx_t brcmf_netdev_start_xm
21  
22  done:
23         if (ret) {
24 -               ifp->stats.tx_dropped++;
25 +               ndev->stats.tx_dropped++;
26         } else {
27 -               ifp->stats.tx_packets++;
28 -               ifp->stats.tx_bytes += skb->len;
29 +               ndev->stats.tx_packets++;
30 +               ndev->stats.tx_bytes += skb->len;
31         }
32  
33         /* Return ok: we always eat the packet */
34 @@ -296,15 +296,15 @@ void brcmf_txflowblock(struct device *de
35  void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb)
36  {
37         if (skb->pkt_type == PACKET_MULTICAST)
38 -               ifp->stats.multicast++;
39 +               ifp->ndev->stats.multicast++;
40  
41         if (!(ifp->ndev->flags & IFF_UP)) {
42                 brcmu_pkt_buf_free_skb(skb);
43                 return;
44         }
45  
46 -       ifp->stats.rx_bytes += skb->len;
47 -       ifp->stats.rx_packets++;
48 +       ifp->ndev->stats.rx_bytes += skb->len;
49 +       ifp->ndev->stats.rx_packets++;
50  
51         brcmf_dbg(DATA, "rx proto=0x%X\n", ntohs(skb->protocol));
52         if (in_interrupt())
53 @@ -327,7 +327,7 @@ static int brcmf_rx_hdrpull(struct brcmf
54  
55         if (ret || !(*ifp) || !(*ifp)->ndev) {
56                 if (ret != -ENODATA && *ifp)
57 -                       (*ifp)->stats.rx_errors++;
58 +                       (*ifp)->ndev->stats.rx_errors++;
59                 brcmu_pkt_buf_free_skb(skb);
60                 return -ENODATA;
61         }
62 @@ -388,7 +388,7 @@ void brcmf_txfinalize(struct brcmf_if *i
63         }
64  
65         if (!success)
66 -               ifp->stats.tx_errors++;
67 +               ifp->ndev->stats.tx_errors++;
68  
69         brcmu_pkt_buf_free_skb(txp);
70  }
71 @@ -411,15 +411,6 @@ void brcmf_txcomplete(struct device *dev
72         }
73  }
74  
75 -static struct net_device_stats *brcmf_netdev_get_stats(struct net_device *ndev)
76 -{
77 -       struct brcmf_if *ifp = netdev_priv(ndev);
78 -
79 -       brcmf_dbg(TRACE, "Enter, bsscfgidx=%d\n", ifp->bsscfgidx);
80 -
81 -       return &ifp->stats;
82 -}
83 -
84  static void brcmf_ethtool_get_drvinfo(struct net_device *ndev,
85                                     struct ethtool_drvinfo *info)
86  {
87 @@ -492,7 +483,6 @@ static int brcmf_netdev_open(struct net_
88  static const struct net_device_ops brcmf_netdev_ops_pri = {
89         .ndo_open = brcmf_netdev_open,
90         .ndo_stop = brcmf_netdev_stop,
91 -       .ndo_get_stats = brcmf_netdev_get_stats,
92         .ndo_start_xmit = brcmf_netdev_start_xmit,
93         .ndo_set_mac_address = brcmf_netdev_set_mac_address,
94         .ndo_set_rx_mode = brcmf_netdev_set_multicast_list
95 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
96 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
97 @@ -171,7 +171,6 @@ enum brcmf_netif_stop_reason {
98   * @drvr: points to device related information.
99   * @vif: points to cfg80211 specific interface information.
100   * @ndev: associated network device.
101 - * @stats: interface specific network statistics.
102   * @multicast_work: worker object for multicast provisioning.
103   * @ndoffload_work: worker object for neighbor discovery offload configuration.
104   * @fws_desc: interface specific firmware-signalling descriptor.
105 @@ -187,7 +186,6 @@ struct brcmf_if {
106         struct brcmf_pub *drvr;
107         struct brcmf_cfg80211_vif *vif;
108         struct net_device *ndev;
109 -       struct net_device_stats stats;
110         struct work_struct multicast_work;
111         struct work_struct ndoffload_work;
112         struct brcmf_fws_mac_descriptor *fws_desc;