USB3-Link Layer_Flow Control, Error Recovery, and Power Management_2

Link Command Usage for Flow Control, Error Recovery, and Power Management

1.3 Transmitting Packets

  a、在发送header packet(type1/type2 packet)前,需要在Link Control Word填充Tx Header Sequence Number;Tx Header Sequence Number每次递增1,到达最大值后翻转为0;
  b、header packet(type1/type2 packet)需要消耗(type1/type2)Tx Header Buffer;
  c、重发header packet(type1/type2 packet)不需要消耗(type1/type2)Tx Header Buffer,且Sequence Number不变;
  d、一旦接受到LBAD,port先发送LRTY,再重新发送除了Recovery外所有未使用LGOOD_n响应的header packet;
  e、在重新发送header packet前,需要置位DL bit,并重新计算CRC5;CRC16保持不变
  f、接受到有效的LCRD_x(LCRD1_x/LCRD2_x)时,(type1/type2)Remote Rx Header Buffer Credit Count+1;
  g、进入U0状态后,(type1/type2)header packet第一次被发送,(type1/type2)Remote Rx Header Buffer Credit Count-1;包括Recovery进入U0的重发
  h、在LRTY后重发的header packet不改变(type1/type2)Remote Rx Header Buffer Credit Count;

1.4 Receiving Header Packets

  接收的header packet有效,需要满足4点:
    a、CRC-5
    b、CRC-16
    c、packet的Header Sequence Number与Rx Header Sequence Number匹配
    d、Rx Header Buffer可以缓存packet
  如果Receiver正确接收header packet,应使用LGOOD_n响应,同时Rx Header Sequence Number+1(最大值翻转为0),SuperSpeed占用一个Rx Header Buffer,SuperSpeedPlus占用一个Rx Buffer Credit;
  如果CRC-5或者CRC-16出错,响应LBAD,同时忽略所有的header packet直到接收到LRTY,或者进入Link层Recovery状态;如果是Gen2,满足1.6,需要继续接收DPP
  如果Header Sequence Number不匹配,或者Rx Buffer空间不足,或者是两个length field replica不同(Gen2 non-DPH),进入Recovery状态;
  如果(type1/type2)Rx Buffer Credit有效,即使CRC错误也要继续发送LCRDn_x;
  连续3次接收出错,进入Recovery状态,最后一次不再发送LBAD;

1.5 Rx Header Buffer Credit or Rx Buffer Credit

  每个port的receiver都有Rx Header Buffer Credits/Rx Buffer Credits,SuperSpeed由4个Rx Header Buffer Credits,SuperSpeedPlus由4或者7个Type 1 Rx Buffer Credits、Type 2 Rx Buffer Credits(以下统称Rx Buffer Credits),Rx Buffer Credits数量表示receiver可以接收的header packet数,通过Local (Type 1/Type 2)Rx Header Buffer Credit Count来管理。
   正确接收一个packet,Local (Type 1/Type 2)Rx Header Buffer Credit Count+1,不同事物使用不同的count类型
   当packet被处理完成后,发送LCRDn_x,按字母顺序发送,发送到最大字母,翻转到A,同时Local (Type 1/Type 2)Rx Header Buffer Credit Count-1;

1.6 Receiving Data Packet Payload

  Gen1
   receiver开始接收DPP,需要满足两点:
    a、DPH正确接收;
    b、DPPSTART Ordered Set与DPH无间隙;
   检测到有效的DPPEND,DPP接收完成,当出现一些情况,终止DPP接收:
    a、检测到有效的DPPABORT;
    b、在检测到DPPEND、DPPABORT前接收到K-symbol;
    c、接收到sDataSymbolsBabble(min 1030)个symbol,仍没有检测到DPPEND、DPPABORT;
  Gen2
   receiver开始接收DPP,需要满足两点:
    a、DHP有效,或者DPP length field replica有效;
    b、DPH后接收到DPPSTART或者DPPABORT(无间隙);
   DPP 处理规则:
    a、在length field + 4检测到有效的DPPEND、或者DPPABORT,接收完成,否则接收出错,进入Recovery状态;
    b、在DPH后接收到DPPABORT(无DPPSTART),接收完成;

