简单的说:
数据流 ---> [物理接口] ---> [MAC] ---> [DPI] ---> 加上QOS,GRP,TT,TAG等变组合成一条指令 --->[PIP/IPD] ---> 转换成packet
1\
CN68XX支持两个PCIe总线标准的MAC接口(网络接口?),DPI即直接内存存取包接口,为MAC接口提供直接内存存取服务,SLI为cores,memory,packet I/O提供互联接口
2\
来自外部用户输入的DPI指令
DPI指令可能来自一个PCIe用户或者其他外部设备,这为packet给CN68XX与或命令或者创建一个wqe节点提供了一种途径,一般来说,CN68xx是PCIe总线上的一个设备的情况下,指令会被提交给DPI。其他情况下提交指令给DPI的现象很少。
3、下面的介绍假设在CN68XX是PCIe总线上的一个设备并且指令由外部用户输入
DPI一共有32条指令总线,每一条DPI指令总线都有一个特定的始能寄存器SLI_PKT_INSTR_ENB,DPI输入通道可以被disable,也可被重新enable。
DPI实现了以下几种优先级仲裁机制:
【1】当SLI_PKT_INPUT_CONTROL[PKT_RR] = 0优先级顺序是ring 0>1>2>...>30>31
【2】当SLI_PKT_INPUT_CONTROL[PKT_RR] = 1每一个ring的优先级顺序都是相等的,轮寻访问ring
DPI在去处理下一个ring的时候会尽可能多的抓取当前ring的指令,抓多少是可以配置的,由SLI_PKT_INSTR_RD_SIZE这个寄存器配置
DPI的每一哥指令ring都有以下属性
【1】一个可配置的基地址SLI_PKTn_INSTR_BADDR[ADDR]
【2】一个输入ring连接的物理DPI MAC编号SLI_PKT_IN_PCIE_PORT
【3】一个可配置的ring size (SLI_PKTn_INSTR_FIFO_RSIZE[RSIZE])
【4】一个尾指针(SLI_PKTn_INSTR_BAOFF_DBELL[AOFF]这个寄存器只是给出了一个大致的尾指针,另一个寄存器 SLI_PKT_IN_DONEn_CNTS[CNT] 也可以用来制定尾指针指向哪里
DPI的每一个ring都链接到两个MAC中的一个(通过PCIe),DPI直接对MAC进行读操作,并且DPI的ring可以和物理MAC接口一一对应,这包括了DPI指令中的读指令,和读packet data的操作,每一个DPI 输入ring都会对应不同的物理MAC port,一个单独的DPI ring只使用一个物理MAC port。
每一个DPI ring都会对应一个PIP/IPD接口的pknd,PIP/IPD用这个pknd来决定输入的包走什么样的处理流程, SLI_PORT(0..31)_PKIND这个寄存器是ring和pknd的对应关系
数据流 ---> [物理接口] ---> [MAC] ---> [DPI] ---> 加上QOS,GRP,TT,TAG等变组合成一条指令 --->[PIP/IPD] ---> 转换成packet
1\
CN68XX支持两个PCIe总线标准的MAC接口(网络接口?),DPI即直接内存存取包接口,为MAC接口提供直接内存存取服务,SLI为cores,memory,packet I/O提供互联接口
2\
来自外部用户输入的DPI指令
DPI指令可能来自一个PCIe用户或者其他外部设备,这为packet给CN68XX与或命令或者创建一个wqe节点提供了一种途径,一般来说,CN68xx是PCIe总线上的一个设备的情况下,指令会被提交给DPI。其他情况下提交指令给DPI的现象很少。
3、下面的介绍假设在CN68XX是PCIe总线上的一个设备并且指令由外部用户输入
DPI一共有32条指令总线,每一条DPI指令总线都有一个特定的始能寄存器SLI_PKT_INSTR_ENB,DPI输入通道可以被disable,也可被重新enable。
DPI实现了以下几种优先级仲裁机制:
【1】当SLI_PKT_INPUT_CONTROL[PKT_RR] = 0优先级顺序是ring 0>1>2>...>30>31
【2】当SLI_PKT_INPUT_CONTROL[PKT_RR] = 1每一个ring的优先级顺序都是相等的,轮寻访问ring
DPI在去处理下一个ring的时候会尽可能多的抓取当前ring的指令,抓多少是可以配置的,由SLI_PKT_INSTR_RD_SIZE这个寄存器配置
DPI的每一哥指令ring都有以下属性
【1】一个可配置的基地址SLI_PKTn_INSTR_BADDR[ADDR]
【2】一个输入ring连接的物理DPI MAC编号SLI_PKT_IN_PCIE_PORT
【3】一个可配置的ring size (SLI_PKTn_INSTR_FIFO_RSIZE[RSIZE])
【4】一个尾指针(SLI_PKTn_INSTR_BAOFF_DBELL[AOFF]这个寄存器只是给出了一个大致的尾指针,另一个寄存器 SLI_PKT_IN_DONEn_CNTS[CNT] 也可以用来制定尾指针指向哪里
DPI的每一个ring都链接到两个MAC中的一个(通过PCIe),DPI直接对MAC进行读操作,并且DPI的ring可以和物理MAC接口一一对应,这包括了DPI指令中的读指令,和读packet data的操作,每一个DPI 输入ring都会对应不同的物理MAC port,一个单独的DPI ring只使用一个物理MAC port。
每一个DPI ring都会对应一个PIP/IPD接口的pknd,PIP/IPD用这个pknd来决定输入的包走什么样的处理流程, SLI_PORT(0..31)_PKIND这个寄存器是ring和pknd的对应关系