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.

TDA4VM: How to receive multicast packets in Linux?

Part Number: TDA4VM

Hi TI Professor,

Now we can connect the TDA4 board with the PC, while ping from PC to TDA4 and from TDA4 to PC. The board work properly.

I'm working with multicast function. I changed the multicast MAC address to meet our multicast address in function EthFw_setAleBcastEntry() in \ethfw\ethfw\src\ethfw.c

static int32_t EthFw_setAleBcastEntry(void)
{
    appLogPrintf("---------------------Set Multicast entry--------------------------\n");
    Enet_Handle hEnet = Enet_getHandle(gEthFwObj.enetType, 0U /* instId */);
    Enet_IoctlPrms prms;
    uint32_t setMcastOutArgs;
    CpswAle_SetMcastEntryInArgs setMcastInArgs;
    //uint8_t bCastAddr[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
    uint8_t bCastAddr[] = {0x01, 0x00, 0x5e, 0x00, 0x00, 0x50};

    int32_t status;

    memcpy(&setMcastInArgs.addr.addr[0], &bCastAddr[0U], sizeof(setMcastInArgs.addr.addr));
    setMcastInArgs.addr.vlanId = 0U;
    setMcastInArgs.info.super = false;
    setMcastInArgs.info.fwdState = CPSW_ALE_FWDSTLVL_FWD;
    setMcastInArgs.info.portMask = CPSW_ALE_ALL_PORTS_MASK;
    setMcastInArgs.info.numIgnBits = 0U;

    ENET_IOCTL_SET_INOUT_ARGS(&prms, &setMcastInArgs, &setMcastOutArgs);

    status = Enet_ioctl(hEnet,
                        gEthFwObj.coreId,
                        CPSW_ALE_IOCTL_ADD_MCAST,
                        &prms);
    if (status != ENET_SOK)
    {
        appLogPrintf("EthFw_setAleBcastEntry() ADD_MULTICAST ioctl failed: %d\n", status);
    }
    appLogPrintf("---------------------Set Multicast entry Done--------------------------\n");

    return status;
}

Currently i can use eth1 to send the Mcast frame to PC and it works well.

But when I send Mcast frame from PC to TDA4, it can not receive Mcast frame. Although the CPSW9G has transferred the Mcast frame to host port successfully. I use tcpdump in Linux side (eth1) to get nothing.

Can you help me to receive Mcast packets in Linux?