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.

66AK2H14: SRIO in-order delivery of messages

Part Number: 66AK2H14

Our customer expects the messages initiated by multiple cores to be delivered to the same destination in the order in which they were initiated, but see later initiated a message being delivered before delivery of the earlier initiated a message is completed.

All messages transmitted by all cores are single packet messages with the same mailbox and letter.

Section 2.3.3.3 "Message Passing Software Requirements" in the SRIO User's Guide (SPRUGW1C) describes as follows:

 "The only true way to ensure in-order message delivery is to explicitly use the same mailbox and letter combination between two endpoints using the same deviceIDs. This ensures in-order delivery (barring any error conditions) as a message is sent out only after the previous one has completed."

 "Higher performance in-order DSP-to-DSP delivery is possible under the following restrictions. Because the TX queues are based on priority, reordering is not done by the fabric or peripheral’s physical layer, thus in-order delivery to a given DestID can be done by using the same TX queue even when the first available letter is used."

 "In this case, only logical layer retries can cause messages to be received out of order.
 The following must be obeyed to prevent the occurrence of logical layer retries:
 • Ensure that the RX free descriptor queues are never empty.
 • Do not exceed the limitation of 16 open segmentation contexts in the RXU."

Is it required that all messages transmitted by all cores use the same TX queue?

Do the requirements to prevent the occurrence of logical layer retries apply to the TX operation as well as the RX operation?

If the requirements also apply to the TX operation, why is that? Does that relate to the TX response handling?

Best regards,

