
1、以上是例程navigator里关于reclaim queue的操作。可不我明白reclaim queue到底是干嘛的?为什么进入它的描述符又会回到原来的队列?reclaim queue里的描述符会被回收到哪里去?

2、为什么向高优先级的accumulation queue压入一个描述符就产生中断?一直不明白什么时候descaiptor才会添加到list buffer,从而达到阈值产生中断?忘解答!
我以前的理解是当被压入到完成队列的描述符达到阈值时才会被累加到list buffer.
3、LINK_RAM0里面具体存放的是什么东西?是不是每个描述符的地址?
Andy Yin1:
关于 realamation queue及accumulator 的具体功能描述请参加multicore navigator user guide PDSP章节。
1. 当描述符被push到reclamation queue后,描述符会被回收到描述符中return queue字段指定的queue中;
2 当accumulator queue中描述符个数达到accumulator channel配置的阈值后描述符会被搬到list buffer中并产生中断事件。
3. 可以认为每个描述符在link ram中都有一个固定的表象,这个表象中记录这个描述符的大小,并当每个描述符被push到queue中后记录前面描述符的link关系。
Evan:
回复 Andy Yin1:
感谢你的回答,但是我还是有些问题没理解。
1、当低优先级accumulator queue 作为发送队列时,被压入到发送队列的描述符是达到了accumulator channel配置的阈值后就搬移到list buffer中,那没达到阈值时队列里的描述符到达了队头也不会弹出来吗?按理说发送队列的描述符到达了对头就会被pop出来的。如果阈值是4,发送队列里描述符的个数为7,哪不是还有三个描述符弹不出来了。
2、当低优先级accumulator queue 作为发送队列时,描述符被搬移到list buffer里面了,那PKTDMA是读哪里的描述符(是list buffer里面的吗?),从而把数据包发送出去?是一次只读一个描述符还是读多个描述符?
3、accumulator queue 能否成为发送完成队列?我感觉他作为发送完成队列可以很好的实现中断功能,但是没见过accumulator queue 作为发送完成队列的情况。
Andy Yin1:
回复 Evan:
1. accumulator queue中描述符个数会被PDSP pop出来存到PDSP内部的FIFO,当到达阈值后,会将所有描述符从PDSP FIFO中放到list buffer中;
2. 只有当描述符放到TXQ中才会触发pktdma进行数据的搬移;
3. 可以。
Evan:
回复 Andy Yin1:
大致已经明白了,只是当发送队列为accumulator queue时还是有些不明白的地方。
1、当accumulator queue 作为发送队列时,每弹出一个描述符就放到PDSP内部的FIFO,是不是同时发送PKTDMA会读取该描述符从而把包发送出去?我看文档上有这样一段话,the accumulator triggers an interrupt to the host to read the buffer for descriptor information.难道是到达阈值后把描述符都放到list buffer后,主机再读取buffer里描述符的信息,然后把包发出去?
希望能给我描绘下当accumulator queue 作为发送队列时发送端的过程!
2、我看Navigator例程里并没有具体的代码指定哪个queue为发送队列,比如800~831为QMSS TX queue,是不是我用到queue 800的时候它就是发送队列?假如是这样的话,我又怎么令accumulator queue为发送队列呢?
TI中文支持网




