@@ -11,6 +11,7 @@ Parameters
1111==========
1212
1313.. list-table :: Generic parameters implemented
14+ :widths: 5 5 90
1415
1516 * - Name
1617 - Mode
@@ -21,6 +22,77 @@ Parameters
2122 * - ``enable_iwarp ``
2223 - runtime
2324 - mutually exclusive with ``enable_roce ``
25+ * - ``tx_scheduling_layers ``
26+ - permanent
27+ - The ice hardware uses hierarchical scheduling for Tx with a fixed
28+ number of layers in the scheduling tree. Each of them are decision
29+ points. Root node represents a port, while all the leaves represent
30+ the queues. This way of configuring the Tx scheduler allows features
31+ like DCB or devlink-rate (documented below) to configure how much
32+ bandwidth is given to any given queue or group of queues, enabling
33+ fine-grained control because scheduling parameters can be configured
34+ at any given layer of the tree.
35+
36+ The default 9-layer tree topology was deemed best for most workloads,
37+ as it gives an optimal ratio of performance to configurability. However,
38+ for some specific cases, this 9-layer topology might not be desired.
39+ One example would be sending traffic to queues that are not a multiple
40+ of 8. Because the maximum radix is limited to 8 in 9-layer topology,
41+ the 9th queue has a different parent than the rest, and it's given
42+ more bandwidth credits. This causes a problem when the system is
43+ sending traffic to 9 queues:
44+
45+ | tx_queue_0_packets: 24163396
46+ | tx_queue_1_packets: 24164623
47+ | tx_queue_2_packets: 24163188
48+ | tx_queue_3_packets: 24163701
49+ | tx_queue_4_packets: 24163683
50+ | tx_queue_5_packets: 24164668
51+ | tx_queue_6_packets: 23327200
52+ | tx_queue_7_packets: 24163853
53+ | tx_queue_8_packets: 91101417 < Too much traffic is sent from 9th
54+
55+ To address this need, you can switch to a 5-layer topology, which
56+ changes the maximum topology radix to 512. With this enhancement,
57+ the performance characteristic is equal as all queues can be assigned
58+ to the same parent in the tree. The obvious drawback of this solution
59+ is a lower configuration depth of the tree.
60+
61+ Use the ``tx_scheduling_layer `` parameter with the devlink command
62+ to change the transmit scheduler topology. To use 5-layer topology,
63+ use a value of 5. For example:
64+ $ devlink dev param set pci/0000:16:00.0 name tx_scheduling_layers
65+ value 5 cmode permanent
66+ Use a value of 9 to set it back to the default value.
67+
68+ You must do PCI slot powercycle for the selected topology to take effect.
69+
70+ To verify that value has been set:
71+ $ devlink dev param show pci/0000:16:00.0 name tx_scheduling_layers
72+ .. list-table :: Driver specific parameters implemented
73+ :widths: 5 5 90
74+
75+ * - Name
76+ - Mode
77+ - Description
78+ * - ``local_forwarding ``
79+ - runtime
80+ - Controls loopback behavior by tuning scheduler bandwidth.
81+ It impacts all kinds of functions: physical, virtual and
82+ subfunctions.
83+ Supported values are:
84+
85+ ``enabled `` - loopback traffic is allowed on port
86+
87+ ``disabled `` - loopback traffic is not allowed on this port
88+
89+ ``prioritized `` - loopback traffic is prioritized on this port
90+
91+ Default value of ``local_forwarding `` parameter is ``enabled ``.
92+ ``prioritized `` provides ability to adjust loopback traffic rate to increase
93+ one port capacity at cost of the another. User needs to disable
94+ local forwarding on one of the ports in order have increased capacity
95+ on the ``prioritized `` port.
2496
2597Info versions
2698=============
@@ -309,7 +381,7 @@ features are enabled after the hierarchy is exported, but before any
309381changes are made.
310382
311383This feature is also dependent on switchdev being enabled in the system.
312- It's required bacause devlink-rate requires devlink-port objects to be
384+ It's required because devlink-rate requires devlink-port objects to be
313385present, and those objects are only created in switchdev mode.
314386
315387If the driver is set to the switchdev mode, it will export internal
@@ -344,7 +416,7 @@ nodes and nodes with children also can't be deleted.
344416 * - ``tx_weight ``
345417 - allows for usage of Weighted Fair Queuing arbitration scheme among
346418 siblings. This arbitration scheme can be used simultaneously with
347- the strict priority. Range 1-200. Only relative values mater for
419+ the strict priority. Range 1-200. Only relative values matter for
348420 arbitration.
349421
350422``tx_priority `` and ``tx_weight `` can be used simultaneously. In that case
0 commit comments