diff --git a/master/device.c b/master/device.c index daf7cca1..5730a0e8 100644 --- a/master/device.c +++ b/master/device.c @@ -324,21 +324,20 @@ void ec_device_send( // frame statistics if (unlikely(jiffies - device->stats_jiffies >= HZ)) { unsigned int i; - unsigned int tx_rate = device->tx_count - device->last_tx_count; + unsigned int tx_rate = + (device->tx_count - device->last_tx_count) * 1000; int loss = device->tx_count - device->rx_count; int loss_rate = (loss - device->last_loss) * 1000; for (i = 0; i < EC_RATE_COUNT; i++) { unsigned int n = rate_intervals[i]; device->tx_rates[i] = - device->tx_rates[i] * (n - 1) + - tx_rate * n; + (device->tx_rates[i] * (n - 1) + tx_rate) / n; device->loss_rates[i] = - device->loss_rates[i] * (n - 1) + - loss_rate * n; + (device->loss_rates[i] * (n - 1) + loss_rate) / n; } device->last_tx_count = device->tx_count; device->last_loss = loss; - device->stats_jiffies += HZ; + device->stats_jiffies = jiffies; } if (unlikely(!device->link_state)) // Link down