Developer Guide Release

Updating Firmware on 10GbE NIC
This topic describes the how to update the firmware of 10GbE Aquantia Network Interface Controller(NIC) used in the DRIVE Development Platform(DDP).
Aquantia NIC firmware can be updated with tools which included in PDK package.
When Aquantia driver version and firmware version are not matched, NIC may have unexpected issues.
The DDP for Xavier B01 has two AQC107 (J20, J59) devices that can be configured by PCIe switch.
Each Xavier A and Xavier B has a direct connection to one AQC107 (J15 for Xavier A and J8 for Xavier B) device.
Here is diagram showing the architecture:
To update Aquantia NIC Firmware
enP2p1s0 is AQC100 and enpXs0 is AQC107.
Use the following steps to update the firmware:
1. Verify Aquantia driver and firmware version:
On Linux
ethtool -i <network device>
Example of AQC107 on Xavier A:
On Linux
$ethtool -i enp5s0
driver: atlantic
firmware-version: 3.1.22
bus-info: 0000:05:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no
2. Find AQC NIC devices and verify domain including Bus,Device:Function and also type.
Chip Identification for Single Ended Phy F/W
The Xavier design supports up to four AQC107 chips. There are two types of media -
10G-BaseT and Single Ended Star Quad types of cables supported. The MAC portion of the F/W
is identical. The Phy portion requires different .clx images that must be burned into the
corresponding flashes. We propose the following way to distinguish these devices in order to
ensure that correct FW is burned into the flash for the appropriate device.
Aquantia's proposal is to use different sub-device IDs for different types of devices.
For the device with the 10G-BaseT type media ("standard") FW the 4 PartID will be (in hex):
Vendor ID: 1d6a
Device ID: 07b1
Sub-vendor ID: 10de
Sub-device ID: 0001
Plus some existing boards have AQC100 device and should have the following IDs:
Vendor ID: 1d6a
Device ID: 00b1
Sub-vendor ID: 10de
Sub-device ID: 0003
On Linux
lspci -vv
Example of AQC107 media - 10G-BaseT type:
On Linux
0000:05:00.0 Ethernet controller: Device 1d6a:07b1 (rev 02)
Subsystem: NVIDIA Corporation Device 0001
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 32
Region 0: Memory at 38240000 (64-bit, non-prefetchable) [size=64K]
Region 2: Memory at 38250000 (64-bit, non-prefetchable) [size=4K]
Region 4: Memory at 38400000 (64-bit, non-prefetchable) [size=4M]
[virtual] Expansion ROM at 38200000 [disabled] [size=256K]
Capabilities: <access denied>
Kernel driver in use: atlantic
3. Flash firmware with flashBurn tool.
The flashBurn tool will also erase MAC address. You can flash(or revive) it with flashOverride tool in next step.
You can use the flashUpdate tool instead of the flashBurn tool. The flashUpdate tool will not erase MAC address. However this tool only works when firmware already exists in the NIC.
On Linux
./flashBurn -d <DEVICE_ID> <CLX_IMAGE> -h
-d <DEVICE_ID> : PCI device in PCIe B:D.F notation (B-bus number, D-device number, F-function number).
<CLX_IMAGE>: The CLX image file to use for upgrade.
-h, --help: Print usage information and exit.
To get the PCI device ID, run lspci command and find the Aquantia NIC.
Example of usage:
On Linux
$ lspci
0000:05:00.0 Ethernet controller: Device 1d6a:07b1 (rev 02) <---------------------------Aquantia
0000:07:00.0 Ethernet controller: Device 1d6a:07b1 (rev 02) <---------------------------Aquantia
PCI Device ID in this case is 05:00.0 for the first NIC and 07:00.0 for the second NIC
Example of usage:
On Linux
sudo LD_LIBRARY_PATH=/usr/local/lib flashUpdate -d 05:00.0 /lib/firmware/aquantia/aqc107/AQC107-Nvidia-std-3.1.22_bdp_id.clx
sudo LD_LIBRARY_PATH=/usr/local/lib flashUpdate -d 07:00.0 /lib/firmware/aquantia/aqc107/AQC107-Nvidia-std-3.1.22_bdp_id.clx
In Linux, the LD_LIBRARY_PATH environment variable must point to the directory where libatlpci.so is located.
4. Flash MAC address with flashOverride utility.
MAC address can be found on backside of board.
You can skip this step when using flashUpdate tool. This step is needed only when MAC address is erased by flashBurn tool or device firmware is empty.
On Linux
flashOverride -d <DEVICE_ID> [-i <IDs>] [-m <MAC>]
-d <DEVICE_ID>: PCI device in PCIe B:D.F notation (B-bus number, D-device number, F-function number).
-i <IDs>: New IDs in format DID:SUBVID:SUBDID or SUBVID:SUBDID (in hex). Example: -i d100:2354:32AA
-m <MAC>: new mac address in format xx:xx:xx:xx:xx:xx
-h --help: Print usage information and exit.
Example of usage:
On Linux
LD_LIBRARY_PATH=/usr/local/lib flashOverride -d 05:00.0 -m 00:17:b6:00:00:01
5. Reboot board from AURIX console with the following comamnds: