* e1000 speed/duplex error @ 2006-08-01 10:18 a1 2006-08-01 11:20 ` Jeff Kirsher 0 siblings, 1 reply; 16+ messages in thread From: a1 @ 2006-08-01 10:18 UTC (permalink / raw) To: netdev I'm trying to set my nic to force 100Mb/FD, but I'm constantly getting 100/HD on other side of the link. The command is: ethtool -s eth0 speed 100 duplex full autoneg off e1000 driver version 7.1.9 (latest) downloaded from sourceforge. Are there any problems? -- alkot mailto:a1k@mail.ru ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: e1000 speed/duplex error 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 [not found] ` <793732866.20060801153230@mail.ru> 0 siblings, 2 replies; 16+ messages in thread From: Jeff Kirsher @ 2006-08-01 11:20 UTC (permalink / raw) To: a1; +Cc: netdev On 8/1/06, a1 <a1k@mail.ru> wrote: > I'm trying to set my nic to force 100Mb/FD, but I'm constantly getting 100/HD on > other side of the link. > > The command is: > ethtool -s eth0 speed 100 duplex full autoneg off > > e1000 driver version 7.1.9 (latest) downloaded from sourceforge. > What are you linking to? And what is the link partner set to? If one link partner is set to auto-negotiate, and the other partner forced, it is common to see this issue no matter what the two link partners are. > Are there any problems? Not that I am aware of. -- Cheers, Jeff ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re[2]: e1000 speed/duplex error 2006-08-01 11:20 ` Jeff Kirsher @ 2006-08-01 12:03 ` a1 2006-08-01 12:21 ` Andy Gospodarek ` (2 more replies) [not found] ` <793732866.20060801153230@mail.ru> 1 sibling, 3 replies; 16+ messages in thread From: a1 @ 2006-08-01 12:03 UTC (permalink / raw) To: Jeff Kirsher; +Cc: netdev He, Jeff. Thank for quick reply. JK> On 8/1/06, a1 <a1k@mail.ru> wrote: >> I'm trying to set my nic to force 100Mb/FD, but I'm constantly getting 100/HD on >> other side of the link. >> >> The command is: >> ethtool -s eth0 speed 100 duplex full autoneg off >> >> e1000 driver version 7.1.9 (latest) downloaded from sourceforge. >> JK> What are you linking to? And what is the link partner set to? I am linking to my 3com gigabit ethernet switch. And it shows 100Mbit/halfduplex. JK> If one link partner is set to auto-negotiate, and the other partner JK> forced, it is common to see this issue no matter what the two link JK> partners are. I thought the common behavior is that if one side force any particular parameter, other side should "sense" that and go to that mode too. In current case there is misunderstanding - one side (linux box) reports 100/FD and other (switch) reports 100/HD. Maybe I don't understand something... >> Are there any problems? JK> Not that I am aware of. -- Best regards, a1 mailto:a1k@mail.ru ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: e1000 speed/duplex error 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 2 siblings, 0 replies; 16+ messages in thread From: Andy Gospodarek @ 2006-08-01 12:21 UTC (permalink / raw) To: a1; +Cc: Jeff Kirsher, netdev On Tue, Aug 01, 2006 at 04:03:28PM +0400, a1 wrote: > He, Jeff. > > Thank for quick reply. > > JK> On 8/1/06, a1 <a1k@mail.ru> wrote: > >> I'm trying to set my nic to force 100Mb/FD, but I'm constantly getting 100/HD on > >> other side of the link. > >> > >> The command is: > >> ethtool -s eth0 speed 100 duplex full autoneg off > >> > >> e1000 driver version 7.1.9 (latest) downloaded from sourceforge. > >> > > JK> What are you linking to? And what is the link partner set to? > I am linking to my 3com gigabit ethernet switch. And it shows > 100Mbit/halfduplex. > > JK> If one link partner is set to auto-negotiate, and the other partner > JK> forced, it is common to see this issue no matter what the two link > JK> partners are. > I thought the common behavior is that if one side force any particular > parameter, other side should "sense" that and go to that mode too. > > In current case there is misunderstanding - one side (linux box) > reports 100/FD and other (switch) reports 100/HD. > > Maybe I don't understand something... > Jeff it correct, but the behavior can change depending on the switch hardware. The results you see are expected since I'm quite sure the IEEE standard says that a device should default to half-duplex when auto-negotiation fails (which is why your 3com switch defaults to half-duplex). -andy ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Re[2]: e1000 speed/duplex error 2006-08-01 12:03 ` Re[2]: " a1 2006-08-01 12:21 ` Andy Gospodarek @ 2006-08-01 12:22 ` Jamal Hadi Salim 2006-08-01 17:03 ` Rick Jones 2 siblings, 0 replies; 16+ messages in thread From: Jamal Hadi Salim @ 2006-08-01 12:22 UTC (permalink / raw) To: a1; +Cc: netdev, Jeff Kirsher On Tue, 2006-01-08 at 16:03 +0400, a1 wrote: > I thought the common behavior is that if one side force any particular > parameter, other side should "sense" that and go to that mode too. > You _cannot_ depend on that behavior at all. IOW, if one side is not forced the other side's setting is undefined and falls back to whatever that side defines as "default" > In current case there is misunderstanding - one side (linux box) > reports 100/FD and other (switch) reports 100/HD. > > Maybe I don't understand something... You must force both sides for predictable behavior. I would say that doing HD as default is more common. So Linux may need to change just that one bit. cheers, jamal ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: e1000 speed/duplex error 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 2 siblings, 0 replies; 16+ messages in thread From: Rick Jones @ 2006-08-01 17:03 UTC (permalink / raw) To: a1; +Cc: Jeff Kirsher, netdev > I thought the common behavior is that if one side force any particular > parameter, other side should "sense" that and go to that mode too. Nope. That is a common misconception and perhaps the source of many duplex mismatch problems today. Here is some boilerplate I bring-out from time to time that may be of help: $ cat usenet_replies/duplex How 100Base-T Autoneg is supposed to work: When both sides of the link are set to autoneg, they will "negotiate" the duplex setting and select full-duplex if both sides can do full-duplex. If one side is hardcoded and not using autoneg, the autoneg process will "fail" and the side trying to autoneg is required by spec to use half-duplex mode. If one side is using half-duplex, and the other is using full-duplex, sorrow and woe is the usual result. So, the following table shows what will happen given various settings on each side: Auto Half Full Auto Happiness Lucky Sorrow Half Lucky Happiness Sorrow Full Sorrow Sorrow Happiness Happiness means that there is a good shot of everything going well. Lucky means that things will likely go well, but not because you did anything correctly :) Sorrow means that there _will_ be a duplex mis-match. When there is a duplex mismatch, on the side running half-duplex you will see various errors and probably a number of _LATE_ collisions ("normal" collisions don't count here). On the side running full-duplex you will see things like FCS errors. Note that those errors are not necessarily conclusive, they are simply indicators. Further, it is important to keep in mind that a "clean" ping (or the like - eg "linkloop" or default netperf TCP_RR) test result is inconclusive here - a duplex mismatch causes lost traffic _only_ when both sides of the link try to speak at the same time. A typical ping test, being synchronous, one at a time request/response, never tries to have both sides talking at the same time. Finally, when/if you migrate to 1000Base-T, everything has to be set to auto-neg anyway. rick jones ^ permalink raw reply [flat|nested] 16+ messages in thread
[parent not found: <793732866.20060801153230@mail.ru>]
[parent not found: <9929d2390608010445w4fd81b64g310ae90a423e1a7d@mail.gmail.com>]
* Re[4]: e1000 speed/duplex error [not found] ` <9929d2390608010445w4fd81b64g310ae90a423e1a7d@mail.gmail.com> @ 2006-08-01 12:20 ` a1 2006-08-01 12:34 ` Jeff Kirsher 0 siblings, 1 reply; 16+ messages in thread From: a1 @ 2006-08-01 12:20 UTC (permalink / raw) To: Jeff Kirsher; +Cc: netdev Hi, Jeff. JK> OPTION 2: Turn auto-negotiate on the e1000 card and tell it to only JK> advertise 100 Full Duplex. This will allow negotiation between the JK> two lnk partners and the e1000 will advertise that it is only able to JK> do 100 Full duplex. Is there any way i could do this with ethtool? It only allows force spd/dplx , but not set it for advertising... If i do as follows other side reports 1000/FD: ethtool -s eth0 speed 100 duplex full autoneg on -- Best Regards, a1 mailto:a1k@mail.ru ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Re[4]: e1000 speed/duplex error 2006-08-01 12:20 ` Re[4]: " a1 @ 2006-08-01 12:34 ` Jeff Kirsher 2006-08-01 14:35 ` Auke Kok 0 siblings, 1 reply; 16+ messages in thread From: Jeff Kirsher @ 2006-08-01 12:34 UTC (permalink / raw) To: a1; +Cc: netdev On 8/1/06, a1 <a1k@mail.ru> wrote: > Hi, Jeff. > > > JK> OPTION 2: Turn auto-negotiate on the e1000 card and tell it to only > JK> advertise 100 Full Duplex. This will allow negotiation between the > JK> two lnk partners and the e1000 will advertise that it is only able to > JK> do 100 Full duplex. > > Is there any way i could do this with ethtool? It only allows force > spd/dplx , but not set it for advertising... Not currently. That would be a nice feature though... :) > > If i do as follows other side reports 1000/FD: > > ethtool -s eth0 speed 100 duplex full autoneg on > Which is what I would expect. I have to step away for a bit, but if no one responds with how to load the driver with auto-negotiate advertising only 100 Full Duplex, I will do so when I return. -- Cheers, Jeff ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: e1000 speed/duplex error 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 0 siblings, 2 replies; 16+ messages in thread From: Auke Kok @ 2006-08-01 14:35 UTC (permalink / raw) To: Jeff Kirsher; +Cc: a1, netdev Jeff Kirsher wrote: > On 8/1/06, a1 <a1k@mail.ru> wrote: >> Hi, Jeff. >> >> >> JK> OPTION 2: Turn auto-negotiate on the e1000 card and tell it to only >> JK> advertise 100 Full Duplex. This will allow negotiation between the >> JK> two lnk partners and the e1000 will advertise that it is only able to >> JK> do 100 Full duplex. >> >> Is there any way i could do this with ethtool? It only allows force >> spd/dplx , but not set it for advertising... > > Not currently. That would be a nice feature though... :) > >> >> If i do as follows other side reports 1000/FD: >> >> ethtool -s eth0 speed 100 duplex full autoneg on >> > > Which is what I would expect. I have to step away for a bit, but if > no one responds with how to load the driver with auto-negotiate > advertising only 100 Full Duplex, I will do so when I return. Here's that part of the driver documentation: $ modprobe e1000 AutoNeg=0x08 e1000: 0000:00:00.0: e1000_validate_option: AutoNeg advertising 100/FD 99 /* Auto-negotiation Advertisement Override 100 * 101 * Valid Range: 0x01-0x0F, 0x20-0x2F (copper); 0x20 (fiber) 102 * 103 * The AutoNeg value is a bit mask describing which speed and duplex 104 * combinations should be advertised during auto-negotiation. 105 * The supported speed and duplex modes are listed below 106 * 107 * Bit 7 6 5 4 3 2 1 0 108 * Speed (Mbps) N/A N/A 1000 N/A 100 100 10 10 109 * Duplex Full Full Half Full Half 110 * 111 * Default Value: 0x2F (copper); 0x20 (fiber) 112 */ hth, Auke ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: e1000 speed/duplex error 2006-08-01 14:35 ` Auke Kok @ 2006-08-01 17:15 ` Jeff Kirsher 2006-08-02 7:34 ` a1 1 sibling, 0 replies; 16+ messages in thread From: Jeff Kirsher @ 2006-08-01 17:15 UTC (permalink / raw) To: Auke Kok; +Cc: a1, netdev On 8/1/06, Auke Kok <auke-jan.h.kok@intel.com> wrote: > Jeff Kirsher wrote: > > On 8/1/06, a1 <a1k@mail.ru> wrote: > >> Hi, Jeff. > >> > >> > >> JK> OPTION 2: Turn auto-negotiate on the e1000 card and tell it to only > >> JK> advertise 100 Full Duplex. This will allow negotiation between the > >> JK> two lnk partners and the e1000 will advertise that it is only able to > >> JK> do 100 Full duplex. > >> > >> Is there any way i could do this with ethtool? It only allows force > >> spd/dplx , but not set it for advertising... > > > > Not currently. That would be a nice feature though... :) > > > >> > >> If i do as follows other side reports 1000/FD: > >> > >> ethtool -s eth0 speed 100 duplex full autoneg on > >> > > > > Which is what I would expect. I have to step away for a bit, but if > > no one responds with how to load the driver with auto-negotiate > > advertising only 100 Full Duplex, I will do so when I return. > > Here's that part of the driver documentation: > > $ modprobe e1000 AutoNeg=0x08 > e1000: 0000:00:00.0: e1000_validate_option: AutoNeg advertising 100/FD > > > 99 /* Auto-negotiation Advertisement Override > 100 * > 101 * Valid Range: 0x01-0x0F, 0x20-0x2F (copper); 0x20 (fiber) > 102 * > 103 * The AutoNeg value is a bit mask describing which speed and duplex > 104 * combinations should be advertised during auto-negotiation. > 105 * The supported speed and duplex modes are listed below > 106 * > 107 * Bit 7 6 5 4 3 2 1 0 > 108 * Speed (Mbps) N/A N/A 1000 N/A 100 100 10 10 > 109 * Duplex Full Full Half Full Half > 110 * > 111 * Default Value: 0x2F (copper); 0x20 (fiber) > 112 */ > > hth, > > Auke > Thanks Auke. I got tied up longer than expected. -- Cheers, Jeff ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: e1000 speed/duplex error 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 16:19 ` Auke Kok 1 sibling, 2 replies; 16+ messages in thread From: a1 @ 2006-08-02 7:34 UTC (permalink / raw) To: Auke Kok; +Cc: netdev Hi, Auke. Auke Kok wrote: AK> Here's that part of the driver documentation: AK> $ modprobe e1000 AutoNeg=0x08 AK> e1000: 0000:00:00.0: e1000_validate_option: AutoNeg advertising 100/FD AK> 99 /* Auto-negotiation Advertisement Override AK> 100 * AK> 101 * Valid Range: 0x01-0x0F, 0x20-0x2F (copper); 0x20 (fiber) AK> 102 * AK> 103 * The AutoNeg value is a bit mask describing which speed and duplex AK> 104 * combinations should be advertised during auto-negotiation. AK> 105 * The supported speed and duplex modes are listed below AK> 106 * AK> 107 * Bit 7 6 5 4 3 2 1 0 AK> 108 * Speed (Mbps) N/A N/A 1000 N/A 100 100 10 10 AK> 109 * Duplex Full Full Half Full Half AK> 110 * AK> 111 * Default Value: 0x2F (copper); 0x20 (fiber) AK> 112 */ This is not what I'm thinking of. Say, for example, I have a bunch of e1000 adapters in my box and want to dynamically change one's spd/dplx. For that works in the way you described I need to stop all of them and load with autoneg parameter (can I pass this parameter only to single card?) and loose all connection I had on other adapters. It would be better to handle it in ethtool way, since I discovered it's a common behavior. Thanks. AK> hth, AK> Auke -- Best Regards, Alexandr Kotov mailto:a1k@mail.ru ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: e1000 speed/duplex error 2006-08-02 7:34 ` a1 @ 2006-08-02 7:43 ` Jeff Kirsher 2006-08-02 8:39 ` a1 2006-08-02 16:19 ` Auke Kok 1 sibling, 1 reply; 16+ messages in thread From: Jeff Kirsher @ 2006-08-02 7:43 UTC (permalink / raw) To: a1; +Cc: Auke Kok, netdev On 8/2/06, a1 <a1k@mail.ru> wrote: > Hi, Auke. > > Auke Kok wrote: > AK> Here's that part of the driver documentation: > > AK> $ modprobe e1000 AutoNeg=0x08 > AK> e1000: 0000:00:00.0: e1000_validate_option: AutoNeg advertising 100/FD > > > AK> 99 /* Auto-negotiation Advertisement Override > AK> 100 * > AK> 101 * Valid Range: 0x01-0x0F, 0x20-0x2F (copper); 0x20 (fiber) > AK> 102 * > AK> 103 * The AutoNeg value is a bit mask describing which speed and duplex > AK> 104 * combinations should be advertised during auto-negotiation. > AK> 105 * The supported speed and duplex modes are listed below > AK> 106 * > AK> 107 * Bit 7 6 5 4 3 2 1 0 > AK> 108 * Speed (Mbps) N/A N/A 1000 N/A 100 100 10 10 > AK> 109 * Duplex Full Full Half Full Half > AK> 110 * > AK> 111 * Default Value: 0x2F (copper); 0x20 (fiber) > AK> 112 */ > > This is not what I'm thinking of. Say, for example, I have a bunch of > e1000 adapters in my box and want to dynamically change one's spd/dplx. > For that works in the way you described I need to stop all of them and > load with autoneg parameter (can I pass this parameter only to single > card?) and loose all connection I had on other adapters. > It would be better to handle it in ethtool way, since I discovered > it's a common behavior. > Thanks. > > > AK> hth, > > AK> Auke > > > -- > Best Regards, > Alexandr Kotov mailto:a1k@mail.ru > > - > 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 > I agree. Although ethtool does not have that functionality as of yet. Feel free to provide a patch to the ethtool maintainer (Jeff Garzik) if you would like. I will put it on my plate of things to do, but I will admit that it is near the bottom of the list of items to get done for me. Feel free to ping me once in awhile to remind me. -- Cheers, Jeff ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: e1000 speed/duplex error 2006-08-02 7:43 ` Jeff Kirsher @ 2006-08-02 8:39 ` a1 2006-08-02 15:02 ` Auke Kok 0 siblings, 1 reply; 16+ messages in thread From: a1 @ 2006-08-02 8:39 UTC (permalink / raw) To: Jeff Kirsher, Auke Kok; +Cc: netdev Hi, Jeff. JK> On 8/2/06, a1 <a1k@mail.ru> wrote: >> Hi, Auke. >> >> Auke Kok wrote: >> AK> Here's that part of the driver documentation: >> >> AK> $ modprobe e1000 AutoNeg=0x08 >> AK> e1000: 0000:00:00.0: e1000_validate_option: AutoNeg advertising 100/FD >> >> >> AK> 99 /* Auto-negotiation Advertisement Override >> AK> 100 * >> AK> 101 * Valid Range: 0x01-0x0F, 0x20-0x2F (copper); 0x20 (fiber) >> AK> 102 * >> AK> 103 * The AutoNeg value is a bit mask describing which speed and duplex >> AK> 104 * combinations should be advertised during auto-negotiation. >> AK> 105 * The supported speed and duplex modes are listed below >> AK> 106 * >> AK> 107 * Bit 7 6 5 4 3 2 1 0 >> AK> 108 * Speed (Mbps) N/A N/A 1000 N/A 100 100 10 10 >> AK> 109 * Duplex Full Full Half Full Half >> AK> 110 * >> AK> 111 * Default Value: 0x2F (copper); 0x20 (fiber) >> AK> 112 */ >> >> This is not what I'm thinking of. Say, for example, I have a bunch of >> e1000 adapters in my box and want to dynamically change one's spd/dplx. >> For that works in the way you described I need to stop all of them and >> load with autoneg parameter (can I pass this parameter only to single >> card?) and loose all connection I had on other adapters. >> It would be better to handle it in ethtool way, since I discovered >> it's a common behavior. >> Thanks. >> >> >> AK> hth, >> >> AK> Auke >> >> >> -- >> Best Regards, >> Alexandr Kotov mailto:a1k@mail.ru >> >> - >> 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 >> 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. static int e1000_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) { struct e1000_adapter *adapter = netdev_priv(netdev); struct e1000_hw *hw = &adapter->hw; /* When SoL/IDER sessions are active, autoneg/speed/duplex * cannot be changed */ if (e1000_check_phy_reset_block(hw)) { DPRINTK(DRV, ERR, "Cannot change link characteristics " "when SoL/IDER is active.\n"); return -EINVAL; } 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 (e1000_set_spd_dplx(adapter, ecmd->speed + ecmd->duplex)) return -EINVAL; /* reset the link */ if (netif_running(adapter->netdev)) e1000_reinit_locked(adapter); else e1000_reset(adapter); return 0; } 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; ecmd->advertising = hw->autoneg_advertised; } else if (e1000_set_spd_dplx(adapter, ecmd->speed + ecmd->duplex)) -- Best regards, Alexandr Kotov mailto:a1k@mail.ru ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: e1000 speed/duplex error 2006-08-02 8:39 ` a1 @ 2006-08-02 15:02 ` Auke Kok 2006-08-03 7:51 ` a1 0 siblings, 1 reply; 16+ messages in thread From: Auke Kok @ 2006-08-02 15:02 UTC (permalink / raw) To: a1; +Cc: Jeff Kirsher, Auke Kok, netdev 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 ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: e1000 speed/duplex error 2006-08-02 15:02 ` Auke Kok @ 2006-08-03 7:51 ` a1 0 siblings, 0 replies; 16+ messages in thread From: a1 @ 2006-08-03 7:51 UTC (permalink / raw) To: Auke Kok; +Cc: netdev Hi, Auke. Auke Kok wrote: AK> Don't you mean this? : AK> + hw->autoneg_advertised = ecmd->advertising | AK> + ADVERTISED_Autoneg | AK> + ADVERTISED_TP; AK> and we'd also have to do this for fibre... Yep. I've noticed that but I already sent message... >> >> ecmd->advertising = hw->autoneg_advertised; >> } else >> if (e1000_set_spd_dplx(adapter, ecmd->speed + ecmd->duplex)) AK> but that's not really what you want: the way ethtool works currently only AK> allows you to pass *one* speed/duplex tuple and autonegotiate with that, or AK> all (by omitting any speed/duplex tuple). AK> ethtool needs some code that allows you to specify "autonegotiate 10_half or AK> 100_full or 1000_full" (3 tuples, but not implying 100_half or 10_full). This AK> is something mii-tool was able to do but this functionality never made it into AK> ethtool AFAIK :) AK> This is the most useful case for everyone, you can omit advertising gig link AK> if you only have 100mbit switches and speed up link times that way etc. I'm sure of that, but today before actual ethtool patch released will this changes be included in the driver sources? In that case IMO no other changes need to be done to support what you've been writing of... AK> Auke -- Best regards, Alexandr Kotov mailto:a1k@mail.ru ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: e1000 speed/duplex error 2006-08-02 7:34 ` a1 2006-08-02 7:43 ` Jeff Kirsher @ 2006-08-02 16:19 ` Auke Kok 1 sibling, 0 replies; 16+ messages in thread From: Auke Kok @ 2006-08-02 16:19 UTC (permalink / raw) To: a1; +Cc: netdev a1 wrote: > Hi, Auke. > > Auke Kok wrote: > AK> Here's that part of the driver documentation: > > AK> $ modprobe e1000 AutoNeg=0x08 > AK> e1000: 0000:00:00.0: e1000_validate_option: AutoNeg advertising 100/FD > > > AK> 99 /* Auto-negotiation Advertisement Override > AK> 100 * > AK> 101 * Valid Range: 0x01-0x0F, 0x20-0x2F (copper); 0x20 (fiber) > AK> 102 * > AK> 103 * The AutoNeg value is a bit mask describing which speed and duplex > AK> 104 * combinations should be advertised during auto-negotiation. > AK> 105 * The supported speed and duplex modes are listed below > AK> 106 * > AK> 107 * Bit 7 6 5 4 3 2 1 0 > AK> 108 * Speed (Mbps) N/A N/A 1000 N/A 100 100 10 10 > AK> 109 * Duplex Full Full Half Full Half > AK> 110 * > AK> 111 * Default Value: 0x2F (copper); 0x20 (fiber) > AK> 112 */ > > This is not what I'm thinking of. Say, for example, I have a bunch of > e1000 adapters in my box and want to dynamically change one's spd/dplx. > For that works in the way you described I need to stop all of them and > load with autoneg parameter (can I pass this parameter only to single > card?) and loose all connection I had on other adapters. you can pass these parameters per card as such: $ modprobe e1000 AutoNeg=0x2f,0x28,0x2f,0x2f this way card #2 will see the non-default value, the other 3 will run with the default value (0x2f). Auke ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2006-08-03 7:50 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2006-08-03 7:51 ` a1
2006-08-02 16:19 ` Auke Kok
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).