在C6678 平台下,用GbE发包,core0每次朝GE TXQ 发包的数量是正确的,但是PC端显示丢包。
具体情况如下:
在中断服务程序ISR中,core0使用QMSS 朝GE TxQ 连续PUSH 5个包,每包512Bytes。中断频率为Freq。
通过TSC计算:ISR从开始到结束,共消耗时钟2500左右,cpu主频为1GHz。
按照这个计算,在保证 两次中断间隔时间 > ISR时间 基础上,中断频率最大应该可以达到 400KHz。
但是通过实验,发现当中断达到20KHz时,PC端收到的包数量就少于发包数量,丢包率大概10%左右。
我个人的分析:ISR消耗的时钟是对QMSS操作的时间,也就是每次中断到来时,core0从FDQ 中pop desc,之后push到GE TXQ的时间是足够短的,但是GbE自己在发送数据的时候,产生了丢包,但是不知道应该从哪里着手检查。。。