PDSP从RxQ中pop出desc,并放入accumulation List中,然后core从accumulation List中读取desc,并分析。
请问被pop出的desc是在那个步骤被回收的呢,是由pdsp在每一次pop之后直接回收,还是由core在分析accumulation list中的每一个desc之后再回收呢?
对于前者,我看到在pktDMA 初始化程序中有:KeyStone_Qmss_Config_Reclaim_Queue (Qmss_PdspId_PDSP1, RECLAMATION_QUEUE);这是对pdsp进行配置的函数,使其将pop出的desc回收到制定queue。
对于后者,我看到在由accumulation list引发的中断程序中,有core对desc进行逐个分析,并回收的语句:KeyStone_queuePush(RECLAMATION_QUEUE, (Uint32)hostDescriptor|FETCH_SIZE_32);
请问为什么对于同一个desc要有两个回收的语句呢?
littleWhite:
有专家可以帮忙讲解一下吗,谢谢了
Andy Yin1:
需要软件回收,硬件不会自动回收描述符。
你说的KeyStone_Qmss_Config_Reclaim_Queue是配置使用PDSP提供的一种自动回收功能,将某个queue配置使能reclamation,则进到该queue的描述符会自动被放到描述符上配置的returnQ里,注意一个器件只能配置一个queue具有该功能。详请参考navigator user guide。
littleWhite:
回复 Andy Yin1:
既然已经配置pdsp提供自动回收功能了,为什么还要core来执行软件回收呢,而且回收的queue num是一样的