1.7 Receiving LGOOD_n

  Port应该缓存发送的每一个header packet在(Type 1/Type 2) Tx Header Buffer中,直到接收到LGOOD_n:接收到的LGOOD_n不连续,进入Recovery状态
   a、port从Recovery进入U0,在Header Sequence Number Advertisement阶段接收到LGOOD_n,port刷新(Type 1/Type 2) Tx Header Buffer中Header Sequence Number小于等于接收到的Header Sequence Number的header packet,同时ACK Tx Header Sequence Number赋值为接收到的Header Sequence Number+1;
   b、如果不是在a阶段接收到LGOOD_n,刷新(Type 1/Type 2) Tx Header Buffer中Header Sequence Number匹配的header packet,ACK Tx Header Sequence Number+1;
   c,如果b接收到的Header Sequence Number不匹配,ACK Tx Header Sequence Number不变,进入Recovery状态;

1.8 Receiving LCRD_x/LCRD1_x/LCRD2_x

  Port根据接收到的LCRDn_x来调整(Type 1/Type 2) Rx Buffer Credit Count:
   a、接收到LCRDn_x,(Type 1/Type 2) Rx Buffer Credit Count+1;
   b、如果接收到的LCRDn_x不连续,进入Recovery状态;

1.9 Receiving LBAD

  Port接收到LBAD,应该在重新发送(Type 1/Type 2) Tx Header Buffer中未使用LGOOD_n响应的Header packet前发送LRTY,此外还需遵守以下规则:
    a、hub应该置位header packet的DL bit,并重新计算CRC-5。如果是DP in SuperSpeed,应该丢弃DPP,如果是DP in SuperSpeedPlus,使用nullified DPP替换DPP;
    b、Host或者peripheral,置位DL bit,重新计算CRC-5,如果是DP,则清除DPH的DL bit,DPH后紧接着DPP;

2.0 Transmitter Timers

  PENDING_HP_TIMER: LGOOD_n、LBAD响应超时计时器,计算从发送完HP的最后一个symbol到接收到LGOOD_n或者LBAD的最后一个symbol的时间。

  • 在U0状态下,满足两点中任何一点,PENDING_HP_TIMER有效:
      a、port发送一个header packet,但是没有响应,接收到LBAD到重新发现期间除外;
      b、port期望接收到the Header Sequence Number Advertisement;
  • 满足以下条件之一,PENDING_HP_TIMER开始计时
      a、进入U0状态,port期望接收到the Header Sequence Number Advertisement;
      b、port发送一个header packet,并且Tx Header Buffers中没有未响应的packet;
      c、由于接收到LBAD而重新发送packet;
  • 当接收到LGOOD_n响应,并且Tx Header Buffers中还有未响应的packet时,PENDING_HP_TIMER重新开始计时
  • PENDING_HP_TIMER重置位并停止计时
      a、接收到Header Sequence Number Advertisement;
      b、当接收到LGOOD_n响应,并且Tx Header Buffers中没有未响应的packet;
      c、接收到LBAD;
  • 同时满足以下两点,进入Recovery状态
      a、PENDING_HP_TIMER 溢出;
      b、SuperSpeed USB,header packet传输完成,或者是DPP使用DPPEND或DPPABORT完成事务传输;
      (Type 1/Type 2)CREDIT_HP_TIMER: LCRDn_x响应超时计时器,计算从发送完header packet,且Remote (Type 1/Type 2)Rx Header Buffer Credit count 小于4(7)到接收到Remote Rx Header Buffer Credit且Remote (Type 1/Type 2)Rx Header Buffer Credit count 回到4(7)的时间。
  • 满足以下任何条件,(Type 1/Type 2)CREDIT_HP_TIMER有效,
      a、Remote (Type 1/Type 2)Rx Header Buffer Credit count 小于4(7);
      b、port期望接收到the Header Sequence Number Advertisement 和 the Rx Header Buffer Credit Advertisement;
  • 当header packet被(重新)发送,或者port进入U0状态,开始(Type 1/Type 2)CREDIT_HP_TIMER计时
  • 当接收到一个有效的LCRDn_x,重置(Type 1/Type 2)CREDIT_HP_TIMER
  • 当接收到一个有效的LCRDn_x,且Remote (Type 1/Type 2)Rx Header Buffer Credit count 小于4(7),重新开始(Type 1/Type 2)CREDIT_HP_TIMER计时
  • 同时满足以下两点,进入Recovery状态
      a、(Type 1/Type 2)CREDIT_HP_TIMER 溢出;
      b、SuperSpeed USB,header packet传输完成,或者是DPP使用DPPEND或DPPABORT完成事务传输;
    在这里插入图片描述

  

                             USB3-Link Layer_Link Management and Flow Control

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值