master/device.c
changeset 1852 1ec9f781f3ef
parent 1851 a56bd34e20a1
child 1854 b61bece1ec1c
equal deleted inserted replaced
1851:a56bd34e20a1 1852:1ec9f781f3ef
   322     struct sk_buff *skb = device->tx_skb[device->tx_ring_index];
   322     struct sk_buff *skb = device->tx_skb[device->tx_ring_index];
   323 
   323 
   324     // frame statistics
   324     // frame statistics
   325     if (unlikely(jiffies - device->stats_jiffies >= HZ)) {
   325     if (unlikely(jiffies - device->stats_jiffies >= HZ)) {
   326         unsigned int i;
   326         unsigned int i;
   327         unsigned int tx_rate = device->tx_count - device->last_tx_count;
   327         unsigned int tx_rate =
       
   328             (device->tx_count - device->last_tx_count) * 1000;
   328         int loss = device->tx_count - device->rx_count;
   329         int loss = device->tx_count - device->rx_count;
   329         int loss_rate = (loss - device->last_loss) * 1000;
   330         int loss_rate = (loss - device->last_loss) * 1000;
   330         for (i = 0; i < EC_RATE_COUNT; i++) {
   331         for (i = 0; i < EC_RATE_COUNT; i++) {
   331             unsigned int n = rate_intervals[i];
   332             unsigned int n = rate_intervals[i];
   332             device->tx_rates[i] =
   333             device->tx_rates[i] =
   333                 device->tx_rates[i] * (n - 1) +
   334                 (device->tx_rates[i] * (n - 1) + tx_rate) / n;
   334                 tx_rate * n;
       
   335             device->loss_rates[i] =
   335             device->loss_rates[i] =
   336                 device->loss_rates[i] * (n - 1) +
   336                 (device->loss_rates[i] * (n - 1) + loss_rate) / n;
   337                 loss_rate * n;
       
   338         }
   337         }
   339         device->last_tx_count = device->tx_count;
   338         device->last_tx_count = device->tx_count;
   340         device->last_loss = loss;
   339         device->last_loss = loss;
   341         device->stats_jiffies += HZ;
   340         device->stats_jiffies = jiffies;
   342     }
   341     }
   343 
   342 
   344     if (unlikely(!device->link_state)) // Link down
   343     if (unlikely(!device->link_state)) // Link down
   345         return;
   344         return;
   346 
   345