Marvell(Aquantia) AQtion 驅動程式¶
適用於 aQuantia 多千兆位 PCI Express 乙太網介面卡系列
識別您的介面卡¶
此版本中的驅動程式與基於 AQC-100、AQC-107、AQC-108 的乙太網介面卡相容。
SFP+ 裝置(適用於基於 AQC-100 的介面卡)¶
此版本已使用無源直連電纜 (DAC) 和 SFP+/LC 光收發器進行測試。
配置¶
檢視連結訊息¶
如果發行版限制系統訊息,則連結訊息將不會顯示在控制檯上。為了在控制檯上看到網路驅動程式連結訊息,請透過輸入以下內容將 dmesg 設定為 8
dmesg -n 8注意
此設定不會跨重啟儲存。
巨型幀¶
該驅動程式支援所有介面卡的巨型幀。透過將 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 過濾器)¶
支援單獨的規則,這些規則按該順序應用
16 個 VLAN ID 規則
16 個 L2 EtherType 規則
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 36IPv4 過濾器流量的示例過濾器
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 0L2 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 onDMASystemLoopback: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 版的條款和條件重新分發和/或修改它。