Daisuke

  • Dear TI support team,

    Please give me an answer as soon as possible. Your prompt reply would be appreciated.

    Best regards,

    Daisuke

  • Hi Daisuke,

    My sincere apologies for delayed response.

    All messages transmitted by all cores are single packet messages with the same mailbox and letter.

    If mailbox is used with same message handle. Then, messages are handled in queue.

    Is it required that all messages transmitted by all cores use the same TX queue?

    Yes, As mentioned in code below

    /* CREATE HOST PACKET DESCRIPTORS FOR TX OPERATION FOR TX QUEUE#672 
    POP THE DESCRIPTOR # 1 
    */ 
    // transmission happens in this queue and after that its descriptor address is popped out
    host_desc[0] = pop_queue(HOST_TX_COMPLETE_Q); //HOST_TX_COMPLETE_Q 

    Do the requirements to prevent the occurrence of logical layer retries apply to the TX operation as well as the RX operation?

    For TX operation, By using the same TX queue we can prevent the logical layer retries, But that isn't the case with RX operation.

    Thanks & Regards,

    Rajarajan U

  • Hi Rajarajan-san,

    Thank you for your reply.

    I understand the following about in-order message delivery.

    - The next message is sent after the response for the previous message has been received. The same is true if the response for the previous message is ERROR or RETRY.

    - If the same SrcID, mailbox, and letter are used, messages are delivered in-order to the same destination (DestID).

    - If the same TX queue is used, messages are delivered in-order to any destination (DestID) .

    Is my understanding correct?

    Is the following description of logical layer retries only for the RX operation? In other words, must the destination endpoint obey this description?

    "In this case, only logical layer retries can cause messages to be received out of order.
    The following must be obeyed to prevent the occurrence of logical layer retries:
    • Ensure that the RX free descriptor queues are never empty.
    • Do not exceed the limitation of 16 open segmentation contexts in the RXU."

    Best regards,

    Daisuke

  • Hi Daisuke,

    must the destination endpoint obey this description?

    "In this case, only logical layer retries can cause messages to be received out of order.
    The following must be obeyed to prevent the occurrence of logical layer retries:
    • Ensure that the RX free descriptor queues are never empty.
    • Do not exceed the limitation of 16 open segmentation contexts in the RXU."

    This description is applicable only to RX operation 66AK2H14. I am not sure whether the destination endpoint also operates in the same algorithm.

    If the same SrcID, mailbox, and letter are used, messages are delivered in-order to the same destination (DestID).

    - If the same TX queue is used, messages are delivered in-order to any destination (DestID) .

    Is my understanding correct?

    Yes, After every TX queue the descriptor address needs to popped out. The code used in the document uses direct register access and function definition are found in page 363 of SRIO guide . Also, SRIO LLD (Low level driver) can be found in "TI_INSTALLATION_FOLDER}\pdk_k2hk_4_0_16\packages\ti\drv\srio\docs\doxygen\html\index.html". kindly open this folder in any browser, 

    It look as 

    Thanks,

    Rajarajan U

  • Hi Rajarajan-san,

    Thank you for your reply.

    Is the following correct about in-order message delivery?

    - The next message is sent after the response for the previous message has been received. The same is true if the response for the previous message is ERROR or RETRY.

    Our customer's issue is that a message is sent out before the previous one has completed. Because of the short interval between messages being sent, the next message may have been sent out before the response for the previous message is received.

    Are there any conditions other than error conditions that prevent messages from being delivered in-order?

    Best regards,

    Daisuke

  • Hi Daisuke,

    So far my understanding was on theoretical point of view. Kindly share the SRIO code and logs.

    Thanks,

    Rajarajan U

  • Hi Rajarajan-san,

    Thank you for your reply.

    Could you tell me if the following is correct on theoretical point of view?

    - The next message is sent after the response for the previous message has been received. The same is true if the response for the previous message is ERROR or RETRY.

    The SRIO message-passing allows out-of-order responses.

    Is in-order message delivery only for outgoing messages and not for incoming responses?

    Best regards,

    Daisuke

  • Hi Daisuke,

    The SRIO message-passing allows out-of-order responses.

    Is in-order message delivery only for outgoing messages and not for incoming responses?

    Only on the receive side, we can able to order the messages. In Transmitting operation, we can sequentially transmit the messages. But, there is no control we can if the message is out-of-order.

    Thanks,

    Rajarajan U

  • Hi Rajarajan-san,

    Thank you for your reply.

    - If the same SrcID, mailbox, and letter are used, messages are delivered in-order to the same destination (DestID).

    - If the same TX queue is used, messages are delivered in-order to any destination (DestID) .

    Even if the conditions for in-order message delivery are met, is a message sent without waiting for a previous response?

    Or does the sending side stop sending messages while the receiving side does not return a previous response?

    Best regards,

    Daisuke

  • Hi Daisuke,

    I assumed that I can able to solve this scenario, I apologize. I will direct SRIO experts to comment on this post.

    Thanks,

    Rajarajan U

  • Hi Rajarajan-san and SRIO experts,

    Thank you for your reply.

    Please give me an answer as soon as possible. Your prompt reply would be appreciated.

    Best regards,

    Daisuke

  • Hi Rajarajan-san and SRIO experts,

    Please give me an answer as soon as possible. Your prompt reply would be appreciated.

    Best regards,

    Daisuke

  • Hi Rajarajan-san and SRIO experts,

    Sorry for the repeated prompting.

    Please give me an answer as soon as possible. Your prompt reply would be appreciated.

    Best regards,

    Daisuke

  • Hi Rajarajan-san and SRIO experts,

    Sorry for the repeated prompting.

    - If the same SrcID, mailbox, and letter are used, messages are delivered in-order to the same destination (DestID).

    - If the same TX queue is used, messages are delivered in-order to any destination (DestID) .

    Even if the conditions for in-order message delivery are met, is a message sent without waiting for a previous response?

    Or does the sending side stop sending messages while the receiving side does not return a previous response?

    Please give me an answer as soon as possible. Your prompt reply would be appreciated.

    Best regards,

    Daisuke

  • Hi Daisuke,

    In SRIO, to Ordered delivery of messages. I came across this document. Kindly look into it and provide your feedback.

    sprue13j.pdf

    Please refer page 56 for

     

    Thanks