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.

DM648 Multicast Send failure

Hi,

     We are sending compressed video via UDP packets and experiencing failure when we multicast.
the printed info:run out of Tx Bd, when we send to a unicast address ,it work ok,other condition is same.
The differences in sending unicast vs multicast seem minimal from the senders standpoint, just an address change.
the result seem sending multicast more slow than unicast?
    we try based on user Dm642 board, it is ok
    Is this a known issue? Any ideas?

network:1000Mbps router and switch
dvsdk:dvsdk_1_10_00_14_DM648
ndk 1.94
pspdrivers 1.10.03
dsp/bios 5.33.06
hardware :DM648 1.1GHz


Thank you

  • Is this IPv4 or IPv6?

    I don't see why it should be failing for multicast if unicast is working. Have you tried using WireShark to compare the network traffic between the two use cases?

    Todd

  •  

        Network is IPv4.

        we try  to add delay between sending multicast udp packets, No failure when the delay is at least  4 ms, so it seem sending multicast udp packet is more slow than unicast

    why No problem on DM642?

       

  •  i look for the eternet Statistics register, value of TXCARRIERSENSEERRORS-3pGSw_STATS Carrier Sense Errors Register  increases quickly  when sending multicast,

    when sending unicast , TXCARRIERSENSEERRORS almost doesn't increase, why?

     

  • after a long time debugging, we found the problem existing in the fllowing function:

    void Configure_SerDes(void)
    {
     //Serdes Configurations
     #define KEY_REG (*(volatile Uint32 *)0x02049054)
     #define SERDES_RX0_CFG (*(volatile Uint32 *)0x020490B0)
     #define SERDES_RX1_CFG (*(volatile Uint32 *)0x020490B4)
     #define SERDES_TX0_CFG (*(volatile Uint32 *)0x020490B8)
     #define SERDES_TX1_CFG (*(volatile Uint32 *)0x020490BC)
     #define SerdesPLLReg (*(volatile Uint32 *)0x020490A8)
     //Key Reg
     KEY_REG = 0xADDDECAF;
     //Assuming a 62.5 Mhz REFCLKP/N and 1.25Gbps Line Rate operation
     SerdesPLLReg = 0x13;
     for(i=0;i<2500;i++)
     asm(" nop");
     //Rx0
     SERDES_RX0_CFG = 0x00089121;
     //Rx1
     SERDES_RX1_CFG = 0x00089121;  
     SERDES_RX1_CFG = 0;        //error
     //Tx0
     SERDES_TX0_CFG = 0x00000921;
     //Tx1
     SERDES_TX1_CFG = 0x00000921;
     SERDES_TX1_CFG = 0;   //error
    }

    if cmment  two code lines:

     SERDES_RX1_CFG = 0;        //error

     SERDES_TX1_CFG = 0;        //error

    sending multicast success and have no error printed

    reason of writting the error code is that, for DM648, only  SGMII port 0 is used, we want to disalbe SGMII port 1.