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.

DP83848K: sometimes lose packet

Part Number: DP83848K

Hello,

DP83848K, RMII mode, has two issues:

Auto-negotiation can only operate at 10M rate, forcing to 100m does not work.

Packets will be dropped. After the board power off  and restarts, sometimes packets are lost very severely (around 50%), sometimes very low (5%) or even not, just when received; packets are not lost during transmission.

Below is the register configuration:

reg0x0 value : 0x3100
reg0x1 value : 0x786d
reg0x2 value : 0x2000
reg0x3 value : 0x5c90
reg0x4 value : 0x5e1
reg0x5 value : 0xcc61
reg0x6 value : 0xd
reg0x7 value : 0x2801
reg0x8 value : 0x0
reg0x9 value : 0x0
reg0xa value : 0x0
reg0xb value : 0x0
reg0xc value : 0x0
reg0xd value : 0x0
reg0xe value : 0x0
reg0xf value : 0x0
reg0x10 value : 0x17
reg0x11 value : 0x0
reg0x12 value : 0x0
reg0x13 value : 0x0
reg0x14 value : 0x0
reg0x15 value : 0x0
reg0x16 value : 0x100
reg0x17 value : 0x21
reg0x18 value : 0x0
reg0x19 value : 0xb023
reg0x1a value : 0x904
reg0x1b value : 0x0
reg0x1c value : 0x0
reg0x1d value : 0x6011
reg0x1e value : 0x242f
reg0x1f value : 0x0
Below is the information checked by ethtool:
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full    (only worked for 10M, but the link partner is PC, so the net is not only 10Mhz)
Link partner advertised pause frame use: Symmetric Receive-only
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 10Mb/s
Duplex: Full
Port: MII
PHYAD: 3
Transceiver: external
Auto-negotiation: on
Supports Wake-on: g
Wake-on: d
Link detected: yes
NIC statistics:
tx_dropped: 0
tx_packets: 1217
tx_broadcast: 78
tx_multicast: 14
tx_crc_errors: 0
tx_undersize: 0
tx_oversize: 0
tx_fragment: 0
tx_jabber: 0
tx_collision: 0
tx_64byte: 41
tx_65to127byte: 1101
tx_128to255byte: 0
tx_256to511byte: 75
tx_512to1023byte: 0
tx_1024to2047byte: 0
tx_GTE2048byte: 0
tx_octets: 136483
IEEE_tx_drop: 0
IEEE_tx_frame_ok: 1217
IEEE_tx_1col: 0
IEEE_tx_mcol: 0
IEEE_tx_def: 0
IEEE_tx_lcol: 0
IEEE_tx_excol: 0
IEEE_tx_macerr: 0
IEEE_tx_cserr: 0
IEEE_tx_sqe: 0
IEEE_tx_fdxfc: 0
IEEE_tx_octets_ok: 136483
rx_packets: 1394
rx_broadcast: 12
rx_multicast: 237
rx_crc_errors: 43   (crc errors too much, generally, what is the reason?)
rx_undersize: 0
rx_oversize: 0
rx_fragment: 0
rx_jabber: 0
rx_64byte: 45
rx_65to127byte: 1284
rx_128to255byte: 17
rx_256to511byte: 36
rx_512to1023byte: 3
rx_1024to2047byte: 9
rx_GTE2048byte: 0
rx_octets: 167622
IEEE_rx_drop: 0
IEEE_rx_frame_ok: 1351
IEEE_rx_crc: 43
IEEE_rx_align: 0
IEEE_rx_macerr: 0
IEEE_rx_fdxfc: 0
IEEE_rx_octets_ok: 160922
Best regards
Kailyn 
  • Hi Kailyn,

    Thank you for the detailed logs.

    Can you please provide the details below?

    1. What is the speed of operation required for the application? 10M or 100M?
    2. How is the DUT forced to 100M mode? Is it through straps or register programming? If register programming, please provide the register.
    3. How is RMII mode enabled? Is it through straps or register programming? If register programming, please provide the register.
    4. I understand that DUT is connected to PC and ethtool is used for analysis. How is the data flow? Specifically, how is data sent from DUT to PC?

    --
    Regards,
    Gokul.

  • Hi Gokul, 

    Thanks for looking into the issue!

    Kindly see the answers below.

    1. What is the speed of operation required for the application? 10M or 100M?

    Answer:  100M preferred, 10M also can be accepted if 100M doesn't work.

    2. How is the DUT forced to 100M mode? Is it through straps or register programming? If register programming, please provide the register.

    Answer: By register programming. We set bit12 to 0, bit13 to 1 for register 0x00.

    3. How is RMII mode enabled? Is it through straps or register programming? If register programming, please provide the register.

    Answer: By straps.

    4. I understand that DUT is connected to PC and ethtool is used for analysis. How is the data flow? Specifically, how is data sent from DUT to PC?

    Answer: We didn't use DUT and programed a small tool to read register through mdio bus.

    It's a new designed custom board, the root cause maybe is in the hardware side, also can be from software. We can find rx_crc_errors from the ethtool data, do you know  what the rx_crc_errors mean? and generally it's a hardware issue or a software issue?

     

    Best regards,

    Larry.

  • Hi Larry,

    Thank you for the details.

    I see that bit12 of register 0x00 is not programmed to 0 in the device. In the register read log, I see that the read value is 0x3100 instead of 0x2100. Can you please check if the register is programmed correctly?

    Can you please share a snapshot of your setup? I want to understand the data flow.
    (For eg., PC -> MDI -> Eth PHY -> RMII -> (loopback???) -> Eth PHY -> MDI -> PC)

     --
    Regards,
    Gokul Koraganji.

  • Hello Kailyn, Larry,

    Were you able to resolve the issue?
    If not, please share the details mentioned above.

    --
    Regards.
    Gokul.

  • Hi Kailyn, Larry,

    Due to inactivity in the thread, I'm assuming the issue got resolved. Please get back to me on this thread if the issue isn't resolved.

    --
    Regards,
    Gokul.