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.

sync Free queues

Hi All,

         Can anyone please point me to typical characteristics of this sync queues, guidelines for selecting them. i couldn't find any literature/doc using the word "Sync queue", This Sync free queue i saw in qmInfraMCExampleProject (example as part of PDK package).

1. I wanted to know why [purpose ?] it is used in Core To Core Communication using Infrastructure queues.

2. Since queue Push/Pop operations are atomic at CORE level, i assume there is no synchronization required. I assume i can do communication with the following [host descriptor mode + Infrastructure/qmss queues]

1. Tx queue, Tx Free queue, Tx Completion queue

2. Rx queue, Rx Free queue

with this i assume that say CORE 0 can push to Tx queue and CORE1 can pop and retrieve data [meaning Core to Core Communication]? please confirm, if it is possible in that way?

please let me know why is this synchronization required [when queue operations are atomic across Cores]

Thanks

RC Reddy

  • Hi Reddy,

    I will look into this example more deeply to understand your specific references to it.

    Now, regarding the inter-core communication with QMSS. Yes, the infrastructure PKTDMA on QMSS was designed to allow Core to Core communication (IPC). You may use host descriptors on the TX queues of the Infrastructure PKTDMA.

    Push/Pop operations are atomic. You push a packet into the TXQ and PKTDMA will use the programmed flow information to determine to which RXQ the packet will go. Both cores need to be aware of the flow information of course. In your example, Core 0 pushes a packet to a TXQ, then Core 1 needs to know which RXQ to poll evidently.

    Regards,

    Javier

  • Hi Reddy,

    These "sync queues" are no "special" queue types such as Host and Monolothic queue types. This is just a label the example developer gave these descriptors. He is using the descriptors to communicate (sync) between the cores that data has been sent/recevied. You see the ISR when data has been processed descriptors are sent to the "sync queues" to let know other cores the data is received and after dta is sent the cores recycle these descriptors back to be used in the next iteration. So they do not carry any specific application data the only purpose is to use them as "sync  or pseudo semaphore" signals.

    Hope this helps,

    Javier

  • Hi Javier,

                 I tried decoding what you said here, can you please explain step by step[point wise taking an example] what do you mean by [your statement is hard to crack/understand]

    "You see the ISR when data has been processed descriptors are sent to the "sync queues" to let know other cores the data is received and after dta is sent the cores recycle these descriptors back to be used in the next iteration. So they do not carry any specific application data the only purpose is to use them as "sync  or pseudo semaphore" signals".

    Thanks

    RC Reddy