完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
大家好,
************************************************************************************************************** 我在做用C6670发送MAC层的以太网数据包。 环境是:C6670,为客户定制的板卡,C6670链接到以太网SWITCH再连接到背板,CCSv5.3,SYS/BIOSv6.33.06.50 ************************************************************************************************************** 代码情况:工程基于C:tipdk_C6670_1_1_2_6packagestidrvexampleProjectsPA_multicoreExample_exampleProject。Core0初始化QMSS、CPPI、以太网TX/RXQueue、以太网物理层配置等,给4个Core每个Core分配一个MAC地址,4个Core可同时收发以太网MAC层数据包。.text放在DDR3上。 ************************************************************************************************************** 代码功能:4个Core同时响应一个1.5ms的GPIO脉冲信号,在中断处理函数中,对机箱内的主机发送一个MAC数据包(payload是100Bytes左右),在主机上用抓包软件分析数据包流量。 ************************************************************************************************************** 遇到的问题是:4个Core同时按照1.5ms中断发送一个包,每秒每个Core发送667个包,每个包的payload为100Bytes。如果再提高payload或者增加每次中断发包个数,就会出现No TX Free Descriptor的问题。感觉C6670以太网发包发不过来了,请帮忙分析。 具体情况: 1. 如果把pyadload增加到600Bytes,也就是每个Core每隔1.5ms中断一次,对外发送一个600Bytes字节的MAC层数据包,此时会出现“No TX Free Descriptor“的问题。 2. 如果payload仍然是100Bytes,但每个Core每隔1.5ms中断一次,对外连续发送5个MAC层数据包,也会出现”No TX Free Descriptor“的问题。 3. 如果payload改成600Byes,每个Core每隔1.5ms中断一次,对外了连续发送5个MAC层数据包,此时哪怕只有Core0工作,也会出现”No TX Free Descriptor“的问题。 ************************************************************************************************************** 而我想实现的是:C6670的4个Core,每个Core同时每隔1.5ms,对外连续发送5个payload为600Bytes的MAC层数据包。 ************************************************************************************************************** 我揣测原因可能是是: 每次发包,都是从TX Free Queue从Pop出来一个Descriptor,填充Buffer Pointer,再Push到PA TX Queue(648)中去,从而完成一个发包。 按理说,每次这个Descriptor被Push完以后,应该Return回TX Free Queue中,这样的话,整个TX Free Queue就不会空。 但是,如果我增加发包强度(例如每隔1.5ms,连续发送5个包或者增加每次发包的payload字节数),这样的话Descriptor就没法及时地Return到TX Free Queue中,渐渐地TX Free Queue就空了,于是出现了“No TX Free Descriptor”的问题。 而且我每次从TX Free Queue中Pop出一个Descriptor之前,先用 do[ queue_pkt_num = Qmss_getQueueEntryCount(gTxFreeQHnd);]while(queue_pkt_num == 0); 读取一个TX Free Queue中的Descriptor数,发现发包强度不大时(每隔1.5ms只发生一个100Bytes的包),Descpripor数量基本不变;但是如果增加发包强度(例如每隔1.5ms,连续发送5个包或者增加每次发包的payload字节数),则TX Free Queue中的Descriptor逐渐下降直至变空!! 但是,感觉我拟实现的目标(即每隔1.5ms,4个Core同时对外连续发送5个Payload为600Bytes的MAC层数据包)整个数据率才1000/1.5*4*5*600=7.6MBytes,对于千兆的以太网应该能够足以胜任的啊,可是为什么会出现这样的问题呢?? 求TI专家指点一下!非常感谢。 |
|
相关推荐
3个回答
|
|
"连续发送5个包或者增加每次发包的payload字节数"...看起来你的问题跟以太网子系统关系不大,倒可能是发包使用的描述符或者buffer的cache问题。
请先确认: 1. SGMII的协商速率和能力是GE全双工 2. 发包使用的描述符和buffer是在LL2,MSMC还是DDR? 如果是MSMC或者DDR,是否使能cache? 3.将你的发包函数用TSC进行profiling,找到效率最低的点。 |
|
|
|
flowerddd 发表于 2018-6-21 04:07 您好! 我修改了cppi_qmss_mgmt.c中的如下代码 if (cpswLpbkMode != CPSW_LOOPBACK_NONE)[ /* Force the packet to specific EMAC port if loopback is enabled */ Cppi_setPSFlags(Cppi_DescType_HOST, (Cppi_Desc *)pCppiDesc, psFlags);]else[ Cppi_setPSFlags(Cppi_DescType_HOST, (Cppi_Desc *)pCppiDesc, 0);]为 Cppi_setPSFlags(Cppi_DescType_HOST, (Cppi_Desc *)pCppiDesc, 1);在我们板子上,Port1连接到以太网SWITCH,这样的话,就bypass ALE直接将包发送到Port1了,Port0什么都没接。 然后,感觉发包性能极大地提升了!现在每隔1.5ms连续发送5个600Bytes的MAC层数据包,都不会出现Free Queue中Descriptor逐渐下降直至耗尽的问题了。 虽然,感觉ALE应该不会这么降低发包性能的吧? |
|
|
|
ALE对于包处理的latency当然有增加,但理论上应该不明显才对。从目前结果看来你单个包发送的效率实在太低,才导致ALE latency去掉后也能显式的看出来。 注意,AE_BYPASS只指的接收方向,发送侧指定端口号叫做direct packet mode. 能否在你设置direct packet mode后,继续增大traffic,看看该极限值能到多少?估计你能计算到的throughput也很低。根本问题还是在你单个包的发送效率太低,还是需要用TSC来做profiling,找到效率低下的原因。 |
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
669 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
597 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1048 浏览 1 评论
731 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
520 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
157浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
119浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
123浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
121浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
163浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 08:43 , Processed in 1.008322 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号