本文着重理解XL状态机的状态:Open_Response_Wait
参考:6.19.8 XL6:Open_Response_Wait state
这个状态来源于Forward_Open. 发送完OPAF之后,进入该状态;
该状态主要是等待OPAF的反馈,并根据反馈,采取不同的action.
response类型如下:
response | XL receiver(message) | 说明 |
Open Accept | OPEN_ACCEPT Received | 收到了OPEN_ACCEPT |
Open Reject | OPEN_REJECT Received | 向ECR发送该response之前,要释放该path占用的资源 |
Backoff Retry response | 场景1: 进入该状态后 1,没收到AIP 2, 却收到了OPAF(或者进入该状态的时候,同时收到了OPAF) 3, 收到的OPAF是一个SMP的OPAF(说明优先级高....),并且使能了SMP frame priority, 并且当前的connection不是SMP 4. OPAF的目标地址不是该connection的source地址 总之:该phy被另一个connection占用了,并且优先级比较高,所以只能让贤.... 向ECR报告此response之前,需要释放该path占用的资源;(麻溜儿的....让路) | |
Backoff Retry response | 场景2:跟场景1类似,但是抢路的不是SMP,根据仲裁原则,让路 | |
Backoff Retry response | 场景3:收到了AIP之后,收到了OPAF,直接让路(毫无尊严...) | |
Backoff Reverse Path | 场景1:backoff retry1条件类似,但是是对端要open的地址,即该当前connection的source地址 | |
Backoff Reverse Path | 场景2:backoff retry2条件类似,但是是对端要open的地址,即该当前connection的source地址 | |
Backoff Reverse Path | 场景3:backoff retry3条件类似,但是是对端要open的地址,即该当前connection的source地址 | |
Arb Status (Waiting On Device) | 进入该状态之后,发送该response. | |
Arb Status (Normal) | AIP Received (Normal) | 该phy收到AIP,转化为相应的Arb Status透过ECR发给source phy,在该phy上叫response, 在source phy上叫confirmation |
Arb Status (Waiting On Partial) | AIP Received (Waiting On Partial) | |
Arb Status (Waiting On Connection) | AIP Received (Waiting On Connection) | |
Arb Status (Waiting On Device) | AIP Received (Waiting On Device) |
进入该状态后,该状态的phy状态即变为partial pathway, 即Phy Status (Partial Pathway), 该phy需要不断的向ECM反馈自己的状态;如果处于该状态的phy,收到了AIP(Waiting On Partial), 则该phy的状态变为Phy Status (Blocked Partial Pathway), 然后该phy仍然要不断的向ECM反馈自己的状态;
该状态不能响应PS_REQ,如果收到,则返回PS_NAK.(调皮一下~~ 此时该状态比较忙,,无暇分身)
这句话没看懂..
该状态的周边转换如下:
XL6:Open_Response_Wait to XL0:Idle
发送Open Reject response to the ECR之后
XL6:Open_Response_Wait to XL1:Request_Path
发送Backoff Retry response to the ECR之后
XL6:Open_Response_Wait to XL2:Request_Open
发送Backoff Reverse Path response to the ECR之后
XL6:Open_Response_Wait to XL7:Connected
发送Open Accept response to the ECR之后
XL6:Open_Response_Wait to XL9:Break
发送Forward Break response to the ECR之后
XL6:Open_Response_Wait to XL10:Break_Wait