[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
@@ -196,7 +196,6 @@ struct veth_lpar_connection {
|
||||
|
||||
struct veth_port {
|
||||
struct device *dev;
|
||||
struct net_device_stats stats;
|
||||
u64 mac_addr;
|
||||
HvLpIndexMap lpar_map;
|
||||
|
||||
@@ -936,9 +935,6 @@ static void veth_release_connection(struct kobject *kobj)
|
||||
|
||||
static int veth_open(struct net_device *dev)
|
||||
{
|
||||
struct veth_port *port = (struct veth_port *) dev->priv;
|
||||
|
||||
memset(&port->stats, 0, sizeof (port->stats));
|
||||
netif_start_queue(dev);
|
||||
return 0;
|
||||
}
|
||||
@@ -949,13 +945,6 @@ static int veth_close(struct net_device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct net_device_stats *veth_get_stats(struct net_device *dev)
|
||||
{
|
||||
struct veth_port *port = (struct veth_port *) dev->priv;
|
||||
|
||||
return &port->stats;
|
||||
}
|
||||
|
||||
static int veth_change_mtu(struct net_device *dev, int new_mtu)
|
||||
{
|
||||
if ((new_mtu < 68) || (new_mtu > VETH_MAX_MTU))
|
||||
@@ -1084,7 +1073,6 @@ static struct net_device * __init veth_probe_one(int vlan,
|
||||
dev->open = veth_open;
|
||||
dev->hard_start_xmit = veth_start_xmit;
|
||||
dev->stop = veth_close;
|
||||
dev->get_stats = veth_get_stats;
|
||||
dev->change_mtu = veth_change_mtu;
|
||||
dev->set_mac_address = NULL;
|
||||
dev->set_multicast_list = veth_set_multicast_list;
|
||||
@@ -1183,7 +1171,6 @@ static void veth_transmit_to_many(struct sk_buff *skb,
|
||||
HvLpIndexMap lpmask,
|
||||
struct net_device *dev)
|
||||
{
|
||||
struct veth_port *port = (struct veth_port *) dev->priv;
|
||||
int i, success, error;
|
||||
|
||||
success = error = 0;
|
||||
@@ -1199,11 +1186,11 @@ static void veth_transmit_to_many(struct sk_buff *skb,
|
||||
}
|
||||
|
||||
if (error)
|
||||
port->stats.tx_errors++;
|
||||
dev->stats.tx_errors++;
|
||||
|
||||
if (success) {
|
||||
port->stats.tx_packets++;
|
||||
port->stats.tx_bytes += skb->len;
|
||||
dev->stats.tx_packets++;
|
||||
dev->stats.tx_bytes += skb->len;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1541,8 +1528,8 @@ static void veth_receive(struct veth_lpar_connection *cnx,
|
||||
skb->protocol = eth_type_trans(skb, dev);
|
||||
skb->ip_summed = CHECKSUM_NONE;
|
||||
netif_rx(skb); /* send it up */
|
||||
port->stats.rx_packets++;
|
||||
port->stats.rx_bytes += length;
|
||||
dev->stats.rx_packets++;
|
||||
dev->stats.rx_bytes += length;
|
||||
} while (startchunk += nchunks, startchunk < VETH_MAX_FRAMES_PER_MSG);
|
||||
|
||||
/* Ack it */
|
||||
|
Reference in New Issue
Block a user