AnsweredAssumed Answered

Not receiving any DQRR frames after enqueue in LS1088A

Question asked by Alain Abitria on Jun 7, 2018
Latest reply on Jun 14, 2018 by bpe

Please I need help.  I'm not receiving any frames in DQRR after enqueueing a command for QDMA.  DQRI interrupt status bit doesn't get set (despite enabling it), and all DQRR entries are zero.  This is just the very first run-time access of qbman and qdma after reset and initialization.  I'm using LS1088ARDB.  We are coding bare-metal firmware but used almost exactly the same qbman, dpaa2-qdma, and other dpio and dpaa2 codes used in Linux.

 

Knowns:

 

Management commands are working (despite cache is disabled) in CENA region and RR0/1 returns readable replies.
- So, CENA region also works despite lack of cache.

 

Recoverable and non-recoverable errors interrupt are all enabled but returns nothing in its status registers
- so, none of these recoverable and non-recoverable errors occurred.

 

DQRR entries are all zero.  DQRR_PI is valued at 0x80 before and after enqueueing

 

Int status register works, because when I enabled EQDI interrupt as well as set this bit in an enqueued command in EQCR, EQDI status bit in ISR was set.  Meaning command is dispatched.  DMA also took place.
- But DQRI status bit never get set after command dispatch

 

FQID 7 - the response FQ I registered to DPIO1 via dpdmai_set_rx_queue, upon reading its FQD via MC command, is at state 0x2 before and after enqueue - meaning tentatively scheduled
- but so do FQID 5 the transmit queue for enqueueing.  FQIDs 5 & 7 are in priority[0] vs 6 & 8 (priority[1]).
- FQID 8, which I assume I don't use for receiving, has before and after state of 0x4 - parked.

 

Confirmed from reading FQD of FQID 7 that the user context I registered in dpdmai_set_rx_queue is correctly recorded.

 

We are using array mode (EPM=11h) in EQCR as in the LInux code.

 

DQRR ITR = 0, so even one new dequeue frame must trigger interrupt.  But none happened.

 

Max DQRR = 8 in SWP_CFG is the same as in Linux qbman-portal code

 

SDQCR in qbman swp descriptor is 0x21bb0001

 

Confirmed that dpio_open, dpio_reset, dpio_get_attributes, dpio_enable commands were sent before calling qbman_swp_init.

 

 

What could be the reason here I'm not receiving any dequeue frames in DQRR?  Did i miss anything in turning it on?  Does the QMAN sends in a wrong FQ?  Where else can I check?  I'm running out of checking options here.

 

Thanks!

Outcomes