AMBA-CHI协议详解(六)

7 篇文章 0 订阅 ¥39.90 ¥99.00

在这里插入图片描述
AMBA-CHI协议详解(一)
AMBA-CHI协议详解(二)
AMBA-CHI协议详解(三)
AMBA-CHI协议详解(四)
AMBA-CHI协议详解(五)
AMBA-CHI协议详解(六)
AMBA-CHI协议详解(七)


2.5 Transaction identifier field flows

  本节展示不同事务类型的事务ID字段流

● 每个包中包含的字段如下:

Request packet:
TgtID, SrcID, TxnID, StashNID, StashLPID, ReturnNID, ReturnTxnID, PGroupID, StashGroupID, and TagGroupID

Response packet:
TgtID, SrcID, TxnID, DBID, PGroupID, StashGroupID, and TagGroupID.

Data packet:
TgtID, SrcID, TxnID, HomeNID, and DBID

Snoop packet:
SrcNID, TxnID, FwdNID, FwdTxnID, and StashLPID.

● 下图中所有具有相同颜色的字段都具有相同的值。

● 弯曲的回圈箭头显示了Requester和Completer如何使用早期数据包中的字段为后续数据包的字段。

● 包含星号[*]的方框表示字段首次生成的时间,也就是说,它表示确定该字段原始值的Agent。

● 括号内的字段表示该值实际上是固定值。通常情况下,发送数据包时的SrcID字段和到达目的地时的TgtID字段就是这种情况。

● 划掉的字段表示该字段无效。

● 允许将原始事务的TgtID通过互连重新映射到一个新值。(这是一个包含字母R的方框)

——Note—数字硬鉴———————————
在每个发送的数据包中,ID字段属于以下类别之一:
● 新值。星号表示生成新值。
● 由较早的数据包生成。一个回圈箭头表示源。
● 固定值。该值用括号括起来。
● 不是有效的。域段被划掉了。
————————————————————
在下面的示例中,为了清晰起见,有时会省略与示例无关的任何事务ID。

2.5.1 Read transactions

  本节展示了带直接数据传输和不带直接数据传输的读事务中的ID字段流。

2.5.1.1 ID value transfer with DMT

  下图显示了如何派生DMT事务消息中的目标和事务ID值。例如,来自互联的ReadNoSnp请求中的SrcID值是由互联分配的。而在数据响应中用作TgtID的ReturnNID被设置为接收到的读取请求的SrcID值(ReturnNID在响应中会被设置为TgtID)。
在这里插入图片描述
流程中需要完成的步骤如下:

1、Requester节点通过发送请求包启动事务
  请求的ID字段生成如下:

  ● TgtID由请求的目的地决定(TgtID字段可以通过互连重新映射为不同的值。因为请求->互联的tgtid指向互联,互联->内存控制器的tgtid应该指向内存控制器)
  ● SrcID是Requester的固定值。(Requester本身的节点ID,响应需要根据该ID找回来)
  ● RN为一笔事务生成一个唯一的TxnID字段。

2、Home节点接收Requester节点的请求,并向Subordinate节点生成请求。

  请求的ID字段生成如下:

  ● TgtID被设置为SN节点的ID值。(因为已经路由Home节点,指向Home节点的Tgtid要转换为指向SN节点)
  ● SrcID是Home的固定值。(Home本身的节点ID,响应需要根据该ID找回来)
  ● TxnID是由Home生成的唯一值
  ● 将ReturnNID设置为与原始请求的SrcID相同的值。(因为若有需求,SN会根据该ID将响应跨过HN直接返回至RN)
  ● ReturnTxnID被设置为与原始请求的TxnID相同的值。(因为若有需求,SN会根据ReturnNID响应跨过HN直接返回至RN,根据ReturnTxnID找到到原始的请求)

3、如果对SN的请求需要ReadReceipt,则下级需要提供read receipt(该响应的作用是保序,后续会提到)

  ReadReceipt响应的ID字段如下所示:

  ● TgtID被设置为与请求的SrcID相同的值。(谁给我发的请求,我就要给谁回响应)
  ● SrcID是SN的固定值。这也与接收到的TgtID匹配。(SN的节点ID,接收请求是作为Tgtid,发送响应时作为Srcid)
  ● 将TxnID设置为与请求的TxnID相同的值。(响应返回到HN,HN要根据TxnID找到原始请求)
  ● DBID字段无效。

