master/device.c
changeset 1854 b61bece1ec1c
parent 1852 1ec9f781f3ef
child 1856 10175d5f35ea
equal deleted inserted replaced
1853:e0b9c4611f0a 1854:b61bece1ec1c
   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 =
   327         if (device->link_state) {
   328             (device->tx_count - device->last_tx_count) * 1000;
   328             unsigned int tx_rate =
   329         int loss = device->tx_count - device->rx_count;
   329                 (device->tx_count - device->last_tx_count) * 1000;
   330         int loss_rate = (loss - device->last_loss) * 1000;
   330             int loss = device->tx_count - device->rx_count;
   331         for (i = 0; i < EC_RATE_COUNT; i++) {
   331             int loss_rate = (loss - device->last_loss) * 1000;
   332             unsigned int n = rate_intervals[i];
   332             for (i = 0; i < EC_RATE_COUNT; i++) {
   333             device->tx_rates[i] =
   333                 unsigned int n = rate_intervals[i];
   334                 (device->tx_rates[i] * (n - 1) + tx_rate) / n;
   334                 device->tx_rates[i] =
   335             device->loss_rates[i] =
   335                     (device->tx_rates[i] * (n - 1) + tx_rate) / n;
   336                 (device->loss_rates[i] * (n - 1) + loss_rate) / n;
   336                 device->loss_rates[i] =
       
   337                     (device->loss_rates[i] * (n - 1) + loss_rate) / n;
       
   338             }
       
   339             device->last_tx_count = device->tx_count;
       
   340             device->last_loss = loss;
       
   341         } else {
       
   342             // zero frame statistics
       
   343             device->tx_count = 0;
       
   344             device->rx_count = 0;
       
   345             device->last_tx_count = 0;
       
   346             device->last_loss = 0;
       
   347             for (i = 0; i < EC_RATE_COUNT; i++) {
       
   348                 device->tx_rates[i] = 0;
       
   349                 device->loss_rates[i] = 0;
       
   350             }
   337         }
   351         }
   338         device->last_tx_count = device->tx_count;
       
   339         device->last_loss = loss;
       
   340         device->stats_jiffies = jiffies;
   352         device->stats_jiffies = jiffies;
   341     }
   353     }
   342 
   354 
   343     if (unlikely(!device->link_state)) // Link down
   355     if (unlikely(!device->link_state)) // Link down
   344         return;
   356         return;