This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PKTDMA与channels及flows之间是一种什么样的关系?



我对PKTDMA的理解是:PKTDMA是一个特定环境下的数据包的收发器,如SRIO、NETCP等,但在“sprugr9f:KeyStone Architecture Multicore Navigator.pdf”资料上讲,每一个PKTDMA有不同数目的channels与flows。我一直认为每一个PKTDMA只需要一个收、发channel及一个flow就可以了。

不知道我的理解哪儿出了问题?谢谢帮我解答一下困惑。

  • 是否可以这样对比理解:(以PKTDMA与我们最熟习的IP互联网协议进行对比)

    PKTDMA  相当于  IP   地址

    channels  相当于  ports的端口号

     

  • 每个Navigator device内部都有一个pktDMA,用来进行数据的输入输出管理,每个pktDMA内部会有多个Tx/Rx channel,每个channel是有相应的优先级,多个master可以分别使用不同的channel,如果某一时刻存在多个输入输出包,则PKTDMA会根据channel的优先级进行调度依次处理,每个PKTDMA内部可以有多个flow用于定义输出数据对应的Rx FDQ/RXQ等。

    简单来讲pktDMA内部有多个channel及flow是考虑到同时多个输入输出数据流,及对不同数据流可以有不同的属性。

  • PKTDAM可以配置多个信道channels,以便并行接收。因而,PKTDAM与Channel之间是一对多的关系。

    而Rxflows主要用来标识接收channel信号流的属性,同一个channel可能由多个Rxflows来进行说明,而同一个RxFlow也可以同时给多个接收Channel进行说明。因而RxFlows与Channels之间没有明确的对应关系。

     

    以上对PKTDAM、Channels、RxFlows之间的关系理解是否正确?望点评一下,谢谢了!

  • 你的理解是正确的。flow可以由用户在每个pkt的descriptor中配置指定,所以每个pkt可以指定不同的flow,channel分成Tx/Rx channel,一般来说Tx channel是与Tx Q一一对应的,Rxchannel的选定与不同的navigator device有关,可能是与Tx channel一一对应,也可能是由PKTDMA随机选择。