15630257fSFerruh Yigit.. SPDX-License-Identifier: BSD-3-Clause 25630257fSFerruh Yigit Copyright(c) 2017 Intel Corporation. 3a83d9f26SWenzhuo Lu 4a83d9f26SWenzhuo LuVF daemon (VFd) 5a83d9f26SWenzhuo Lu=============== 6a83d9f26SWenzhuo Lu 7a83d9f26SWenzhuo LuVFd (the VF daemon) is a mechanism which can be used to configure features on 8a83d9f26SWenzhuo Lua VF (SR-IOV Virtual Function) without direct access to the PF (SR-IOV 9a83d9f26SWenzhuo LuPhysical Function). VFd is an *EXPERIMENTAL* feature which can only be used in 10a83d9f26SWenzhuo Luthe scenario of DPDK PF with a DPDK VF. If the PF port is driven by the Linux 11a83d9f26SWenzhuo Lukernel driver then the VFd feature will not work. Currently VFd is only 12a83d9f26SWenzhuo Lusupported by the ixgbe and i40e drivers. 13a83d9f26SWenzhuo Lu 14a83d9f26SWenzhuo LuIn general VF features cannot be configured directly by an end user 15a83d9f26SWenzhuo Luapplication since they are under the control of the PF. The normal approach to 16a83d9f26SWenzhuo Luconfiguring a feature on a VF is that an application would call the APIs 17a83d9f26SWenzhuo Luprovided by the VF driver. If the required feature cannot be configured by the 18a83d9f26SWenzhuo LuVF directly (the most common case) the VF sends a message to the PF through 19a83d9f26SWenzhuo Luthe mailbox on ixgbe and i40e. This means that the availability of the feature 20a83d9f26SWenzhuo Ludepends on whether the appropriate mailbox messages are defined. 21a83d9f26SWenzhuo Lu 22a83d9f26SWenzhuo LuDPDK leverages the mailbox interface defined by the Linux kernel driver so 23a83d9f26SWenzhuo Luthat compatibility with the kernel driver can be guaranteed. The downside of 24a83d9f26SWenzhuo Luthis approach is that the availability of messages supported by the kernel 25a83d9f26SWenzhuo Lubecome a limitation when the user wants to configure features on the VF. 26a83d9f26SWenzhuo Lu 27a83d9f26SWenzhuo LuVFd is a new method of controlling the features on a VF. The VF driver doesn't 28a83d9f26SWenzhuo Lutalk directly to the PF driver when configuring a feature on the VF. When a VF 29a83d9f26SWenzhuo Luapplication (i.e., an application using the VF ports) wants to enable a VF 30a83d9f26SWenzhuo Lufeature, it can send a message to the PF application (i.e., the application 31a83d9f26SWenzhuo Luusing the PF port, which can be the same as the VF application). The PF 32a83d9f26SWenzhuo Luapplication will configure the feature for the VF. Obviously, the PF 33a83d9f26SWenzhuo Luapplication can also configure the VF features without a request from the VF 34a83d9f26SWenzhuo Luapplication. 35a83d9f26SWenzhuo Lu 36a83d9f26SWenzhuo Lu.. _VF_daemon_overview: 37a83d9f26SWenzhuo Lu 38a83d9f26SWenzhuo Lu.. figure:: img/vf_daemon_overview.* 39a83d9f26SWenzhuo Lu 40a83d9f26SWenzhuo Lu VF daemon (VFd) Overview 41a83d9f26SWenzhuo Lu 42a83d9f26SWenzhuo LuCompared with the traditional approach the VFd moves the negotiation between 43a83d9f26SWenzhuo LuVF and PF from the driver level to application level. So the application 44a83d9f26SWenzhuo Lushould define how the negotiation between the VF and PF works, or even if the 45a83d9f26SWenzhuo Lucontrol should be limited to the PF. 46a83d9f26SWenzhuo Lu 47a83d9f26SWenzhuo LuIt is the application's responsibility to use VFd. Consider for example a KVM 48a83d9f26SWenzhuo Lumigration, the VF application may transfer from one VM to another. It is 49a83d9f26SWenzhuo Lurecommended in this case that the PF control the VF features without 50a83d9f26SWenzhuo Luparticipation from the VF. Then the VF application has no capability to 51a83d9f26SWenzhuo Luconfigure the features. So the user doesn't need to define the interface 52a83d9f26SWenzhuo Lubetween the VF application and the PF application. The service provider should 53a83d9f26SWenzhuo Lutake the control of all the features. 54a83d9f26SWenzhuo Lu 55a83d9f26SWenzhuo LuThe following sections describe the VFd functionality. 56a83d9f26SWenzhuo Lu 57a83d9f26SWenzhuo Lu.. Note:: 58a83d9f26SWenzhuo Lu 59a83d9f26SWenzhuo Lu Although VFd is supported by both ixgbe and i40e, please be aware that 60a83d9f26SWenzhuo Lu since the hardware capability is different, the functions supported by 61a83d9f26SWenzhuo Lu ixgbe and i40e are not the same. 62a83d9f26SWenzhuo Lu 63a83d9f26SWenzhuo Lu 64a83d9f26SWenzhuo LuPreparing 65a83d9f26SWenzhuo Lu--------- 66a83d9f26SWenzhuo Lu 67a83d9f26SWenzhuo LuVFd only can be used in the scenario of DPDK PF + DPDK VF. Users should bind 68a83d9f26SWenzhuo Luthe PF port to ``igb_uio``, then create the VFs based on the DPDK PF host. 69a83d9f26SWenzhuo Lu 70a83d9f26SWenzhuo LuThe typical procedure to achieve this is as follows: 71a83d9f26SWenzhuo Lu 72a83d9f26SWenzhuo Lu#. Boot the system without iommu, or with ``iommu=pt``. 73a83d9f26SWenzhuo Lu 74a83d9f26SWenzhuo Lu#. Bind the PF port to ``igb_uio``, for example:: 75a83d9f26SWenzhuo Lu 76a83d9f26SWenzhuo Lu dpdk-devbind.py -b igb_uio 01:00.0 77a83d9f26SWenzhuo Lu 78a83d9f26SWenzhuo Lu#. Create a Virtual Function:: 79a83d9f26SWenzhuo Lu 80a83d9f26SWenzhuo Lu echo 1 > /sys/bus/pci/devices/0000:01:00.0/max_vfs 81a83d9f26SWenzhuo Lu 82a83d9f26SWenzhuo Lu#. Start a VM with the new VF port bypassed to it. 83a83d9f26SWenzhuo Lu 84a83d9f26SWenzhuo Lu#. Run a DPDK application on the PF in the host:: 85a83d9f26SWenzhuo Lu 86*79238624SCiara Power dpdk-testpmd -l 0-7 -n 4 -- -i --txqflags=0 87a83d9f26SWenzhuo Lu 88a83d9f26SWenzhuo Lu#. Bind the VF port to ``igb_uio`` in the VM:: 89a83d9f26SWenzhuo Lu 90a83d9f26SWenzhuo Lu dpdk-devbind.py -b igb_uio 03:00.0 91a83d9f26SWenzhuo Lu 92a83d9f26SWenzhuo Lu#. Run a DPDK application on the VF in the VM:: 93a83d9f26SWenzhuo Lu 94*79238624SCiara Power dpdk-testpmd -l 0-7 -n 4 -- -i --txqflags=0 95a83d9f26SWenzhuo Lu 96a83d9f26SWenzhuo Lu 97a83d9f26SWenzhuo LuCommon functions of IXGBE and I40E 98a83d9f26SWenzhuo Lu---------------------------------- 99a83d9f26SWenzhuo Lu 100a83d9f26SWenzhuo LuThe following sections show how to enable PF/VF functionality based on the 101a83d9f26SWenzhuo Luabove testpmd setup. 102a83d9f26SWenzhuo Lu 103a83d9f26SWenzhuo Lu 104a83d9f26SWenzhuo LuTX loopback 105a83d9f26SWenzhuo Lu~~~~~~~~~~~ 106a83d9f26SWenzhuo Lu 107a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to set TX loopback:: 108a83d9f26SWenzhuo Lu 109a83d9f26SWenzhuo Lu set tx loopback 0 on|off 110a83d9f26SWenzhuo Lu 111a83d9f26SWenzhuo LuThis sets whether the PF port and all the VF ports that belong to it are 112a83d9f26SWenzhuo Luallowed to send the packets to other virtual ports. 113a83d9f26SWenzhuo Lu 114a83d9f26SWenzhuo LuAlthough it is a VFd function, it is the global setting for the whole 115a83d9f26SWenzhuo Luphysical port. When using this function, the PF and all the VFs TX loopback 116a83d9f26SWenzhuo Luwill be enabled/disabled. 117a83d9f26SWenzhuo Lu 118a83d9f26SWenzhuo Lu 119a83d9f26SWenzhuo LuVF MAC address setting 120a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~~~~~~ 121a83d9f26SWenzhuo Lu 122a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to set the MAC address for a VF port:: 123a83d9f26SWenzhuo Lu 124a83d9f26SWenzhuo Lu set vf mac addr 0 0 A0:36:9F:7B:C3:51 125a83d9f26SWenzhuo Lu 126a83d9f26SWenzhuo LuThis testpmd runtime command will change the MAC address of the VF port to 127a83d9f26SWenzhuo Luthis new address. If any other addresses are set before, they will be 128a83d9f26SWenzhuo Luoverwritten. 129a83d9f26SWenzhuo Lu 130a83d9f26SWenzhuo Lu 131a83d9f26SWenzhuo LuVF MAC anti-spoofing 132a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~~~~ 133a83d9f26SWenzhuo Lu 134a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to enable/disable the MAC 135a83d9f26SWenzhuo Luanti-spoofing for a VF port:: 136a83d9f26SWenzhuo Lu 137a83d9f26SWenzhuo Lu set vf mac antispoof 0 0 on|off 138a83d9f26SWenzhuo Lu 139a83d9f26SWenzhuo LuWhen enabling the MAC anti-spoofing, the port will not forward packets whose 140a83d9f26SWenzhuo Lusource MAC address is not the same as the port. 141a83d9f26SWenzhuo Lu 142a83d9f26SWenzhuo Lu 143a83d9f26SWenzhuo LuVF VLAN anti-spoofing 144a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~~~~~ 145a83d9f26SWenzhuo Lu 146a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to enable/disable the VLAN 147a83d9f26SWenzhuo Luanti-spoofing for a VF port:: 148a83d9f26SWenzhuo Lu 149a83d9f26SWenzhuo Lu set vf vlan antispoof 0 0 on|off 150a83d9f26SWenzhuo Lu 151a83d9f26SWenzhuo LuWhen enabling the VLAN anti-spoofing, the port will not send packets whose 152a83d9f26SWenzhuo LuVLAN ID does not belong to VLAN IDs that this port can receive. 153a83d9f26SWenzhuo Lu 154a83d9f26SWenzhuo Lu 155a83d9f26SWenzhuo LuVF VLAN insertion 156a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~ 157a83d9f26SWenzhuo Lu 158a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to set the VLAN insertion for a VF 159a83d9f26SWenzhuo Luport:: 160a83d9f26SWenzhuo Lu 161a83d9f26SWenzhuo Lu set vf vlan insert 0 0 1 162a83d9f26SWenzhuo Lu 163a83d9f26SWenzhuo LuWhen using this testpmd runtime command, an assigned VLAN ID can be inserted 164a83d9f26SWenzhuo Luto the transmitted packets by the hardware. 165a83d9f26SWenzhuo Lu 166a83d9f26SWenzhuo LuThe assigned VLAN ID can be 0. It means disabling the VLAN insertion. 167a83d9f26SWenzhuo Lu 168a83d9f26SWenzhuo Lu 169a83d9f26SWenzhuo LuVF VLAN stripping 170a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~ 171a83d9f26SWenzhuo Lu 172a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to enable/disable the VLAN stripping 173a83d9f26SWenzhuo Lufor a VF port:: 174a83d9f26SWenzhuo Lu 175a83d9f26SWenzhuo Lu set vf vlan stripq 0 0 on|off 176a83d9f26SWenzhuo Lu 177a83d9f26SWenzhuo LuThis testpmd runtime command is used to enable/disable the RX VLAN stripping 178a83d9f26SWenzhuo Lufor a specific VF port. 179a83d9f26SWenzhuo Lu 180a83d9f26SWenzhuo Lu 181a83d9f26SWenzhuo LuVF VLAN filtering 182a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~ 183a83d9f26SWenzhuo Lu 184a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to set the VLAN filtering for a VF 185a83d9f26SWenzhuo Luport:: 186a83d9f26SWenzhuo Lu 187a83d9f26SWenzhuo Lu rx_vlan add 1 port 0 vf 1 188a83d9f26SWenzhuo Lu rx_vlan rm 1 port 0 vf 1 189a83d9f26SWenzhuo Lu 190a83d9f26SWenzhuo LuThese two testpmd runtime commands can be used to add or remove the VLAN 191a83d9f26SWenzhuo Lufilter for several VF ports. When the VLAN filters are added only the packets 192a83d9f26SWenzhuo Luthat have the assigned VLAN IDs can be received. Other packets will be dropped 193a83d9f26SWenzhuo Luby hardware. 194a83d9f26SWenzhuo Lu 195a83d9f26SWenzhuo Lu 196a83d9f26SWenzhuo LuThe IXGBE specific VFd functions 197a83d9f26SWenzhuo Lu-------------------------------- 198a83d9f26SWenzhuo Lu 199a83d9f26SWenzhuo LuThe functions in this section are specific to the ixgbe driver. 200a83d9f26SWenzhuo Lu 201a83d9f26SWenzhuo Lu 202a83d9f26SWenzhuo LuAll queues drop 203a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~ 204a83d9f26SWenzhuo Lu 205a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to enable/disable the all queues 206a83d9f26SWenzhuo Ludrop:: 207a83d9f26SWenzhuo Lu 208a83d9f26SWenzhuo Lu set all queues drop on|off 209a83d9f26SWenzhuo Lu 210a83d9f26SWenzhuo LuThis is a global setting for the PF and all the VF ports of the physical port. 211a83d9f26SWenzhuo Lu 212a83d9f26SWenzhuo LuEnabling the ``all queues drop`` feature means that when there is no available 213a83d9f26SWenzhuo Ludescriptor for the received packets they are dropped. The ``all queues drop`` 214a83d9f26SWenzhuo Lufeature should be enabled in SR-IOV mode to avoid one queue blocking others. 215a83d9f26SWenzhuo Lu 216a83d9f26SWenzhuo Lu 217a83d9f26SWenzhuo LuVF packet drop 218a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~ 219a83d9f26SWenzhuo Lu 220a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to enable/disable the packet drop for 221a83d9f26SWenzhuo Lua specific VF:: 222a83d9f26SWenzhuo Lu 223a83d9f26SWenzhuo Lu set vf split drop 0 0 on|off 224a83d9f26SWenzhuo Lu 225a83d9f26SWenzhuo LuThis is a similar function as ``all queues drop``. The difference is that this 226a83d9f26SWenzhuo Lufunction is per VF setting and the previous function is a global setting. 227a83d9f26SWenzhuo Lu 228a83d9f26SWenzhuo Lu 229a83d9f26SWenzhuo LuVF rate limit 230a83d9f26SWenzhuo Lu~~~~~~~~~~~~~ 231a83d9f26SWenzhuo Lu 232a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to all queues' rate limit for a 233a83d9f26SWenzhuo Luspecific VF:: 234a83d9f26SWenzhuo Lu 235a83d9f26SWenzhuo Lu set port 0 vf 0 rate 10 queue_mask 1 236a83d9f26SWenzhuo Lu 237a83d9f26SWenzhuo LuThis is a function to set the rate limit for all the queues in the 238a83d9f26SWenzhuo Lu``queue_mask`` bitmap. It is not used to set the summary of the rate 239a83d9f26SWenzhuo Lulimit. The rate limit of every queue will be set equally to the assigned rate 240a83d9f26SWenzhuo Lulimit. 241a83d9f26SWenzhuo Lu 242a83d9f26SWenzhuo Lu 243a83d9f26SWenzhuo LuVF RX enabling 244a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~ 245a83d9f26SWenzhuo Lu 246a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to enable/disable packet receiving for 247a83d9f26SWenzhuo Lua specific VF:: 248a83d9f26SWenzhuo Lu 249a83d9f26SWenzhuo Lu set port 0 vf 0 rx on|off 250a83d9f26SWenzhuo Lu 251a83d9f26SWenzhuo LuThis function can be used to stop/start packet receiving on a VF. 252a83d9f26SWenzhuo Lu 253a83d9f26SWenzhuo Lu 254a83d9f26SWenzhuo LuVF TX enabling 255a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~ 256a83d9f26SWenzhuo Lu 257a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to enable/disable packet transmitting 258a83d9f26SWenzhuo Lufor a specific VF:: 259a83d9f26SWenzhuo Lu 260a83d9f26SWenzhuo Lu set port 0 vf 0 tx on|off 261a83d9f26SWenzhuo Lu 262a83d9f26SWenzhuo LuThis function can be used to stop/start packet transmitting on a VF. 263a83d9f26SWenzhuo Lu 264a83d9f26SWenzhuo Lu 265a83d9f26SWenzhuo LuVF RX mode setting 266a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~~ 267a83d9f26SWenzhuo Lu 268a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to set the RX mode for a specific VF:: 269a83d9f26SWenzhuo Lu 270a83d9f26SWenzhuo Lu set port 0 vf 0 rxmode AUPE|ROPE|BAM|MPE on|off 271a83d9f26SWenzhuo Lu 272a83d9f26SWenzhuo LuThis function can be used to enable/disable some RX modes on the VF, including: 273a83d9f26SWenzhuo Lu 274a83d9f26SWenzhuo Lu* If it accept untagged packets. 275a83d9f26SWenzhuo Lu* If it accepts packets matching the MAC filters. 276a83d9f26SWenzhuo Lu* If it accept MAC broadcast packets, 277a83d9f26SWenzhuo Lu* If it enables MAC multicast promiscuous mode. 278a83d9f26SWenzhuo Lu 279a83d9f26SWenzhuo Lu 280a83d9f26SWenzhuo LuThe I40E specific VFd functions 281a83d9f26SWenzhuo Lu------------------------------- 282a83d9f26SWenzhuo Lu 283a83d9f26SWenzhuo LuThe functions in this section are specific to the i40e driver. 284a83d9f26SWenzhuo Lu 285a83d9f26SWenzhuo Lu 286a83d9f26SWenzhuo LuVF statistics 287a83d9f26SWenzhuo Lu~~~~~~~~~~~~~ 288a83d9f26SWenzhuo Lu 289a83d9f26SWenzhuo LuThis provides an API to get the a specific VF's statistic from PF. 290a83d9f26SWenzhuo Lu 291a83d9f26SWenzhuo Lu 292a83d9f26SWenzhuo LuVF statistics resetting 293a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~~~~~~~ 294a83d9f26SWenzhuo Lu 295a83d9f26SWenzhuo LuThis provides an API to rest the a specific VF's statistic from PF. 296a83d9f26SWenzhuo Lu 297a83d9f26SWenzhuo Lu 298a83d9f26SWenzhuo LuVF link status change notification 299a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 300a83d9f26SWenzhuo Lu 301a83d9f26SWenzhuo LuThis provide an API to let a specific VF know if the physical link status 302a83d9f26SWenzhuo Luchanged. 303a83d9f26SWenzhuo Lu 304a83d9f26SWenzhuo LuNormally if a VF received this notification, the driver should notify the 305a83d9f26SWenzhuo Luapplication to reset the VF port. 306a83d9f26SWenzhuo Lu 307a83d9f26SWenzhuo Lu 308a83d9f26SWenzhuo LuVF MAC broadcast setting 309a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~~~~~~~~ 310a83d9f26SWenzhuo Lu 311a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to enable/disable MAC broadcast packet 312a83d9f26SWenzhuo Lureceiving for a specific VF:: 313a83d9f26SWenzhuo Lu 314a83d9f26SWenzhuo Lu set vf broadcast 0 0 on|off 315a83d9f26SWenzhuo Lu 316a83d9f26SWenzhuo Lu 317a83d9f26SWenzhuo LuVF MAC multicast promiscuous mode 318a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 319a83d9f26SWenzhuo Lu 320a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to enable/disable MAC multicast 321a83d9f26SWenzhuo Lupromiscuous mode for a specific VF:: 322a83d9f26SWenzhuo Lu 323a83d9f26SWenzhuo Lu set vf allmulti 0 0 on|off 324a83d9f26SWenzhuo Lu 325a83d9f26SWenzhuo Lu 326a83d9f26SWenzhuo LuVF MAC unicast promiscuous mode 327a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 328a83d9f26SWenzhuo Lu 329a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to enable/disable MAC unicast 330a83d9f26SWenzhuo Lupromiscuous mode for a specific VF:: 331a83d9f26SWenzhuo Lu 332a83d9f26SWenzhuo Lu set vf promisc 0 0 on|off 333a83d9f26SWenzhuo Lu 334a83d9f26SWenzhuo Lu 335a83d9f26SWenzhuo LuVF max bandwidth 336a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~ 337a83d9f26SWenzhuo Lu 338a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to set the TX maximum bandwidth for a 339a83d9f26SWenzhuo Luspecific VF:: 340a83d9f26SWenzhuo Lu 341a83d9f26SWenzhuo Lu set vf tx max-bandwidth 0 0 2000 342a83d9f26SWenzhuo Lu 343a83d9f26SWenzhuo LuThe maximum bandwidth is an absolute value in Mbps. 344a83d9f26SWenzhuo Lu 345a83d9f26SWenzhuo Lu 346a83d9f26SWenzhuo LuVF TC bandwidth allocation 347a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~~~~~~~~~~ 348a83d9f26SWenzhuo Lu 349a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to set the TCs (traffic class) TX 350a83d9f26SWenzhuo Lubandwidth allocation for a specific VF:: 351a83d9f26SWenzhuo Lu 352a83d9f26SWenzhuo Lu set vf tc tx min-bandwidth 0 0 (20,20,20,40) 353a83d9f26SWenzhuo Lu 354a83d9f26SWenzhuo LuThe allocated bandwidth should be set for all the TCs. The allocated bandwidth 355a83d9f26SWenzhuo Luis a relative value as a percentage. The sum of all the bandwidth should 356a83d9f26SWenzhuo Lube 100. 357a83d9f26SWenzhuo Lu 358a83d9f26SWenzhuo Lu 359a83d9f26SWenzhuo LuVF TC max bandwidth 360a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~~~ 361a83d9f26SWenzhuo Lu 362a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to set the TCs TX maximum bandwidth 363a83d9f26SWenzhuo Lufor a specific VF:: 364a83d9f26SWenzhuo Lu 365a83d9f26SWenzhuo Lu set vf tc tx max-bandwidth 0 0 0 10000 366a83d9f26SWenzhuo Lu 367a83d9f26SWenzhuo LuThe maximum bandwidth is an absolute value in Mbps. 368a83d9f26SWenzhuo Lu 369a83d9f26SWenzhuo Lu 370a83d9f26SWenzhuo LuTC strict priority scheduling 371a83d9f26SWenzhuo Lu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 372a83d9f26SWenzhuo Lu 373a83d9f26SWenzhuo LuRun a testpmd runtime command on the PF to enable/disable several TCs TX 374a83d9f26SWenzhuo Lustrict priority scheduling:: 375a83d9f26SWenzhuo Lu 376a83d9f26SWenzhuo Lu set tx strict-link-priority 0 0x3 377a83d9f26SWenzhuo Lu 378a83d9f26SWenzhuo LuThe 0 in the TC bitmap means disabling the strict priority scheduling for this 379a83d9f26SWenzhuo LuTC. To enable use a value of 1. 380