diff options
| author | Takashi Iwai <tiwai@suse.de> | 2011-08-08 14:30:29 +0200 | 
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2011-08-08 14:30:29 +0200 | 
| commit | 0a2d31b62dba9b5b92a38c67c9cc42630513662a (patch) | |
| tree | f755d74ec85248de645e10c45ed1a2ed467530f6 /drivers/net/vmxnet3/vmxnet3_ethtool.c | |
| parent | 8039290a91c5dc4414093c086987a5d7738fe2fd (diff) | |
| parent | df944f66784e6d4f2f50739263a4947885d8b6ae (diff) | |
Merge branch 'fix/kconfig' into for-linus
Diffstat (limited to 'drivers/net/vmxnet3/vmxnet3_ethtool.c')
| -rw-r--r-- | drivers/net/vmxnet3/vmxnet3_ethtool.c | 53 | 
1 files changed, 30 insertions, 23 deletions
| diff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c index dc959fe27aa5..27400edeef55 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethtool.c +++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c @@ -113,15 +113,15 @@ vmxnet3_global_stats[] = {  }; -struct net_device_stats * -vmxnet3_get_stats(struct net_device *netdev) +struct rtnl_link_stats64 * +vmxnet3_get_stats64(struct net_device *netdev, +		   struct rtnl_link_stats64 *stats)  {  	struct vmxnet3_adapter *adapter;  	struct vmxnet3_tq_driver_stats *drvTxStats;  	struct vmxnet3_rq_driver_stats *drvRxStats;  	struct UPT1_TxStats *devTxStats;  	struct UPT1_RxStats *devRxStats; -	struct net_device_stats *net_stats = &netdev->stats;  	unsigned long flags;  	int i; @@ -132,36 +132,36 @@ vmxnet3_get_stats(struct net_device *netdev)  	VMXNET3_WRITE_BAR1_REG(adapter, VMXNET3_REG_CMD, VMXNET3_CMD_GET_STATS);  	spin_unlock_irqrestore(&adapter->cmd_lock, flags); -	memset(net_stats, 0, sizeof(*net_stats));  	for (i = 0; i < adapter->num_tx_queues; i++) {  		devTxStats = &adapter->tqd_start[i].stats;  		drvTxStats = &adapter->tx_queue[i].stats; -		net_stats->tx_packets += devTxStats->ucastPktsTxOK + -					devTxStats->mcastPktsTxOK + -					devTxStats->bcastPktsTxOK; -		net_stats->tx_bytes += devTxStats->ucastBytesTxOK + -				      devTxStats->mcastBytesTxOK + -				      devTxStats->bcastBytesTxOK; -		net_stats->tx_errors += devTxStats->pktsTxError; -		net_stats->tx_dropped += drvTxStats->drop_total; +		stats->tx_packets += devTxStats->ucastPktsTxOK + +				     devTxStats->mcastPktsTxOK + +				     devTxStats->bcastPktsTxOK; +		stats->tx_bytes += devTxStats->ucastBytesTxOK + +				   devTxStats->mcastBytesTxOK + +				   devTxStats->bcastBytesTxOK; +		stats->tx_errors += devTxStats->pktsTxError; +		stats->tx_dropped += drvTxStats->drop_total;  	}  	for (i = 0; i < adapter->num_rx_queues; i++) {  		devRxStats = &adapter->rqd_start[i].stats;  		drvRxStats = &adapter->rx_queue[i].stats; -		net_stats->rx_packets += devRxStats->ucastPktsRxOK + -					devRxStats->mcastPktsRxOK + -					devRxStats->bcastPktsRxOK; +		stats->rx_packets += devRxStats->ucastPktsRxOK + +				     devRxStats->mcastPktsRxOK + +				     devRxStats->bcastPktsRxOK; -		net_stats->rx_bytes += devRxStats->ucastBytesRxOK + -				      devRxStats->mcastBytesRxOK + -				      devRxStats->bcastBytesRxOK; +		stats->rx_bytes += devRxStats->ucastBytesRxOK + +				   devRxStats->mcastBytesRxOK + +				   devRxStats->bcastBytesRxOK; -		net_stats->rx_errors += devRxStats->pktsRxError; -		net_stats->rx_dropped += drvRxStats->drop_total; -		net_stats->multicast +=  devRxStats->mcastPktsRxOK; +		stats->rx_errors += devRxStats->pktsRxError; +		stats->rx_dropped += drvRxStats->drop_total; +		stats->multicast +=  devRxStats->mcastPktsRxOK;  	} -	return net_stats; + +	return stats;  }  static int @@ -268,7 +268,7 @@ int vmxnet3_set_features(struct net_device *netdev, u32 features)  	unsigned long flags;  	u32 changed = features ^ netdev->features; -	if (changed & (NETIF_F_RXCSUM|NETIF_F_LRO)) { +	if (changed & (NETIF_F_RXCSUM | NETIF_F_LRO | NETIF_F_HW_VLAN_RX)) {  		if (features & NETIF_F_RXCSUM)  			adapter->shared->devRead.misc.uptFeatures |=  			UPT1_F_RXCSUM; @@ -284,6 +284,13 @@ int vmxnet3_set_features(struct net_device *netdev, u32 features)  			adapter->shared->devRead.misc.uptFeatures &=  							~UPT1_F_LRO; +		if (features & NETIF_F_HW_VLAN_RX) +			adapter->shared->devRead.misc.uptFeatures |= +			UPT1_F_RXVLAN; +		else +			adapter->shared->devRead.misc.uptFeatures &= +			~UPT1_F_RXVLAN; +  		spin_lock_irqsave(&adapter->cmd_lock, flags);  		VMXNET3_WRITE_BAR1_REG(adapter, VMXNET3_REG_CMD,  				       VMXNET3_CMD_UPDATE_FEATURE); | 
