| Bandwidth | Chipset | Example
| 1Gb/sec | Intel I350 | Intel 4x1GE 350-T4 NIC
| 10Gb/sec | Intel 82599 | Intel x520-D2 Cisco Order tool 2X Intel N2XX-AIPCI01, Intel X520 Dual Port 10Gb SFP+ Adapter
-| 40Gb/sec | Intel XL710 | QSFP+
+| 40Gb/sec | Intel XL710 Intel X710 | QSFP+, SFP+
| VMXNET | VMware paravirtualize | connect using vmWare vSwitch
| E1000 | paravirtualize | vmWare/KVM/VirtualBox
|=================
* NUMAs-CPUs relation is determined with following command: lscpu
* See real example of NUMA usage xref:numa-example[here]
* Using Intel XL710 with Fedora 18 requires updating Kernel.
-* For Intel XL710 NICs need to verify the FW is v4.42 or v4.53:
+* For Intel XL710 NICs there is a need to verify the FW is v4.42 or v4.53 see xref:xl710-firmware[here] for more info
** > sudo ./t-rex-64 -f cap2/dns.yaml -d 0 --no-flow-control *-v 6* --nc | grep FW
-** PMD: *FW 4.22* API 1.2 NVM 04.02.04 eetrack 800013fc
-** PMD: *FW 4.22* API 1.2 NVM 04.02.04 eetrack 800013fc
-** PMD: *FW 4.22* API 1.2 NVM 04.02.04 eetrack 800013fc
-** PMD: *FW 4.22* API 1.2 NVM 04.02.04 eetrack 800013fc
+** PMD: FW 4.22 API 1.2 NVM *04.04.02* eetrack 800013fc
+** PMD: FW 4.22 API 1.2 NVM *04.04.02* eetrack 800013fc
+** PMD: FW 4.22 API 1.2 NVM *04.04.02* eetrack 800013fc
+** PMD: FW 4.22 API 1.2 NVM *04.04.02* eetrack 800013fc
<1> the memory usage of the templates
<2> CSV for all the templates
+
+=== firmware update to XL710/X710 anchor:xl710-firmware[]
+
+To upgrade the firmware follow this
+
+==== Download the driver
+
+*Download driver i40e from link:https://downloadcenter.intel.com/download/24411/Network-Adapter-Driver-for-PCI-E-40-Gigabit-Network-Connections-under-Linux-[here]
+*Build the kernel module
+
+[source,bash]
+----
+$tar -xvzf i40e-1.3.47
+$cd i40e-1.3.47/src
+$make
+$sudo insmod i40e.ko
+----
+
+
+==== Bind the NIC to Linux
+
+In this stage we bind the NIC to Linux (take it from DPDK)
+
+[source,bash]
+----
+$sudo ./dpdk_nic_bind.py --status # show the ports
+
+Network devices using DPDK-compatible driver
+============================================
+0000:02:00.0 'Device 1583' drv=igb_uio unused= #<1>
+0000:02:00.1 'Device 1583' drv=igb_uio unused= #<2>
+0000:87:00.0 'Device 1583' drv=igb_uio unused=
+0000:87:00.1 'Device 1583' drv=igb_uio unused=
+
+$sudo dpdk_nic_bind.py -u 02:00.0 02:00.1 #<3>
+
+$sudo dpdk_nic_bind.py -b i40e 02:00.0 02:00.1 #<4>
+
+$ethtool -i p1p2 #<5>
+
+driver: i40e
+version: 1.3.47
+firmware-version: 4.24 0x800013fc 0.0.0 #<6>
+bus-info: 0000:02:00.1
+supports-statistics: yes
+supports-test: yes
+supports-eeprom-access: yes
+supports-register-dump: yes
+supports-priv-flags: yes
+
+
+$ethtool -S p1p2
+$lspci -s 02:00.0 -vvv #<7>
+
+
+----
+<1> XL710 ports that need to unbind from DPDK
+<2> XL710 ports that need to unbind from DPDK
+<3> Unbind from DPDK using this command
+<4> Bind to linux to i40e driver
+<5> Show firmware version throw linux driver
+<6> Firmare version
+<7> More info
+
+
+==== Upgrade
+
+Download NVMUpdatePackage.zip from Intel site link:http://downloadcenter.intel.com/download/24769/NVM-Update-Utility-for-Intel-Ethernet-Converged-Network-Adapter-XL710-X710-Series[here]
+It includes the utility `nvmupdate64e`
+
+Run this:
+
+[source,bash]
+----
+$sudo ./nvmupdate64e
+----
+
+You might need a power cycle and to run this command a few times to get the latest firmware
+
+
=== Measure Jitter/Latency
-To measure jitter/latency on high priorty packets (one SCTP or ICMP flow), use `-l [Hz]` where Hz defines the number of packets to send from each port per second. This option measures latency and jitter. We can define the type of traffic used for the latency measurement using the --l-pkt-mode option. The default it to use SCTP packets. We can change this to use ICMP echo request packets by specifying --l-pkt-mode 1. Can send ICMP requests from one side, and matching ICMP responses from other side, by specifying --l-pkt-mode 2. This is particulary usefull if your DUT drops traffic from outside, and you need to open pin hole to get the outside traffic in (for example when testing a firewall). There is another mode (--l-pkt-mode 3) which send ICMP request packets with a constant 0 sequence number.
+To measure jitter/latency on high priorty packets (one SCTP or ICMP flow), use `-l [Hz]` where Hz defines the number of packets to send from each port per second.
+This option measures latency and jitter. We can define the type of traffic used for the latency measurement using the `--l-pkt-mode` option.
+
+
+[options="header",cols="^1,10a"]
+|=================
+| Option ID| Type
+| 0 |
+*default*, SCTP packets
+| 1 |
+ICMP echo request packets from both sides
+| 2 |
+*Stateful*, send ICMP requests from one side, and matching ICMP responses from other side.
+
+This is particulary usefull if your DUT drops traffic from outside, and you need to open pin hole to get the outside traffic in (for example when testing a firewall)
+
+| 3 |
+send ICMP request packets with a constant 0 sequence number.
+|=================
+
The shell output is similar to the following: