【VC和TC】
1.VC是Virtual Channel的缩写,TC是Traffic Class的缩写,目的针对不同的PCIE业务提供QOS服务,每个VC都有独立的buffer,TC会映射到VC上,在其中一种TC服务被阻塞的情况系,其他TC可以继续传输
http://m.elecfans.com/article/683186.html
【Flow control】
【ACK/NACK】
参考链接:http://blog.chinaaet.com/justlxy/p/5100053468
1.ACK和NACK是链路层硬件在接收到TLP后自动向发动端发送的包,是DLLP中的一种
2.ACK发送的条件
接收端正确地收到TLP包,TLP包的sequence num和LCRC检测正常,但是此时并不向发送端返回ACK DLLP,而是要等到AckNak_LATENCY_TIMER溢出时才向发送端发送。有资料说一个Ack DLLP可能会对应多个TLP,接收端不会每成功接收到一个TLP便向发送端发送Ack DLLP
3.NACK发送的场景
--当前接收到的TLP的序列号大于NEXT_RCV_SEQ,表明传输过程中漏掉了一些TLP。此时,接收端会返回Nak DLLP,并直接丢弃该TLP
--LCRC校验失败
4.发送端针对ACK/NACK的处理策略
--接收到ACK,则会根据seq num释放对应TLP的retry buffer
--接收到NACK,则会根据seq num从retry buffer中重新发送TLP,同时重新发送进行计数,计数超过4次则开启LTSSM重新训练