4、SN提供读取数据。
   读取数据响应的ID字段生成如下:

   ● TgtID被设置为与请求的ReturnNID相同的值。(该事务是DMT,读取的数据要跨过HN直接给到RN,所以TgtID直接指向RN,ReturnNID就是在原始请求节点RN发送请求时放置的RN的节点ID)
   ● SrcID是SN的固定值。这也与接收到的TgtID匹配。(SN的节点ID,接收请求是作为Tgtid,发送响应时作为Srcid)
  ● TxnID被设置为与请求的ReturnTxnID相同的值。(RN需要根据该ID去找到原始的请求)
  ● HomeNID设置为与请求的SrcID相同的值。(HomeNID指向Home节点,因为RN的CompAck响应需要返回至HN,而不是SN)
  ● DBID被设置为与请求的TxnID相同的值。(因为该DBID会作为CompAck的txnid,Home要根据txnid在Home找到原始请求)

5、Requester接收读取的数据并发送一个完成确认CompAck响应。(该响应的作用先理解为要去为Home释放一些东西)

   ● 生成的CompAck ID字段如下:
  ● TgtID设置为与读数据的HomeNID相同的值。(HomeNID的作用就是作为针对读数据返回CompAck的TgtID)
  ● SrcID是RN的固定值。这也与接收到响应的TgtID匹配。(RN的节点ID)
  ● TxnID设置为与读数据的DBID相同的值。(因为该DBID会作为CompAck的txnid,Home要根据txnid在Home找到原始请求)
  ● DBID字段无效。

并非所有请求都需要从Requester到Home的CompAck响应

2.5.1.2 ID value transfer with DMT and separate Comp and Data

下图说明如何在使用单独的Comp和Data的DMT事务消息中派生ID字段值。
在这里插入图片描述
1、Requester节点通过发送请求包启动事务

  生成请求的标识字段如下:
  ● TgtID由请求的目的地决定。(TgtID字段可以通过互连重新映射为不同的值。)
  ● SrcID是Requester的固定值。
  ● Requester为一笔事务生成一个唯一的TxnID字段。

2、Home节点接收Requester节点的请求,并向Subordinate节点生成请求。
  生成请求的标识字段如下:

  ● TgtID被设置为SN的节点ID。
  ● SrcID是Home的固定值。
  ● TxnID是由Home生成的唯一值。
  ● 将ReturnNID设置为与原始请求的SrcID相同的值。
  ● ReturnTxnID被设置为与原始请求的TxnID相同的值。

3、Home节点提供单独的Read响应
  读取响应的标识字段生成如下:
  ● TgtID被设置为与请求的SrcID相同的值
  ● SrcID是Home的固定值。
  ● TxnID被设置为与原始请求的TxnID相同的值。
  ● DBID值是由Home生成的唯一值,与向SN请求中的TxnID值相同

4、Requester接收Read响应并发送一个完成确认(CompAck)响应。
  ● TgtID被设置为与读响应的SrcID相同的值。
  ● SrcID是请求者的固定值。
  ● TxnID被设置为Home生成的唯一DBID值。
  ● DBID值无效。

5、对SN的请求需要一个ReadReceipt。下级提供ReadReceipt
  ● TgtID被设置为与请求的SrcID相同的值。
  ● SrcID是SN的固定值。这也与接收到的TgtID匹配。
  ● 将TxnID设置为与请求的TxnID相同的值。

6、SN提供单独的读取数据。
  ● TgtID被设置为与请求的ReturnNID相同的值。
  ● SrcID是从属的固定值。这也与接收到的TgtID匹配。
  ● TxnID被设置为与请求的ReturnTxnID相同的值。
  ● HomeNID设置为与请求的SrcID相同的值。
  ● DBID被设置为与请求的TxnID相同的值。

2.5.1.3 ID value transfer with DCT

在本例中,数据被转发到请求节点,并将带有或不带有数据的Snoop响应发送到HN-F。
在这里插入图片描述
1、Requester节点通过发送请求包启动事务
  ● TgtID由请求的目的地决定。
  ● SrcID是Requester的固定值。
  ● Requester为一笔事务生成一个唯一的TxnID字段。

2、互连中接收方Home节点向RN-F节点发出Forwarding snoop。
  ● SrcID是Home的固定值
  ● TxnID是由Home生成的唯一值。
  ● FwdNID设置为与原始请求的SrcID相同的值。(因为数据会根据此ID从一个RNF直接回到请求的RNF)
  ● 将FwdTxnID设置为与原始请求的TxnID相同的值。

