PFC 是一种基于 IEEE 802.1Qbb 标准的流量控制技术,旨在解决以太网中不同优先级流量的拥塞问题,确保关键业务数据的可靠传输。它允许网络设备根据数据包的优先级对流量进行精细控制,避免高优先级流量因低优先级流量造成的拥塞而受到影响。
优先级流控制(PFC)具有避免全局阻塞、增强网络可靠性等优点,因此在数据中心、企业园区网络、工业互联网、云计算等场景中具有广泛的应用。本文针对某个项目中的PFC功能,对其实现过程中的关键点以及调试进行介绍;
本次上板测试的PFC功能,是基于intel的ipcore加外围逻辑共同实现的。针对ipcore 设置如下:

除了IP corede 配置,还需要额外的寄存器配置,才能使IPcore 正确的 产生和解析pfc帧;
寄存器配置如下,针对光口mac0 :
(1)使能TX Pause Ports寄存器 address:bar4 base address + 0x10000+0x1814
配置0xff; 用于使能PFC各端口
(2)使能自动TX Pause 重传 寄存器address:bar4 base address + + 0x10000+0x181C
配置值:0xff,用于使能各pfc_port的 hold off模式,hold off模式用于使能PFC的 hold off计数器,该计数器到达设定的时间,则会重新再次发送PFC帧;
(3)用流控到低4字节目的地址寄存器address:bar4 base address + + 0x10000+0x1834
(4)用流控到高2字节目的地址寄存器address:bar4 base address + + 0x10000+0x1838
(5)用流控到低4字节源地址寄存器address:bar4 base address + + 0x10000+0x183C
(6)用流控到高2字节源地址寄存器address:bar4 base address + + 0x10000+0x1840
注意:(5)、(6)用于配置该光口的源mac地址,读取TX MAC寄存器,要与流控寄存器的MAC一致;
(7)TX流控feature配置寄存器address:bar4 base address + + 0x10000+0x1844
Bit1设置为1;使能发送侧TX MAC 发送PFC帧;
(8)设置8个channel的XOFF等待时间寄存器(该时间到会自动解除XOFF)
address:bar4 base address ++ 0x10000+0x1880~0x189C
PFC pause quanta 0的offset地址0x1880,PFC pause quanta 1的offset地址0x1884,其他以此类推。
即pause quanta , 对于25G来说,1对应8个时钟周期;clk=402MHz;
(9)设置8个channel的PFC HOLD OFF 保持时间寄存器(该时间到,仍然pfc标志为高,会自动再次重发PFC帧)
address:bar4 base address ++ 0x10000+0x18A0~0x18BC
PFC holdoff quanta 0的offset地址0x18A0,PFC holdoff quanta 1的offset地址0x18A4,其他以此类推。
(10) 使能RX Pause 通道使能寄存器address:bar4 base address + + 0x10000+0x1C14
配置0xff;
(11) RX侧 低4字节匹配MAC地址寄存器address:bar4 base address + + 0x10000+0x1C1C
(12)RX侧 高2字节匹配MAC地址寄存器address:bar4 base address + + 0x10000+0x1C20
注意:此处说的是目的地址;有三种可能 a:本侧MAC,b:对端MAC c:固定:01-80-c2-00-00-01;
(13)RX侧流控配置寄存器address:bar4 base address + 0x10000+0x1C24
Bit1设置为1
针对光口mac1,除基地址不同,其余与上述mac0的配置一样;
测试结果:可以正常的进行PFC帧的收发;