|
@@ -1360,13 +1360,6 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
|
|
goto err_undo_flags;
|
|
goto err_undo_flags;
|
|
}
|
|
}
|
|
|
|
|
|
- if (slave_dev->get_stats == NULL) {
|
|
|
|
- printk(KERN_NOTICE DRV_NAME
|
|
|
|
- ": %s: the driver for slave device %s does not provide "
|
|
|
|
- "get_stats function, network statistics will be "
|
|
|
|
- "inaccurate.\n", bond_dev->name, slave_dev->name);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
new_slave = kzalloc(sizeof(struct slave), GFP_KERNEL);
|
|
new_slave = kzalloc(sizeof(struct slave), GFP_KERNEL);
|
|
if (!new_slave) {
|
|
if (!new_slave) {
|
|
res = -ENOMEM;
|
|
res = -ENOMEM;
|
|
@@ -3641,33 +3634,31 @@ static struct net_device_stats *bond_get_stats(struct net_device *bond_dev)
|
|
|
|
|
|
bond_for_each_slave(bond, slave, i) {
|
|
bond_for_each_slave(bond, slave, i) {
|
|
sstats = slave->dev->get_stats(slave->dev);
|
|
sstats = slave->dev->get_stats(slave->dev);
|
|
- if (sstats) {
|
|
|
|
- stats->rx_packets += sstats->rx_packets;
|
|
|
|
- stats->rx_bytes += sstats->rx_bytes;
|
|
|
|
- stats->rx_errors += sstats->rx_errors;
|
|
|
|
- stats->rx_dropped += sstats->rx_dropped;
|
|
|
|
-
|
|
|
|
- stats->tx_packets += sstats->tx_packets;
|
|
|
|
- stats->tx_bytes += sstats->tx_bytes;
|
|
|
|
- stats->tx_errors += sstats->tx_errors;
|
|
|
|
- stats->tx_dropped += sstats->tx_dropped;
|
|
|
|
-
|
|
|
|
- stats->multicast += sstats->multicast;
|
|
|
|
- stats->collisions += sstats->collisions;
|
|
|
|
-
|
|
|
|
- stats->rx_length_errors += sstats->rx_length_errors;
|
|
|
|
- stats->rx_over_errors += sstats->rx_over_errors;
|
|
|
|
- stats->rx_crc_errors += sstats->rx_crc_errors;
|
|
|
|
- stats->rx_frame_errors += sstats->rx_frame_errors;
|
|
|
|
- stats->rx_fifo_errors += sstats->rx_fifo_errors;
|
|
|
|
- stats->rx_missed_errors += sstats->rx_missed_errors;
|
|
|
|
-
|
|
|
|
- stats->tx_aborted_errors += sstats->tx_aborted_errors;
|
|
|
|
- stats->tx_carrier_errors += sstats->tx_carrier_errors;
|
|
|
|
- stats->tx_fifo_errors += sstats->tx_fifo_errors;
|
|
|
|
- stats->tx_heartbeat_errors += sstats->tx_heartbeat_errors;
|
|
|
|
- stats->tx_window_errors += sstats->tx_window_errors;
|
|
|
|
- }
|
|
|
|
|
|
+ stats->rx_packets += sstats->rx_packets;
|
|
|
|
+ stats->rx_bytes += sstats->rx_bytes;
|
|
|
|
+ stats->rx_errors += sstats->rx_errors;
|
|
|
|
+ stats->rx_dropped += sstats->rx_dropped;
|
|
|
|
+
|
|
|
|
+ stats->tx_packets += sstats->tx_packets;
|
|
|
|
+ stats->tx_bytes += sstats->tx_bytes;
|
|
|
|
+ stats->tx_errors += sstats->tx_errors;
|
|
|
|
+ stats->tx_dropped += sstats->tx_dropped;
|
|
|
|
+
|
|
|
|
+ stats->multicast += sstats->multicast;
|
|
|
|
+ stats->collisions += sstats->collisions;
|
|
|
|
+
|
|
|
|
+ stats->rx_length_errors += sstats->rx_length_errors;
|
|
|
|
+ stats->rx_over_errors += sstats->rx_over_errors;
|
|
|
|
+ stats->rx_crc_errors += sstats->rx_crc_errors;
|
|
|
|
+ stats->rx_frame_errors += sstats->rx_frame_errors;
|
|
|
|
+ stats->rx_fifo_errors += sstats->rx_fifo_errors;
|
|
|
|
+ stats->rx_missed_errors += sstats->rx_missed_errors;
|
|
|
|
+
|
|
|
|
+ stats->tx_aborted_errors += sstats->tx_aborted_errors;
|
|
|
|
+ stats->tx_carrier_errors += sstats->tx_carrier_errors;
|
|
|
|
+ stats->tx_fifo_errors += sstats->tx_fifo_errors;
|
|
|
|
+ stats->tx_heartbeat_errors += sstats->tx_heartbeat_errors;
|
|
|
|
+ stats->tx_window_errors += sstats->tx_window_errors;
|
|
}
|
|
}
|
|
|
|
|
|
read_unlock_bh(&bond->lock);
|
|
read_unlock_bh(&bond->lock);
|