在示例程序中,网卡发送队列采用了648,channel用了8,当向648号push一个descriptor后,发送成功后,中断报到哪里去了?是netcp的pktdma的disctributor,还是qmss的,还是会直接上报给cpu?
谢谢。
Thomas Yang1:
不知道你用的是K2哪款DSP,建议可以查找该款DSP对应的datasheet,在interrupt 这章可以找到该event的路由对应关系。
dapeng lv:
回复 Thomas Yang1:
您好,我用的是66ak2h14的arm核心,我现在的理解是netcp的pktdma发现tx ch非空后,就会从队列中去除descriptor,然后启动dma发送。那么完成后,这个中断应该通过netcp中的pktdma的distributor报上来给cpu,这样理解对么?如果是这样的,根据手册,那就应该是313。
dapeng lv:
看到multicore nacigator手册2.6中提到"11.After the packet descriptor pointer has been written, the queue manager will indicate the status of the TX completion queues to …..",那看来是由qm向上报中断了?那就是在qmss的 interrupt distributor 中了?
Andy Yin1:
回复 dapeng lv:
648是专用TXQ,不会产生中断到外部,一旦648中有描述符,且NETCP相应的channel是free,就会自动取走描述符处理。
Thomas Yang1:
回复 dapeng lv:
313 应该是指PA PacketDMA 的starvation event,
313 NETCP_PKTDMA_INT0 Packet Accelerator Packet DMA starvation interrupt
按QMSS starvation event理解,这个是接收侧的event。
dapeng lv:
回复 Andy Yin1:
那发送完成这个事件应该是要通过中断报告给cpu,如果648不报中断,那可以由谁报给cpu呢?谢谢
Andy Yin1:
回复 dapeng lv:
648是专用TxQ,讲报文放到TxQ会自动由NETCP取走,取走处理完后会将描述符回收到指定的ReturnQ,如果你要及时知道放进去的报文已经被取走,可以指定returnQ为可以产生中断的queue,如accumulator Queue,但是一般没有必要在发送侧产生中断,只要后面需要再次发送报文时从returnQ中获取描述符即可,如果有可用描述符则可以继续发包,如果没有则说明报文还为发送成功。