irda: use net_device_stats from struct net_device
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>
This commit is contained in:
parent
d3c6e7ad09
commit
81ce790bd7
2 changed files with 9 additions and 24 deletions
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue