Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e36124d4 authored by Ondrej Zary's avatar Ondrej Zary Committed by David S. Miller
Browse files

tlan: Add ethtool support



Add basic ethtool support to tlan driver:
 - driver info  - link detect (this allows NetworkManager to detect carrier)
 - EEPROM read

Signed-off-by: default avatarOndrej Zary <linux@rainbow-software.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c0a87c22
Loading
Loading
Loading
Loading
+37 −0
Original line number Original line Diff line number Diff line
@@ -778,7 +778,43 @@ static const struct net_device_ops tlan_netdev_ops = {
#endif
#endif
};
};


static void tlan_get_drvinfo(struct net_device *dev,
			     struct ethtool_drvinfo *info)
{
	struct tlan_priv *priv = netdev_priv(dev);

	strlcpy(info->driver, KBUILD_MODNAME, sizeof(info->driver));
	if (priv->pci_dev)
		strlcpy(info->bus_info, pci_name(priv->pci_dev),
			sizeof(info->bus_info));
	else
		strlcpy(info->bus_info, "EISA",	sizeof(info->bus_info));
	info->eedump_len = TLAN_EEPROM_SIZE;
}

static int tlan_get_eeprom_len(struct net_device *dev)
{
	return TLAN_EEPROM_SIZE;
}


static int tlan_get_eeprom(struct net_device *dev,
			   struct ethtool_eeprom *eeprom, u8 *data)
{
	int i;

	for (i = 0; i < TLAN_EEPROM_SIZE; i++)
		if (tlan_ee_read_byte(dev, i, &data[i]))
			return -EIO;

	return 0;
}

static const struct ethtool_ops tlan_ethtool_ops = {
	.get_drvinfo	= tlan_get_drvinfo,
	.get_link	= ethtool_op_get_link,
	.get_eeprom_len	= tlan_get_eeprom_len,
	.get_eeprom	= tlan_get_eeprom,
};


/***************************************************************
/***************************************************************
 *	tlan_init
 *	tlan_init
@@ -841,6 +877,7 @@ static int tlan_init(struct net_device *dev)


	/* Device methods */
	/* Device methods */
	dev->netdev_ops = &tlan_netdev_ops;
	dev->netdev_ops = &tlan_netdev_ops;
	dev->ethtool_ops = &tlan_ethtool_ops;
	dev->watchdog_timeo = TX_TIMEOUT;
	dev->watchdog_timeo = TX_TIMEOUT;


	return 0;
	return 0;
+1 −0
Original line number Original line Diff line number Diff line
@@ -240,6 +240,7 @@ struct tlan_priv {
#define TLAN_EEPROM_ACK		0
#define TLAN_EEPROM_ACK		0
#define TLAN_EEPROM_STOP	1
#define TLAN_EEPROM_STOP	1


#define TLAN_EEPROM_SIZE	256