I try to join omp-style programming, SRIO and NDK drivers in my project.
After long time I made it. I have full-working NDK and OMP. But SRIO driver works only in DIO mode. I use MCSDK SRIO driver. I adapted loopback example for my project. I saw, that SRIO exanges in DIO mode are completed between some boards.
But when I tried to use type 11 transaction in RAW mode I had fault. I had success with type 11 message transactions between boards when I used same project without OMP. But with OMP I have problem. When I try to use type 11 transaction with OMP I haven't any error in SRIO driver. I saw that host descriptor entered to queue number 672. But from queue 672 transaction is not exited.
After every SockSend call the A register (counter of queue items) from 672 queue incremented per 1. When I tried same project without OMP register A is equal 0 (queue is empty because TX transaction completed (I see it using packet counter in SRIO switch)).
My question is: whats a problem with 672 queue? may be I need to do additional initialisation is compare Loopback Example?
P.S. My sequence of initialisation is:
1. (Before OMP init) qmss_init, Memregion(Ethernet) init, Memregion (SRIO) init
2. OMP automatic init (memregion 3)
3. main
4. CPPI init
5. NDK init
6. SRIO driver init
P.P.S I tryed to use double _mfence instruction like in errata sheet: no effect.