Re: [PATCH net-next 14/14] usbnet: pegasus: Use net_device_stats from struct net_device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux