Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Eric Dumazet and committed by
David S. Miller
81ce790b d3c6e7ad

+9 -24
-1
include/net/irda/irlan_common.h
··· 171 171 int magic; 172 172 struct list_head dev_list; 173 173 struct net_device *dev; /* Ethernet device structure*/ 174 - struct net_device_stats stats; 175 174 176 175 __u32 saddr; /* Source device address */ 177 176 __u32 daddr; /* Destination device address */
+9 -23
net/irda/irlan/irlan_eth.c
··· 45 45 static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb, 46 46 struct net_device *dev); 47 47 static void irlan_eth_set_multicast_list( struct net_device *dev); 48 - static struct net_device_stats *irlan_eth_get_stats(struct net_device *dev); 49 48 50 49 static const struct net_device_ops irlan_eth_netdev_ops = { 51 50 .ndo_open = irlan_eth_open, 52 51 .ndo_stop = irlan_eth_close, 53 52 .ndo_start_xmit = irlan_eth_xmit, 54 - .ndo_get_stats = irlan_eth_get_stats, 55 53 .ndo_set_multicast_list = irlan_eth_set_multicast_list, 56 54 .ndo_change_mtu = eth_change_mtu, 57 55 .ndo_validate_addr = eth_validate_addr, ··· 206 208 * tried :-) DB 207 209 */ 208 210 /* irttp_data_request already free the packet */ 209 - self->stats.tx_dropped++; 211 + dev->stats.tx_dropped++; 210 212 } else { 211 - self->stats.tx_packets++; 212 - self->stats.tx_bytes += len; 213 + dev->stats.tx_packets++; 214 + dev->stats.tx_bytes += len; 213 215 } 214 216 215 217 return NETDEV_TX_OK; ··· 224 226 int irlan_eth_receive(void *instance, void *sap, struct sk_buff *skb) 225 227 { 226 228 struct irlan_cb *self = instance; 229 + struct net_device *dev = self->dev; 227 230 228 231 if (skb == NULL) { 229 - ++self->stats.rx_dropped; 232 + dev->stats.rx_dropped++; 230 233 return 0; 231 234 } 232 235 if (skb->len < ETH_HLEN) { 233 236 IRDA_DEBUG(0, "%s() : IrLAN frame too short (%d)\n", 234 237 __func__, skb->len); 235 - ++self->stats.rx_dropped; 238 + dev->stats.rx_dropped++; 236 239 dev_kfree_skb(skb); 237 240 return 0; 238 241 } ··· 243 244 * might have been previously set by the low level IrDA network 244 245 * device driver 245 246 */ 246 - skb->protocol = eth_type_trans(skb, self->dev); /* Remove eth header */ 247 + skb->protocol = eth_type_trans(skb, dev); /* Remove eth header */ 247 248 248 - self->stats.rx_packets++; 249 - self->stats.rx_bytes += skb->len; 249 + dev->stats.rx_packets++; 250 + dev->stats.rx_bytes += skb->len; 250 251 251 252 netif_rx(skb); /* Eat it! */ 252 253 ··· 346 347 irlan_set_broadcast_filter(self, TRUE); 347 348 else 348 349 irlan_set_broadcast_filter(self, FALSE); 349 - } 350 - 351 - /* 352 - * Function irlan_get_stats (dev) 353 - * 354 - * Get the current statistics for this device 355 - * 356 - */ 357 - static struct net_device_stats *irlan_eth_get_stats(struct net_device *dev) 358 - { 359 - struct irlan_cb *self = netdev_priv(dev); 360 - 361 - return &self->stats; 362 350 }