xref: /dpdk/doc/guides/howto/vfd.rst (revision 79238624c2b19bd71a20839ebf304e1eeb8dee9c)
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