Link Command Usage for Flow Control, Error Recovery, and Power Management
2、Link Power Management and Flow
one port发送LGO_Ux Link Command请求进入low power state,other port发送LAU或者LXU来响应进入低功耗请求,port用LPMA响应LAU。
2.1 Power Management Link Timers
Port有3个计时器用于link层电源管理:
- PM_LC_TIMER : port用于发送进入low power state请求,port发送完LGO_Ux的最后一个symbol使能计时器,接收到LAU/LXU的最后一个symbol,禁能计时器并重新置位。
- PM_ENTRY_TIMER : port用于接收low power请求,port发送完LAU最后一个symbol使能计时器,接收到LPMA的最后一个symbol或者检测到TS1 OS,禁能并重置计时器。如果LPMA损坏,port的接收端在计时器溢出前清除bit-lock ,直到计时器溢出进入Recovery状态。
- LUx_EXIT_TIMER : port用于退出U1/U2状态,port开始发送LFPS Exit handshake signal使能计时器,进入U0状态后禁能且重置计时器。
2.2 Low Power Link State Initiation
- Port发送low power请求(LGO_Ux)需要满足以下所有条件:
a、接收到的使用packet都使用LGOOD_n和LCRDn_x响应;
b、所有发送的packet都接收到LGOOD_n和LCRDn_x响应;
c、发送端没有需要发送的packets;
d、进入U0状态后,完成了the Header Sequence Number Advertisement和(Type 1/Type 2 Rx )Buffer Credit Advertisements;port即接收到另一个port的Advertisement,也要发送Advertisement给另一个port
e、由更高层引导进入;
f、link层满足引导条件; - Port响应LGO_U1或者LGO_U2:
a、如果Force Link PM Accept field被Set Link Function LMP置位,发送LAU;
b、port满足以下所有条件,发送LAU:
(1)、接收到的使用packet都使用LGOOD_n和LCRDn_x响应;
(2)、所有发送的packet都接收到LGOOD_n和LCRDn_x响应;
(3)、发送端没有需要发送的packets;
(4)、更高层的Layer没有拒绝;
c、其余情况下发送LXU;
2.3 U1/U2 Entry Flow
(1)、port(请求port)发送LGO_U1 or LGO_U2,请求进入low power link state,使能PM_LC_TIMER计时器;low power request发送后不再发送其他packet,直到接收到LXU或者重新进入U0状态,但可以接收和处理 packets和link commands
(2)、另一个port(接收port)可以发送LAU接收LGO_Ux同时使能PM_ENTRY_TIMER计时器,或者发送LXU拒绝LGO_Ux且保留在U0状态;
(3)、如果PM_LC_TIMER超时,进入Recovery状态;
如果请求port接收到LXU,停留在U0状态;
如果请求port接收到LAU,发送LPMA并进入请求的low power 状态;
(4)、如果接收port在PM_ENTRY_TIMER超时前接收到LPMA,进入请求的low power 状态;
如果在PM_ENTRY_TIMER超时前检测到TS1 OS,进入Recovery状态;
如果在PM_ENTRY_TIMER超时后检测到TS1 OS,进入请求的low power 状态;
portz发送LPMA或者LAU后,不再发送任何packets、link commands
port发送LAU后,在PM_ENTRY_TIMER超时前不会响应LFPS Ux_Exit signal
port从U1进入U2的两个条件:1、U2 inactivity timer使能;2、U2 inactivity timer超时且没有接收到U1 LFPS exit signal
2.4 U3 Entry Flow
仅下游端口可以引导进入U3状态,并且上游端口不能拒绝。
(1)、downstream 发送LGO_U3,使能PM_LC_TIMER计时器,忽略所有upstream发送的packets;
(2)、upstream发送LAU响应downstream,使能PM_ENTRY_TIMER计时器,没有响应的packets都被终止,停止发送任何packets、link command;
(3)、如果downstream接收到LAU,响应LPMA并进入U3状态;
如果PM_LC_TIMER超时,没有接收到LAU,并且port连续尝试进入U3状态的次数小于3,port进入Recovery状态,从Recovery退出到U0后重新引导进入U3;
如过port连续尝试进入U3状态的次数等于3,进入eSS.Inactive状态;
(4)、upstream接收到LPMA或者PM_ENTRY_TIMER也没有接收到LPMA,进入U3状态;
2.5 Concurrent Low Power Link Management Flow
当downstream port和upstream port都请求进入low power状态时,遵循以下规则:
- 如果downstream port发送LGO_U1/2/3,且接收到LGO_U1/2,发送LXU;
- 如果upstream发送LGO_U1/2,且接收到LGO_U1/2,先等待downstream的LXU,在发送LXU或者LAU;
- 如果upstream发送LGO_U1/2,且接收到LGO_U3,先等待downstream的LXU,在发送LAU;
- 如果downstream在请求进入U1或者U2的过程中,高层的layer指示link进入U3,需要完成当前U1、U2流程,进入U1、U2状态后再退回到U0状态,在发起请求进入U3状态;
2.6 Concurrent Low Power Link Management and Recovery Flow
当一个port发起low power请求,另一个port发起Recovery,遵循以下规则:
- port发送LGO_Ux,接收到TS1 OS后进入Recovery状态;
- 当port从Recovery状态退出到U0状态后,如果引导进入low power的请求仍然有效,重新引导进入;
2.7 Low Power Link State Exit Flow
U1_MIN_RESIDENCY_TIMER : port发送LPMA(接收LPMA或者是PM_ENTRY_TIMER超时)到发送U1_LFPS_Exit signal的最小时间,仅用于U1状态
;
- 如果port需要退出U1/U2、或者U3唤醒,发送LFPS Exit handshake signal,
如果是退出U1/U2,使能Ux_EXIT_TIMER。U1/U2退出信号U1/U2 LFPS Exit handshake signal和U3唤醒信号U3 LFPS wakeup handshake signal是相同的,仅时间定义有差别。
- 另一个port接收到LFPS Exit handshake signal,发送LFPS Exit handshake signal来响应;
- tNoLFPSResponse超时前,LFPS handshake成功,port进入Recovery状态;
- 如果U1/U2 Exit遇见以下任何条件,进入eSS.Inactive状态:
a、tNoLFPSResponse超时;
b、Ux_EXIT_TIMER超时,且port没有回到U0状态; - 如果是U3tNoLFPSResponse超时,会在100ms(最短时间)后再次引导U3唤醒;
- 如果是root poot在tNoLFPSResponse超时前不会响应U3 LFPS wakeup handshake signal,那么port会在准备回到U0状态时主动引导U3唤醒;
只能主动唤醒