Marvell(Aquantia) AQtion 驅動程式

適用於 aQuantia 多千兆位 PCI Express 乙太網介面卡系列

識別您的介面卡

此版本中的驅動程式與基於 AQC-100、AQC-107、AQC-108 的乙太網介面卡相容。

SFP+ 裝置(適用於基於 AQC-100 的介面卡)

此版本已使用無源直連電纜 (DAC) 和 SFP+/LC 光收發器進行測試。

配置

巨型幀

該驅動程式支援所有介面卡的巨型幀。透過將 MTU 更改為大於預設值 1500 的值來啟用巨型幀支援。MTU 的最大值為 16000。使用 ip 命令增加 MTU 大小。例如

ip link set mtu 16000 dev enp1s0

ethtool

該驅動程式利用 ethtool 介面進行驅動程式配置和診斷,以及顯示統計資訊。此功能需要最新的 ethtool 版本。

NAPI

atlantic 驅動程式支援 NAPI(Rx 輪詢模式)。

支援的 ethtool 選項

檢視介面卡設定

ethtool <ethX>

輸出示例

Settings for enp1s0:
  Supported ports: [ TP ]
  Supported link modes:   100baseT/Full
                          1000baseT/Full
                          10000baseT/Full
                          2500baseT/Full
                          5000baseT/Full
  Supported pause frame use: Symmetric
  Supports auto-negotiation: Yes
  Supported FEC modes: Not reported
  Advertised link modes:  100baseT/Full
                          1000baseT/Full
                          10000baseT/Full
                          2500baseT/Full
                          5000baseT/Full
  Advertised pause frame use: Symmetric
  Advertised auto-negotiation: Yes
  Advertised FEC modes: Not reported
  Speed: 10000Mb/s
  Duplex: Full
  Port: Twisted Pair
  PHYAD: 0
  Transceiver: internal
  Auto-negotiation: on
  MDI-X: Unknown
  Supports Wake-on: g
  Wake-on: d
  Link detected: yes

注意

只有 linux 核心 > 4.10 才會顯示 AQrate 速度(2.5/5 Gb/s)。但您仍然可以使用這些速度

ethtool -s eth0 autoneg off speed 2500

檢視介面卡資訊

ethtool -i <ethX>

輸出示例

driver: atlantic
version: 5.2.0-050200rc5-generic-kern
firmware-version: 3.1.78
expansion-rom-version:
bus-info: 0000:01:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no

檢視乙太網介面卡統計資訊

ethtool -S <ethX>

輸出示例

NIC statistics:
   InPackets: 13238607
   InUCast: 13293852
   InMCast: 52
   InBCast: 3
   InErrors: 0
   OutPackets: 23703019
   OutUCast: 23704941
   OutMCast: 67
   OutBCast: 11
   InUCastOctects: 213182760
   OutUCastOctects: 22698443
   InMCastOctects: 6600
   OutMCastOctects: 8776
   InBCastOctects: 192
   OutBCastOctects: 704
   InOctects: 2131839552
   OutOctects: 226938073
   InPacketsDma: 95532300
   OutPacketsDma: 59503397
   InOctetsDma: 1137102462
   OutOctetsDma: 2394339518
   InDroppedDma: 0
   Queue[0] InPackets: 23567131
   Queue[0] OutPackets: 20070028
   Queue[0] InJumboPackets: 0
   Queue[0] InLroPackets: 0
   Queue[0] InErrors: 0
   Queue[1] InPackets: 45428967
   Queue[1] OutPackets: 11306178
   Queue[1] InJumboPackets: 0
   Queue[1] InLroPackets: 0
   Queue[1] InErrors: 0
   Queue[2] InPackets: 3187011
   Queue[2] OutPackets: 13080381
   Queue[2] InJumboPackets: 0
   Queue[2] InLroPackets: 0
   Queue[2] InErrors: 0
   Queue[3] InPackets: 23349136
   Queue[3] OutPackets: 15046810
   Queue[3] InJumboPackets: 0
   Queue[3] InLroPackets: 0
   Queue[3] InErrors: 0

