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 configuration for mailbox 4

Hi,

AFAIK, 64 mailboxes are supported for SRIO type 11 single packet messages. And 4 are supported for multi-packet messages. With this understanding, I modified  the SRIO loopback example code in the 6678 PDK to do SRIO raw socket type 11 transmits on mailboxes other than 0. For a start, I disabled SRIO reception, and only verify the transmit completion interrupts. (I also have the example modified to generate transmit and receive completion interrupts using the accumulator instead of the original example which used polling)  So, the example does continuous transmits without anyone really receiving the data. 

I see transmit completion ISR if the mailbox number is 0, 1, 2 or 3. For mailboxes #4 and beyond, Tx ISR is not generated. The messages are single segment :

bindInfo.type11.segMap   = 0x0;                   /* Single Segment                           */

Am I missing some other configuration? Change in some CPPI/QMSS parameter if the mailbox is > 3?

Or something wrong with what I am trying to do? I mean there are 64 mailboxes for single segment message, correct ?

Thanks

Shivang

  • Hello Shivang,

     

    I do not know what you mean by " 4 are supported for multi-packet messages". If you mean "each mailbox can contain 4 separate transactions", then you are correct. There are 64 mailboxes for single packet messages.

    Can I see your full loopback project? Please tell me which source code you modified in your project.

     

    Thanks

    Elush

  • Hi Elush,

    When communicating between two 6678 through a SRIO switch fabric, it is possible the switch was in bad state or there was a timing issue in that the second 6678, attempting to receive the messages from the first 6678, was not ready. I have made progress on the issue. And the original problem about transmitting on mailboxes is resolved.

    Now, the sample application (attached) is run on two 6678. First 6678 sends a message using mailbox 0 to the second 6678 on mailbox 0, and then sends another one on mailbox 1 (or 4). And keeps sending messages to alternate mailbox. The 2nd 6678 is setup to alternatively receive messages on sockets bound to mailbox 0 and 1. This applications works fine for a few iterations (sometimes a couple hundred, sometime a couple thousand), but eventually, the 6678 receiving messages, stops getting SRIO messages.

    Since some iterations go through, the SRIO configuration should be fine. Still, I have attached the code. The receiving 6678 is not able to keep up with the transmitting 6678, and I wonder if eventually, it hits a error condition which is not handled, and the receiving stops completely since then. If you need any register dumps for SRIO, please let me know.

    Also, there is an SRIO receive issue mentioned in advisory 15 of silicon errata for 6678.  We are using silicon version 1.0.  From the sample application, do you think I could be running into that issue?

    4682.Srio-Dsp2Dsp-Stops.zip

    Thanks

    Shivang

  • Shivang,

     

    For the first questions, it can be a timing issue. Have you set up ACK ID alignment? Is the SRIO switch gen 2? If it is, check the VMIN value of the port that outputs to the two 6678.

     

    For your second part, I recommend the same thing as above. Try looking at this previous E2E and hope this helps you out.

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/196080.aspx

     

    Thanks

    Elush

  • Shivang,

     

    It sounds like it can be the advisory 15 of silicon errata for 6678. 

     

    Elush

  • Shivang,

     

    On the switch side, update the VMIN register to a value greater than or equal to 12.

     

    For the failing case, check the SRIO SERDES PLL. You can use the Nyquist System debug GEL file to get that.

    GEL file is located in wherever you installed the CCS folder under ccsv5\ccs_base\emulation\boards\evmc6678l\gel