All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Garzik <jgarzik@pobox.com>
To: Daniele Venzano <webvenza@libero.it>
Cc: netdev@oss.sgi.com
Subject: Re: [PATCH 1/1] More ethtool support for sis900
Date: Sat, 05 Mar 2005 13:28:02 -0500	[thread overview]
Message-ID: <4229FA32.4000401@pobox.com> (raw)
In-Reply-To: <20050305134011.23638.68926@localhost.localdomain>

Daniele Venzano wrote:
> 
> Add support for using generic mii interface
> Add support for the following ethtool ops:
> 	- get_link
> 	- get_settings
> 	- set_settings
> 	- nway_reset
> 
> 
> 
> Signed-off-by: Daniele Venzano <webvenza@libero.it>
> 
> 
> ------------------------------------------------------------------------
> 
> Index: sis900.c
> ===================================================================
> --- a/drivers/net/sis900.c	(revision 95)
> +++ b/drivers/net/sis900.c	(revision 97)
> @@ -161,6 +161,7 @@
>  	struct mii_phy * mii;
>  	struct mii_phy * first_mii; /* record the first mii structure */
>  	unsigned int cur_phy;
> +	struct mii_if_info mii_info;
>  
>  	struct timer_list timer; /* Link status detection timer. */
>  	u8 autong_complete; /* 1: auto-negotiate complete  */
> @@ -199,7 +200,7 @@
>  static int sis900_mii_probe (struct net_device * net_dev);
>  static void sis900_init_rxfilter (struct net_device * net_dev);
>  static u16 read_eeprom(long ioaddr, int location);
> -static u16 mdio_read(struct net_device *net_dev, int phy_id, int location);
> +static int mdio_read(struct net_device *net_dev, int phy_id, int location);
>  static void mdio_write(struct net_device *net_dev, int phy_id, int location, int val);
>  static void sis900_timer(unsigned long data);
>  static void sis900_check_mode (struct net_device *net_dev, struct mii_phy *mii_phy);
> @@ -468,7 +469,13 @@
>  		sis_priv->msg_enable = sis900_debug;
>  	else
>  		sis_priv->msg_enable = SIS900_DEF_MSG;
> -	
> +
> +	sis_priv->mii_info.dev = net_dev;
> +	sis_priv->mii_info.mdio_read = mdio_read;
> +	sis_priv->mii_info.mdio_write = mdio_write;
> +	sis_priv->mii_info.phy_id_mask = 0x1f;
> +	sis_priv->mii_info.reg_num_mask = 0x1f;
> +
>  	ret = register_netdev(net_dev);
>  	if (ret)
>  		goto err_unmap_rx;
> @@ -507,6 +514,8 @@
>  		goto err_out_unregister;
>  	}
>  
> +	sis_priv->mii_info.phy_id = sis_priv->cur_phy;
> +
>  	/* save our host bridge revision */
>  	dev = pci_get_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_630, NULL);
>  	if (dev) {
> @@ -843,7 +852,7 @@
>   *	Please see SiS7014 or ICS spec
>   */
>  
> -static u16 mdio_read(struct net_device *net_dev, int phy_id, int location)
> +static int mdio_read(struct net_device *net_dev, int phy_id, int location)
>  {
>  	long mdio_addr = net_dev->base_addr + mear;
>  	int mii_cmd = MIIread|(phy_id<<MIIpmdShift)|(location<<MIIregShift);
> @@ -1943,10 +1952,41 @@
>  	sis_priv->msg_enable = value;
>  }
>  
> +static u32 sis900_get_link(struct net_device *net_dev)
> +{
> +	struct sis900_private *sis_priv = net_dev->priv;
> +	return mii_link_ok(&sis_priv->mii_info);
> +}
> +
> +static int sis900_get_settings(struct net_device *net_dev,
> +				struct ethtool_cmd *cmd)
> +{
> +	struct sis900_private *sis_priv = net_dev->priv;
> +	mii_ethtool_gset(&sis_priv->mii_info, cmd);
> +	return 0;
> +}
> +
> +static int sis900_set_settings(struct net_device *net_dev,
> +				struct ethtool_cmd *cmd)
> +{
> +	struct sis900_private *sis_priv = net_dev->priv;
> +	return mii_ethtool_sset(&sis_priv->mii_info, cmd);
> +}
> +
> +static int sis900_nway_reset(struct net_device *net_dev)
> +{
> +	struct sis900_private *sis_priv = net_dev->priv;
> +	return mii_nway_restart(&sis_priv->mii_info);
> +}

I should think you want locking for these, as is present in other drivers...

	Jeff

  reply	other threads:[~2005-03-05 18:28 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-05 13:40 [PATCH 1/1] More ethtool support for sis900 Daniele Venzano
2005-03-05 18:28 ` Jeff Garzik [this message]
2005-03-05 20:53   ` Daniele Venzano
2005-03-06  0:15     ` Francois Romieu
2005-03-06 10:03       ` Daniele Venzano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4229FA32.4000401@pobox.com \
    --to=jgarzik@pobox.com \
    --cc=netdev@oss.sgi.com \
    --cc=webvenza@libero.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.