net: eth: cpsw: Use net_device_stats from struct net_device
authorTobias Klauser <tklauser@distanz.ch>
Mon, 10 Mar 2014 12:12:23 +0000 (13:12 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 11 Mar 2014 01:53:01 +0000 (21:53 -0400)
Instead of using an own copy of struct net_device_stats in struct
cpsw_priv, use stats from struct net_device. Also remove the thus
unnecessary .ndo_get_stats function, as it just returns dev->stats,
which is the default.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Acked-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ti/cpsw.c

index 53f85dd..543a081 100644 (file)
@@ -378,7 +378,6 @@ struct cpsw_priv {
        u32                             version;
        u32                             coal_intvl;
        u32                             bus_freq_mhz;
-       struct net_device_stats         stats;
        int                             rx_packet_max;
        int                             host_port;
        struct clk                      *clk;
@@ -673,8 +672,8 @@ static void cpsw_tx_handler(void *token, int len, int status)
        if (unlikely(netif_queue_stopped(ndev)))
                netif_wake_queue(ndev);
        cpts_tx_timestamp(priv->cpts, skb);
-       priv->stats.tx_packets++;
-       priv->stats.tx_bytes += len;
+       ndev->stats.tx_packets++;
+       ndev->stats.tx_bytes += len;
        dev_kfree_skb_any(skb);
 }
 
@@ -700,10 +699,10 @@ static void cpsw_rx_handler(void *token, int len, int status)
                cpts_rx_timestamp(priv->cpts, skb);
                skb->protocol = eth_type_trans(skb, ndev);
                netif_receive_skb(skb);
-               priv->stats.rx_bytes += len;
-               priv->stats.rx_packets++;
+               ndev->stats.rx_bytes += len;
+               ndev->stats.rx_packets++;
        } else {
-               priv->stats.rx_dropped++;
+               ndev->stats.rx_dropped++;
                new_skb = skb;
        }
 
@@ -1313,7 +1312,7 @@ static netdev_tx_t cpsw_ndo_start_xmit(struct sk_buff *skb,
 
        if (skb_padto(skb, CPSW_MIN_PACKET_SIZE)) {
                cpsw_err(priv, tx_err, "packet pad failed\n");
-               priv->stats.tx_dropped++;
+               ndev->stats.tx_dropped++;
                return NETDEV_TX_OK;
        }
 
@@ -1337,7 +1336,7 @@ static netdev_tx_t cpsw_ndo_start_xmit(struct sk_buff *skb,
 
        return NETDEV_TX_OK;
 fail:
-       priv->stats.tx_dropped++;
+       ndev->stats.tx_dropped++;
        netif_stop_queue(ndev);
        return NETDEV_TX_BUSY;
 }
@@ -1501,7 +1500,7 @@ static void cpsw_ndo_tx_timeout(struct net_device *ndev)
        struct cpsw_priv *priv = netdev_priv(ndev);
 
        cpsw_err(priv, tx_err, "transmit timeout, restarting dma\n");
-       priv->stats.tx_errors++;
+       ndev->stats.tx_errors++;
        cpsw_intr_disable(priv);
        cpdma_ctlr_int_ctrl(priv->dma, false);
        cpdma_chan_stop(priv->txch);
@@ -1540,12 +1539,6 @@ static int cpsw_ndo_set_mac_address(struct net_device *ndev, void *p)
        return 0;
 }
 
-static struct net_device_stats *cpsw_ndo_get_stats(struct net_device *ndev)
-{
-       struct cpsw_priv *priv = netdev_priv(ndev);
-       return &priv->stats;
-}
-
 #ifdef CONFIG_NET_POLL_CONTROLLER
 static void cpsw_ndo_poll_controller(struct net_device *ndev)
 {
@@ -1638,7 +1631,6 @@ static const struct net_device_ops cpsw_netdev_ops = {
        .ndo_validate_addr      = eth_validate_addr,
        .ndo_change_mtu         = eth_change_mtu,
        .ndo_tx_timeout         = cpsw_ndo_tx_timeout,
-       .ndo_get_stats          = cpsw_ndo_get_stats,
        .ndo_set_rx_mode        = cpsw_ndo_set_rx_mode,
 #ifdef CONFIG_NET_POLL_CONTROLLER
        .ndo_poll_controller    = cpsw_ndo_poll_controller,