323-0001-brcmfmac-Use-net_device_stats-from-struct-net_device.patch 3.7 KB

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