irda: use net_device_stats from struct net_device
Eric Dumazet [Thu, 19 Aug 2010 23:51:33 +0000 (23:51 +0000)]
struct net_device has its own struct net_device_stats member, so use
this one instead of a private copy in the irlan_cb struct.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

include/net/irda/irlan_common.h
net/irda/irlan/irlan_eth.c

index 73cacb3..0af8b8d 100644 (file)
@@ -171,7 +171,6 @@ struct irlan_cb {
        int    magic;
        struct list_head  dev_list;
        struct net_device *dev;        /* Ethernet device structure*/
-       struct net_device_stats stats;
 
        __u32 saddr;               /* Source device address */
        __u32 daddr;               /* Destination device address */
index 5bb8353..8ee1ff6 100644 (file)
@@ -45,13 +45,11 @@ static int  irlan_eth_close(struct net_device *dev);
 static netdev_tx_t  irlan_eth_xmit(struct sk_buff *skb,
                                         struct net_device *dev);
 static void irlan_eth_set_multicast_list( struct net_device *dev);
-static struct net_device_stats *irlan_eth_get_stats(struct net_device *dev);
 
 static const struct net_device_ops irlan_eth_netdev_ops = {
        .ndo_open               = irlan_eth_open,
        .ndo_stop               = irlan_eth_close,
        .ndo_start_xmit         = irlan_eth_xmit,
-       .ndo_get_stats          = irlan_eth_get_stats,
        .ndo_set_multicast_list = irlan_eth_set_multicast_list,
        .ndo_change_mtu         = eth_change_mtu,
        .ndo_validate_addr      = eth_validate_addr,
@@ -208,10 +206,10 @@ static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb,
                 * tried :-) DB
                 */
                /* irttp_data_request already free the packet */
-               self->stats.tx_dropped++;
+               dev->stats.tx_dropped++;
        } else {
-               self->stats.tx_packets++;
-               self->stats.tx_bytes += len;
+               dev->stats.tx_packets++;
+               dev->stats.tx_bytes += len;
        }
 
        return NETDEV_TX_OK;
@@ -226,15 +224,16 @@ static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb,
 int irlan_eth_receive(void *instance, void *sap, struct sk_buff *skb)
 {
        struct irlan_cb *self = instance;
+       struct net_device *dev = self->dev;
 
        if (skb == NULL) {
-               ++self->stats.rx_dropped;
+               dev->stats.rx_dropped++;
                return 0;
        }
        if (skb->len < ETH_HLEN) {
                IRDA_DEBUG(0, "%s() : IrLAN frame too short (%d)\n",
                           __func__, skb->len);
-               ++self->stats.rx_dropped;
+               dev->stats.rx_dropped++;
                dev_kfree_skb(skb);
                return 0;
        }
@@ -244,10 +243,10 @@ int irlan_eth_receive(void *instance, void *sap, struct sk_buff *skb)
         * might have been previously set by the low level IrDA network
         * device driver
         */
-       skb->protocol = eth_type_trans(skb, self->dev); /* Remove eth header */
+       skb->protocol = eth_type_trans(skb, dev); /* Remove eth header */
 
-       self->stats.rx_packets++;
-       self->stats.rx_bytes += skb->len;
+       dev->stats.rx_packets++;
+       dev->stats.rx_bytes += skb->len;
 
        netif_rx(skb);   /* Eat it! */
 
@@ -348,16 +347,3 @@ static void irlan_eth_set_multicast_list(struct net_device *dev)
        else
                irlan_set_broadcast_filter(self, FALSE);
 }
-
-/*
- * Function irlan_get_stats (dev)
- *
- *    Get the current statistics for this device
- *
- */
-static struct net_device_stats *irlan_eth_get_stats(struct net_device *dev)
-{
-       struct irlan_cb *self = netdev_priv(dev);
-
-       return &self->stats;
-}