+| | ... | *Set UP state on VPP interfaces in path on specified DUT node and
+| | ... | set maximal MTU.*
+| |
+| | ... | *Arguments:*
+| | ... | - dut - DUT node on which to set the interfaces up.
+| | ... | Type: string
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Set interfaces in path up on node \| DUT1 \|
+| |
+| | [Arguments] | ${dut}
+| |
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | Set interfaces in path up on node on PF | ${dut} | ${pf}
+| | END
+
+| Set interfaces in path up on node on PF
+| | [Documentation]
+| | ... | *Set UP state on VPP interfaces in path on specified DUT node and
+| | ... | set maximal MTU.*
+| |
+| | ... | *Arguments:*
+| | ... | - dut - DUT node on which to set the interfaces up.
+| | ... | Type: string
+| | ... | - pf - NIC physical function (physical port).
+| | ... | Type: integer
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Set interfaces in path up on node on PF \| DUT1 \| 1 \|
+| |
+| | [Arguments] | ${dut} | ${pf}
+| |
+| | ${_chains} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | @{${dut}_${int}${pf}_1}
+| | ${_id}= | Set Variable If | '${_chains}' == 'PASS' | _1 | ${EMPTY}
+| | FOR | ${if} | IN | @{${dut}_${int}${pf}${_id}}
+| | | Set Interface State | ${nodes['${dut}']} | ${if} | up
+| | | VPP Set Interface MTU | ${nodes['${dut}']} | ${if}
+| | END
+
+| Pre-initialize layer driver
+| | [Documentation]
+| | ... | Pre-initialize driver based interfaces on each DUT.
+| |
+| | ... | *Arguments:*
+| | ... | - driver - NIC driver used in test [vfio-pci|avf|rdma-core].
+| | ... | Type: string
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Pre-initialize layer driver \| vfio-pci \|
+| |
+| | [Arguments] | ${driver}
+| |
+| | Run Keyword | Pre-initialize layer ${driver} on all DUTs
+
+| Pre-initialize layer tap on all DUTs
+| | [Documentation]
+| | ... | Pre-initialize tap driver. Currently no operation.
+| |
+| | No operation
+
+| Pre-initialize layer vhost on all DUTs
+| | [Documentation]
+| | ... | Pre-initialize vhost driver. Currently no operation.
+| |
+| | No operation
+
+| Pre-initialize layer vfio-pci on all DUTs
+| | [Documentation]
+| | ... | Pre-initialize vfio-pci driver by adding related sections to startup
+| | ... | config on all DUTs.
+| |
+| | ${index}= | Get Index From List | ${TEST TAGS} | DPDK
+| | Run Keyword If | ${index} >= 0 | Return From Keyword
+| | FOR | ${dut} | IN | @{duts}
+| | | Stop VPP Service | ${nodes['${dut}']}
+| | | Unbind PCI Devices From Other Driver | ${nodes['${dut}']} | vfio-pci |
+| | | ... | @{${dut}_pf_pci}
+| | | Run keyword | ${dut}.Add DPDK Dev | @{${dut}_pf_pci}
+| | | Run Keyword If | ${dpdk_no_tx_checksum_offload}
+| | | ... | ${dut}.Add DPDK No Tx Checksum Offload
+| | | Run Keyword | ${dut}.Add DPDK Log Level | debug
+| | | Run Keyword | ${dut}.Add DPDK Uio Driver | vfio-pci
+| | | Run Keyword | ${dut}.Add DPDK Dev Default RXQ | ${rxq_count_int}
+| | | Run Keyword If | not ${jumbo}
+| | | ... | ${dut}.Add DPDK No Multi Seg
+| | | Run Keyword If | ${nic_rxq_size} > 0
+| | | ... | ${dut}.Add DPDK Dev Default RXD | ${nic_rxq_size}
+| | | Run Keyword If | ${nic_txq_size} > 0
+| | | ... | ${dut}.Add DPDK Dev Default TXD | ${nic_txq_size}
+| | | Run Keyword If | '${crypto_type}' != '${None}'
+| | | ... | ${dut}.Add DPDK Cryptodev | ${dp_count_int}
+| | | Run Keyword | ${dut}.Add DPDK Max Simd Bitwidth | ${GRAPH_NODE_VARIANT}
+| | END
+
+| Pre-initialize layer avf on all DUTs
+| | [Documentation]
+| | ... | Pre-initialize avf driver. Currently no operation.
+| |
+| | No operation
+
+| Pre-initialize layer af_xdp on all DUTs
+| | [Documentation]
+| | ... | Pre-initialize af_xdp driver.
+| |
+| | FOR | ${dut} | IN | @{duts}
+| | | Set Interface State PCI
+| | | ... | ${nodes['${dut}']} | ${${dut}_pf_pci} | state=up
+| | | Set Interface Channels
+| | | ... | ${nodes['${dut}']} | ${${dut}_pf_pci} | num_queues=${rxq_count_int}
+| | | ... | channel=combined
+| | END
+
+| Pre-initialize layer rdma-core on all DUTs
+| | [Documentation]
+| | ... | Pre-initialize rdma-core driver.
+| |
+| | FOR | ${dut} | IN | @{duts}
+| | | Run Keyword If | ${jumbo}
+| | | ... | Set Interface MTU | ${nodes['${dut}']} | ${${dut}_pf_pci} | mtu=9200
+| | | ... | ELSE
+| | | ... | Set Interface MTU | ${nodes['${dut}']} | ${${dut}_pf_pci} | mtu=1518
+| | FOR | ${dut} | IN | @{duts}
+| | | Set Interface Flow Control
+| | | ... | ${nodes['${dut}']} | ${${dut}_pf_pci} | rxf="off" | txf="off"
+| | END
+
+| Pre-initialize layer mlx5_core on all DUTs
+| | [Documentation]
+| | ... | Pre-initialize mlx5_core driver.
+| |
+| | FOR | ${dut} | IN | @{duts}
+| | | Run Keyword If | ${jumbo}
+| | | ... | Set Interface MTU | ${nodes['${dut}']} | ${${dut}_pf_pci} | mtu=9200
+| | | ... | ELSE
+| | | ... | Set Interface MTU | ${nodes['${dut}']} | ${${dut}_pf_pci} | mtu=1518
+| | | Set Interface Flow Control
+| | | ... | ${nodes['${dut}']} | ${${dut}_pf_pci} | rxf="off" | txf="off"
+| | END
+
+| Initialize layer driver
+| | [Documentation]
+| | ... | Initialize driver based interfaces on all DUT. Interfaces are
+| | ... | brought up.
+| |
+| | ... | *Arguments:*
+| | ... | - driver - NIC driver used in test [vfio-pci|avf|rdma-core].
+| | ... | Type: string
+| | ... | - validate - Validate interfaces are up.
+| | ... | Type: boolean
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Initialize layer driver \| vfio-pci \|
+| |
+| | [Arguments] | ${driver} | ${validate}=${True}
+| |
+| | FOR | ${dut} | IN | @{duts}
+| | | Initialize layer driver on node | ${dut} | ${driver}
+| | END
+| | Set Test Variable | ${int} | vf
+| | Set interfaces in path up | validate=${validate}
+
+| Initialize layer driver on node
+| | [Documentation]
+| | ... | Initialize driver based interfaces on DUT.
+| |
+| | ... | *Arguments:*
+| | ... | - dut - DUT node.
+| | ... | Type: string
+| | ... | - driver - NIC driver used in test [vfio-pci|avf|rdma-core].
+| | ... | Type: string
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Initialize layer driver \| DUT1 \| vfio-pci \|
+| |
+| | [Arguments] | ${dut} | ${driver}
+| |
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | ${_vf}=
+| | | ... | Copy List | ${${dut}_${int}${pf}}
+| | | ${_ip4_addr}=
+| | | ... | Copy List | ${${dut}_${int}${pf}_ip4_addr}
+| | | ${_ip4_prefix}=
+| | | ... | Copy List | ${${dut}_${int}${pf}_ip4_prefix}
+| | | ${_mac}=
+| | | ... | Copy List | ${${dut}_${int}${pf}_mac}
+| | | ${_pci}=
+| | | ... | Copy List | ${${dut}_${int}${pf}_pci}
+| | | ${_vlan}=
+| | | ... | Copy List | ${${dut}_${int}${pf}_vlan}
+| | | Set Test Variable
+| | | ... | ${${dut}_vf${pf}} | ${_vf}
+| | | Set Test Variable
+| | | ... | ${${dut}_vf${pf}_ip4_addr} | ${_ip4_addr}
+| | | Set Suite Variable
+| | | ... | ${${dut}_vf${pf}_ip4_prefix} | ${_ip4_prefix}
+| | | Set Test Variable
+| | | ... | ${${dut}_vf${pf}_mac} | ${_mac}
+| | | Set Test Variable
+| | | ... | ${${dut}_vf${pf}_pci} | ${_pci}
+| | | Set Test Variable
+| | | ... | ${${dut}_vf${pf}_vlan} | ${_vlan}
+| | | Run Keyword | Initialize layer ${driver} on node | ${dut} | ${pf}
+| | END
+
+| Initialize layer tap on node
+| | [Documentation]
+| | ... | Initialize tap interfaces on DUT.
+| |
+| | ... | *Arguments:*
+| | ... | - dut - DUT node.
+| | ... | Type: string
+| | ... | - pf - TAP ID (logical port).
+| | ... | Type: integer
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Initialize layer tap on node \| DUT1 \| 0 \|
+| |
+| | [Arguments] | ${dut} | ${pf}
+| |
+| | Create Namespace
+| | ... | ${nodes['${dut}']} | tap${${pf}-1}_namespace
+| | ${tap_feature_mask}= | Create Tap feature mask | gso=${enable_gso}
+| | ${_tap}=
+| | ... | And Add Tap Interface | ${nodes['${dut}']} | tap${${pf}-1}
+| | ... | host_namespace=tap${${pf}-1}_namespace
+| | ... | num_rx_queues=${rxq_count_int}
+| | ... | rxq_size=${nic_rxq_size} | txq_size=${nic_txq_size}
+| | ... | tap_feature_mask=${tap_feature_mask}
+| | ${_mac}=
+| | ... | Get Interface MAC | ${nodes['${dut}']} | tap${pf}
+| | ${_tap}= | Create List | ${_tap}
+| | ${_mac}= | Create List | ${_mac}
+| | Vhost User Affinity
+| | ... | ${nodes['${dut}']} | ${${dut}_pf${pf}}[0]
+| | ... | skip_cnt=${${CPU_CNT_MAIN}+${CPU_CNT_SYSTEM}+${cpu_count_int}}
+| | Set Test Variable
+| | ... | ${${dut}_vf${pf}} | ${_tap}
+| | Set Test Variable
+| | ... | ${${dut}_vf${pf}_mac} | ${_mac}
+
+| Initialize layer vhost on node
+| | [Documentation]
+| | ... | Initialize vhost interfaces on DUT.
+| |
+| | ... | *Arguments:*
+| | ... | - dut - DUT node.
+| | ... | Type: string
+| | ... | - pf - VHOST ID (logical port).
+| | ... | Type: integer
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Initialize layer vhost on node \| DUT1 \| 0 \|
+| |
+| | [Arguments] | ${dut} | ${pf}
+| |
+| | ${virtio_feature_mask}= | Create Virtio feature mask | gso=${enable_gso}
+| | ${vhost}= | Vpp Create Vhost User Interface
+| | ... | ${nodes['${dut}']} | /var/run/vpp/sock-${pf}-1
+| | ... | is_server=${True} | virtio_feature_mask=${virtio_feature_mask}
+| | ${_mac}=
+| | ... | Get Interface MAC | ${nodes['${dut}']} | vhost${pf}
+| | ${_vhost}= | Create List | ${_vhost}
+| | ${_mac}= | Create List | ${_mac}
+| | Set Test Variable
+| | ... | ${${dut}_vf${pf}} | ${_vhost}
+| | Set Test Variable
+| | ... | ${${dut}_vf${pf}_mac} | ${_mac}
+
+| Initialize layer vfio-pci on node
+| | [Documentation]
+| | ... | Initialize vfio-pci interfaces on DUT on NIC PF.
+| | ... | Currently no operation.
+| |