中斷合併支援

ITR 模式,TX/RX 合併時序可以使用以下命令檢視

ethtool -c <ethX>

並使用以下命令更改

ethtool -C <ethX> tx-usecs <usecs> rx-usecs <usecs>

停用合併

ethtool -C <ethX> tx-usecs 0 rx-usecs 0 tx-max-frames 1 tx-max-frames 1

網路喚醒支援

透過幻資料包支援 WOL

ethtool -s <ethX> wol g

停用 WOL

ethtool -s <ethX> wol d

設定並檢查驅動程式訊息級別

設定訊息級別

ethtool -s <ethX> msglvl <level>

級別值

0x0001

通用驅動程式狀態。

0x0002

硬體探測。

0x0004

鏈路狀態。

0x0008

定期狀態檢查。

0x0010

正在關閉介面。

0x0020

正在啟動介面。

0x0040

接收錯誤。

0x0080

傳輸錯誤。

0x0200

中斷處理。

0x0400

傳輸完成。

0x0800

接收完成。

0x1000

資料包內容。

0x2000

硬體狀態。

0x4000

網路喚醒狀態。

預設情況下,除錯訊息級別設定為 0x0001(通用驅動程式狀態)。

檢查訊息級別

ethtool <ethX> | grep "Current message level"

如果要停用訊息輸出

ethtool -s <ethX> msglvl 0

RX 流規則 (ntuple 過濾器)

支援單獨的規則,這些規則按該順序應用

  1. 16 個 VLAN ID 規則

  2. 16 個 L2 EtherType 規則

  3. 8 個 L3/L4 5 元組規則

該驅動程式利用 ethtool 介面透過 ethtool -N <device> <filter> 配置 ntuple 過濾器。

啟用或停用 RX 流規則

ethtool -K ethX ntuple <on|off>

停用 ntuple 過濾器時,所有使用者程式設計的過濾器都會從驅動程式快取和硬體中重新整理。重新啟用 ntuple 時,必須重新新增所有需要的過濾器。

由於規則的固定順序,過濾器的位置也是固定的

  • 位置 0 - 15 用於 VLAN ID 過濾器

  • 位置 16 - 31 用於 L2 EtherType 過濾器

  • 位置 32 - 39 用於 L3/L4 5 元組過濾器(IPv6 的位置 32、36)

L3/L4 5 元組(協議、源和目標 IP 地址、源和目標 TCP/UDP/SCTP 埠)與 8 個過濾器進行比較。對於 IPv4,最多可以匹配 8 個源和目標地址。對於 IPv6,最多可以支援 2 對地址。僅針對 TCP/UDP/SCTP 資料包比較源埠和目標埠。

要新增將資料包定向到佇列 5 的過濾器,請使用 <-N|-U|--config-nfc|--config-ntuple> 開關

ethtool -N <ethX> flow-type udp4 src-ip 10.0.0.1 dst-ip 10.0.0.2 src-port 2000 dst-port 2001 action 5 <loc 32>
  • action 是佇列號。

  • loc 是規則編號。

對於 flow-type ip4|udp4|tcp4|sctp4|ip6|udp6|tcp6|sctp6,您必須在 32 - 39 範圍內設定 loc 編號。對於 flow-type ip4|udp4|tcp4|sctp4|ip6|udp6|tcp6|sctp6,您可以為流量 IPv4 設定 8 條規則,也可以為流量 IPv6 設定 2 條規則。Loc 編號流量 IPv6 為 32 和 36。目前,您不能同時使用 IPv4 和 IPv6 過濾器。

IPv6 過濾器流量的示例過濾器

sudo ethtool -N <ethX> flow-type tcp6 src-ip 2001:db8:0:f101::1 dst-ip 2001:db8:0:f101::2 action 1 loc 32
sudo ethtool -N <ethX> flow-type ip6 src-ip 2001:db8:0:f101::2 dst-ip 2001:db8:0:f101::5 action -1 loc 36

IPv4 過濾器流量的示例過濾器

sudo ethtool -N <ethX> flow-type udp4 src-ip 10.0.0.4 dst-ip 10.0.0.7 src-port 2000 dst-port 2001 loc 32
sudo ethtool -N <ethX> flow-type tcp4 src-ip 10.0.0.3 dst-ip 10.0.0.9 src-port 2000 dst-port 2001 loc 33
sudo ethtool -N <ethX> flow-type ip4 src-ip 10.0.0.6 dst-ip 10.0.0.4 loc 34

如果設定 action -1,則將丟棄與過濾器對應的所有流量。

action 的最大值為 31。

VLAN 過濾器(VLAN id)與 16 個過濾器進行比較。VLAN id 必須帶有掩碼 0xF000。這是為了區分 VLAN 過濾器和帶有 UserPriority 的 L2 Ethertype 過濾器,因為使用者優先順序和 VLAN ID 都在同一個“vlan”引數中傳遞。

要新增將 VLAN 2001 中的資料包定向到佇列 5 的過濾器

ethtool -N <ethX> flow-type ip4 vlan 2001 m 0xF000 action 1 loc 0

L2 EtherType 過濾器允許按 EtherType 欄位或 802.1Q 的 EtherType 和 User Priority (PCP) 欄位過濾資料包。UserPriority (vlan) 引數必須帶有掩碼 0x1FFF。這是為了區分 VLAN 過濾器和帶有 UserPriority 的 L2 Ethertype 過濾器,因為使用者優先順序和 VLAN ID 都在同一個“vlan”引數中傳遞。

要新增將優先順序 3 的 IP4 資料包定向到佇列 3 的過濾器

ethtool -N <ethX> flow-type ether proto 0x800 vlan 0x600 m 0x1FFF action 3 loc 16

要檢視當前存在的過濾器列表

ethtool <-u|-n|--show-nfc|--show-ntuple> <ethX>

可以從表本身刪除規則。這是使用以下方法完成的

sudo ethtool <-N|-U|--config-nfc|--config-ntuple> <ethX> delete <loc>
  • loc 是要刪除的規則編號。

Rx 過濾器是一個用於載入過濾器表的介面,該表將所有流匯入佇列 0,除非使用“action”指定備用佇列。在這種情況下,任何符合過濾器條件的流都將定向到相應的佇列。所有核心 2.6.30 及更高版本都支援 RX 過濾器。

UDP 的 RSS

目前,NIC 不支援分段 IP 資料包的 RSS,這會導致分段 UDP 流量的 RSS 工作不正確。要停用 UDP 的 RSS,可以使用 RX Flow L3/L4 規則。

示例

ethtool -N eth0 flow-type udp4 action 0 loc 32

UDP GSO 硬體解除安裝

UDP GSO 允許透過將 UDP 標頭分配解除安裝到硬體來提高 UDP tx 速率。為此需要一個特殊的使用者空間套接字選項,可以使用 /kernel/tools/testing/selftests/net/ 進行驗證

udpgso_bench_tx -u -4 -D 10.0.1.1 -s 6300 -S 100

將導致從單個 6300 位元組使用者緩衝區中形成 100 位元組大小的 UDP 資料包。

UDP GSO 透過以下方式配置

ethtool -K eth0 tx-udp-segmentation on

專用標誌(測試)

Atlantic 驅動程式支援用於硬體自定義功能的專用標誌

$ ethtool --show-priv-flags ethX

Private flags for ethX:
DMASystemLoopback  : off
PKTSystemLoopback  : off
DMANetworkLoopback : off
PHYInternalLoopback: off
PHYExternalLoopback: off

示例

$ ethtool --set-priv-flags ethX DMASystemLoopback on

DMASystemLoopback:DMA 主機環回。PKTSystemLoopback:資料包緩衝區主機環回。DMANetworkLoopback:DMA 塊上的網路側環回。PHYInternalLoopback:Phy 上的內部環回。PHYExternalLoopback:Phy 上的外部環回(使用環回乙太網電纜)。

命令列引數

以下命令列引數在 atlantic 驅動程式上可用

aq_itr - 中斷節流模式

接受的值:0、1、0xFFFF

預設值:0xFFFF

0

停用中斷節流。

1

啟用中斷節流並使用指定的 tx 和 rx 速率。

0xFFFF

自動節流模式。驅動程式將根據鏈路速度選擇最佳的 RX 和 TX 中斷節流設定。

aq_itr_tx - TX 中斷節流速率

接受的值:0 - 0x1FF

預設值:0

TX 側節流(以微秒為單位)。介面卡將最大中斷延遲設定為此值。最小中斷延遲將為此值的一半

aq_itr_rx - RX 中斷節流速率

接受的值:0 - 0x1FF

預設值:0

RX 側節流(以微秒為單位)。介面卡將最大中斷延遲設定為此值。最小中斷延遲將為此值的一半

注意

ITR 設定可以在執行時透過 ethtool -c 方式更改(見下文)

配置檔案引數

對於某些微調和效能最佳化,可以在 {source_dir}/aq_cfg.h 檔案中更改某些引數。

AQ_CFG_RX_PAGEORDER

預設值:0

RX 頁面順序覆蓋。這是為每個描述符分配的 RX 頁面的 2 的冪數。接收到的描述符大小仍然受 AQ_CFG_RX_FRAME_MAX 限制。

增加 pageorder 可以更好地重複使用頁面(在啟用 iommu 的系統上實際存在)。

AQ_CFG_RX_REFILL_THRES

預設值:32

RX 重新填充閾值。RX 路徑將不會重新填充已釋放的描述符,直到觀察到指定數量的空閒描述符。較大的值可能有助於更好地重複使用頁面,但也可能導致資料包丟失。

AQ_CFG_VECS_DEF

佇列數

有效範圍:0 - 8(最高 AQ_CFG_VECS_MAX)

預設值:8

請注意,此值將受到系統上可用核心數量的限制。

AQ_CFG_IS_RSS_DEF

啟用/停用接收端縮放

此功能允許介面卡跨多個 CPU 核心分配接收處理,並防止單個 CPU 核心過載。

有效值

0

disabled

1

enabled

預設值:1

AQ_CFG_NUM_RSS_QUEUES_DEF

接收端縮放的佇列數

有效範圍:0 - 8(最高 AQ_CFG_VECS_DEF)

預設值:AQ_CFG_VECS_DEF

AQ_CFG_IS_LRO_DEF

啟用/停用大型接收解除安裝

此解除安裝使介面卡能夠合併多個 TCP 段,並將它們作為單個合併單元指示給 OS 網路子系統。

系統消耗的能量更少,但也會在資料包處理中引入更多延遲。

有效值

0

disabled

1

enabled

預設值:1

AQ_CFG_TX_CLEAN_BUDGET

一次在 TX 上清理的最大描述符數。

預設值:256

在更改 aq_cfg.h 檔案後,必須重新構建驅動程式才能生效。

支援

如果在使用受支援的介面卡在受支援的核心上釋出的原始碼中發現問題,請將與問題相關的具體資訊透過電子郵件傳送至 aqn_support@marvell.com

許可證

aQuantia Corporation 網路驅動程式

版權所有 © 2014 - 2019 aQuantia Corporation。

本程式是自由軟體;您可以根據自由軟體基金會發布的 GNU 通用公共許可證第 2 版的條款和條件重新分發和/或修改它。