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.

TMDX654IDKEVM: Promiscuous Mode on AM65xx

Part Number: TMDX654IDKEVM

Hi,

while testing the TI-RTOS based  ICSS EMAC loopback application (without DDR) I also tested the promiscuous mode. The test passed and everything seems to be ok.

But, if I have a look at the received messages, broadcast, multicast and a MAC-matched (48:93:fe:fa:18:44) telegram are being received, so the promiscuous mode is not used at all.

If a add a further telegram with a different destination MAC-address 48:93:fe:fa:18:45, I expect to receive this telegram in promiscuous mode. But it doesn't.

Receiver timeout. Is there any issue with promiscuous mode on AM65xx?

 

  • Here are the extended parts of test_utils_k3.c. Why does the test message:
    app_test_uc_no_match_pkt

    is not being received in app_test_promiscous_mode ?

    ... adding:

    static uint8_t app_test_uc_no_match_pkt[APP_TEST_PKT_SIZE] = {
        0x48, 0x93, 0xfe, 0xfa, 0x18, 0x45,
        0x48, 0x93, 0xfe, 0xfa, 0x18, 0x4a,
        0x08, 0x06, 0x00, 0x01,
        0x08, 0x00, 0x06, 0x04,
        0x00,0x01,0x01, 0xbb,
        0xcc, 0xdd, 0xee, 0xff,
        0xc0, 0xa8, 0x01, 0x16,
        0x00, 0x00, 0x00, 0x00,
        0xc0, 0xa8,0x01, 0x02,
        0x01,0x02,0x03,0x04,
        0x01,0x02,0x03,0x04,
        0x01,0x02,0x03,0x04,
        0x01,0x02,0x03,0x04,
        0x01,0x02,0x03,0x04,
        0xfe,0xfe, 0x00, 0x00
    };
    ...

    void  app_test_promiscous_mode(void)
    {
        ... adding:
    pTestPkt = (uint8_t*)(&app_test_uc_no_match_pkt[0]); app_test_send_receive(portNum, endPort, 0); UART_printf("app_test_promiscous_mode with no match UC pkt success\n"); ... }
  • Hi Stef,

    Sorry for the delay in reply.

    I am checking internally and will revert to you shortly.

    Regards

    Vineet

  • Hi Stef,

    Can you try with the attached function for configuring promiscous mode ?

    void app_test_config_promiscous_mode(uint32_t enable)
    {
        uint32_t pNum;
        EMAC_IOCTL_PARAMS params;
    
        for (pNum =portNum; pNum  <= endPort; pNum++)
        {
            if ((!port_en[pNum]) || (pNum == 6))
                continue;
            params.seqNumber = gAppTestSequenceNumber++;
    
            if(enable)
            {
                params.subCommand =  EMAC_IOCTL_PORT_MC_FLOODING_ENABLE;
            }
            else
            {
                params.subCommand =  EMAC_IOCTL_PORT_MC_FLOODING_DISABLE;
            }
    
            emac_ioctl(pNum, EMAC_IOCTL_MC_FLOODING_CTRL, (void *)(&params));
            app_test_wait_mgmt_resp(100);
    
            params.seqNumber = gAppTestSequenceNumber++;
    
            if(enable)
            {
                params.subCommand =  EMAC_IOCTL_PORT_UC_FLOODING_ENABLE;
            }
            else
            {
                params.subCommand =  EMAC_IOCTL_PORT_UC_FLOODING_DISABLE;
            }
    
            emac_ioctl(pNum, EMAC_IOCTL_UC_FLOODING_CTRL, (void *)(&params));
            app_test_wait_mgmt_resp(100);
        }
    }
    

    Regards

    Vineet

  • Hi,

    this works. Thank you.

    Regards

    Stef