81567d87579aa6870b0862758acc692852cd369e
[openwrt/staging/lynxis.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;