VHOST counters reversed 43/743/2
authorShesha Sreenivasamurthy <shesha@cisco.com>
Tue, 12 Apr 2016 05:52:48 +0000 (22:52 -0700)
committerShesha Sreenivasamurthy <shesha@cisco.com>
Wed, 13 Apr 2016 18:16:09 +0000 (11:16 -0700)
    VHOST counters are reversed. RX packet count
    are shown as TX and vise-versa in "show hardware"
    statistics.

Change-Id: Ie1d41f1f0845edf495cdf34ca65466fc307940c6
Signed-off-by: Shesha Sreenivasamurthy <shesha@cisco.com>
vnet/vnet/devices/dpdk/device.c
vnet/vnet/devices/dpdk/dpdk_priv.h

index b7fb4be..748fb82 100644 (file)
@@ -321,11 +321,12 @@ u32 tx_burst_vector_internal (vlib_main_t * vm,
                                            (uint16_t) (tx_head-tx_tail));
               if (PREDICT_TRUE(rv > 0))
                 {
-                  dpdk_vu_vring *vring = &(xd->vu_intf->vrings[offset + VIRTIO_RXQ]);
+                  dpdk_vu_vring *vring = &(xd->vu_intf->vrings[offset + VIRTIO_TXQ]);
                   vring->packets += rv;
                   vring->bytes += bytes;
 
                   if (dpdk_vhost_user_want_interrupt(xd, offset + VIRTIO_RXQ)) {
+                    vring = &(xd->vu_intf->vrings[offset + VIRTIO_RXQ]);
                     vring->n_since_last_int += rv;
 
                     f64 now = vlib_time_now (vm);
@@ -358,11 +359,12 @@ u32 tx_burst_vector_internal (vlib_main_t * vm,
 
               if (PREDICT_TRUE(rv > 0))
                 {
-                  dpdk_vu_vring *vring = &(xd->vu_intf->vrings[offset + VIRTIO_RXQ]);
+                  dpdk_vu_vring *vring = &(xd->vu_intf->vrings[offset + VIRTIO_TXQ]);
                   vring->packets += rv;
                   vring->bytes += bytes;
 
                   if (dpdk_vhost_user_want_interrupt(xd, offset + VIRTIO_RXQ)) {
+                    vring = &(xd->vu_intf->vrings[offset + VIRTIO_RXQ]);
                     vring->n_since_last_int += rv;
 
                     f64 now = vlib_time_now (vm);
index 2e4909f..e284503 100644 (file)
@@ -105,12 +105,10 @@ dpdk_rx_burst ( dpdk_main_t * dm, dpdk_device_t * xd, u16 queue_id)
 
       f64 now = vlib_time_now (vm);
 
-      dpdk_vu_vring *vring = &(xd->vu_intf->vrings[offset + VIRTIO_TXQ]);
-      vring->packets += n_buffers;
-      vring->bytes += bytes;
-
+      dpdk_vu_vring *vring = NULL;
       /* send pending interrupts if needed */
       if (dpdk_vhost_user_want_interrupt(xd, offset + VIRTIO_TXQ)) {
+          vring = &(xd->vu_intf->vrings[offset + VIRTIO_TXQ]);
           vring->n_since_last_int += n_buffers;
 
           if ((vring->n_since_last_int && (vring->int_deadline < now))
@@ -118,8 +116,11 @@ dpdk_rx_burst ( dpdk_main_t * dm, dpdk_device_t * xd, u16 queue_id)
             dpdk_vhost_user_send_interrupt(vm, xd, offset + VIRTIO_TXQ);
       }
 
+      vring = &(xd->vu_intf->vrings[offset + VIRTIO_RXQ]);
+      vring->packets += n_buffers;
+      vring->bytes += bytes;
+
       if (dpdk_vhost_user_want_interrupt(xd, offset + VIRTIO_RXQ)) {
-          vring = &(xd->vu_intf->vrings[offset + VIRTIO_RXQ]);
           if (vring->n_since_last_int && (vring->int_deadline < now))
             dpdk_vhost_user_send_interrupt(vm, xd, offset + VIRTIO_RXQ);
       }