igb: Clarify idleslope config constraints

By design, the idleslope increments are restricted to 16.384kbps steps.
Add a comment to igb_main.c making that explicit and add one example
that illustrates the impact of that.

Signed-off-by: Jesus Sanchez-Palencia <jesus.sanchez-palencia@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
Jesus Sanchez-Palencia 2017-11-10 14:21:50 -08:00 committed by Jeff Kirsher
parent b701cacdbc
commit 0da6090ff7
1 changed files with 14 additions and 0 deletions

View File

@ -1744,6 +1744,20 @@ static void igb_configure_cbs(struct igb_adapter *adapter, int queue,
* value = idleSlope * 61034
* ----------------- (E6)
* 1000000
*
* NOTE: For i210, given the above, we can see that idleslope
* is represented in 16.38431 kbps units by the value at
* the TQAVCC register (1Gbps / 61034), which reduces
* the granularity for idleslope increments.
* For instance, if you want to configure a 2576kbps
* idleslope, the value to be written on the register
* would have to be 157.23. If rounded down, you end
* up with less bandwidth available than originally
* required (~2572 kbps). If rounded up, you end up
* with a higher bandwidth (~2589 kbps). Below the
* approach we take is to always round up the
* calculated value, so the resulting bandwidth might
* be slightly higher for some configurations.
*/
value = DIV_ROUND_UP_ULL(idleslope * 61034ULL, 1000000);