netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Auke Kok <auke-jan.h.kok@intel.com>
To: a1 <a1k@mail.ru>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>,
	Auke Kok <auke-jan.h.kok@intel.com>,
	netdev@vger.kernel.org
Subject: Re: e1000 speed/duplex error
Date: Wed, 02 Aug 2006 08:02:09 -0700	[thread overview]
Message-ID: <44D0BE71.9080205@intel.com> (raw)
In-Reply-To: <1556642230.20060802123908@mail.ru>

a1 wrote:
> JK> I agree.  Although ethtool does not have that functionality as of yet.
> JK>  Feel free to provide a patch to the ethtool maintainer (Jeff Garzik)
> JK> if you would like.  I will put it on my plate of things to do, but I
> JK> will admit that it is near the bottom of the list of items to get done
> JK> for me.  Feel free to ping me once in awhile to remind me.
> 
> Ethtool already have support for that, but e1000 driver doesn't treat
> all values passed from ethtool correctly.
> 
> For example, if I run ethtool with the following parameters:
> ethtool -s eth0 speed 100 duplex full autoneg on
> 
> parameters filled by ethtool looks like:
> 
> ecmd->autoneg = AUTONEG_ENABLE;
> ecmd->advertising = ADVERTISED_100baseT_Full;
> 
> but then they passed to the driver, driver fills the structure passed
> to the hw layer with all possible advertise values.

>         if (ecmd->autoneg == AUTONEG_ENABLE) {
>                 hw->autoneg = 1;
>                 if (hw->media_type == e1000_media_type_fiber)
>                         hw->autoneg_advertised = ADVERTISED_1000baseT_Full |
>                                      ADVERTISED_FIBRE |
>                                      ADVERTISED_Autoneg;
>                 else
> --->                    hw->autoneg_advertised = ADVERTISED_10baseT_Half |
>                                                   ADVERTISED_10baseT_Full |
>                                                   ADVERTISED_100baseT_Half |
>                                                   ADVERTISED_100baseT_Full |
>                                                   ADVERTISED_1000baseT_Full|
>                                                   ADVERTISED_Autoneg |
>                                                   ADVERTISED_TP;
>                 ecmd->advertising = hw->autoneg_advertised;
>         } else

> If you change it that way everything works like I thought
> 
> --- e1000_ethtool.c.orig        Mon Jun 26 14:13:26 2006
> +++ e1000_ethtool.c     Wed Aug 02 12:35:36 2006
> @@ -225,13 +225,7 @@
>                                      ADVERTISED_FIBRE |
>                                      ADVERTISED_Autoneg;
>                 else
> -                       hw->autoneg_advertised = ADVERTISED_10baseT_Half |
> -                                                 ADVERTISED_10baseT_Full |
> -                                                 ADVERTISED_100baseT_Half |
> -                                                 ADVERTISED_100baseT_Full |
> -                                                 ADVERTISED_1000baseT_Full|
> -                                                 ADVERTISED_Autoneg |
> -                                                 ADVERTISED_TP;
> +                       hw->autoneg_advertised = ecmd->advertising;

Don't you mean this? :

+                       hw->autoneg_advertised = ecmd->advertising |
+                                                ADVERTISED_Autoneg |
+                                                ADVERTISED_TP;

and we'd also have to do this for fibre...

 >
>                 ecmd->advertising = hw->autoneg_advertised;
>         } else
>                 if (e1000_set_spd_dplx(adapter, ecmd->speed + ecmd->duplex))


but that's not really what you want: the way ethtool works currently only 
allows you to pass *one* speed/duplex tuple and autonegotiate with that, or 
all (by omitting any speed/duplex tuple).

ethtool needs some code that allows you to specify "autonegotiate 10_half or 
100_full or 1000_full" (3 tuples, but not implying 100_half or 10_full). This 
is something mii-tool was able to do but this functionality never made it into 
ethtool AFAIK :)

This is the most useful case for everyone, you can omit advertising gig link 
if you only have 100mbit switches and speed up link times that way etc.

Auke

  reply	other threads:[~2006-08-02 15:03 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-01 10:18 e1000 speed/duplex error a1
2006-08-01 11:20 ` Jeff Kirsher
2006-08-01 12:03   ` Re[2]: " a1
2006-08-01 12:21     ` Andy Gospodarek
2006-08-01 12:22     ` Re[2]: " Jamal Hadi Salim
2006-08-01 17:03     ` Rick Jones
     [not found]   ` <793732866.20060801153230@mail.ru>
     [not found]     ` <9929d2390608010445w4fd81b64g310ae90a423e1a7d@mail.gmail.com>
2006-08-01 12:20       ` Re[4]: " a1
2006-08-01 12:34         ` Jeff Kirsher
2006-08-01 14:35           ` Auke Kok
2006-08-01 17:15             ` Jeff Kirsher
2006-08-02  7:34             ` a1
2006-08-02  7:43               ` Jeff Kirsher
2006-08-02  8:39                 ` a1
2006-08-02 15:02                   ` Auke Kok [this message]
2006-08-03  7:51                     ` a1
2006-08-02 16:19               ` Auke Kok

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=44D0BE71.9080205@intel.com \
    --to=auke-jan.h.kok@intel.com \
    --cc=a1k@mail.ru \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=netdev@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).