This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DP83867IS: Unstable link with very short connection length (15cm/5")

Part Number: DP83867IS

Hello everyone,

we're developing a board for our customer with several DP83867IS ethernet PHYs, and our customer will use several of these boards in a rack with a custom backplane. For testing we built a test connector we can use instead of the backplane where we create a connection between two of the PHYs on our board. The connection length is very short, approximately 15cm/5" from PHY to PHY.

We've run a test where the link is established and a ping from one PHY to the other is executed. (ping 172.16.1.1 -s 20000 -w 30). The connection is then severed by putting one of the PHYs in power down mode. Afterwards the PHY is woke up again and the test is repeated.

Every once in a while the established link is unstable. That is packets are lost and the receiver reports errors in the Receiver Error Counter Register. This state persists for prolonged periods of time (at least hours, probably until the link is severed). Once disconnected and reconnected the link is stable again (I assume it's just a question of likelihood until two bad links get established back to back).

We've had problems with the link before and were able to mitigate the issue by changing the DSP Feedforward Equalizer Configuration to 0x0E81, but it seems this does not completely solve the issue.

Are there any setting we can tweak to improve the performance with such short connection lengths? Or does anyone have further suggestion on how we can investigate or solve this issue?

Thank you,
best regards,
Ferdinand

Testscript looks like this:

#!/bin/bash
rm nok1.txt
rm nok3.txt
ip netns exec NET1 mii -w 1 0x12C 0xE81
ip netns exec NET1 mii -w 1 0x1F 0x4000
sleep 5
ip netns exec NET1 mii -w 3 0x12C 0xE81
ip netns exec NET1 mii -w 3 0x1F 0x4000
sleep 5
while (true) ; do
    cpt=$((cpt+1))
    ip netns exec NET1 mii -w 3 0 1940
    sleep 1
    ip netns exec NET1 mii -w 3 0 1140
    sleep 5
    ip netns exec NET1 ping 172.16.1.3 -s 20000 -w 30 | tee res.txt
    nbl=$(grep -c " 0% packet loss" res.txt)
    if [ $nbl = 0 ]
    then
        packetloss=$((packetloss+1))
        cp res.txt nok3.txt
        exit 1
    else
        packetloss=$((packetloss+0))
        cp res.txt oldres3.txt
    fi
    echo "Nombre de cycles-3 :$cpt  -Nombre de NOK :$packetloss";
    cpt=$((cpt+1))
    ip netns exec NET1 mii -w 1 0 1940
    sleep 1
    ip netns exec NET1 mii -w 1 0 1140
    sleep 5
    ip netns exec NET3 ping 172.16.1.1 -s 20000 -w 30 | tee res.txt
    nbl=$(grep -c " 0% packet loss" res.txt)
    if [ $nbl = 0 ]
    then
        packetloss=$((packetloss+1))
        cp res.txt nok1.txt
        exit 1
    else
        packetloss=$((packetloss+0))
        cp res.txt oldres1.txt
    fi
    echo "Nombre de cycles-1 :$cpt -Nombre de NOK :$packetloss";
done