1 Marvell(Aquantia) AQtion Driver for the aQuantia Multi-Gigabit PCI Express
2 Family of Ethernet Adapters
3 =============================================================================
8 - Identifying Your Adapter
10 - Supported ethtool options
11 - Command Line Parameters
12 - Config file parameters
16 Identifying Your Adapter
17 ========================
19 The driver in this release is compatible with AQC-100, AQC-107, AQC-108 based ethernet adapters.
22 SFP+ Devices (for AQC-100 based adapters)
23 ----------------------------------
25 This release tested with passive Direct Attach Cables (DAC) and SFP+/LC Optical Transceiver.
28 =========================
31 Link messages will not be displayed to the console if the distribution is
32 restricting system messages. In order to see network driver link messages on
33 your console, set dmesg to eight by entering the following:
37 NOTE: This setting is not saved across reboots.
41 The driver supports Jumbo Frames for all adapters. Jumbo Frames support is
42 enabled by changing the MTU to a value larger than the default of 1500.
43 The maximum value for the MTU is 16000. Use the `ip` command to
44 increase the MTU size. For example:
46 ip link set mtu 16000 dev enp1s0
50 The driver utilizes the ethtool interface for driver configuration and
51 diagnostics, as well as displaying statistical information. The latest
52 ethtool version is required for this functionality.
56 NAPI (Rx polling mode) is supported in the atlantic driver.
58 Supported ethtool options
59 ============================
60 Viewing adapter settings
67 Supported ports: [ TP ]
68 Supported link modes: 100baseT/Full
73 Supported pause frame use: Symmetric
74 Supports auto-negotiation: Yes
75 Supported FEC modes: Not reported
76 Advertised link modes: 100baseT/Full
81 Advertised pause frame use: Symmetric
82 Advertised auto-negotiation: Yes
83 Advertised FEC modes: Not reported
96 Note: AQrate speeds (2.5/5 Gb/s) will be displayed only with linux kernels > 4.10.
97 But you can still use these speeds:
98 ethtool -s eth0 autoneg off speed 2500
100 Viewing adapter information
101 ---------------------
107 version: 5.2.0-050200rc5-generic-kern
108 firmware-version: 3.1.78
109 expansion-rom-version:
110 bus-info: 0000:01:00.0
111 supports-statistics: yes
113 supports-eeprom-access: no
114 supports-register-dump: yes
115 supports-priv-flags: no
118 Viewing Ethernet adapter statistics:
119 ---------------------
133 InUCastOctects: 213182760
134 OutUCastOctects: 22698443
136 OutMCastOctects: 8776
139 InOctects: 2131839552
140 OutOctects: 226938073
141 InPacketsDma: 95532300
142 OutPacketsDma: 59503397
143 InOctetsDma: 1137102462
144 OutOctetsDma: 2394339518
146 Queue[0] InPackets: 23567131
147 Queue[0] OutPackets: 20070028
148 Queue[0] InJumboPackets: 0
149 Queue[0] InLroPackets: 0
151 Queue[1] InPackets: 45428967
152 Queue[1] OutPackets: 11306178
153 Queue[1] InJumboPackets: 0
154 Queue[1] InLroPackets: 0
156 Queue[2] InPackets: 3187011
157 Queue[2] OutPackets: 13080381
158 Queue[2] InJumboPackets: 0
159 Queue[2] InLroPackets: 0
161 Queue[3] InPackets: 23349136
162 Queue[3] OutPackets: 15046810
163 Queue[3] InJumboPackets: 0
164 Queue[3] InLroPackets: 0
167 Interrupt coalescing support
168 ---------------------------------
169 ITR mode, TX/RX coalescing timings could be viewed with:
175 ethtool -C <ethX> tx-usecs <usecs> rx-usecs <usecs>
177 To disable coalescing:
179 ethtool -C <ethX> tx-usecs 0 rx-usecs 0 tx-max-frames 1 tx-max-frames 1
182 ---------------------------------
184 WOL support by magic packet:
186 ethtool -s <ethX> wol g
190 ethtool -s <ethX> wol d
192 Set and check the driver message level
193 ---------------------------------
197 ethtool -s <ethX> msglvl <level>
201 0x0001 - general driver status.
202 0x0002 - hardware probing.
204 0x0008 - periodic status check.
205 0x0010 - interface being brought down.
206 0x0020 - interface being brought up.
207 0x0040 - receive error.
208 0x0080 - transmit error.
209 0x0200 - interrupt handling.
210 0x0400 - transmit completion.
211 0x0800 - receive completion.
212 0x1000 - packet contents.
213 0x2000 - hardware status.
214 0x4000 - Wake-on-LAN status.
216 By default, the level of debugging messages is set 0x0001(general driver status).
220 ethtool <ethX> | grep "Current message level"
222 If you want to disable the output of messages
224 ethtool -s <ethX> msglvl 0
226 RX flow rules (ntuple filters)
227 ---------------------------------
228 There are separate rules supported, that applies in that order:
230 2. 16 L2 EtherType rules
231 3. 8 L3/L4 5-Tuple rules
234 The driver utilizes the ethtool interface for configuring ntuple filters,
235 via "ethtool -N <device> <filter>".
237 To enable or disable the RX flow rules:
239 ethtool -K ethX ntuple <on|off>
241 When disabling ntuple filters, all the user programed filters are
242 flushed from the driver cache and hardware. All needed filters must
243 be re-added when ntuple is re-enabled.
245 Because of the fixed order of the rules, the location of filters is also fixed:
246 - Locations 0 - 15 for VLAN ID filters
247 - Locations 16 - 31 for L2 EtherType filters
248 - Locations 32 - 39 for L3/L4 5-tuple filters (locations 32, 36 for IPv6)
250 The L3/L4 5-tuple (protocol, source and destination IP address, source and
251 destination TCP/UDP/SCTP port) is compared against 8 filters. For IPv4, up to
252 8 source and destination addresses can be matched. For IPv6, up to 2 pairs of
253 addresses can be supported. Source and destination ports are only compared for
254 TCP/UDP/SCTP packets.
256 To add a filter that directs packet to queue 5, use <-N|-U|--config-nfc|--config-ntuple> switch:
258 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>
260 - action is the queue number.
261 - loc is the rule number.
263 For "flow-type ip4|udp4|tcp4|sctp4|ip6|udp6|tcp6|sctp6" you must set the loc
264 number within 32 - 39.
265 For "flow-type ip4|udp4|tcp4|sctp4|ip6|udp6|tcp6|sctp6" you can set 8 rules
266 for traffic IPv4 or you can set 2 rules for traffic IPv6. Loc number traffic
268 At the moment you can not use IPv4 and IPv6 filters at the same time.
270 Example filter for IPv6 filter traffic:
272 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
273 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
275 Example filter for IPv4 filter traffic:
277 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
278 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
279 sudo ethtool -N <ethX> flow-type ip4 src-ip 10.0.0.6 dst-ip 10.0.0.4 loc 34
281 If you set action -1, then all traffic corresponding to the filter will be discarded.
282 The maximum value action is 31.
285 The VLAN filter (VLAN id) is compared against 16 filters.
286 VLAN id must be accompanied by mask 0xF000. That is to distinguish VLAN filter
287 from L2 Ethertype filter with UserPriority since both User Priority and VLAN ID
288 are passed in the same 'vlan' parameter.
290 To add a filter that directs packets from VLAN 2001 to queue 5:
291 ethtool -N <ethX> flow-type ip4 vlan 2001 m 0xF000 action 1 loc 0
294 L2 EtherType filters allows filter packet by EtherType field or both EtherType
295 and User Priority (PCP) field of 802.1Q.
296 UserPriority (vlan) parameter must be accompanied by mask 0x1FFF. That is to
297 distinguish VLAN filter from L2 Ethertype filter with UserPriority since both
298 User Priority and VLAN ID are passed in the same 'vlan' parameter.
300 To add a filter that directs IP4 packess of priority 3 to queue 3:
301 ethtool -N <ethX> flow-type ether proto 0x800 vlan 0x600 m 0x1FFF action 3 loc 16
304 To see the list of filters currently present:
306 ethtool <-u|-n|--show-nfc|--show-ntuple> <ethX>
308 Rules may be deleted from the table itself. This is done using:
310 sudo ethtool <-N|-U|--config-nfc|--config-ntuple> <ethX> delete <loc>
312 - loc is the rule number to be deleted.
314 Rx filters is an interface to load the filter table that funnels all flow
315 into queue 0 unless an alternative queue is specified using "action". In that
316 case, any flow that matches the filter criteria will be directed to the
317 appropriate queue. RX filters is supported on all kernels 2.6.30 and later.
320 ---------------------------------
321 Currently, NIC does not support RSS for fragmented IP packets, which leads to
322 incorrect working of RSS for fragmented UDP traffic. To disable RSS for UDP the
323 RX Flow L3/L4 rule may be used.
326 ethtool -N eth0 flow-type udp4 action 0 loc 32
328 UDP GSO hardware offload
329 ---------------------------------
330 UDP GSO allows to boost UDP tx rates by offloading UDP headers allocation
331 into hardware. A special userspace socket option is required for this,
332 could be validated with /kernel/tools/testing/selftests/net/
334 udpgso_bench_tx -u -4 -D 10.0.1.1 -s 6300 -S 100
336 Will cause sending out of 100 byte sized UDP packets formed from single
337 6300 bytes user buffer.
339 UDP GSO is configured by:
341 ethtool -K eth0 tx-udp-segmentation on
343 Private flags (testing)
344 ---------------------------------
346 Atlantic driver supports private flags for hardware custom features:
348 $ ethtool --show-priv-flags ethX
350 Private flags for ethX:
351 DMASystemLoopback : off
352 PKTSystemLoopback : off
353 DMANetworkLoopback : off
354 PHYInternalLoopback: off
355 PHYExternalLoopback: off
359 $ ethtool --set-priv-flags ethX DMASystemLoopback on
361 DMASystemLoopback: DMA Host loopback.
362 PKTSystemLoopback: Packet buffer host loopback.
363 DMANetworkLoopback: Network side loopback on DMA block.
364 PHYInternalLoopback: Internal loopback on Phy.
365 PHYExternalLoopback: External loopback on Phy (with loopback ethernet cable).
368 Command Line Parameters
369 =======================
370 The following command line parameters are available on atlantic driver:
372 aq_itr -Interrupt throttling mode
373 ----------------------------------------
374 Accepted values: 0, 1, 0xFFFF
375 Default value: 0xFFFF
376 0 - Disable interrupt throttling.
377 1 - Enable interrupt throttling and use specified tx and rx rates.
378 0xFFFF - Auto throttling mode. Driver will choose the best RX and TX
379 interrupt throtting settings based on link speed.
381 aq_itr_tx - TX interrupt throttle rate
382 ----------------------------------------
383 Accepted values: 0 - 0x1FF
385 TX side throttling in microseconds. Adapter will setup maximum interrupt delay
386 to this value. Minimum interrupt delay will be a half of this value
388 aq_itr_rx - RX interrupt throttle rate
389 ----------------------------------------
390 Accepted values: 0 - 0x1FF
392 RX side throttling in microseconds. Adapter will setup maximum interrupt delay
393 to this value. Minimum interrupt delay will be a half of this value
395 Note: ITR settings could be changed in runtime by ethtool -c means (see below)
397 Config file parameters
398 =======================
399 For some fine tuning and performance optimizations,
400 some parameters can be changed in the {source_dir}/aq_cfg.h file.
403 ----------------------------------------
405 RX page order override. Thats a power of 2 number of RX pages allocated for
406 each descriptor. Received descriptor size is still limited by AQ_CFG_RX_FRAME_MAX.
407 Increasing pageorder makes page reuse better (actual on iommu enabled systems).
409 AQ_CFG_RX_REFILL_THRES
410 ----------------------------------------
412 RX refill threshold. RX path will not refill freed descriptors until the
413 specified number of free descriptors is observed. Larger values may help
414 better page reuse but may lead to packet drops as well.
417 ------------------------------------------------------------
419 Valid Range: 0 - 8 (up to AQ_CFG_VECS_MAX)
421 Notice this value will be capped by the number of cores available on the system.
424 ------------------------------------------------------------
425 Enable/disable Receive Side Scaling
427 This feature allows the adapter to distribute receive processing
428 across multiple CPU-cores and to prevent from overloading a single CPU core.
436 AQ_CFG_NUM_RSS_QUEUES_DEF
437 ------------------------------------------------------------
438 Number of queues for Receive Side Scaling
439 Valid Range: 0 - 8 (up to AQ_CFG_VECS_DEF)
441 Default value: AQ_CFG_VECS_DEF
444 ------------------------------------------------------------
445 Enable/disable Large Receive Offload
447 This offload enables the adapter to coalesce multiple TCP segments and indicate
448 them as a single coalesced unit to the OS networking subsystem.
449 The system consumes less energy but it also introduces more latency in packets processing.
457 AQ_CFG_TX_CLEAN_BUDGET
458 ----------------------------------------
459 Maximum descriptors to cleanup on TX at once.
462 After the aq_cfg.h file changed the driver must be rebuilt to take effect.
467 If an issue is identified with the released source code on the supported
468 kernel with a supported adapter, email the specific information related
469 to the issue to aqn_support@marvell.com
474 aQuantia Corporation Network Driver
475 Copyright(c) 2014 - 2019 aQuantia Corporation.
477 This program is free software; you can redistribute it and/or modify it
478 under the terms and conditions of the GNU General Public License,
479 version 2, as published by the Free Software Foundation.