Add packet/byte count output tx stats to tunap interface 21/2621/3
authorJohn Lo <loj@cisco.com>
Sun, 4 Sep 2016 12:55:34 +0000 (08:55 -0400)
committerDave Barach <openvpp@barachs.net>
Tue, 6 Sep 2016 20:08:36 +0000 (20:08 +0000)
Change-Id: I167c49d2a64e7a36a176d57054ecd99b398a9cca
Signed-off-by: John Lo <loj@cisco.com>
vnet/vnet/unix/tuntap.c

index b3fbc7f..48d5dc2 100644 (file)
@@ -141,6 +141,9 @@ tuntap_tx (vlib_main_t * vm,
   u32 * buffers = vlib_frame_args (frame);
   uword n_packets = frame->n_vectors;
   tuntap_main_t * tm = &tuntap_main;
+  vnet_main_t *vnm = vnet_get_main ();
+  vnet_interface_main_t *im = &vnm->interface_main;
+  u32 n_bytes = 0;
   int i;
 
   for (i = 0; i < n_packets; i++)
@@ -181,8 +184,17 @@ tuntap_tx (vlib_main_t * vm,
 
       if (writev (tm->dev_net_tun_fd, tm->iovecs, vec_len (tm->iovecs)) < l)
        clib_unix_warning ("writev");
+
+      n_bytes += l;
     }
 
+  /* Update tuntap interface output stats. */
+  vlib_increment_combined_counter (im->combined_sw_if_counters
+                                  + VNET_INTERFACE_COUNTER_TX,
+                                  vm->cpu_index,
+                                  tm->sw_if_index, n_packets, n_bytes);
+
+
   /** The normal interface path flattens the buffer chain */
   if (tm->have_normal_interface)
     vlib_buffer_free_no_next (vm, buffers, n_packets);