3、RN-F提供读取数据。
  ● TgtID设置为与Snoop的FwdNID相同的值。
  ● SrcID是RN-F的固定值。
  ● TxnID设置为与Snoop的FwdTxnID相同的值。
  ● HomeNID设置为与Snoop的SrcID相同的值。
  ● DBID设置为与Snoop的TxnID相同的值。

4、RN-F还提供对Home的响应,无论是否读取数据(得把Snoop请求的响应回去呢)
  ● TgtID设置为与Snoop的SrcID相同的值。
  ● SrcID是RN-F的固定值。
  ● TxnID设置为与snoop的TxnID相同的值。
  ● DBID字段无效。

5、Requester接收读取的数据并发送一个完成确认CompAck响应。
  ● TgtID设置为与读数据的HomeNID相同的值。
  ● SrcID是Requester的固定值。这也与接收到的TgtID匹配。
  ● TxnID设置为与读数据的DBID相同的值。
  ● DBID字段无效。

2.5.1.3 ID value transfer without Direct Data Transfer

本节给出了一个没有DMT或DCT的Read ID字段流示例,并描述了在Read事务中使用TxnID和DBID字段。

本例中的Requester和Completer 分别是请求节点和HN-F

ID字段流包括来自Completer的可选ReadReceipt响应和来自Requester的可选CompAck响应。

对于包含CompAck响应的Read事务,Completer使用DBID将CompAck与原始事务关联起来。

不包含CompAck响应的Read事务不需要在数据响应中包含有效的DBID字段。

在这里插入图片描述
1、请求方通过发送请求包启动事务。
  ● TgtID由请求的目的地决定。
  ● SrcID是请求者的固定值。
  ● Requester为一笔事务生成一个唯一的TxnID字段。

2、如果事务包含ReadReceipt,则Completer接收请求包并提供ReadReceipt响应(如果有保序要求,会有该响应)
  ● TgtID被设置为与请求的SrcID相同的值。
  ● SrcID是Completer的固定值。这也与接收到的TgtID匹配。
  ● 将TxnID设置为与请求的TxnID相同的值。
  ● DBID字段无效。

3、Completer接收请求包并提供读取数据。
  ● TgtID被设置为与请求的SrcID相同的值
  ● SrcID是完成器的固定值。这也与接收到的TgtID匹配。
  ● 将TxnID设置为与请求的TxnID相同的值。
  ● HomeNID是Completer的固定值。(用于CompAck响应)
  ● 如果断言请求中的ExpCompAck,则Completer生成唯一的DBID值。

4、Requester接收读取的数据并发送完成确认CompAck和响应
  ● TgtID设置为与读数据的HomeNID相同的值。
  ● SrcID是请求者的固定值。这也与接收到的TgtID匹配。
  ● TxnID设置为与读数据的DBID相同的值。
  ● DBID字段无效。

2.5.2 Dataless transactions

  对于Dataless事务,除了CleanSharedPersistSep和StashOnceSep之外,ID字段的使用类似于Without Direct Data传输的ID值传输。唯一的区别是,从Completer到Requester的响应在CRSP通道上作为单个数据包发送,而不是在RDAT通道上作为多个数据包发送。
  对于StashOnceSep事务,StashGroupID值在请求节点发送到互连的请求中,该值在StashDone和CompStashDone响应中返回。StashDone响应中的TxnID值不适用,必须设置为零。

下面描述了一个CleanSharedPersistSep事务中的ID值传输。

2.5.2 .1 ID value transfer in a CleanSharedPersistSep transaction

下图展示了如何在使用单独的Comp和Persist响应的CleanSharedPersistSep事务消息中生成ID符字段值。PCMOSep represents CleanSharedPersistSep。
在这里插入图片描述
1、请求方通过发送请求包启动事务。Request的ID字段生成如下:
  ● TgtID由请求的目的地决定。
  ● SrcID是Requester的固定值。
  ● Requester为每笔事务生成一个唯一的TxnID值。(Requester可以在接收到Comp响应后重用TxnID值)
  ● Requester生成一个新的PGroupID值,或者重用当前正在使用的PGroupID值。

2、Home节点向SN节点生成请求。
  ● TgtID被设置为SN所需的值。
  ● SrcID是Home的固定值。
  ● TxnID是由Home生成的唯一值。(在收到Comp响应后,Home可以重用TxnID值。)
  ● 将ReturnNID设置为与原始请求的SrcID相同的值。
  ● ReturnTxnID不适用,必须设置为零。
  ● 将PGroupID设置为与原始请求的PGroupID相同的值。

