提交 edc4ae08 编写于 作者: S Stephen Hemminger 提交者: David S. Miller

usbnet: convert catc to internal net_device_stats

Signed-off-by: NStephen Hemminger <shemminger@vyatta.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 94ffab6d
...@@ -163,7 +163,6 @@ struct catc { ...@@ -163,7 +163,6 @@ struct catc {
struct net_device *netdev; struct net_device *netdev;
struct usb_device *usbdev; struct usb_device *usbdev;
struct net_device_stats stats;
unsigned long flags; unsigned long flags;
unsigned int tx_ptr, tx_idx; unsigned int tx_ptr, tx_idx;
...@@ -245,8 +244,8 @@ static void catc_rx_done(struct urb *urb) ...@@ -245,8 +244,8 @@ static void catc_rx_done(struct urb *urb)
if(!catc->is_f5u011) { if(!catc->is_f5u011) {
pkt_len = le16_to_cpup((__le16*)pkt_start); pkt_len = le16_to_cpup((__le16*)pkt_start);
if (pkt_len > urb->actual_length) { if (pkt_len > urb->actual_length) {
catc->stats.rx_length_errors++; catc->netdev->stats.rx_length_errors++;
catc->stats.rx_errors++; catc->netdev->stats.rx_errors++;
break; break;
} }
} else { } else {
...@@ -262,8 +261,8 @@ static void catc_rx_done(struct urb *urb) ...@@ -262,8 +261,8 @@ static void catc_rx_done(struct urb *urb)
skb->protocol = eth_type_trans(skb, catc->netdev); skb->protocol = eth_type_trans(skb, catc->netdev);
netif_rx(skb); netif_rx(skb);
catc->stats.rx_packets++; catc->netdev->stats.rx_packets++;
catc->stats.rx_bytes += pkt_len; catc->netdev->stats.rx_bytes += pkt_len;
/* F5U011 only does one packet per RX */ /* F5U011 only does one packet per RX */
if (catc->is_f5u011) if (catc->is_f5u011)
...@@ -386,7 +385,7 @@ static void catc_tx_done(struct urb *urb) ...@@ -386,7 +385,7 @@ static void catc_tx_done(struct urb *urb)
dbg("Tx Reset."); dbg("Tx Reset.");
urb->status = 0; urb->status = 0;
catc->netdev->trans_start = jiffies; catc->netdev->trans_start = jiffies;
catc->stats.tx_errors++; catc->netdev->stats.tx_errors++;
clear_bit(TX_RUNNING, &catc->flags); clear_bit(TX_RUNNING, &catc->flags);
netif_wake_queue(catc->netdev); netif_wake_queue(catc->netdev);
return; return;
...@@ -412,7 +411,7 @@ static void catc_tx_done(struct urb *urb) ...@@ -412,7 +411,7 @@ static void catc_tx_done(struct urb *urb)
spin_unlock_irqrestore(&catc->tx_lock, flags); spin_unlock_irqrestore(&catc->tx_lock, flags);
} }
static int catc_hard_start_xmit(struct sk_buff *skb, struct net_device *netdev) static int catc_start_xmit(struct sk_buff *skb, struct net_device *netdev)
{ {
struct catc *catc = netdev_priv(netdev); struct catc *catc = netdev_priv(netdev);
unsigned long flags; unsigned long flags;
...@@ -443,8 +442,8 @@ static int catc_hard_start_xmit(struct sk_buff *skb, struct net_device *netdev) ...@@ -443,8 +442,8 @@ static int catc_hard_start_xmit(struct sk_buff *skb, struct net_device *netdev)
spin_unlock_irqrestore(&catc->tx_lock, flags); spin_unlock_irqrestore(&catc->tx_lock, flags);
if (r >= 0) { if (r >= 0) {
catc->stats.tx_bytes += skb->len; catc->netdev->stats.tx_bytes += skb->len;
catc->stats.tx_packets++; catc->netdev->stats.tx_packets++;
} }
dev_kfree_skb(skb); dev_kfree_skb(skb);
...@@ -588,15 +587,15 @@ static void catc_stats_done(struct catc *catc, struct ctrl_queue *q) ...@@ -588,15 +587,15 @@ static void catc_stats_done(struct catc *catc, struct ctrl_queue *q)
switch (index) { switch (index) {
case TxSingleColl: case TxSingleColl:
case TxMultiColl: case TxMultiColl:
catc->stats.collisions += data - last; catc->netdev->stats.collisions += data - last;
break; break;
case TxExcessColl: case TxExcessColl:
catc->stats.tx_aborted_errors += data - last; catc->netdev->stats.tx_aborted_errors += data - last;
catc->stats.tx_errors += data - last; catc->netdev->stats.tx_errors += data - last;
break; break;
case RxFramErr: case RxFramErr:
catc->stats.rx_frame_errors += data - last; catc->netdev->stats.rx_frame_errors += data - last;
catc->stats.rx_errors += data - last; catc->netdev->stats.rx_errors += data - last;
break; break;
} }
...@@ -614,12 +613,6 @@ static void catc_stats_timer(unsigned long data) ...@@ -614,12 +613,6 @@ static void catc_stats_timer(unsigned long data)
mod_timer(&catc->timer, jiffies + STATS_UPDATE); mod_timer(&catc->timer, jiffies + STATS_UPDATE);
} }
static struct net_device_stats *catc_get_stats(struct net_device *netdev)
{
struct catc *catc = netdev_priv(netdev);
return &catc->stats;
}
/* /*
* Receive modes. Broadcast, Multicast, Promisc. * Receive modes. Broadcast, Multicast, Promisc.
*/ */
...@@ -777,7 +770,6 @@ static int catc_probe(struct usb_interface *intf, const struct usb_device_id *id ...@@ -777,7 +770,6 @@ static int catc_probe(struct usb_interface *intf, const struct usb_device_id *id
netdev->open = catc_open; netdev->open = catc_open;
netdev->hard_start_xmit = catc_hard_start_xmit; netdev->hard_start_xmit = catc_hard_start_xmit;
netdev->stop = catc_stop; netdev->stop = catc_stop;
netdev->get_stats = catc_get_stats;
netdev->tx_timeout = catc_tx_timeout; netdev->tx_timeout = catc_tx_timeout;
netdev->watchdog_timeo = TX_TIMEOUT; netdev->watchdog_timeo = TX_TIMEOUT;
netdev->set_multicast_list = catc_set_multicast_list; netdev->set_multicast_list = catc_set_multicast_list;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册