开启82571EB/82572EI Multiple transmit queues
以下是启用 82571EB/82572EI TX QUEUE 1的概要设置:
1. 启用TX多对列, 寄存器 TCTL.MULR 位为1b;
2. 设置寄存器 TXDCTL0[22], TXDCTL1[22] 位为1b;
3. 设置寄存器 TARC0[26, 24, 23] 与 TARC1[26, 24] 位为1b;
4. 设置寄存器 TARC0[25] 与 TARC1[25] 为1b;
5. 设置寄存器 TARC1[22] 为1b;
6. 设置寄存器 TARC1[28] 位为0b;
7. 设置TX描叙符环数据寄存器 TDLEN1, TDBAH1, TDBAL1, TDT1, TDH1
8. 启用TX1 Queue 1, TARC1[10]设置为1b;
82571EB/82572EI 是Intel生产的1000M以太网控制芯片, 支持双 RX/TX QUEUE, 在Linux中使用e1000e驱动提供支持. 因在一个特殊应用中需启用其multiple transmit queues支持, 而Linux e1000e驱动默认只启用了 RX QUEUE 0 & TX QUEUE 0. 没办法只能分析e1000e代码与82571EB/82572EI数据手册了, 不过发现其实e1000e驱动已对多对列进行了支持, 只是需要启用相关寄存器即可.
以下是启用 82571EB/82572EI TX QUEUE 1的概要设置:
1. 启用TX多对列, 寄存器 TCTL.MULR 位为1b;
2. 设置寄存器 TXDCTL0[22], TXDCTL1[22] 位为1b;
3. 设置寄存器 TARC0[26, 24, 23] 与 TARC1[26, 24] 位为1b;
4. 设置寄存器 TARC0[25] 与 TARC1[25] 为1b;
5. 设置寄存器 TARC1[22] 为1b;
6. 设置寄存器 TARC1[28] 位为0b;
7. 设置TX描叙符环数据寄存器 TDLEN1, TDBAH1, TDBAL1, TDT1, TDH1
8. 启用TX1 Queue 1, TARC1[10]设置为1b;
9. 启用TX, TCTL[1]设置为1b;
参考:
82571EB/82572EI Datasheet.
PCIe* GbE Controllers Open Source Software Developer’s Manual