3、Home节点向请求方发送一个Comp响应
  ● TgtID被设置为与原始请求的SrcID相同的值。
  ● SrcID是Home的固定值。
  ● TxnID被设置为与原始请求的TxnID相同的值。

4、Home节点可以选择性地向请求方发送Persist响应。
  ● TgtID被设置为与请求的SrcID相同的值。
  ● SrcID是Home节点的固定值。
  ● TxnID不适用,必须设置为0。
  ● 将PGroupID设置为与请求的PGroupID相同的值。

接收方Home节点可以选择向请求方发送一个组合的CompPersist响应,而不是单独的Comp和Persist响应。

CompPersist响应中的ID字段生成如下:
  ● TgtID被设置为与原始请求的SrcID相同的值
  ● SrcID是Home的固定值。
  ● TxnID被设置为与原始请求的TxnID相同的值。
  ● 将PGroupID设置为与原始请求的PGroupID相同的值。

5、SN节点生成Home节点的Comp响应
  ● TgtID被设置为与请求的SrcID相同的值。
  ● SrcID是SN的固定值。
  ● 将TxnID设置为与请求的TxnID相同的值。

6、SN节点生成对RN或HN的Persist响应。
  ● TgtID被设置为与请求的ReturnNID相同的值。
  ● SrcID是SN的固定值。
  ● TxnID不适用,必须设置为0。
  ● 将PGroupID设置为与请求的PGroupID相同的值。

7、如果请求的ReturnNID和SrcID是相同的值,SN节点可以选择向Home节点发送一个组合的CompPersist响应,而不是单独的Comp和Persist响应
  ● TgtID被设置为与请求的SrcID相同的值。
  ● SrcID是SN的固定值。
  ● 将TxnID设置为与请求的TxnID相同的值。
  ● 将PGroupID设置为与请求的PGroupID相同的值。

2.5.3 Write transactions

本节描述了写事务中TxnID和DBID字段的使用:

2.5.3.1 CopyBack transaction

本节描述CopyBack 事务中ID字段的使用。
在这里插入图片描述
1、Requester通过发送请求包启动事务。生成请求的ID字段如下:
  ● TgtID由请求的目的地决定。
  ● SrcID是RN的固定值。
  ● Requester为每笔事务生成一个唯一的TxnID值。

2、Completer接收请求包并生成一个CompDBIDResp响应。响应的ID字段生成如下:
  ● TgtID被设置为与请求的SrcID相同的值。
  ● SrcID是Completer的固定值。这也与接收到的TgtID匹配。
  ● 将TxnID设置为与请求的TxnID相同的值。
  ● Completer生成一个唯一的DBID值。

3、Requester接收CompDBIDResp响应并发送写数据。写数据的ID字段生成如下:
  ● TgtID被设置为与CompDBIDResp响应的SrcID相同的值。如果该值是由互连重新映射的,则该值可能与请求的原始TgtID不同。
  ● Requester是请求者的固定值。
  ● TxnID被设置为与CompDBIDResp响应中提供的DBID值相同的值。
  ● 写数据中的DBID字段没有被使用。
  ● 所有写数据包的TgtID、SrcID和TxnID字段必须相同。

4、Completer接收写数据并使用TxnID字段,该字段现在包含了Completer生成的DBID值。这有助于确定要关联哪个事务的写数据。

在接收到所有写数据包后,Completer可以在另一个事务中重用相同的DBID值。

2.5.3.2 WriteNoSnp transaction

本节描述WriteNoSnp事务中标ID字段的使用

显示单独Comp和DBIDResp的ID值传输。Completer可以将Comp和DBIDResp组合成单个CompDBIDResp响应。Requester可以一些情况下将NCBWrData与CompAck结合起来。
在这里插入图片描述

ID字段的使用与合并响应的事务相同,附加要求如下:
  ● 用于单独的DBIDResp和Comp响应的ID字段必须相同。
  ● 只有当接收到DBIDResp和Comp响应时,请求者才能重用TxnID值。

1、Requester通过发送请求包启动事务。生成请求的标识字段如下:
  ● TgtID由请求的目的地决定。
  ● SrcID是Requester的固定值。
  ● Requester生成一个唯一的TxnID字段。

