mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
i40e/i40evf: fix bug in throttle rate math
The driver was using a value expressed in 2us increments for the divisor to figure out our bytes/usec values. Fix the usecs variable to contain a value in microseconds. Change-ID: I5c20493103c295d6f201947bb908add7040b7c41 Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
8f5e39ce92
commit
51cc6d9fcc
2 changed files with 16 additions and 2 deletions
|
@ -830,6 +830,7 @@ static bool i40e_set_new_dynamic_itr(struct i40e_ring_container *rc)
|
||||||
enum i40e_latency_range new_latency_range = rc->latency_range;
|
enum i40e_latency_range new_latency_range = rc->latency_range;
|
||||||
u32 new_itr = rc->itr;
|
u32 new_itr = rc->itr;
|
||||||
int bytes_per_int;
|
int bytes_per_int;
|
||||||
|
int usecs;
|
||||||
|
|
||||||
if (rc->total_packets == 0 || !rc->itr)
|
if (rc->total_packets == 0 || !rc->itr)
|
||||||
return false;
|
return false;
|
||||||
|
@ -838,8 +839,14 @@ static bool i40e_set_new_dynamic_itr(struct i40e_ring_container *rc)
|
||||||
* 0-10MB/s lowest (100000 ints/s)
|
* 0-10MB/s lowest (100000 ints/s)
|
||||||
* 10-20MB/s low (20000 ints/s)
|
* 10-20MB/s low (20000 ints/s)
|
||||||
* 20-1249MB/s bulk (8000 ints/s)
|
* 20-1249MB/s bulk (8000 ints/s)
|
||||||
|
*
|
||||||
|
* The math works out because the divisor is in 10^(-6) which
|
||||||
|
* turns the bytes/us input value into MB/s values, but
|
||||||
|
* make sure to use usecs, as the register values written
|
||||||
|
* are in 2 usec increments in the ITR registers.
|
||||||
*/
|
*/
|
||||||
bytes_per_int = rc->total_bytes / rc->itr;
|
usecs = (rc->itr << 1);
|
||||||
|
bytes_per_int = rc->total_bytes / usecs;
|
||||||
switch (new_latency_range) {
|
switch (new_latency_range) {
|
||||||
case I40E_LOWEST_LATENCY:
|
case I40E_LOWEST_LATENCY:
|
||||||
if (bytes_per_int > 10)
|
if (bytes_per_int > 10)
|
||||||
|
|
|
@ -333,6 +333,7 @@ static bool i40e_set_new_dynamic_itr(struct i40e_ring_container *rc)
|
||||||
enum i40e_latency_range new_latency_range = rc->latency_range;
|
enum i40e_latency_range new_latency_range = rc->latency_range;
|
||||||
u32 new_itr = rc->itr;
|
u32 new_itr = rc->itr;
|
||||||
int bytes_per_int;
|
int bytes_per_int;
|
||||||
|
int usecs;
|
||||||
|
|
||||||
if (rc->total_packets == 0 || !rc->itr)
|
if (rc->total_packets == 0 || !rc->itr)
|
||||||
return false;
|
return false;
|
||||||
|
@ -341,8 +342,14 @@ static bool i40e_set_new_dynamic_itr(struct i40e_ring_container *rc)
|
||||||
* 0-10MB/s lowest (100000 ints/s)
|
* 0-10MB/s lowest (100000 ints/s)
|
||||||
* 10-20MB/s low (20000 ints/s)
|
* 10-20MB/s low (20000 ints/s)
|
||||||
* 20-1249MB/s bulk (8000 ints/s)
|
* 20-1249MB/s bulk (8000 ints/s)
|
||||||
|
*
|
||||||
|
* The math works out because the divisor is in 10^(-6) which
|
||||||
|
* turns the bytes/us input value into MB/s values, but
|
||||||
|
* make sure to use usecs, as the register values written
|
||||||
|
* are in 2 usec increments in the ITR registers.
|
||||||
*/
|
*/
|
||||||
bytes_per_int = rc->total_bytes / rc->itr;
|
usecs = (rc->itr << 1);
|
||||||
|
bytes_per_int = rc->total_bytes / usecs;
|
||||||
switch (new_latency_range) {
|
switch (new_latency_range) {
|
||||||
case I40E_LOWEST_LATENCY:
|
case I40E_LOWEST_LATENCY:
|
||||||
if (bytes_per_int > 10)
|
if (bytes_per_int > 10)
|
||||||
|
|
Loading…
Add table
Reference in a new issue