[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
@@ -53,7 +53,6 @@ struct rionet_private {
|
||||
struct rio_mport *mport;
|
||||
struct sk_buff *rx_skb[RIONET_RX_RING_SIZE];
|
||||
struct sk_buff *tx_skb[RIONET_TX_RING_SIZE];
|
||||
struct net_device_stats stats;
|
||||
int rx_slot;
|
||||
int tx_slot;
|
||||
int tx_cnt;
|
||||
@@ -91,12 +90,6 @@ static struct rio_dev *rionet_active[RIO_MAX_ROUTE_ENTRIES];
|
||||
#define RIONET_MAC_MATCH(x) (*(u32 *)x == 0x00010001)
|
||||
#define RIONET_GET_DESTID(x) (*(u16 *)(x + 4))
|
||||
|
||||
static struct net_device_stats *rionet_stats(struct net_device *ndev)
|
||||
{
|
||||
struct rionet_private *rnet = ndev->priv;
|
||||
return &rnet->stats;
|
||||
}
|
||||
|
||||
static int rionet_rx_clean(struct net_device *ndev)
|
||||
{
|
||||
int i;
|
||||
@@ -120,15 +113,15 @@ static int rionet_rx_clean(struct net_device *ndev)
|
||||
error = netif_rx(rnet->rx_skb[i]);
|
||||
|
||||
if (error == NET_RX_DROP) {
|
||||
rnet->stats.rx_dropped++;
|
||||
ndev->stats.rx_dropped++;
|
||||
} else if (error == NET_RX_BAD) {
|
||||
if (netif_msg_rx_err(rnet))
|
||||
printk(KERN_WARNING "%s: bad rx packet\n",
|
||||
DRV_NAME);
|
||||
rnet->stats.rx_errors++;
|
||||
ndev->stats.rx_errors++;
|
||||
} else {
|
||||
rnet->stats.rx_packets++;
|
||||
rnet->stats.rx_bytes += RIO_MAX_MSG_SIZE;
|
||||
ndev->stats.rx_packets++;
|
||||
ndev->stats.rx_bytes += RIO_MAX_MSG_SIZE;
|
||||
}
|
||||
|
||||
} while ((i = (i + 1) % RIONET_RX_RING_SIZE) != rnet->rx_slot);
|
||||
@@ -163,8 +156,8 @@ static int rionet_queue_tx_msg(struct sk_buff *skb, struct net_device *ndev,
|
||||
rio_add_outb_message(rnet->mport, rdev, 0, skb->data, skb->len);
|
||||
rnet->tx_skb[rnet->tx_slot] = skb;
|
||||
|
||||
rnet->stats.tx_packets++;
|
||||
rnet->stats.tx_bytes += skb->len;
|
||||
ndev->stats.tx_packets++;
|
||||
ndev->stats.tx_bytes += skb->len;
|
||||
|
||||
if (++rnet->tx_cnt == RIONET_TX_RING_SIZE)
|
||||
netif_stop_queue(ndev);
|
||||
@@ -466,7 +459,6 @@ static int rionet_setup_netdev(struct rio_mport *mport)
|
||||
ndev->open = &rionet_open;
|
||||
ndev->hard_start_xmit = &rionet_start_xmit;
|
||||
ndev->stop = &rionet_close;
|
||||
ndev->get_stats = &rionet_stats;
|
||||
ndev->mtu = RIO_MAX_MSG_SIZE - 14;
|
||||
ndev->features = NETIF_F_LLTX;
|
||||
SET_ETHTOOL_OPS(ndev, &rionet_ethtool_ops);
|
||||
|
||||
Reference in New Issue
Block a user