On 17-04-07 10:17:39, Tobias Klauser wrote: > Instead of using a private copy of struct net_device_stats in struct pegasus, > use stats from struct net_device. Also remove the now unnecessary > .ndo_get_stats function. Looks OK to me. Petko > Cc: Petko Manolov <petkan@xxxxxxxxxxxxx> > Cc: linux-usb@xxxxxxxxxxxxxxx > Signed-off-by: Tobias Klauser <tklauser@xxxxxxxxxx> > --- > drivers/net/usb/pegasus.c | 36 +++++++++++++++--------------------- > drivers/net/usb/pegasus.h | 1 - > 2 files changed, 15 insertions(+), 22 deletions(-) > > diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c > index 321e059e13ae..6514c86f043e 100644 > --- a/drivers/net/usb/pegasus.c > +++ b/drivers/net/usb/pegasus.c > @@ -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, > diff --git a/drivers/net/usb/pegasus.h b/drivers/net/usb/pegasus.h > index d15646244fdf..9b7ea9c9167d 100644 > --- a/drivers/net/usb/pegasus.h > +++ b/drivers/net/usb/pegasus.h > @@ -83,7 +83,6 @@ typedef struct pegasus { > struct usb_device *usb; > struct usb_interface *intf; > struct net_device *net; > - struct net_device_stats stats; > struct mii_if_info mii; > unsigned flags; > unsigned features; > -- > 2.12.2 > > > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html