|
@@ -501,13 +501,13 @@ static void read_bulk_callback(struct urb *urb)
|
|
|
if (rx_status & 0x1e) {
|
|
|
netif_dbg(pegasus, rx_err, net,
|
|
|
"RX packet error %x\n", rx_status);
|
|
|
- pegasus->stats.rx_errors++;
|
|
|
+ net->stats.rx_errors++;
|
|
|
if (rx_status & 0x06) /* long or runt */
|
|
|
- pegasus->stats.rx_length_errors++;
|
|
|
+ net->stats.rx_length_errors++;
|
|
|
if (rx_status & 0x08)
|
|
|
- pegasus->stats.rx_crc_errors++;
|
|
|
+ net->stats.rx_crc_errors++;
|
|
|
if (rx_status & 0x10) /* extra bits */
|
|
|
- pegasus->stats.rx_frame_errors++;
|
|
|
+ net->stats.rx_frame_errors++;
|
|
|
goto goon;
|
|
|
}
|
|
|
if (pegasus->chip == 0x8513) {
|
|
@@ -535,8 +535,8 @@ static void read_bulk_callback(struct urb *urb)
|
|
|
skb_put(pegasus->rx_skb, pkt_len);
|
|
|
pegasus->rx_skb->protocol = eth_type_trans(pegasus->rx_skb, net);
|
|
|
netif_rx(pegasus->rx_skb);
|
|
|
- pegasus->stats.rx_packets++;
|
|
|
- pegasus->stats.rx_bytes += pkt_len;
|
|
|
+ net->stats.rx_packets++;
|
|
|
+ net->stats.rx_bytes += pkt_len;
|
|
|
|
|
|
if (pegasus->flags & PEGASUS_UNPLUG)
|
|
|
return;
|
|
@@ -670,13 +670,13 @@ static void intr_callback(struct urb *urb)
|
|
|
/* byte 0 == tx_status1, reg 2B */
|
|
|
if (d[0] & (TX_UNDERRUN|EXCESSIVE_COL
|
|
|
|LATE_COL|JABBER_TIMEOUT)) {
|
|
|
- pegasus->stats.tx_errors++;
|
|
|
+ net->stats.tx_errors++;
|
|
|
if (d[0] & TX_UNDERRUN)
|
|
|
- pegasus->stats.tx_fifo_errors++;
|
|
|
+ net->stats.tx_fifo_errors++;
|
|
|
if (d[0] & (EXCESSIVE_COL | JABBER_TIMEOUT))
|
|
|
- pegasus->stats.tx_aborted_errors++;
|
|
|
+ net->stats.tx_aborted_errors++;
|
|
|
if (d[0] & LATE_COL)
|
|
|
- pegasus->stats.tx_window_errors++;
|
|
|
+ net->stats.tx_window_errors++;
|
|
|
}
|
|
|
|
|
|
/* d[5].LINK_STATUS lies on some adapters.
|
|
@@ -685,7 +685,7 @@ static void intr_callback(struct urb *urb)
|
|
|
*/
|
|
|
|
|
|
/* bytes 3-4 == rx_lostpkt, reg 2E/2F */
|
|
|
- pegasus->stats.rx_missed_errors += ((d[3] & 0x7f) << 8) | d[4];
|
|
|
+ net->stats.rx_missed_errors += ((d[3] & 0x7f) << 8) | d[4];
|
|
|
}
|
|
|
|
|
|
res = usb_submit_urb(urb, GFP_ATOMIC);
|
|
@@ -701,7 +701,7 @@ static void pegasus_tx_timeout(struct net_device *net)
|
|
|
pegasus_t *pegasus = netdev_priv(net);
|
|
|
netif_warn(pegasus, timer, net, "tx timeout\n");
|
|
|
usb_unlink_urb(pegasus->tx_urb);
|
|
|
- pegasus->stats.tx_errors++;
|
|
|
+ net->stats.tx_errors++;
|
|
|
}
|
|
|
|
|
|
static netdev_tx_t pegasus_start_xmit(struct sk_buff *skb,
|
|
@@ -731,23 +731,18 @@ static netdev_tx_t pegasus_start_xmit(struct sk_buff *skb,
|
|
|
netif_device_detach(pegasus->net);
|
|
|
break;
|
|
|
default:
|
|
|
- pegasus->stats.tx_errors++;
|
|
|
+ net->stats.tx_errors++;
|
|
|
netif_start_queue(net);
|
|
|
}
|
|
|
} else {
|
|
|
- pegasus->stats.tx_packets++;
|
|
|
- pegasus->stats.tx_bytes += skb->len;
|
|
|
+ net->stats.tx_packets++;
|
|
|
+ net->stats.tx_bytes += skb->len;
|
|
|
}
|
|
|
dev_kfree_skb(skb);
|
|
|
|
|
|
return NETDEV_TX_OK;
|
|
|
}
|
|
|
|
|
|
-static struct net_device_stats *pegasus_netdev_stats(struct net_device *dev)
|
|
|
-{
|
|
|
- return &((pegasus_t *) netdev_priv(dev))->stats;
|
|
|
-}
|
|
|
-
|
|
|
static inline void disable_net_traffic(pegasus_t *pegasus)
|
|
|
{
|
|
|
__le16 tmp = cpu_to_le16(0);
|
|
@@ -1294,7 +1289,6 @@ static const struct net_device_ops pegasus_netdev_ops = {
|
|
|
.ndo_do_ioctl = pegasus_ioctl,
|
|
|
.ndo_start_xmit = pegasus_start_xmit,
|
|
|
.ndo_set_rx_mode = pegasus_set_multicast,
|
|
|
- .ndo_get_stats = pegasus_netdev_stats,
|
|
|
.ndo_tx_timeout = pegasus_tx_timeout,
|
|
|
.ndo_set_mac_address = eth_mac_addr,
|
|
|
.ndo_validate_addr = eth_validate_addr,
|