滑动窗口下发的base-id和UI约定好下发的参数个数和固定窗口参数相同
xstream-set-base-id TX/RX sin-id sin_num multi_id multi_num
即 固定窗口的base-id和滑动窗口base-id通过同一命令下发
2、流程图
xstream-set-base-id TX 589824 10 0 20---->流量库 adasetRXstreamBaseid()---->驱动层setstreamBaseid_16k()
驱动层:
set-stream-base-id-16k(CH_E ch,u32 Sin_id,u32 Sin_num,u32 Multi_id ,u32 Multi_num)
①发送侧 单播优先
条件:Sin_num+Multi_num<=256
data[0]=Sin_id<<16|Multi_id;
data[1]=Sin_num<<16|Multi_id;
如果:Sin_num+Multi_num>256 且 Sin_num>=256
data[0]=Sin_id<<16;
data[1]=256<<16;
如果:Sin_num+Multi_num>256 且 Multi_num>=256
data[0]=Sin_id<<16|Multi_id;
data[1]=Sin_num<<16|(256-Sin_num);
write()
②接收侧
读取固定窗口的Base-id ---> 分为汇聚模式和非汇聚模式
A.非汇聚模式 读取Base_id0 Base_id1
则:stat_offset_Base_id0=Sin_id-Base_id0
stat_offset_Base_id0=Multi_id-Base_id1
经过处理后的参数为 stat_offset_Base_id0 Sin_num stat_offset_Base_id1 Multi_num
条件:同上
write()
3、获取流级统计 pps/Bps
get_stream_stat(id,name,)
①发送侧
is_in_range(id,addr,stat_offset,sin_flag) 查询是否在Base-id+256范围内 ---> 是---> 读取统计值(地址为基地址+偏移号)
否---->不在Base-id+256范围内 --->将此流基ID设置为Base-id 即set_stream_base_id_16k(),此时设置Base-id和UI下发命令稍有不同
如果 id为单播 set_stream_base_id_16k(TX,ID,Sin_num,0,0)
如果 id为组播 set_stream_base_id_16k(TX,0,0,ID,Multi_num);
---->设置完成Base-id后----->is_in_range----->是---> 读取统计值(地址为基地址+偏移号)
②接收侧
is_in_range(id,addr,stat_offset,sin_flag) 查询是否在Base-id+256范围内 ---> 是---> 读取统计值(地址为基地址+偏移号)
否---->不在Base-id+256范围内 --->将此流基ID设置为Base-id 即set_stream_base_id_16k(),此时设置Base-id和UI下发命令稍有不同
如果 id为单播 set_stream_base_id_16k(RX,ID,Sin_num,0,0)
如果 id为组播 set_stream_base_id_16k(RX,0,0,ID,Multi_num);
---->设置完成Base-id后----->is_in_range----->是---> 读取统计值(地址为基地址+偏移号)
4、抖动延时统计
T01的抖动延时是通过DMA获取上来的,T02改为Cbus获取,且为256动态统计,则直接在256统计中修改,并且之前的DMA统计上来的PCIE的偏移位需要修改