|
@@ -418,7 +418,7 @@ static void atl2_intr_rx(struct atl2_adapter *adapter)
|
|
* Check that some rx space is free. If not,
|
|
* Check that some rx space is free. If not,
|
|
* free one and mark stats->rx_dropped++.
|
|
* free one and mark stats->rx_dropped++.
|
|
*/
|
|
*/
|
|
- adapter->net_stats.rx_dropped++;
|
|
|
|
|
|
+ netdev->stats.rx_dropped++;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
skb_reserve(skb, NET_IP_ALIGN);
|
|
skb_reserve(skb, NET_IP_ALIGN);
|
|
@@ -435,20 +435,20 @@ static void atl2_intr_rx(struct atl2_adapter *adapter)
|
|
} else
|
|
} else
|
|
#endif
|
|
#endif
|
|
netif_rx(skb);
|
|
netif_rx(skb);
|
|
- adapter->net_stats.rx_bytes += rx_size;
|
|
|
|
- adapter->net_stats.rx_packets++;
|
|
|
|
|
|
+ netdev->stats.rx_bytes += rx_size;
|
|
|
|
+ netdev->stats.rx_packets++;
|
|
netdev->last_rx = jiffies;
|
|
netdev->last_rx = jiffies;
|
|
} else {
|
|
} else {
|
|
- adapter->net_stats.rx_errors++;
|
|
|
|
|
|
+ netdev->stats.rx_errors++;
|
|
|
|
|
|
if (rxd->status.ok && rxd->status.pkt_size <= 60)
|
|
if (rxd->status.ok && rxd->status.pkt_size <= 60)
|
|
- adapter->net_stats.rx_length_errors++;
|
|
|
|
|
|
+ netdev->stats.rx_length_errors++;
|
|
if (rxd->status.mcast)
|
|
if (rxd->status.mcast)
|
|
- adapter->net_stats.multicast++;
|
|
|
|
|
|
+ netdev->stats.multicast++;
|
|
if (rxd->status.crc)
|
|
if (rxd->status.crc)
|
|
- adapter->net_stats.rx_crc_errors++;
|
|
|
|
|
|
+ netdev->stats.rx_crc_errors++;
|
|
if (rxd->status.align)
|
|
if (rxd->status.align)
|
|
- adapter->net_stats.rx_frame_errors++;
|
|
|
|
|
|
+ netdev->stats.rx_frame_errors++;
|
|
}
|
|
}
|
|
|
|
|
|
/* advance write ptr */
|
|
/* advance write ptr */
|
|
@@ -463,6 +463,7 @@ static void atl2_intr_rx(struct atl2_adapter *adapter)
|
|
|
|
|
|
static void atl2_intr_tx(struct atl2_adapter *adapter)
|
|
static void atl2_intr_tx(struct atl2_adapter *adapter)
|
|
{
|
|
{
|
|
|
|
+ struct net_device *netdev = adapter->netdev;
|
|
u32 txd_read_ptr;
|
|
u32 txd_read_ptr;
|
|
u32 txs_write_ptr;
|
|
u32 txs_write_ptr;
|
|
struct tx_pkt_status *txs;
|
|
struct tx_pkt_status *txs;
|
|
@@ -522,20 +523,20 @@ static void atl2_intr_tx(struct atl2_adapter *adapter)
|
|
|
|
|
|
/* tx statistics: */
|
|
/* tx statistics: */
|
|
if (txs->ok) {
|
|
if (txs->ok) {
|
|
- adapter->net_stats.tx_bytes += txs->pkt_size;
|
|
|
|
- adapter->net_stats.tx_packets++;
|
|
|
|
|
|
+ netdev->stats.tx_bytes += txs->pkt_size;
|
|
|
|
+ netdev->stats.tx_packets++;
|
|
}
|
|
}
|
|
else
|
|
else
|
|
- adapter->net_stats.tx_errors++;
|
|
|
|
|
|
+ netdev->stats.tx_errors++;
|
|
|
|
|
|
if (txs->defer)
|
|
if (txs->defer)
|
|
- adapter->net_stats.collisions++;
|
|
|
|
|
|
+ netdev->stats.collisions++;
|
|
if (txs->abort_col)
|
|
if (txs->abort_col)
|
|
- adapter->net_stats.tx_aborted_errors++;
|
|
|
|
|
|
+ netdev->stats.tx_aborted_errors++;
|
|
if (txs->late_col)
|
|
if (txs->late_col)
|
|
- adapter->net_stats.tx_window_errors++;
|
|
|
|
|
|
+ netdev->stats.tx_window_errors++;
|
|
if (txs->underun)
|
|
if (txs->underun)
|
|
- adapter->net_stats.tx_fifo_errors++;
|
|
|
|
|
|
+ netdev->stats.tx_fifo_errors++;
|
|
} while (1);
|
|
} while (1);
|
|
|
|
|
|
if (free_hole) {
|
|
if (free_hole) {
|
|
@@ -621,7 +622,7 @@ static irqreturn_t atl2_intr(int irq, void *data)
|
|
|
|
|
|
/* link event */
|
|
/* link event */
|
|
if (status & (ISR_PHY | ISR_MANUAL)) {
|
|
if (status & (ISR_PHY | ISR_MANUAL)) {
|
|
- adapter->net_stats.tx_carrier_errors++;
|
|
|
|
|
|
+ adapter->netdev->stats.tx_carrier_errors++;
|
|
atl2_check_for_link(adapter);
|
|
atl2_check_for_link(adapter);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -899,19 +900,6 @@ static int atl2_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
|
|
return NETDEV_TX_OK;
|
|
return NETDEV_TX_OK;
|
|
}
|
|
}
|
|
|
|
|
|
-/*
|
|
|
|
- * atl2_get_stats - Get System Network Statistics
|
|
|
|
- * @netdev: network interface device structure
|
|
|
|
- *
|
|
|
|
- * Returns the address of the device statistics structure.
|
|
|
|
- * The statistics are actually updated from the timer callback.
|
|
|
|
- */
|
|
|
|
-static struct net_device_stats *atl2_get_stats(struct net_device *netdev)
|
|
|
|
-{
|
|
|
|
- struct atl2_adapter *adapter = netdev_priv(netdev);
|
|
|
|
- return &adapter->net_stats;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* atl2_change_mtu - Change the Maximum Transfer Unit
|
|
* atl2_change_mtu - Change the Maximum Transfer Unit
|
|
* @netdev: network interface device structure
|
|
* @netdev: network interface device structure
|
|
@@ -1050,16 +1038,18 @@ static void atl2_tx_timeout(struct net_device *netdev)
|
|
static void atl2_watchdog(unsigned long data)
|
|
static void atl2_watchdog(unsigned long data)
|
|
{
|
|
{
|
|
struct atl2_adapter *adapter = (struct atl2_adapter *) data;
|
|
struct atl2_adapter *adapter = (struct atl2_adapter *) data;
|
|
- u32 drop_rxd, drop_rxs;
|
|
|
|
- unsigned long flags;
|
|
|
|
|
|
|
|
if (!test_bit(__ATL2_DOWN, &adapter->flags)) {
|
|
if (!test_bit(__ATL2_DOWN, &adapter->flags)) {
|
|
|
|
+ u32 drop_rxd, drop_rxs;
|
|
|
|
+ unsigned long flags;
|
|
|
|
+
|
|
spin_lock_irqsave(&adapter->stats_lock, flags);
|
|
spin_lock_irqsave(&adapter->stats_lock, flags);
|
|
drop_rxd = ATL2_READ_REG(&adapter->hw, REG_STS_RXD_OV);
|
|
drop_rxd = ATL2_READ_REG(&adapter->hw, REG_STS_RXD_OV);
|
|
drop_rxs = ATL2_READ_REG(&adapter->hw, REG_STS_RXS_OV);
|
|
drop_rxs = ATL2_READ_REG(&adapter->hw, REG_STS_RXS_OV);
|
|
- adapter->net_stats.rx_over_errors += (drop_rxd+drop_rxs);
|
|
|
|
spin_unlock_irqrestore(&adapter->stats_lock, flags);
|
|
spin_unlock_irqrestore(&adapter->stats_lock, flags);
|
|
|
|
|
|
|
|
+ adapter->netdev->stats.rx_over_errors += drop_rxd + drop_rxs;
|
|
|
|
+
|
|
/* Reset the timer */
|
|
/* Reset the timer */
|
|
mod_timer(&adapter->watchdog_timer, jiffies + 4 * HZ);
|
|
mod_timer(&adapter->watchdog_timer, jiffies + 4 * HZ);
|
|
}
|
|
}
|
|
@@ -1396,7 +1386,6 @@ static int __devinit atl2_probe(struct pci_dev *pdev,
|
|
netdev->open = &atl2_open;
|
|
netdev->open = &atl2_open;
|
|
netdev->stop = &atl2_close;
|
|
netdev->stop = &atl2_close;
|
|
netdev->hard_start_xmit = &atl2_xmit_frame;
|
|
netdev->hard_start_xmit = &atl2_xmit_frame;
|
|
- netdev->get_stats = &atl2_get_stats;
|
|
|
|
netdev->set_multicast_list = &atl2_set_multi;
|
|
netdev->set_multicast_list = &atl2_set_multi;
|
|
netdev->set_mac_address = &atl2_set_mac;
|
|
netdev->set_mac_address = &atl2_set_mac;
|
|
netdev->change_mtu = &atl2_change_mtu;
|
|
netdev->change_mtu = &atl2_change_mtu;
|