diff options
Diffstat (limited to 'drivers/net/ethernet/altera/altera_tse_ethtool.c')
| -rw-r--r-- | drivers/net/ethernet/altera/altera_tse_ethtool.c | 116 | 
1 files changed, 78 insertions, 38 deletions
diff --git a/drivers/net/ethernet/altera/altera_tse_ethtool.c b/drivers/net/ethernet/altera/altera_tse_ethtool.c index 319ca74f5e74..54c25eff7952 100644 --- a/drivers/net/ethernet/altera/altera_tse_ethtool.c +++ b/drivers/net/ethernet/altera/altera_tse_ethtool.c @@ -77,7 +77,7 @@ static void tse_get_drvinfo(struct net_device *dev,  	struct altera_tse_private *priv = netdev_priv(dev);  	u32 rev = ioread32(&priv->mac_dev->megacore_revision); -	strcpy(info->driver, "Altera TSE MAC IP Driver"); +	strcpy(info->driver, "altera_tse");  	strcpy(info->version, "v8.0");  	snprintf(info->fw_version, ETHTOOL_FWVERS_LEN, "v%d.%d",  		 rev & 0xFFFF, (rev & 0xFFFF0000) >> 16); @@ -96,54 +96,89 @@ static void tse_fill_stats(struct net_device *dev, struct ethtool_stats *dummy,  			   u64 *buf)  {  	struct altera_tse_private *priv = netdev_priv(dev); -	struct altera_tse_mac *mac = priv->mac_dev;  	u64 ext; -	buf[0] = ioread32(&mac->frames_transmitted_ok); -	buf[1] = ioread32(&mac->frames_received_ok); -	buf[2] = ioread32(&mac->frames_check_sequence_errors); -	buf[3] = ioread32(&mac->alignment_errors); +	buf[0] = csrrd32(priv->mac_dev, +			 tse_csroffs(frames_transmitted_ok)); +	buf[1] = csrrd32(priv->mac_dev, +			 tse_csroffs(frames_received_ok)); +	buf[2] = csrrd32(priv->mac_dev, +			 tse_csroffs(frames_check_sequence_errors)); +	buf[3] = csrrd32(priv->mac_dev, +			 tse_csroffs(alignment_errors));  	/* Extended aOctetsTransmittedOK counter */ -	ext = (u64) ioread32(&mac->msb_octets_transmitted_ok) << 32; -	ext |= ioread32(&mac->octets_transmitted_ok); +	ext = (u64) csrrd32(priv->mac_dev, +			    tse_csroffs(msb_octets_transmitted_ok)) << 32; + +	ext |= csrrd32(priv->mac_dev, +		       tse_csroffs(octets_transmitted_ok));  	buf[4] = ext;  	/* Extended aOctetsReceivedOK counter */ -	ext = (u64) ioread32(&mac->msb_octets_received_ok) << 32; -	ext |= ioread32(&mac->octets_received_ok); +	ext = (u64) csrrd32(priv->mac_dev, +			    tse_csroffs(msb_octets_received_ok)) << 32; + +	ext |= csrrd32(priv->mac_dev, +		       tse_csroffs(octets_received_ok));  	buf[5] = ext; -	buf[6] = ioread32(&mac->tx_pause_mac_ctrl_frames); -	buf[7] = ioread32(&mac->rx_pause_mac_ctrl_frames); -	buf[8] = ioread32(&mac->if_in_errors); -	buf[9] = ioread32(&mac->if_out_errors); -	buf[10] = ioread32(&mac->if_in_ucast_pkts); -	buf[11] = ioread32(&mac->if_in_multicast_pkts); -	buf[12] = ioread32(&mac->if_in_broadcast_pkts); -	buf[13] = ioread32(&mac->if_out_discards); -	buf[14] = ioread32(&mac->if_out_ucast_pkts); -	buf[15] = ioread32(&mac->if_out_multicast_pkts); -	buf[16] = ioread32(&mac->if_out_broadcast_pkts); -	buf[17] = ioread32(&mac->ether_stats_drop_events); +	buf[6] = csrrd32(priv->mac_dev, +			 tse_csroffs(tx_pause_mac_ctrl_frames)); +	buf[7] = csrrd32(priv->mac_dev, +			 tse_csroffs(rx_pause_mac_ctrl_frames)); +	buf[8] = csrrd32(priv->mac_dev, +			 tse_csroffs(if_in_errors)); +	buf[9] = csrrd32(priv->mac_dev, +			 tse_csroffs(if_out_errors)); +	buf[10] = csrrd32(priv->mac_dev, +			  tse_csroffs(if_in_ucast_pkts)); +	buf[11] = csrrd32(priv->mac_dev, +			  tse_csroffs(if_in_multicast_pkts)); +	buf[12] = csrrd32(priv->mac_dev, +			  tse_csroffs(if_in_broadcast_pkts)); +	buf[13] = csrrd32(priv->mac_dev, +			  tse_csroffs(if_out_discards)); +	buf[14] = csrrd32(priv->mac_dev, +			  tse_csroffs(if_out_ucast_pkts)); +	buf[15] = csrrd32(priv->mac_dev, +			  tse_csroffs(if_out_multicast_pkts)); +	buf[16] = csrrd32(priv->mac_dev, +			  tse_csroffs(if_out_broadcast_pkts)); +	buf[17] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_drop_events));  	/* Extended etherStatsOctets counter */ -	ext = (u64) ioread32(&mac->msb_ether_stats_octets) << 32; -	ext |= ioread32(&mac->ether_stats_octets); +	ext = (u64) csrrd32(priv->mac_dev, +			    tse_csroffs(msb_ether_stats_octets)) << 32; +	ext |= csrrd32(priv->mac_dev, +		       tse_csroffs(ether_stats_octets));  	buf[18] = ext; -	buf[19] = ioread32(&mac->ether_stats_pkts); -	buf[20] = ioread32(&mac->ether_stats_undersize_pkts); -	buf[21] = ioread32(&mac->ether_stats_oversize_pkts); -	buf[22] = ioread32(&mac->ether_stats_pkts_64_octets); -	buf[23] = ioread32(&mac->ether_stats_pkts_65to127_octets); -	buf[24] = ioread32(&mac->ether_stats_pkts_128to255_octets); -	buf[25] = ioread32(&mac->ether_stats_pkts_256to511_octets); -	buf[26] = ioread32(&mac->ether_stats_pkts_512to1023_octets); -	buf[27] = ioread32(&mac->ether_stats_pkts_1024to1518_octets); -	buf[28] = ioread32(&mac->ether_stats_pkts_1519tox_octets); -	buf[29] = ioread32(&mac->ether_stats_jabbers); -	buf[30] = ioread32(&mac->ether_stats_fragments); +	buf[19] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_pkts)); +	buf[20] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_undersize_pkts)); +	buf[21] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_oversize_pkts)); +	buf[22] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_pkts_64_octets)); +	buf[23] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_pkts_65to127_octets)); +	buf[24] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_pkts_128to255_octets)); +	buf[25] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_pkts_256to511_octets)); +	buf[26] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_pkts_512to1023_octets)); +	buf[27] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_pkts_1024to1518_octets)); +	buf[28] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_pkts_1519tox_octets)); +	buf[29] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_jabbers)); +	buf[30] = csrrd32(priv->mac_dev, +			  tse_csroffs(ether_stats_fragments));  }  static int tse_sset_count(struct net_device *dev, int sset) @@ -178,19 +213,24 @@ static void tse_get_regs(struct net_device *dev, struct ethtool_regs *regs,  {  	int i;  	struct altera_tse_private *priv = netdev_priv(dev); -	u32 *tse_mac_regs = (u32 *)priv->mac_dev;  	u32 *buf = regbuf;  	/* Set version to a known value, so ethtool knows  	 * how to do any special formatting of this data.  	 * This version number will need to change if and  	 * when this register table is changed. +	 * +	 * version[31:0] = 1: Dump the first 128 TSE Registers +	 *      Upper bits are all 0 by default +	 * +	 * Upper 16-bits will indicate feature presence for +	 * Ethtool register decoding in future version.  	 */  	regs->version = 1;  	for (i = 0; i < TSE_NUM_REGS; i++) -		buf[i] = ioread32(&tse_mac_regs[i]); +		buf[i] = csrrd32(priv->mac_dev, i * 4);  }  static int tse_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)  | 