2、Completer接收请求包并生成一个DBIDResp响应。响应的ID字段生成如下:
  ● TgtID被设置为与请求的SrcID相同的值。
  ● SrcID是Completer的固定值。这也与接收到的TgtID匹配。
  ● 将TxnID设置为与请求的TxnID相同的值。
  ● Completer生成一个唯一的DBID值。

3、Requester接收到DBIDResp响应并发送写数据。写数据的ID字段生成如下:
  ● TgtID被设置为与DBIDResp响应的SrcID相同的值。如果该值是由互连重新映射的,则该值可能与请求的原始TgtID不同。
  ● SrcID是Requester的固定值。
  ● TxnID被设置为与DBIDResp响应中提供的DBID值相同的值。
  ● 写数据中的DBID字段没有被使用。
  ● 所有写数据包的TgtID、SrcID和TxnID字段必须相同。

4、Completer接收写数据并使用TxnID字段(即Completer生成的DBID值)来确定写数据与哪个事务相关联。

5、Completer在完成事务后生成一个Comp响应。
  Comp响应的ID字段必须与DBIDResp响应相同,生成方式如下:
  ● TgtID被设置为与请求的SrcID相同的值。
  ● SrcID是Completer的固定值。这也与接收到的TgtID匹配。
  ● 将TxnID设置为与请求的TxnID相同的值。
  ● Completer使用与在DBIDResp响应中使用的相同的DBID值。

6、如果事务需要,Requester在接收到DBIDResp或Comp后发送一个CompAck消息。
  ● TgtID被设置为与DBIDResp或Comp响应的SrcID相同的值。
  ● SrcID是请求者的固定值。这也与接收到的TgtID匹配。
  ● TxnID设置为与DBIDResp或Comp响应的DBID相同的值。
  ● DBID字段无效。

在接收到Comp和DBIDResp响应之后,Requester可以在另一个事务中重用相同的TxnID值。

在接收到所有写数据包后,Completer可以在另一个事务中重用相同的DBID值。

在单独的DBIDResp和Comp响应之间没有order要求。当两个消息来自同一来源时,需要使用相同的id值。

2.5.3.3 WriteUnique transaction

  在某些情况下,WriteUnique事务还可以包括从Requester到Completer的CompAck响应。在这种情况下,使用ID字段的附加规则是:

● Requester给Completer的CompAck响应的TgtID、SrcID和TxnID标识字段必须与写数据使用的字段相同,即:
  —TgtID被设置为与CompDBIDResp响应的SrcID相同的值。如果给出了单独的Comp和DBIDResp响应,则将TgtID设置为与Comp或DBIDResp响应的SrcID相同的值,因为两者中的SrcID值必须相同。但是,如果该值已被互连重新映射,则该值可能与请求的原始TgtID不同。

  —SrcID是Requester的固定值。

  —TxnID被设置为与CompDBIDResp响应中提供的DBID值相同的值。如果给出了单独的Comp和DBIDResp响应,则将TxnID设置为与Comp或DBIDResp响应的DBID相同的值,因为两者中的DBID值必须相同。

  —没有使用WriteData和CompAck中的DBID字段

  —如果发送WriteData和CompAck联合响应,则TgtID值与Comp、DBIDResp或CompDBIDResp中的SrcID值相同,TxnID值与Comp、DBIDResp或CompDBIDResp中的DBID值相同。

● 在为另一个事务重用相同的DBID值之前,Completer必须接收所有写数据项和CompAck响应。

在这里插入图片描述

在这里插入图片描述

2.5.3.4 StashOnce or StashOnceSep transaction

本节描述了在蕴含DataPull的StashOnce或StashOnceSep事务中ID字段的使用:
在这里插入图片描述
1、Requester通过发送一个Stash请求包来启动事务。
  ● TgtID由请求的目的地决定。
  ● SrcID是Requester的固定值。
  ● 请Requester为请求生成一个唯一的TxnID字段。
  ● Requester包含StashNID字段,以指示要向哪个RN-F发送Stash(划重点)。
  ● Requester包含StashLPID字段,以指示RN-F中的逻辑处理器。

2、Home节点接收Stash请求包并向请求节点发送Comp响应
  ● TgtID被设置为与请求的SrcID相同的值。
  ● 将TxnID设置为与请求的TxnID相同的值。

3、对于StashOnceSep请求,互连中的Home节点向请求节点发送StashDone响应。
  ● TgtID被设置为与请求的SrcID相同的值。
  ● TxnID无效
  ● 将StashGroupID设置为与请求的StashGroupID相同的值。

