1.retrain/linkerror/active状态
状态转变都是从下往上。
(1)Retrain:multistack和raw model相互违背;
(2)Linkerror:如果一个stack需要进入linkerror,表示链路已经存在问题,只要一个adapter stack出现导致linkerror的事件,那么就会lp_state_req=linkerror传递给phy,phy进入linkerror之后再次让adapter的stack1和stack2的adapter都进入linkerror;
(3)active:必须等待rdi进入active之后,adapter才能进入active状态;
2.linkreset/disable/linkerror
三者存在优先级
3.Pm
Pm l1和pm l2是否存在优先级??不存在优先级
单stack
(1)单侧给linkreset(同样适用与disable状态)
(2)双侧给linkreset (同样适用与disable状态)
req/rsp msg是否需要发送两次???是的,req/rsp的msg需要发送两次
以什么事件作为状态转换的条件??(1)发送req,接收rsp(2)接收req,发送rsp;两者只要一个满足条件就进入linkreset状态
adaptrer需要等待rdi_pl_state_sts为linkreset状态之后才会把active状态传递到phy
(3)两侧优先级不同:
进入linkreset之后收到disable的req msg后进入需要回复disable的rsp msg,状态也需要变为disable状态
(4)当前在高优先级状态,给了低优先级的情况:
(1)当前状态在disable下收到linkreset请求,直接ignore请求,保持disable状态
(2)当前状态在disable下收到了linkreset的req msg,回复linkreset rsp msg,但是状态不变
(5) 针对pm状态
两端都进入pm_nak
双stack:
(1)pm
(2)pm-nak:
stack1 | stack2 | phy | 是否存在phy状态传递 | |
情况1 + 情况1 | Pm nak | L1 | 无状态变化 | 无状态传导 |
情况1 + 情况2 | Pm nak | Pm nak | 无状态变化 | 无状态传导 |
(3)linkreset/disable
是否存在两边同时给linkreset的情况????
存在。
(4)linkreset/disable优先级不同
stack1 | stack2 | phy | 是否存在phy状态传递 | |
情况1 + 情况1 | linkreset | disable | disable | 存在,phy把disable状态最终传递给stack1和stack2 |
情况1 + 情况2 | disable | disable | disable | \ |
情况1 + 情况3 | linkreset | disable | disable | 存在,phy把disable状态最终传递给stack1和stack2 |
情况1 + 情况4 | disable | disable | disable | \ |
情况2 + 情况4 | disable | disable | dsiable | \ |
情况1 + 情况5 | linkreset | disable | Disable | 存在,phy把disable状态最终传递给stack1和stack2 |
情况3 + 情况5 | linkreset | 保持原状态 | 不变 | 不变 |
需要注意的点:
(1)针对上面的各种情况需要注意的是:上述表述的stack1和stack2是最终状态,实际更加给激励的时间点可能会存在中间状态,情况1 + 情况1 的激励,假设disable的激励给的较晚的话,stack1和stack2会优先进入linkreset状态,随后在给disable激励的时候,会再次在rdi接口上给disable激励给phy,让phy进入disbale,最终由rdi_pl_state_sts信号从底往上依次传递给各个stack,让stack1和stack2变为disable状态
(2)linkerror的优先级是最高的,针对情况3 + 情况5来说,此时两个stack只有一个给了linkreset,所以此时是不会讲linkreset的激励传递给phy,但是针对linkerror来说不是这样的,只要有任意一个satck的一端给了linkerror,就会在rdi接口上给lp_linkerror.
(3)针对两个stack,一个stack进入pm状态,另一个stack进入linkreset/disable状态的情况,最终会在rdi上给lp_linkerror,让phy的状态转变为linkerror,最后再让两个stack都变为linkerror
(5)linkreset/disable优先级不同(当前状态处于Linkreset状态):