PCIE-Malformed tlp,UR,UC,CA

Malformed TLP

(1)收到的cplactual payload 等于length

(2)到的cpl,违背了RCB准则;

(3)Local tlp prefix不在end-end tlp prefix前;

(4)不支持local tlp prefix的设备,同时extended fmt field1的设备收到了local tlp prefix(注意如果extended fmt field0,收到了tlp prefix的话,由设备决定这个tlp的处理方式);

(5)到的end-end tlp prefix超过四个(协议最大允许4个)。对于RP来说,如果收到了大于Max End-End TLP Prefixes fieldprefix的话,对于请求来说,建议将其认为是UR,对于cpl来说建议是UC(对于请求和建议来说,如果不遵循的话那么必须认为是Malformed TLP );对于其他function来说也是类似;

(6)收到了不支持的end-end tlp prefix类型;

(7)tlp prefix但是没有tlp header

(8)Extended fmt field1 但是 fmttype的组合是reserved的;fmt[2]0的情况下typereserved

(9)收到的TLPlength超过Rx_MPS_Limit

(10)收到的TLP所对应的TD域(表示是否有tlp digest)和实际的长度尺寸不符合;

(11)收到的TLP违背byte enable准则;

(12)对于原子操作来说,接收者收到的TLP长度和规定的长度不同;另外原子操作的请求必须以规定的方式字节对齐,如果没有按照规定的方式字节对齐,接收者将认为这个tlpMalformed

(13)接收者接收到的TLP包的addresslengthe结合超过了4Kb边界;

(14)对于IO操作,要求tcthattratlast be均为0length1,违背这个的IO操作被认为是Malformed

(15)只有up port能够发送Assert_INTx/Deassert_INTx Messages,如果收到了down portAssert_INTx/Deassert_INTx Messages,那么认为是Malformedtlp包,另外中断msgpower management msgerror msg要求使用default Traffic Class,违背的话也是被认为Malformed

PCIE-Malformed tlp,UR,UC,CA_第1张图片

PCIE-Malformed tlp,UR,UC,CA_第2张图片 

置为1的情况下,malformed tlp报告fatal error。 

PCIE-Malformed tlp,UR,UC,CA_第3张图片 

UR(对应completionstatus域为ur

1completion status域为reserved,那么认为completionur属性的;

2)由于design或者配置setting而导致的设备不支持的request

3msg中各个域的组合是undefied的,或者说这个msg是这个设备不支持的msg(除了vender definemsg);

4msgdstid所对应的function没有实现;

5ecrc检查失败,可以回cpl,也可以不回,但是如果回的回的status必须为ur

6FLR开始和结束直接收到了request,可以回ur也可以不做处理;

Unexpected Completion

 1larger-Tag的请求者发给了一个请求给缺少 larger-Tag功能的completer,那么回应的completiontag是无效的tag,这个completionUnexpected Completion(注意实际上对于请求者来说,由于回应的tag是无效的,所以大概率是针对这个请求的处理是把他作为timeout来处理);

2)对于RP来说,如果收到了大于Max End-End TLP Prefixes fieldprefix的话,对于请求来说,建议将其认为是UR,对于cpl来说建议是UC(对于请求和建议来说,如果不遵循的话那么必须认为是Malformed TLP

3)如果一共functionupstream portEnd-End TLP Prefix功能支持的话,如果收到了一个不支持的end-end tlp prefix typecompletion的话,所有和这个upstream port相关的function都要把这个completion认为是UC

4)设备收到了一个和之前发的请求的Transaction ID都不一样的cpl,那么设备会把这个cpl认为是UC(如果这个cplTransaction ID能对应上,但是其他域对不上,也是把他认为是UC

5)假如再FLR开启结束之间收到了cpl,这个cpl可以认为是UC,也可以不做任何处理,但是如果是FLR结束之后收到了FLR之前发起的请求对应的cpl,那么必须认为是UC

你可能感兴趣的:(PCIE,fpga开发)