Patchwork [net-next-2.6,1/1] e1000e: Expose MDI-X status via ethtool change

login
register
mail settings
Submitter Chaitanya Lala
Date May 27, 2009, 11:15 p.m.
Message ID <20090527231542.GA19664@clala-laptop>
Download mbox | patch
Permalink /patch/27757/
State Awaiting Upstream
Delegated to: David Miller
Headers show

Comments

Chaitanya Lala - May 27, 2009, 11:15 p.m.
Ethtool is a standard way of getting information about ethernet
interfaces. We enhance ethtool kernel interface & e1000e to make
the MDI-X status readable via ethtool in userspace.

Signed-off-by: Chaitanya Lala <clala@riverbed.com>
Signed-off-by: Arthur Jones <ajones@riverbed.com>
---
 drivers/net/e1000e/ethtool.c |    8 ++++++++
 include/linux/ethtool.h      |    8 +++++++-
 2 files changed, 15 insertions(+), 1 deletions(-)
Jeff Kirsher - June 2, 2009, 11:02 p.m.
On Wed, May 27, 2009 at 4:15 PM, Chaitanya Lala <clala@riverbed.com> wrote:
> Ethtool is a standard way of getting information about ethernet
> interfaces. We enhance ethtool kernel interface & e1000e to make
> the MDI-X status readable via ethtool in userspace.
>
> Signed-off-by: Chaitanya Lala <clala@riverbed.com>
> Signed-off-by: Arthur Jones <ajones@riverbed.com>
> ---
>  drivers/net/e1000e/ethtool.c |    8 ++++++++
>  include/linux/ethtool.h      |    8 +++++++-
>  2 files changed, 15 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c
> index 4d25ede..b6aea6b 100644
> --- a/drivers/net/e1000e/ethtool.c
> +++ b/drivers/net/e1000e/ethtool.c
> @@ -167,6 +167,14 @@ static int e1000_get_settings(struct net_device *netdev,
>
>        ecmd->autoneg = ((hw->phy.media_type == e1000_media_type_fiber) ||
>                         hw->mac.autoneg) ? AUTONEG_ENABLE : AUTONEG_DISABLE;
> +
> +       /* MDI-X => 2; MDI =>1; Invalid =>0 */
> +       if ((hw->phy.media_type == e1000_media_type_copper) &&
> +               !hw->mac.get_link_status)
> +               ecmd->is_mdix = hw->phy.is_mdix ? MDI_X : MDI;
> +       else
> +               ecmd->is_mdix = MDI_INVALID;
> +
>        return 0;
>  }
>
> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
> index 380b042..b553bdb 100644
> --- a/include/linux/ethtool.h
> +++ b/include/linux/ethtool.h
> @@ -30,7 +30,8 @@ struct ethtool_cmd {
>        __u32   maxtxpkt;       /* Tx pkts before generating tx int */
>        __u32   maxrxpkt;       /* Rx pkts before generating rx int */
>        __u16   speed_hi;
> -       __u16   reserved2;
> +       __u8    is_mdix;
> +       __u8    reserved2;
>        __u32   lp_advertising; /* Features the link partner advertises */
>        __u32   reserved[2];
>  };
> @@ -632,6 +633,11 @@ struct ethtool_ops {
>  #define AUTONEG_DISABLE                0x00
>  #define AUTONEG_ENABLE         0x01
>
> +/* Mode MDI or MDI-X */
> +#define MDI_INVALID 0x00
> +#define MDI         0x01
> +#define MDI_X       0x02
> +
>  /* Wake-On-Lan options. */
>  #define WAKE_PHY               (1 << 0)
>  #define WAKE_UCAST             (1 << 1)
> --
> 1.6.0.4
>

I have pulled this into my queue for testing and submission, thanks.
Ben Hutchings - June 3, 2009, 5:34 p.m.
On Wed, 2009-05-27 at 16:15 -0700, Chaitanya Lala wrote:
[...]
> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
> index 380b042..b553bdb 100644
> --- a/include/linux/ethtool.h
> +++ b/include/linux/ethtool.h
> @@ -30,7 +30,8 @@ struct ethtool_cmd {
>  	__u32	maxtxpkt;	/* Tx pkts before generating tx int */
>  	__u32	maxrxpkt;	/* Rx pkts before generating rx int */
>  	__u16	speed_hi;
> -	__u16	reserved2;
> +	__u8	is_mdix;

Since this is specific to Ethernet over twisted-pair cable, could you
please rename this to "eth_tp_mdix".

> +	__u8	reserved2;
>  	__u32	lp_advertising;	/* Features the link partner advertises */
>  	__u32	reserved[2];
>  };
> @@ -632,6 +633,11 @@ struct ethtool_ops {
>  #define AUTONEG_DISABLE		0x00
>  #define AUTONEG_ENABLE		0x01
>  
> +/* Mode MDI or MDI-X */
> +#define MDI_INVALID 0x00
> +#define MDI         0x01
> +#define MDI_X       0x02
[...]

Similarly, please add the prefix "ETH_TP_" to these.

Ben.
Chaitanya Lala - June 3, 2009, 5:45 p.m.
Ben Hutchings wrote:
> On Wed, 2009-05-27 at 16:15 -0700, Chaitanya Lala wrote:
> [...]
>   
>> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
>> index 380b042..b553bdb 100644
>> --- a/include/linux/ethtool.h
>> +++ b/include/linux/ethtool.h
>> @@ -30,7 +30,8 @@ struct ethtool_cmd {
>>  	__u32	maxtxpkt;	/* Tx pkts before generating tx int */
>>  	__u32	maxrxpkt;	/* Rx pkts before generating rx int */
>>  	__u16	speed_hi;
>> -	__u16	reserved2;
>> +	__u8	is_mdix;
>>     
>
> Since this is specific to Ethernet over twisted-pair cable, could you
> please rename this to "eth_tp_mdix".
>   
Will do for sure.
>   
>> +	__u8	reserved2;
>>  	__u32	lp_advertising;	/* Features the link partner advertises */
>>  	__u32	reserved[2];
>>  };
>> @@ -632,6 +633,11 @@ struct ethtool_ops {
>>  #define AUTONEG_DISABLE		0x00
>>  #define AUTONEG_ENABLE		0x01
>>  
>> +/* Mode MDI or MDI-X */
>> +#define MDI_INVALID 0x00
>> +#define MDI         0x01
>> +#define MDI_X       0x02
>>     
> [...]
>
> Similarly, please add the prefix "ETH_TP_" to these.
>   
Sure.
> Ben.
>
>   

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jeff Kirsher - June 3, 2009, 9:04 p.m.
On Wed, Jun 3, 2009 at 10:45 AM, Chaitanya Lala <clala@riverbed.com> wrote:
> Ben Hutchings wrote:
>>
>> On Wed, 2009-05-27 at 16:15 -0700, Chaitanya Lala wrote:
>> [...]
>>
>>>
>>> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
>>> index 380b042..b553bdb 100644
>>> --- a/include/linux/ethtool.h
>>> +++ b/include/linux/ethtool.h
>>> @@ -30,7 +30,8 @@ struct ethtool_cmd {
>>>        __u32   maxtxpkt;       /* Tx pkts before generating tx int */
>>>        __u32   maxrxpkt;       /* Rx pkts before generating rx int */
>>>        __u16   speed_hi;
>>> -       __u16   reserved2;
>>> +       __u8    is_mdix;
>>>
>>
>> Since this is specific to Ethernet over twisted-pair cable, could you
>> please rename this to "eth_tp_mdix".
>>
>
> Will do for sure.
>>
>>
>>>
>>> +       __u8    reserved2;
>>>        __u32   lp_advertising; /* Features the link partner advertises */
>>>        __u32   reserved[2];
>>>  };
>>> @@ -632,6 +633,11 @@ struct ethtool_ops {
>>>  #define AUTONEG_DISABLE                0x00
>>>  #define AUTONEG_ENABLE         0x01
>>>  +/* Mode MDI or MDI-X */
>>> +#define MDI_INVALID 0x00
>>> +#define MDI         0x01
>>> +#define MDI_X       0x02
>>>
>>
>> [...]
>>
>> Similarly, please add the prefix "ETH_TP_" to these.
>>
>
> Sure.

Chaitanya, I have made the requested changes to the patch in my tree.
Chaitanya Lala - June 3, 2009, 9:19 p.m.
Jeff Kirsher wrote:
> On Wed, Jun 3, 2009 at 10:45 AM, Chaitanya Lala <clala@riverbed.com> wrote:
>   
>> Ben Hutchings wrote:
>>     
>>> On Wed, 2009-05-27 at 16:15 -0700, Chaitanya Lala wrote:
>>> [...]
>>>
>>>       
>>>> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
>>>> index 380b042..b553bdb 100644
>>>> --- a/include/linux/ethtool.h
>>>> +++ b/include/linux/ethtool.h
>>>> @@ -30,7 +30,8 @@ struct ethtool_cmd {
>>>>        __u32   maxtxpkt;       /* Tx pkts before generating tx int */
>>>>        __u32   maxrxpkt;       /* Rx pkts before generating rx int */
>>>>        __u16   speed_hi;
>>>> -       __u16   reserved2;
>>>> +       __u8    is_mdix;
>>>>
>>>>         
>>> Since this is specific to Ethernet over twisted-pair cable, could you
>>> please rename this to "eth_tp_mdix".
>>>
>>>       
>> Will do for sure.
>>     
>>>       
>>>> +       __u8    reserved2;
>>>>        __u32   lp_advertising; /* Features the link partner advertises */
>>>>        __u32   reserved[2];
>>>>  };
>>>> @@ -632,6 +633,11 @@ struct ethtool_ops {
>>>>  #define AUTONEG_DISABLE                0x00
>>>>  #define AUTONEG_ENABLE         0x01
>>>>  +/* Mode MDI or MDI-X */
>>>> +#define MDI_INVALID 0x00
>>>> +#define MDI         0x01
>>>> +#define MDI_X       0x02
>>>>
>>>>         
>>> [...]
>>>
>>> Similarly, please add the prefix "ETH_TP_" to these.
>>>
>>>       
>> Sure.
>>     
>
> Chaitanya, I have made the requested changes to the patch in my tree.
>
>   
Thanks. I am very new to procedure of submitting kernel patches. Just 
want to make sure if this means that I not need to send another patch to 
netdev ?

Thanks,
Chaitanya
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jeff Kirsher - June 3, 2009, 9:31 p.m.
On Wed, Jun 3, 2009 at 2:19 PM, Chaitanya Lala <clala@riverbed.com> wrote:
> Jeff Kirsher wrote:
>>
>> On Wed, Jun 3, 2009 at 10:45 AM, Chaitanya Lala <clala@riverbed.com>
>> wrote:
>>
>>>
>>> Ben Hutchings wrote:
>>>
>>>>
>>>> On Wed, 2009-05-27 at 16:15 -0700, Chaitanya Lala wrote:
>>>> [...]
>>>>
>>>>
>>>>>
>>>>> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
>>>>> index 380b042..b553bdb 100644
>>>>> --- a/include/linux/ethtool.h
>>>>> +++ b/include/linux/ethtool.h
>>>>> @@ -30,7 +30,8 @@ struct ethtool_cmd {
>>>>>       __u32   maxtxpkt;       /* Tx pkts before generating tx int */
>>>>>       __u32   maxrxpkt;       /* Rx pkts before generating rx int */
>>>>>       __u16   speed_hi;
>>>>> -       __u16   reserved2;
>>>>> +       __u8    is_mdix;
>>>>>
>>>>>
>>>>
>>>> Since this is specific to Ethernet over twisted-pair cable, could you
>>>> please rename this to "eth_tp_mdix".
>>>>
>>>>
>>>
>>> Will do for sure.
>>>
>>>>
>>>>
>>>>>
>>>>> +       __u8    reserved2;
>>>>>       __u32   lp_advertising; /* Features the link partner advertises
>>>>> */
>>>>>       __u32   reserved[2];
>>>>>  };
>>>>> @@ -632,6 +633,11 @@ struct ethtool_ops {
>>>>>  #define AUTONEG_DISABLE                0x00
>>>>>  #define AUTONEG_ENABLE         0x01
>>>>>  +/* Mode MDI or MDI-X */
>>>>> +#define MDI_INVALID 0x00
>>>>> +#define MDI         0x01
>>>>> +#define MDI_X       0x02
>>>>>
>>>>>
>>>>
>>>> [...]
>>>>
>>>> Similarly, please add the prefix "ETH_TP_" to these.
>>>>
>>>>
>>>
>>> Sure.
>>>
>>
>> Chaitanya, I have made the requested changes to the patch in my tree.
>>
>>
>
> Thanks. I am very new to procedure of submitting kernel patches. Just want
> to make sure if this means that I not need to send another patch to netdev ?
>
> Thanks,
> Chaitanya
> --

When there are changes requested on a patch, yes the patch needs to be
re-submitted to netdev.  Since I will be pushing this patch along with
other patches for Intel drivers to Dave once testing has been
completed, there is no need for you to re-submit this patch.  I have
already sucked in the changes that Ben has requested into the patch
that is in my tree.
Chaitanya Lala - June 3, 2009, 9:41 p.m.
Jeff Kirsher wrote:
> On Wed, Jun 3, 2009 at 2:19 PM, Chaitanya Lala <clala@riverbed.com> wrote:
>   
>> Jeff Kirsher wrote:
>>     
>>> On Wed, Jun 3, 2009 at 10:45 AM, Chaitanya Lala <clala@riverbed.com>
>>> wrote:
>>>
>>>       
>>>> Ben Hutchings wrote:
>>>>
>>>>         
>>>>> On Wed, 2009-05-27 at 16:15 -0700, Chaitanya Lala wrote:
>>>>> [...]
>>>>>
>>>>>
>>>>>           
>>>>>> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
>>>>>> index 380b042..b553bdb 100644
>>>>>> --- a/include/linux/ethtool.h
>>>>>> +++ b/include/linux/ethtool.h
>>>>>> @@ -30,7 +30,8 @@ struct ethtool_cmd {
>>>>>>       __u32   maxtxpkt;       /* Tx pkts before generating tx int */
>>>>>>       __u32   maxrxpkt;       /* Rx pkts before generating rx int */
>>>>>>       __u16   speed_hi;
>>>>>> -       __u16   reserved2;
>>>>>> +       __u8    is_mdix;
>>>>>>
>>>>>>
>>>>>>             
>>>>> Since this is specific to Ethernet over twisted-pair cable, could you
>>>>> please rename this to "eth_tp_mdix".
>>>>>
>>>>>
>>>>>           
>>>> Will do for sure.
>>>>
>>>>         
>>>>>           
>>>>>> +       __u8    reserved2;
>>>>>>       __u32   lp_advertising; /* Features the link partner advertises
>>>>>> */
>>>>>>       __u32   reserved[2];
>>>>>>  };
>>>>>> @@ -632,6 +633,11 @@ struct ethtool_ops {
>>>>>>  #define AUTONEG_DISABLE                0x00
>>>>>>  #define AUTONEG_ENABLE         0x01
>>>>>>  +/* Mode MDI or MDI-X */
>>>>>> +#define MDI_INVALID 0x00
>>>>>> +#define MDI         0x01
>>>>>> +#define MDI_X       0x02
>>>>>>
>>>>>>
>>>>>>             
>>>>> [...]
>>>>>
>>>>> Similarly, please add the prefix "ETH_TP_" to these.
>>>>>
>>>>>
>>>>>           
>>>> Sure.
>>>>
>>>>         
>>> Chaitanya, I have made the requested changes to the patch in my tree.
>>>
>>>
>>>       
>> Thanks. I am very new to procedure of submitting kernel patches. Just want
>> to make sure if this means that I not need to send another patch to netdev ?
>>
>> Thanks,
>> Chaitanya
>> --
>>     
>
> When there are changes requested on a patch, yes the patch needs to be
> re-submitted to netdev.  Since I will be pushing this patch along with
> other patches for Intel drivers to Dave once testing has been
> completed, there is no need for you to re-submit this patch.  I have
> already sucked in the changes that Ben has requested into the patch
> that is in my tree.
>
>   
Thanks for the clarification.

Chaitanya

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c
index 4d25ede..b6aea6b 100644
--- a/drivers/net/e1000e/ethtool.c
+++ b/drivers/net/e1000e/ethtool.c
@@ -167,6 +167,14 @@  static int e1000_get_settings(struct net_device *netdev,
 
 	ecmd->autoneg = ((hw->phy.media_type == e1000_media_type_fiber) ||
 			 hw->mac.autoneg) ? AUTONEG_ENABLE : AUTONEG_DISABLE;
+
+	/* MDI-X => 2; MDI =>1; Invalid =>0 */
+	if ((hw->phy.media_type == e1000_media_type_copper) &&
+		!hw->mac.get_link_status)
+		ecmd->is_mdix = hw->phy.is_mdix ? MDI_X : MDI;
+	else
+		ecmd->is_mdix = MDI_INVALID;
+
 	return 0;
 }
 
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index 380b042..b553bdb 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -30,7 +30,8 @@  struct ethtool_cmd {
 	__u32	maxtxpkt;	/* Tx pkts before generating tx int */
 	__u32	maxrxpkt;	/* Rx pkts before generating rx int */
 	__u16	speed_hi;
-	__u16	reserved2;
+	__u8	is_mdix;
+	__u8	reserved2;
 	__u32	lp_advertising;	/* Features the link partner advertises */
 	__u32	reserved[2];
 };
@@ -632,6 +633,11 @@  struct ethtool_ops {
 #define AUTONEG_DISABLE		0x00
 #define AUTONEG_ENABLE		0x01
 
+/* Mode MDI or MDI-X */
+#define MDI_INVALID 0x00
+#define MDI         0x01
+#define MDI_X       0x02
+
 /* Wake-On-Lan options. */
 #define WAKE_PHY		(1 << 0)
 #define WAKE_UCAST		(1 << 1)