提交 81ce790b 编写于 作者: E Eric Dumazet 提交者: David S. Miller

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: NEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 d3c6e7ad
...@@ -171,7 +171,6 @@ struct irlan_cb { ...@@ -171,7 +171,6 @@ struct irlan_cb {
int magic; int magic;
struct list_head dev_list; struct list_head dev_list;
struct net_device *dev; /* Ethernet device structure*/ struct net_device *dev; /* Ethernet device structure*/
struct net_device_stats stats;
__u32 saddr; /* Source device address */ __u32 saddr; /* Source device address */
__u32 daddr; /* Destination device address */ __u32 daddr; /* Destination device address */
......
...@@ -45,13 +45,11 @@ static int irlan_eth_close(struct net_device *dev); ...@@ -45,13 +45,11 @@ static int irlan_eth_close(struct net_device *dev);
static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb, static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb,
struct net_device *dev); struct net_device *dev);
static void irlan_eth_set_multicast_list( 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 = { static const struct net_device_ops irlan_eth_netdev_ops = {
.ndo_open = irlan_eth_open, .ndo_open = irlan_eth_open,
.ndo_stop = irlan_eth_close, .ndo_stop = irlan_eth_close,
.ndo_start_xmit = irlan_eth_xmit, .ndo_start_xmit = irlan_eth_xmit,
.ndo_get_stats = irlan_eth_get_stats,
.ndo_set_multicast_list = irlan_eth_set_multicast_list, .ndo_set_multicast_list = irlan_eth_set_multicast_list,
.ndo_change_mtu = eth_change_mtu, .ndo_change_mtu = eth_change_mtu,
.ndo_validate_addr = eth_validate_addr, .ndo_validate_addr = eth_validate_addr,
...@@ -208,10 +206,10 @@ static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb, ...@@ -208,10 +206,10 @@ static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb,
* tried :-) DB * tried :-) DB
*/ */
/* irttp_data_request already free the packet */ /* irttp_data_request already free the packet */
self->stats.tx_dropped++; dev->stats.tx_dropped++;
} else { } else {
self->stats.tx_packets++; dev->stats.tx_packets++;
self->stats.tx_bytes += len; dev->stats.tx_bytes += len;
} }
return NETDEV_TX_OK; return NETDEV_TX_OK;
...@@ -226,15 +224,16 @@ static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb, ...@@ -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) int irlan_eth_receive(void *instance, void *sap, struct sk_buff *skb)
{ {
struct irlan_cb *self = instance; struct irlan_cb *self = instance;
struct net_device *dev = self->dev;
if (skb == NULL) { if (skb == NULL) {
++self->stats.rx_dropped; dev->stats.rx_dropped++;
return 0; return 0;
} }
if (skb->len < ETH_HLEN) { if (skb->len < ETH_HLEN) {
IRDA_DEBUG(0, "%s() : IrLAN frame too short (%d)\n", IRDA_DEBUG(0, "%s() : IrLAN frame too short (%d)\n",
__func__, skb->len); __func__, skb->len);
++self->stats.rx_dropped; dev->stats.rx_dropped++;
dev_kfree_skb(skb); dev_kfree_skb(skb);
return 0; return 0;
} }
...@@ -244,10 +243,10 @@ int irlan_eth_receive(void *instance, void *sap, struct sk_buff *skb) ...@@ -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 * might have been previously set by the low level IrDA network
* device driver * 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++; dev->stats.rx_packets++;
self->stats.rx_bytes += skb->len; dev->stats.rx_bytes += skb->len;
netif_rx(skb); /* Eat it! */ netif_rx(skb); /* Eat it! */
...@@ -348,16 +347,3 @@ static void irlan_eth_set_multicast_list(struct net_device *dev) ...@@ -348,16 +347,3 @@ static void irlan_eth_set_multicast_list(struct net_device *dev)
else else
irlan_set_broadcast_filter(self, FALSE); 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;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册