Hi,
Please find below the prototype scenario and problem -
Prototype scenario : Interrupt based Network -> Core communication
Packet accelerator posts packets to QMSS Queue (Configured as High priority Q).
Accumulator is configured to monitor this Queue with below key parameters -
AccumulatorCfg.maxPageEntries = 1+1;
AccumulatorCfg.timerLoadCount = 0;
AccumulatorCfg.interruptPacingMode = Qmss_AccPacingMode_LAST_INTERRUPT;
AccumulatorCfg.listEntrySize = Qmss_AccEntrySize_REG_D;
AccumulatorCfg.listCountMode = Qmss_AccCountMode_ENTRY_COUNT;
AccumulatorCfg.multiQueueMode = Qmss_AccQueueMode_SINGLE_QUEUE;
Problem : Irrespective of number of input packets posted into queue, only one interrupt is generated from accumulator.
I have taken care of Acknowledge and Clearing of End Of Interrupt register in Interrupt Service Routine as given below -
Void Rx_ISR (Void)
{
............... process interrupt....................
/*Acknowledge interrupt and clear EOI register*/
Qmss_ackInterrupt (channel, 1);
Qmss_setEoiVector (Qmss_IntdInterruptType_HIGH, channel);
}
In addition, return value of Qmss_ackInterrupt() and Qmss_setEoiVector() is observed as QMSS_ACC_IDLE (Decimal 0).
whereas according to QMSS LLD spec, the mentioned APIs shall return QMSS_ACC_SOK (Decimal 1) as success status.
what is meant by QMSS_ACC_IDLE here and what might be the reason for getting this return value ?
Below is test observation for mentioned configurations -
S. No. |
Accumulator Configuration used |
Outcome |
Remark |
1 |
No Of Input Packet = 3 Accumulator buffer threshold = 1 Timer Load count = 0 Int Pacing mode : Same behavior for all possible modes (i.e. NONE and 3 TIMER modes) |
1 interrupt 1 packet received |
|
2 |
No Of Input Packet = 3 Accumulator buffer threshold = 3 Timer Load count = 40000 Int Pacing mode : Same behavior for all possible modes (i.e. NONE and 3 TIMER modes) |
1 interrupt 3 packets received |
If value of Timer Load Count is 0, Only one packet is received while using Timer Mode as Interrupt pacing. |
3 |
No Of Input Packet = 3 Accumulator buffer threshold = 10 Timer Load count = 40000 Int Pacing mode : TIMER modes |
1 interrupt 3 packets received |
|
4 |
No Of Input Packet = 3 Accumulator buffer threshold = 10 Timer Load count = 40000 Int Pacing mode : NONE (Threshold based) |
NO Interrupt |
|
5 |
No Of Input Packet = 8 Accumulator buffer threshold = 3 Timer Load count = 40000 Int Pacing mode : Same behavior for all possible modes (i.e. NONE and 3 TIMER modes) |
1 interrupt 3 packets received |
|
Please help me in understanding why Accumulator is not generating any further interrupts after the fist one.