PAUSE流控帧
PAUSE流控帧结构:
typedef struct packed{
logic[47:0] dmac; //0x0180_C200_0001
logic[47:0] smac;
logic[15:0] len_type; //0x8808
logic[15:0] opcode; //0x0001
logic[15:0] pause_time;
logic[ 7:0] pad[42];
} st_pause_frame;
PFC流控帧
PFC流控帧结构:
typedef struct packed{
logic[47:0] dmac; //0x0180_C200_0001
logic[47:0] smac;
logic[15:0] len_type; //0x8808
logic[15:0] opcode; //0x0101
logic[15:0] priority_enable_vector;
logic[15:0] time[8];
logic[ 7:0] pad[25];
} st_pfc_frame;
PAUSE流控帧与PFC流控帧区别是:
PFC流控帧是针对8个优先级进行流量控制的,每个优先级都有与其对应的pause_time,通过opcode域段区别流控帧类型,opcode=0x0001的流控帧为PAUSE帧,opcode=0x0101的流控帧为PFC帧。
这两种流控帧的dmac(即:目的MAC地址是相同的,均为0x0180_C200_0001),假如设备要发送流控帧,那smac根据自己的需求进行配置。