[NET] drivers/net: statistics cleanup #1 -- save memory and shrink code
We now have struct net_device_stats embedded in struct net_device, and the default ->get_stats() hook does the obvious thing for us. Run through drivers/net/* and remove the driver-local storage of statistics, and driver-local ->get_stats() hook where applicable. This was just the low-hanging fruit in drivers/net; plenty more drivers remain to be updated. [ Resolved conflicts with napi_struct changes and fix sunqe build regression... -DaveM ] Signed-off-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
ff8ac60948
commit
09f75cd7bf
@ -795,6 +795,7 @@ spider_net_set_low_watermark(struct spider_net_card *card)
|
||||
static int
|
||||
spider_net_release_tx_chain(struct spider_net_card *card, int brutal)
|
||||
{
|
||||
struct net_device *dev = card->netdev;
|
||||
struct spider_net_descr_chain *chain = &card->tx_chain;
|
||||
struct spider_net_descr *descr;
|
||||
struct spider_net_hw_descr *hwdescr;
|
||||
@ -815,8 +816,8 @@ spider_net_release_tx_chain(struct spider_net_card *card, int brutal)
|
||||
status = spider_net_get_descr_status(hwdescr);
|
||||
switch (status) {
|
||||
case SPIDER_NET_DESCR_COMPLETE:
|
||||
card->netdev_stats.tx_packets++;
|
||||
card->netdev_stats.tx_bytes += descr->skb->len;
|
||||
dev->stats.tx_packets++;
|
||||
dev->stats.tx_bytes += descr->skb->len;
|
||||
break;
|
||||
|
||||
case SPIDER_NET_DESCR_CARDOWNED:
|
||||
@ -835,11 +836,11 @@ spider_net_release_tx_chain(struct spider_net_card *card, int brutal)
|
||||
if (netif_msg_tx_err(card))
|
||||
dev_err(&card->netdev->dev, "forcing end of tx descriptor "
|
||||
"with status x%02x\n", status);
|
||||
card->netdev_stats.tx_errors++;
|
||||
dev->stats.tx_errors++;
|
||||
break;
|
||||
|
||||
default:
|
||||
card->netdev_stats.tx_dropped++;
|
||||
dev->stats.tx_dropped++;
|
||||
if (!brutal) {
|
||||
spin_unlock_irqrestore(&chain->lock, flags);
|
||||
return 1;
|
||||
@ -919,7 +920,7 @@ spider_net_xmit(struct sk_buff *skb, struct net_device *netdev)
|
||||
spider_net_release_tx_chain(card, 0);
|
||||
|
||||
if (spider_net_prepare_tx_descr(card, skb) != 0) {
|
||||
card->netdev_stats.tx_dropped++;
|
||||
netdev->stats.tx_dropped++;
|
||||
netif_stop_queue(netdev);
|
||||
return NETDEV_TX_BUSY;
|
||||
}
|
||||
@ -979,16 +980,12 @@ static void
|
||||
spider_net_pass_skb_up(struct spider_net_descr *descr,
|
||||
struct spider_net_card *card)
|
||||
{
|
||||
struct spider_net_hw_descr *hwdescr= descr->hwdescr;
|
||||
struct sk_buff *skb;
|
||||
struct net_device *netdev;
|
||||
u32 data_status, data_error;
|
||||
struct spider_net_hw_descr *hwdescr = descr->hwdescr;
|
||||
struct sk_buff *skb = descr->skb;
|
||||
struct net_device *netdev = card->netdev;
|
||||
u32 data_status = hwdescr->data_status;
|
||||
u32 data_error = hwdescr->data_error;
|
||||
|
||||
data_status = hwdescr->data_status;
|
||||
data_error = hwdescr->data_error;
|
||||
netdev = card->netdev;
|
||||
|
||||
skb = descr->skb;
|
||||
skb_put(skb, hwdescr->valid_size);
|
||||
|
||||
/* the card seems to add 2 bytes of junk in front
|
||||
@ -1015,8 +1012,8 @@ spider_net_pass_skb_up(struct spider_net_descr *descr,
|
||||
}
|
||||
|
||||
/* update netdevice statistics */
|
||||
card->netdev_stats.rx_packets++;
|
||||
card->netdev_stats.rx_bytes += skb->len;
|
||||
netdev->stats.rx_packets++;
|
||||
netdev->stats.rx_bytes += skb->len;
|
||||
|
||||
/* pass skb up to stack */
|
||||
netif_receive_skb(skb);
|
||||
@ -1184,6 +1181,7 @@ static int spider_net_resync_tail_ptr(struct spider_net_card *card)
|
||||
static int
|
||||
spider_net_decode_one_descr(struct spider_net_card *card)
|
||||
{
|
||||
struct net_device *dev = card->netdev;
|
||||
struct spider_net_descr_chain *chain = &card->rx_chain;
|
||||
struct spider_net_descr *descr = chain->tail;
|
||||
struct spider_net_hw_descr *hwdescr = descr->hwdescr;
|
||||
@ -1210,9 +1208,9 @@ spider_net_decode_one_descr(struct spider_net_card *card)
|
||||
(status == SPIDER_NET_DESCR_PROTECTION_ERROR) ||
|
||||
(status == SPIDER_NET_DESCR_FORCE_END) ) {
|
||||
if (netif_msg_rx_err(card))
|
||||
dev_err(&card->netdev->dev,
|
||||
dev_err(&dev->dev,
|
||||
"dropping RX descriptor with state %d\n", status);
|
||||
card->netdev_stats.rx_dropped++;
|
||||
dev->stats.rx_dropped++;
|
||||
goto bad_desc;
|
||||
}
|
||||
|
||||
@ -1314,20 +1312,6 @@ static int spider_net_poll(struct napi_struct *napi, int budget)
|
||||
return packets_done;
|
||||
}
|
||||
|
||||
/**
|
||||
* spider_net_get_stats - get interface statistics
|
||||
* @netdev: interface device structure
|
||||
*
|
||||
* returns the interface statistics residing in the spider_net_card struct
|
||||
*/
|
||||
static struct net_device_stats *
|
||||
spider_net_get_stats(struct net_device *netdev)
|
||||
{
|
||||
struct spider_net_card *card = netdev_priv(netdev);
|
||||
struct net_device_stats *stats = &card->netdev_stats;
|
||||
return stats;
|
||||
}
|
||||
|
||||
/**
|
||||
* spider_net_change_mtu - changes the MTU of an interface
|
||||
* @netdev: interface device structure
|
||||
@ -2290,7 +2274,6 @@ spider_net_setup_netdev_ops(struct net_device *netdev)
|
||||
netdev->open = &spider_net_open;
|
||||
netdev->stop = &spider_net_stop;
|
||||
netdev->hard_start_xmit = &spider_net_xmit;
|
||||
netdev->get_stats = &spider_net_get_stats;
|
||||
netdev->set_multicast_list = &spider_net_set_multi;
|
||||
netdev->set_mac_address = &spider_net_set_mac;
|
||||
netdev->change_mtu = &spider_net_change_mtu;
|
||||
|
Reference in New Issue
Block a user