|
@@ -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);
|
|
|
|