Skip to contentSkip to conversation

micrel KSZ8041 disable auto negotiation with fiber

RFC Aníbal Almeida Pinto 2 participants 4 messages Jun 19, 2012

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi,

I am working on a custom board based on a OMAP L138 with a KSZ8041TL-FTL phy that have fibber and copper support.

When using with fibber the board can't connect to a switch, only after exec :

ethtool -s eth1 speed 100 duplex full autoneg off

the phy get link and start working.

On some switches it appears that autoneg don't work well with fibber, ethtool reports that its at 10MB/s after exec

ethtool -s eth1 autoneg on

The auto negotiation bit on phy register is disable on start when using the fibber but Linux don't appear to look at it.

Found a thread [1] that solve the problem but don't appear to be fully accepted.

The problem is modifying the phy code without interfere with ethtool use.

Any official/accepted solution to this problem ?

Thanks.

[1] - http://marc.info/?l=linuxppc-embedded&m=131107263711714

Aníbal

#1 lore raw
Quoted 8 lines · Aníbal Almeida Pinto

Hi,

I am working on a custom board based on a OMAP L138 with a KSZ8041TL-FTL phy that have fibber and copper support.

When using with fibber the board can't connect to a switch, only after exec :

Quoted 8 lines

ethtool -s eth1 speed 100 duplex full autoneg off

the phy get link and start working.

On some switches it appears that autoneg don't work well with fibber, ethtool reports that its at 10MB/s after exec

ethtool -s eth1 autoneg on

I'm not aware of any specification for autoneg over fibre, so I imagine the PHY is being programmed with an invalid configuration and sending weird signals.

Quoted 9 lines

The auto negotiation bit on phy register is disable on start when using the fibber but Linux don't appear to look at it.

Found a thread [1] that solve the problem but don't appear to be fully accepted.

The problem is modifying the phy code without interfere with ethtool use.

Any official/accepted solution to this problem ?

The net driver or PHY driver needs to disable autoneg by default when connected to fibre, and reject attempts to turn it on.

As for *how* the driver is supposed to know whether that's the case, I have no idea...

Quoted 1 line

[1] - http://marc.info/?l=linuxppc-embedded&m=131107263711714

...which seems to be where the previous discussion ended.

Ben.

Signature · 3 lines
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
#2 lore raw

Em Ter 19 Jun 2012 18:08:29 WEST, Ben Hutchings escreveu:

Quoted 30 lines · Aníbal Almeida Pinto
Quoted 8 lines

Hi,

I am working on a custom board based on a OMAP L138 with a KSZ8041TL-FTL phy that have fibber and copper support.

When using with fibber the board can't connect to a switch, only after exec :

Quoted 8 lines

ethtool -s eth1 speed 100 duplex full autoneg off

the phy get link and start working.

On some switches it appears that autoneg don't work well with fibber, ethtool reports that its at 10MB/s after exec

ethtool -s eth1 autoneg on

I'm not aware of any specification for autoneg over fibre, so I imagine the PHY is being programmed with an invalid configuration and sending weird signals.

Quoted 8 lines

The auto negotiation bit on phy register is disable on start when using the fibber but Linux don't appear to look at it.

Found a thread [1] that solve the problem but don't appear to be fully accepted.

The problem is modifying the phy code without interfere with ethtool use.

Quoted 7 lines
Quoted 1 line

Any official/accepted solution to this problem ?

The net driver or PHY driver needs to disable autoneg by default when connected to fibre, and reject attempts to turn it on.

As for *how* the driver is supposed to know whether that's the case, I have no idea...

On this chip you have a pin where you can specify if is fibber or copper, at power up it cleat/set the bit of auto negotiation.

The driver can save the bit state after phy power up or reset, and with that validate if is copper or fibber.

In the case of fibber shouldn't allow change the auto negotiation.

Quoted 7 lines
Quoted 2 lines

[1] - http://marc.info/?l=linuxppc-embedded&m=131107263711714

...which seems to be where the previous discussion ended.

Ben.

#3 lore raw
Quoted 6 lines · Aníbal Almeida Pinto

Em Ter 19 Jun 2012 18:08:29 WEST, Ben Hutchings escreveu:

Quoted 5 lines · Aníbal Almeida Pinto
Quoted 4 lines

Hi,

I am working on a custom board based on a OMAP L138 with a KSZ8041TL-FTL phy that have fibber and copper support.

[...]

Quoted 6 lines
Quoted 5 lines

The net driver or PHY driver needs to disable autoneg by default when connected to fibre, and reject attempts to turn it on.

As for *how* the driver is supposed to know whether that's the case, I have no idea...

Quoted 7 lines

On this chip you have a pin where you can specify if is fibber or copper, at power up it cleat/set the bit of auto negotiation.

The driver can save the bit state after phy power up or reset, and with that validate if is copper or fibber.

In the case of fibber shouldn't allow change the auto negotiation.

So presumably the problem is where to put this logic?

It looks like you'll be using the davinci_emac net driver, which uses phylib (i.e. separate PHY drivers) so you need to change ks8041_driver and related functions in drivers/net/phy/micrel.c.

Ben.

Signature · 3 lines
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.