VPP modified some state checking logic
[vpp.git] / src / plugins / memif / socket.c
index 9aa4a2e..384a7b1 100644 (file)
@@ -351,11 +351,16 @@ memif_msg_receive_add_ring (memif_if_t * mif, memif_msg_t * msg, int fd)
       mif->run.num_m2s_rings = vec_len (mif->tx_queues);
     }
 
+  // clear previous cache data if interface reconncected
+  memset (mq, 0, sizeof (memif_queue_t));
   mq->int_fd = fd;
   mq->int_clib_file_index = ~0;
   mq->log2_ring_size = ar->log2_ring_size;
   mq->region = ar->region;
   mq->offset = ar->offset;
+  mq->type =
+    (ar->flags & MEMIF_MSG_ADD_RING_FLAG_S2M) ? MEMIF_RING_S2M :
+    MEMIF_RING_M2S;
 
   return 0;
 }
@@ -440,6 +445,9 @@ memif_msg_receive (memif_if_t ** mifp, clib_socket_t * sock, clib_file_t * uf)
       if ((err = memif_msg_receive_init (mifp, &msg, sock, uf->private_data)))
        return err;
       mif = *mifp;
+      vec_reset_length (uf->description);
+      uf->description = format (uf->description, "%U ctl",
+                               format_memif_device_name, mif->dev_instance);
       memif_msg_enq_ack (mif);
       break;
 
@@ -645,6 +653,7 @@ memif_conn_fd_accept_ready (clib_file_t * uf)
   template.error_function = memif_master_conn_fd_error;
   template.file_descriptor = client->fd;
   template.private_data = uf->private_data;
+  template.description = format (0, "memif in conn on %s", msf->filename);
 
   memif_file_add (&client->private_data, &template);