pause帧处理流程

pause帧处理流程

1、什么是pause帧?

在IEEE802.3协议中规定中,pause帧是一种控制帧,用于控制数据流停止发送,在MAC 发送侧产生,在MAC接收侧解析并执行。当此端设备输入数据量过大,无法及时处理时会在此端发送侧MAC产生pause帧,发给对端,要求对端在一定时间内停止发送数据。

详细pause帧格式参加地址:MAC学习-基础知识002 pause报文格式

2、pause帧处理过程?

如图所示,左侧为本端芯片,右侧为对端芯片。MAC0和MAC1都包含发送侧tx和接收侧rx。左侧芯片内部mac上游模块A与mac0发送侧有流控信号fc_rdy。fc_rdy信号为1表示模块A无法及时处理输入数据,需要进行流控。为了方便突出重点,图中省略了PCS以及serdes等模块。

​​​​​​​在这里插入图片描述

流程处理如下:

1~2步:对端mac1发送数据给mac0接收侧,数据经过MAC0 Rx 进入下游模块A

3步:下游模块A无法及时处理输入的数据,需要减少数据输入,从而将fc_rdy拉高。

4步:mac0 tx侧发现流控信号fc_rdy为高,则需要产生pause帧发送给mac1接收侧。只要fc_rdy为高,mac0发送侧tx每隔一段时间发送一个pause帧,间隔时间由配置寄存器控制。间隔时长计算由计数器counting计算。Pause帧内停止发送数据的时间由另外一个配置寄存器控制。只要fc_rdy为高期间,mac0 TX侧每间隔一段时间发送一个Pause帧,其他时间按需发送数据等其他报文。Pause帧的发送不能打断正在传输的数据帧。

5步:mac1接收侧rx接受到pause报文后,提取pause帧内包含的暂停时间,产生流控信号fc通知MAC发送侧上游模块module B停止发送数据

678:mac1 TX侧在在暂停时间内,停止发送数据。MAC0 TX侧可能会发起多个Pause帧。一旦模块A处理完之前的数据后将fc_rdy拉低,则进入第9步。

9:步:第9步分2种情况。

情况1:fc_rdy拉低,并且counting在计数没有到一个间隔周期,此时发送pause帧,但是帧内暂停时间为0. Mac1接受到pause帧后,控制tx控制立即开始发送数据。

情况2:fc_rdy拉低的同时,counting正好计数到一个间隔周期,此时不发送pause帧。等到上一个pause帧的暂停时间到达后,mac1发送侧tx继续发送数据。

3、pause帧处理协议强制要求:

  1. pause的产生发送过程不能中断一个完整的数据报文。即在第4步中,fc_rdy拉高后,首先mac0 tx侧需要判断当前是否正常数据报文在传输。如果有,则需要在当前数据报文传输完成后才能发送pause帧。也就是说在发送过程中,只能在完整数据报文的间隙插入pause帧。

  2. 新的pause报文暂停时间会覆盖上一个暂停时间。对mac1来说,当mac1接收到新的pause帧后,暂停时间以最新时间为准。
    ————————————————
    版权声明:本文为CSDN博主「IC小鸽」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/icxiaoge/article/details/87901654

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值