usbnet: kaweth: Use net_device_stats from struct net_device
authorTobias Klauser <tklauser@distanz.ch>
Fri, 7 Apr 2017 08:17:38 +0000 (10:17 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 7 Apr 2017 14:03:33 +0000 (07:03 -0700)
Instead of using a private copy of struct net_device_stats in struct
kaweth_device, use stats from struct net_device. Also remove the now
unnecessary .ndo_get_stats function.

Cc: linux-usb@vger.kernel.org
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/kaweth.c

index 876f02f4945eafdc2fb5cfa0f9dcb54d9b498af4..3d8ea18df69608942b03e0dc5292d50ace557799 100644 (file)
@@ -245,8 +245,6 @@ struct kaweth_device
        __u16 packet_filter_bitmap;
 
        struct kaweth_ethernet_configuration configuration;
-
-       struct net_device_stats stats;
 };
 
 /****************************************************************
@@ -598,7 +596,7 @@ static void kaweth_usb_receive(struct urb *urb)
        struct sk_buff *skb;
 
        if (unlikely(status == -EPIPE)) {
-               kaweth->stats.rx_errors++;
+               net->stats.rx_errors++;
                kaweth->end = 1;
                wake_up(&kaweth->term_wait);
                dev_dbg(dev, "Status was -EPIPE.\n");
@@ -613,12 +611,12 @@ static void kaweth_usb_receive(struct urb *urb)
        }
        if (unlikely(status == -EPROTO || status == -ETIME ||
                     status == -EILSEQ)) {
-               kaweth->stats.rx_errors++;
+               net->stats.rx_errors++;
                dev_dbg(dev, "Status was -EPROTO, -ETIME, or -EILSEQ.\n");
                return;
        }
        if (unlikely(status == -EOVERFLOW)) {
-               kaweth->stats.rx_errors++;
+               net->stats.rx_errors++;
                dev_dbg(dev, "Status was -EOVERFLOW.\n");
        }
        spin_lock(&kaweth->device_lock);
@@ -663,8 +661,8 @@ static void kaweth_usb_receive(struct urb *urb)
 
                netif_rx(skb);
 
-               kaweth->stats.rx_packets++;
-               kaweth->stats.rx_bytes += pkt_len;
+               net->stats.rx_packets++;
+               net->stats.rx_bytes += pkt_len;
        }
 
        kaweth_resubmit_rx_urb(kaweth, GFP_ATOMIC);
@@ -810,7 +808,7 @@ static netdev_tx_t kaweth_start_xmit(struct sk_buff *skb,
                dev_kfree_skb_irq(skb);
                skb = copied_skb;
                if (!copied_skb) {
-                       kaweth->stats.tx_errors++;
+                       net->stats.tx_errors++;
                        netif_start_queue(net);
                        spin_unlock_irq(&kaweth->device_lock);
                        return NETDEV_TX_OK;
@@ -834,15 +832,15 @@ static netdev_tx_t kaweth_start_xmit(struct sk_buff *skb,
        {
                dev_warn(&net->dev, "kaweth failed tx_urb %d\n", res);
 skip:
-               kaweth->stats.tx_errors++;
+               net->stats.tx_errors++;
 
                netif_start_queue(net);
                dev_kfree_skb_irq(skb);
        }
        else
        {
-               kaweth->stats.tx_packets++;
-               kaweth->stats.tx_bytes += skb->len;
+               net->stats.tx_packets++;
+               net->stats.tx_bytes += skb->len;
        }
 
        spin_unlock_irq(&kaweth->device_lock);
@@ -911,15 +909,6 @@ static void kaweth_async_set_rx_mode(struct kaweth_device *kaweth)
        }
 }
 
-/****************************************************************
- *     kaweth_netdev_stats
- ****************************************************************/
-static struct net_device_stats *kaweth_netdev_stats(struct net_device *dev)
-{
-       struct kaweth_device *kaweth = netdev_priv(dev);
-       return &kaweth->stats;
-}
-
 /****************************************************************
  *     kaweth_tx_timeout
  ****************************************************************/
@@ -928,7 +917,7 @@ static void kaweth_tx_timeout(struct net_device *net)
        struct kaweth_device *kaweth = netdev_priv(net);
 
        dev_warn(&net->dev, "%s: Tx timed out. Resetting.\n", net->name);
-       kaweth->stats.tx_errors++;
+       net->stats.tx_errors++;
        netif_trans_update(net);
 
        usb_unlink_urb(kaweth->tx_urb);
@@ -981,7 +970,6 @@ static const struct net_device_ops kaweth_netdev_ops = {
        .ndo_start_xmit =               kaweth_start_xmit,
        .ndo_tx_timeout =               kaweth_tx_timeout,
        .ndo_set_rx_mode =              kaweth_set_rx_mode,
-       .ndo_get_stats =                kaweth_netdev_stats,
        .ndo_set_mac_address =          eth_mac_addr,
        .ndo_validate_addr =            eth_validate_addr,
 };