DP83869HM: DP83869HM - Link Status Detection Issue in SGMII-to-Copper Ethernet Mode with RJ45 SFP

Part Number: DP83869HM
Other Parts Discussed in Thread: DP83869

Tool/software:

Hello TI Community, 

I'm using the DP83869HM in "SGMII-to-Copper Ethernet Mode" with a gigabit RJ45 SFP module. The port is functioning correctly for data transmission, but I'm experiencing an issue with link status detection. 

The STTS_LINK_STATUS bit in the FX_STS register (0xC01) always reads as '0', even when data are successfully transmitted and the link is physically established (FX_STS = 0x6179).

Is there an alternative register or method to read the actual link status for copper SFP in this mode?
Are there specific configuration steps required for proper link status detection in SGMII-to-Copper mode?
Should I be using a different register than FX_STS for copper SFP link status?

Any guidance would be greatly appreciated. 

Thank you,

Pascal

  • Hi Pascal, 

    For copper ethernet mode, please try reading register 01h. Does that register show that the link is down also?

    Best,
    J

  • Hi J,

    Thanks for your reply,

    The value of registers 00h and 01h doesn't change with link up or down, i read always 00h = 0x1140 and 01h = 0x7949

    Regards,

    Pascal

  • Hi Pascal, 

    Would you mind sending us the schematic? I sent a friendship request so please accept and feel free to send via message. 
    I am asking for one because SFP modules are typically routed onto the fiber pins of DP83869. However, for DP83869, fiber and SGMII pins are shared so it would be impossible to be routed onto the same pins. This may be the case in which you routed SFP module to the copper MDI pins that the PHY may not be detecting the link status properly causing the link status to show as down but is able to transmit/receive data. 

    Best,
    J

  • Hi J,

    Here is how the SFP module is routed, we use it for optical SFP module or RJ45 SFP module, just switching the configuration beetween "1000M Media Convertor Mode" and "SGMII-to-Copper Ethernet Mode" :

    Regards,

    Pascal

  • Hi Pascal, 

    Interesting. Is the link status properly reflected in 1000M media convertor mode?
    Also, SGMII and fiber pins are shared. In this schematic, it looks like the SGMII pins are only routed to the SFP module. Are the SGMII signals routed separately or do you intend to send SGMII signals onto SFP module also?
    Is port 0 a regular RJ45 port?

    Also, in this case, C00h and C01h may be able to indicate link status as those registers are supposed to be used to tell your link status in fiber or media convertor mode. 

    Please let me know. 


    Best,
    J

  • Hi J,

    Yes, when we are in “1000M media converter mode” with an optical SFP module, link status detection in register 0xC01 works correctly, but not when we are in “SGMII to copper Ethernet mode” with an RJ45 SFP module.
    P0 is the SGMII/fiber port to SFP (optical or copper SFP type) and P1 is the copper Ethernet port :

    Regards,

    Pascal

  • Hi Pascal, 

    In SGMII to copper mode,  the link status will be determined from P1, and not P0. Even if you plug RJ45 SFP module into the P0, in SGMII to copper mode, the link status will be determined if auto-negotiation is done on P1. 

    I am still having a hard time understanding how this connection is done for both SGMII to copper and media convertor. Would it be possible for you to provide us a block diagram of the system?

    Also, I know that the link status LED is low, but is the Link LED on P1 going high when the cable is connected?

    Best,
    J

  • Hi J,

    Here is a block diagram of my system :

    It's true that the LEDs behave strangely. When I have a link only on the copper SFP port p0, the link LED of port p1 does not go high but the activity LED of p1 blinks.

    Regards,

    Pascal

  • Hi Pascal, 

    Thank you for the block diagram. That helped with my understanding a lot. 

    In SGMII to copper mode, Link status is determined by P1. So, if there is no connection on P1, the link status will not go high and the Link LED of P1 will not go high. 

    However, you have both P0 and P1 connected, if I am understanding your problem correctly?

    What is the link partner? Is the link partner same for the media converter mode?
    Also, I understand that you are using the same board to achieve two different modes. If so, are you changing the strap configuration to change the PHY's operational mode, or are you changing the register configuration at the board initialization? If you use the register configuration, could you show us your register configuration?

    Lastly, is this the only board that happens, or are there multiple boards showing this behavior? And how replicable is this issue per board?

    Please let me know.


    Best,
    J

  • Hi J,

    My problem is that I need to kwnow the link status of port P0 when I am in SGMII to copper mode, with or whitout P1 connected.

    To change the PHY's operational mode of P0 I change the configuration registers at the board initialisation :
    => Mode 1000M Media Converter:
    write @0x1DF = 0x0044 // Set Operation Mode to 1000Base-T to 1000Base-X
    write @0x00  = 0x1140 // Reset BMCR 
    write @0x14  = 0xFFFF // GEN_CFG2
    write @0x10  = 0x5048 // Reset PHY_CONTROL
    write @0x1F  = 0x4000 // Software Reset
    => Mode SGMII to Copper Ethernet:
    write @0x1DF = 0x0046 // Set Operation Mode to SGMII to Copper
    write @0x00  = 0x1140 // Reset BMCR
    write @0x14  = 0xFFFF // GEN_CFG2
    write @0x10  = 0x5048 // Reset PHY_CONTROL
    write @0x09  = 0x0B00 // Advertise 1000Base-T ability
    write @0x1F  = 0x4000 // Software Reset

    Here are the values that I read in Link Partner Ability Registers with P0 in SGMII to copper mode:
    => when P0 and P1 not connected:           @0x05 = 0x0        / @0x08 = 0x0       / @0xC05 = 0x4001 / @0xC08 = 0x0
    => when P0 linked and P1 not connected: @0x05 = 0x0        / @0x08 = 0x0       / @0xC05 = 0xD801 / @0xC08 = 0x0
    => when P0 not connected and P1 linked: @0x05 = 0xC5E1 / @0x08 = 0x4006 / @0xC05 = 0x4001 / @0xC08 = 0x0
    => when P0 and P1 linked:                        @0x05 = 0xC5E1 / @0x08 = 0x4006 / @0xC05 = 0xD801 / @0xC08 = 0x0
    Here are the values that I read in Link Partner Ability Registers with P0 in 1000M Media converter mode:
    => when P0 and P1 not connected:           @0x05 = 0x0        / @0x08 = 0x0       / @0xC05 = 0x0        / @0xC08 = 0x0
    => when P0 linked and P1 not connected: @0x05 = 0x0        / @0x08 = 0x0       / @0xC05 = 0x4060 / @0xC08 = 0x0
    => when P0 not connected and P1 linked: @0x05 = 0xC5E1 / @0x08 = 0x4006 / @0xC05 = 0x0       / @0xC08 = 0x0
    => when P0 and P1 linked:                         @0x05 = 0xC5E1 / @0x08 = 0x4006 / @0xC05 = 0x4060 / @0xC08 = 0x0

    I have the same behavior on other similar cards, and it is totally repeatable.

    Regards,

    Pascal

  • Hi Pascal, 

    In SGMII to Copper mode, there is no direct way of knowing the link status of P1 because this was meant to be connected to the MAC rather than to be used as a separate port that display link status. 
    One workaround can be reading bit 0 of register 37h. This bit displays whether SGMII auto-negotiation is complete if the bit is 1. This bit can display if the link is usable if SGMII auto-negotiation is enabled. SGMII auto-negotiation is enabled by default. 

    Best,
    J

  • Hi J,

    Unfortunately, the SGMII_AUTO_NEG_STATUS register (37h) always returns 1 as long as there is a copper SFP present on my card, even if no port is connected. It only changes to 0 if I remove the SFP, so I cannot use it to determine whether a link has been established with a remote product.

    Regards,

    Pascal

  • Hi Pascal, 

    Unfortunately, because this port was not meant to be used to determine link status. I do not see a way in which the PHY will be able to display link status unless you use media convertor mode. 

    Best,
    J