TI中文支持网
TI专业的中文技术问题搜集分享网站

请教 packet DMA 的rx-flow中的rx_size_thresh功能如何使用?

接收侧rxFdq:2100描述符挂的buff为200byte
2101描述符挂的buff为400byte
2102描述符挂的buff为600byte
2103描述符挂的buff为800byte
按照文档说明,
小于等于rx_size_thresh0(200) byte的buff pktdma会选择rx_fdq0_sz0_qnum(2100)
大于rx_size_thresh0 小于等于rx_size_thresh1(400) byte的buff pktdma会选择rx_fdq0_sz1_qnum(2101)
大于rx_size_thresh1 小于等于rx_size_thresh2(600) byte的buff pktdma会选择rx_fdq0_sz2_qnum(2102)
大于rx_size_thresh2 会选择rx_fdq0_sz3_qnum(2103)
可使用时发现一个320 byte的buff dma选择的是最后一个rx_fdq0_sz3_qnum 而不是rx_fdq0_sz2_qnum,请问如下配置是否有问题?

rxFlowCfg.rx_size_thresh0_en = 1; rxFlowCfg.rx_size_thresh1_en = 1; rxFlowCfg.rx_size_thresh2_en = 1;

rxFlowCfg.rx_size_thresh0 = 200;
rxFlowCfg.rx_size_thresh1 = 400;
rxFlowCfg.rx_size_thresh2 = 600;

rxFlowCfg.rx_fdq0_sz0_qmgr = 0; rxFlowCfg.rx_fdq0_sz0_qnum = 2100; rxFlowCfg.rx_fdq0_sz1_qmgr = 0x0;
rxFlowCfg.rx_fdq0_sz1_qnum = 2101; rxFlowCfg.rx_fdq0_sz2_qmgr = 0x0;
rxFlowCfg.rx_fdq0_sz2_qnum = 2102;
rxFlowCfg.rx_fdq0_sz3_qmgr = 0x0;
rxFlowCfg.rx_fdq0_sz3_qnum = 2103;

rxFlowCfg.rx_fdq1_qnum = 2104; rxFlowCfg.rx_fdq1_qmgr = 0;
rxFlowCfg.rx_fdq2_qnum = 2104; rxFlowCfg.rx_fdq2_qmgr = 0;
rxFlowCfg.rx_fdq3_qnum = 2104; rxFlowCfg.rx_fdq3_qmgr = 0;

Andy Yin1:

按你这种配置应该选择rx_fdq0_sz1_qnum

需要把.rx_size_thresh0~2配置为32B的整数倍,其他的配置感觉没啥问题,确认一下你的发送的packet选择的flow是该flow,同时确认接收之后哪个RxFDQ中少了一个描述符、。

Peter wang1:

回复 Andy Yin1:

是的,写错了,应该是选择rx_fdq0_sz1_qnum,

实际使用中发现pktdma选择的是rx_fdq0_sz3_qnum,也就是最后一个

你说的rx_size_thresh0~2配置为32B的整数倍 是什么意思阿?没明白呢

Andy Yin1:

回复 Peter wang1:

1 由于在配置rx_size_thresh时都会对数据除以32再配置,所以建议大小配置为32B的整数倍;

2 你是怎么确定选择的是rx_fdq0_sz3_num?还有确认一下输出packet的大小及各个fdq中描述符的配置。

你是在做什么应用,为何会需要用到这个功能?

Peter wang1:

回复 Andy Yin1:

我是在使用FFTC的时候 用的这个功能

从FFTC出来数据后,我配置了根据不同的数据长度来选择不同的rx-fdq

结果在fxfdq收到描述符后,发现是从rx_fdq0_sz3_num弹出的描述符,而不是期望的fdq0_size1弹出的fxfdq

这个我是从对应queue中描述符的数目确定的。

之所以要使用这个功能 是因为FFTC出来的数据大小不一,所以我希望做一个过滤操作,否则会浪费很多内存

Andy Yin1:

回复 Peter wang1:

描述挂接的长度是可以试试更新的,所以可以在push一个packet到FFTC之前,可以根据当前packet的大小重配每个接收描述符的original buffer length即可。

在使用threshold feature时,建议从rxQ中将描述符取出来check一下该描述符上挂的buffer length,确认当前接收的长度。

Peter wang1:

回复 Andy Yin1:

我知道挂接的buff是可以随时更新的,那是是发送侧,我现在考虑的是接收侧,可以根据不同的长度。PKTDMA从不同的rx_fdq

中弹描述符,问题是threshold feature 为啥不能用阿?用没有例子给参考一下?

Andy Yin1:

回复 Peter wang1:

对应你的FFTC使用,完全可以根据每次处理的点数更新相应的描述符配置,并push到rxFDQ中。

navigator使用配置参考驱动例程,可以使用例程中的API函数进行配置:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx

Peter wang1:

回复 Andy Yin1:

如果rx-fdq thresh 功能能使用的话,就不需要动态去调整了,初始化的时候就配置号

请问 有rx-fdq thresh使用的例子吗

赞(0)
未经允许不得转载:TI中文支持网 » 请教 packet DMA 的rx-flow中的rx_size_thresh功能如何使用?
分享到: 更多 (0)