diff options
| author | Paulius Zaleckas <paulius.zaleckas@teltonika.lt> | 2008-05-06 23:50:30 +0300 | 
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2008-05-14 16:29:48 -0400 | 
| commit | 736bc924fe7183dd27182a9148e78f250c1637ee (patch) | |
| tree | d42972d1e02486fc51546335229990129662227e | |
| parent | 06a5223d68a7c48bf72a05aad533ea0e8a3453be (diff) | |
| download | olio-linux-3.10-736bc924fe7183dd27182a9148e78f250c1637ee.tar.xz olio-linux-3.10-736bc924fe7183dd27182a9148e78f250c1637ee.zip  | |
atmel: use netstats in net_device structure
Use net_device_stats from net_device structure instead of local.
Kill atmel_get_stats function, because by default it is used
identical internal_stats function from net/core/dev.c
No need to memset stats to 0, because they are allocated by kzalloc.
P.S. Someone should cleanup init_atmel_card function from unneeded
initializations to 0/NULL. Out of scope for this patch.
Signed-off-by: Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
| -rw-r--r-- | drivers/net/wireless/atmel.c | 46 | 
1 files changed, 18 insertions, 28 deletions
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c index ef2da4023d6..f978a9d5190 100644 --- a/drivers/net/wireless/atmel.c +++ b/drivers/net/wireless/atmel.c @@ -433,7 +433,6 @@ struct atmel_private {  	struct net_device *dev;  	struct device *sys_dev;  	struct iw_statistics wstats; -	struct net_device_stats	stats;	// device stats  	spinlock_t irqlock, timerlock;	// spinlocks  	enum { BUS_TYPE_PCCARD, BUS_TYPE_PCI } bus_type;  	enum { @@ -694,9 +693,9 @@ static void tx_done_irq(struct atmel_private *priv)  		if (type == TX_PACKET_TYPE_DATA) {  			if (status == TX_STATUS_SUCCESS) -				priv->stats.tx_packets++; +				priv->dev->stats.tx_packets++;  			else -				priv->stats.tx_errors++; +				priv->dev->stats.tx_errors++;  			netif_wake_queue(priv->dev);  		}  	} @@ -792,13 +791,13 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev)  	if (priv->card && priv->present_callback &&  	    !(*priv->present_callback)(priv->card)) { -		priv->stats.tx_errors++; +		dev->stats.tx_errors++;  		dev_kfree_skb(skb);  		return 0;  	}  	if (priv->station_state != STATION_STATE_READY) { -		priv->stats.tx_errors++; +		dev->stats.tx_errors++;  		dev_kfree_skb(skb);  		return 0;  	} @@ -815,7 +814,7 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev)  	   initial + 18 (+30-12) */  	if (!(buff = find_tx_buff(priv, len + 18))) { -		priv->stats.tx_dropped++; +		dev->stats.tx_dropped++;  		spin_unlock_irqrestore(&priv->irqlock, flags);  		spin_unlock_bh(&priv->timerlock);  		netif_stop_queue(dev); @@ -851,7 +850,7 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev)  	/* low bit of first byte of destination tells us if broadcast */  	tx_update_descriptor(priv, *(skb->data) & 0x01, len + 18, buff, TX_PACKET_TYPE_DATA);  	dev->trans_start = jiffies; -	priv->stats.tx_bytes += len; +	dev->stats.tx_bytes += len;  	spin_unlock_irqrestore(&priv->irqlock, flags);  	spin_unlock_bh(&priv->timerlock); @@ -895,7 +894,7 @@ static void fast_rx_path(struct atmel_private *priv,  	}  	if (!(skb = dev_alloc_skb(msdu_size + 14))) { -		priv->stats.rx_dropped++; +		priv->dev->stats.rx_dropped++;  		return;  	} @@ -908,7 +907,7 @@ static void fast_rx_path(struct atmel_private *priv,  		crc = crc32_le(crc, skbp + 12, msdu_size);  		atmel_copy_to_host(priv->dev, (void *)&netcrc, rx_packet_loc + 30 + msdu_size, 4);  		if ((crc ^ 0xffffffff) != netcrc) { -			priv->stats.rx_crc_errors++; +			priv->dev->stats.rx_crc_errors++;  			dev_kfree_skb(skb);  			return;  		} @@ -924,8 +923,8 @@ static void fast_rx_path(struct atmel_private *priv,  	skb->protocol = eth_type_trans(skb, priv->dev);  	skb->ip_summed = CHECKSUM_NONE;  	netif_rx(skb); -	priv->stats.rx_bytes += 12 + msdu_size; -	priv->stats.rx_packets++; +	priv->dev->stats.rx_bytes += 12 + msdu_size; +	priv->dev->stats.rx_packets++;  }  /* Test to see if the packet in card memory at packet_loc has a valid CRC @@ -991,7 +990,7 @@ static void frag_rx_path(struct atmel_private *priv,  			crc = crc32_le(crc, &priv->rx_buf[12], msdu_size);  			atmel_copy_to_host(priv->dev, (void *)&netcrc, rx_packet_loc + msdu_size, 4);  			if ((crc ^ 0xffffffff) != netcrc) { -				priv->stats.rx_crc_errors++; +				priv->dev->stats.rx_crc_errors++;  				memset(priv->frag_source, 0xff, 6);  			}  		} @@ -1009,7 +1008,7 @@ static void frag_rx_path(struct atmel_private *priv,  				       msdu_size);  			atmel_copy_to_host(priv->dev, (void *)&netcrc, rx_packet_loc + msdu_size, 4);  			if ((crc ^ 0xffffffff) != netcrc) { -				priv->stats.rx_crc_errors++; +				priv->dev->stats.rx_crc_errors++;  				memset(priv->frag_source, 0xff, 6);  				more_frags = 1; /* don't send broken assembly */  			} @@ -1021,7 +1020,7 @@ static void frag_rx_path(struct atmel_private *priv,  		if (!more_frags) { /* last one */  			memset(priv->frag_source, 0xff, 6);  			if (!(skb = dev_alloc_skb(priv->frag_len + 14))) { -				priv->stats.rx_dropped++; +				priv->dev->stats.rx_dropped++;  			} else {  				skb_reserve(skb, 2);  				memcpy(skb_put(skb, priv->frag_len + 12), @@ -1031,8 +1030,8 @@ static void frag_rx_path(struct atmel_private *priv,  				skb->protocol = eth_type_trans(skb, priv->dev);  				skb->ip_summed = CHECKSUM_NONE;  				netif_rx(skb); -				priv->stats.rx_bytes += priv->frag_len + 12; -				priv->stats.rx_packets++; +				priv->dev->stats.rx_bytes += priv->frag_len + 12; +				priv->dev->stats.rx_packets++;  			}  		}  	} else @@ -1057,7 +1056,7 @@ static void rx_done_irq(struct atmel_private *priv)  			if (status == 0xc1) /* determined by experiment */  				priv->wstats.discard.nwid++;  			else -				priv->stats.rx_errors++; +				priv->dev->stats.rx_errors++;  			goto next;  		} @@ -1065,7 +1064,7 @@ static void rx_done_irq(struct atmel_private *priv)  		rx_packet_loc = atmel_rmem16(priv, atmel_rx(priv, RX_DESC_MSDU_POS_OFFSET, priv->rx_desc_head));  		if (msdu_size < 30) { -			priv->stats.rx_errors++; +			priv->dev->stats.rx_errors++;  			goto next;  		} @@ -1123,7 +1122,7 @@ static void rx_done_irq(struct atmel_private *priv)  				msdu_size -= 4;  				crc = crc32_le(crc, (unsigned char *)&priv->rx_buf, msdu_size);  				if ((crc ^ 0xffffffff) != (*((u32 *)&priv->rx_buf[msdu_size]))) { -					priv->stats.rx_crc_errors++; +					priv->dev->stats.rx_crc_errors++;  					goto next;  				}  			} @@ -1250,12 +1249,6 @@ static irqreturn_t service_interrupt(int irq, void *dev_id)  	}  } -static struct net_device_stats *atmel_get_stats(struct net_device *dev) -{ -	struct atmel_private *priv = netdev_priv(dev); -	return &priv->stats; -} -  static struct iw_statistics *atmel_get_wireless_stats(struct net_device *dev)  {  	struct atmel_private *priv = netdev_priv(dev); @@ -1518,8 +1511,6 @@ struct net_device *init_atmel_card(unsigned short irq, unsigned long port,  		priv->crc_ok_cnt = priv->crc_ko_cnt = 0;  	} else  		priv->probe_crc = 0; -	memset(&priv->stats, 0, sizeof(priv->stats)); -	memset(&priv->wstats, 0, sizeof(priv->wstats));  	priv->last_qual = jiffies;  	priv->last_beacon_timestamp = 0;  	memset(priv->frag_source, 0xff, sizeof(priv->frag_source)); @@ -1568,7 +1559,6 @@ struct net_device *init_atmel_card(unsigned short irq, unsigned long port,  	dev->change_mtu = atmel_change_mtu;  	dev->set_mac_address = atmel_set_mac_address;  	dev->hard_start_xmit = start_tx; -	dev->get_stats = atmel_get_stats;  	dev->wireless_handlers = (struct iw_handler_def *)&atmel_handler_def;  	dev->do_ioctl = atmel_ioctl;  	dev->irq = irq;  |