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.

SRIO MTU settings

Hi,

I need to send SRIO Type 9 messages with MTU less than 256 bytes.

When i configured the MTU to be 248 bytes - CSL_SRIO_SetDataStreamingMTU(hSrio, 0x3f) - The data was not send.

I tries different MTU sizes and found that the data was transmit correctly for the following MTU sizes (The numbers i the bracket are the value written in the register): 192 (0x30), 208 (0x34), 224(0x38), 240(0x3C), 256(0x40) bytes only 

For all other MTU sizes only SRIO packets with payload less than 256 bytes (single packet message)  was transmit but messages with more than 256bytes (which needed to be fragmented) were not transmitted.

According to the user guide the MTU value in the DS_LL_CTL register is increments of 4 bytes, so if i set the MTU to be 0x3F which is 252 - this should work!

My system is:  6678 EVM,  MCSDK package ver. 2.0.5.17

Please advice.

Thanks, 

  • Hi Jim,

    I am confused. You say that the size you listed are the only ones that is working and other than this list only sizes less than 256 works. but then you mention that 248 doesn't work. Please let me know your correct behavior.

    Thanks,

    Arun.

  • Ok, i want to clarify my question:

    MTU is the number of bytes that single SRIO message can has, the maximum MTU is 256 bytes.

    If user need to send more than MTU bytes - the srio peripheral fragments its payload to sub-messages (each message size is the MTU except the last message that its size can be less than the MTU)

    If the user need to send message that its size is less than the MTU size - the MTU size has no effect.

    The 6678 device define the MTU in the DS_LL_CTL register (section 3.12.9  of the user guide)

    The problem i have is as following:

    According to the user guide the MTU can be less than 256 bytes but must be increments of 4 bytes, so MTU of 252B, 248B, 244B, 240B, 236B.... are legal MTU values and the peripheral must be able to send Type 9 messages of any size (up to 64KBytes) using those MTU values  (each sub-message will be at the MTU size)

    What i found is that only for MTUs of 256B, 240B, 224B, 208B, 192B i can send data that is larger than this MTU but if i configure the MTU to different value (for example 252 bytes) - i can send only message size that is less than 252 bytes (where the MTU has no effect) but i can't send message larger the this MTU size (252 bytes)

    I hope i clarify the problem i have.

    Jim

  • Jim,

    You are right.  Unfortunately, we were not able to support the full 4B increment requirement on MTU size.  As you discovered, we support 16B MTU increments up to 256B.  This is due to the internal bussing/interface structure.  I will have the documentation updated accordingly.

    Regards,

    Travis