另外,对于StashOnceSep请求,互连中的Home节点可以发送组合的CompStashDone响应,而不是单独的Comp和StashDone响应到请求节点。
  ● TgtID被设置为与请求的SrcID相同的值。
  ● 将TxnID设置为与请求的TxnID相同的值。
  ● 将StashGroupID设置为与请求的StashGroupID相同的值。

4、Home节点使用Stash生成对适当的RN-F的Snoop。
  ● SrcID是Home的固定值。
  ● TxnID是由Home生成的唯一值
  ● 将StashLPID设置为与原始请求的StashLPID相同的值。
—Note—————
Snoop请求不包括tgtid域段
————————

5、被Snoop的RN-F产生一个Snoop响应。在本例中,它包括一个Data Pull指示。
  ● TgtID被设置为与请求的SrcID相同的值。
  ● SrcID是RN-F的固定值。
  ● 将TxnID设置为与请求的TxnID相同的值。
  ● DBID字段是由RN-F生成的唯一值。

6、Home提供读取数据。
  ● TgtID被设置为与Snoop响应的SrcID相同的值。
  ● SrcID是Home的固定值。(在本例中,读取数据由Home提供。)
  ● TxnID被设置为与Snoop响应的DBID相同的值。
  ● DBID字段是Home生成的唯一值。
  ● HomeNID是Home的固定值。

7、RN-F接收读取的数据并发送完成确认CompAck响应。
  ● TgtID设置为与读数据的HomeNID相同的值。
  ● SrcID是RN-F的固定值。这也与接收到的TgtID匹配。
  ● TxnID设置为与读数据的DBID相同的值。
  ● DBID字段无效。

2.5.4 DVMOp transaction

对DVMOp事务的TgtID、SrcID、TxnID和DBID标识符字段的使用与writensnp事务的相同。

2.5.5 Transaction requests with Retry

对于接收到RetryAck响应的事务,有关于如何使用ID字段的特定规则。
在这里插入图片描述
1、Requester通过发送请求包启动事务。生成请求的ID字段如下:
  ● TgtID由请求的目的地决定
  ● SrcID是请求者的固定值。
  ● Requester生成唯一的TxnID字段。

2、Completer接收请求包并确定它将发送一个RetryAck响应。RetryAck响应的ID字段生成如下:
  ● TgtID被设置为与请求的SrcID相同的值。
  ● SrcID是Completer的固定值。这也与接收到的TgtID匹配。
  ● 将TxnID设置为与请求的TxnID相同的值。
  ● DBID字段无效。
  ● Completer使用一个PCrdType值,该值指示Retry事务所需的信用类型。

3、当Completer能够接受给定PCrdType的Retry事务时,它使用PCrdGrant响应向Requester发送一个信用。生成PCrdGrant响应的标识符字段如下:
  ● TgtID被设置为与请求的SrcID相同的值。
  ● SrcID是Completer的固定值。这也与请求的TgtID相匹配。
  ● TxnID字段没有被使用,必须设置为零。
  ● DBID字段没有被使用,必须设置为零。
  ● PCrdType值被设置为再次发出原始事务所需的类型。

4、Requester接收信用授予,并通过发送请求包重新发送原始事务。生成请求的标识字段如下:
  ● TgtID被设置为与RetryAck响应的SrcID相同的值(也与PCrdGrant响应的SrcID相同),或者与原始请求中使用的值相同。
  ● SrcID是请求者的固定值
  ● Requester生成一个唯一的TxnID字段。这是允许的,但不是必需的,与接收到RetryAck响应的原始请求不同。
  ● 将PCrdType值设置为对原始请求的RetryAck响应中的PCrdType值,该值与PCrdGrant响应的PCrdType值相同。

2.5.6 Protocol Credit Return transaction

  P-Credit返回事务使用PCrdReturn请求返回已授予但不再需要的信用。TgtID、SrcID和TxnID要求如下:

● Requester通过发送PCrdReturn请求包发送协议信用返回事务。生成请求的标识字段如下:
  —TgtID必须与获得的credit的SrcID匹配。
  —SrcID是请求者的固定值。
  —TxnID字段没有被使用,必须设置为零。

PCrdType必须与再次发出原始事务所需的原始PCrdGrant中的PCrdType值匹配。

没有响应或使用与协议信用返回事务相关的DBID字段。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字硬鉴

你的鼓励就是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值