revalidator: Fix ukey stats cache updating.
[sliver-openvswitch.git] / lib / netdev-vport.c
index 76aa148..9e92a88 100644 (file)
@@ -52,7 +52,6 @@ struct netdev_vport {
     /* Protects all members below. */
     struct ovs_mutex mutex;
 
-    unsigned int change_seq;
     uint8_t etheraddr[ETH_ADDR_LEN];
     struct netdev_stats stats;
 
@@ -71,8 +70,6 @@ struct vport_class {
 static int netdev_vport_construct(struct netdev *);
 static int get_patch_config(const struct netdev *netdev, struct smap *args);
 static int get_tunnel_config(const struct netdev *, struct smap *args);
-static void netdev_vport_poll_notify(struct netdev_vport *netdev)
-    OVS_REQUIRES(netdev->mutex);
 
 static bool
 is_vport_class(const struct netdev_class *class)
@@ -108,6 +105,14 @@ netdev_vport_is_patch(const struct netdev *netdev)
     return class->get_config == get_patch_config;
 }
 
+bool
+netdev_vport_is_layer3(const struct netdev *dev)
+{
+    const char *type = netdev_get_type(dev);
+
+    return (!strcmp("lisp", type));
+}
+
 static bool
 netdev_vport_needs_dst_port(const struct netdev *dev)
 {
@@ -171,8 +176,7 @@ netdev_vport_construct(struct netdev *netdev_)
 {
     struct netdev_vport *netdev = netdev_vport_cast(netdev_);
 
-    ovs_mutex_init(&netdev->mutex, PTHREAD_MUTEX_NORMAL);
-    netdev->change_seq = 1;
+    ovs_mutex_init(&netdev->mutex);
     eth_addr_random(netdev->etheraddr);
 
     route_table_register();
@@ -205,8 +209,8 @@ netdev_vport_set_etheraddr(struct netdev *netdev_,
 
     ovs_mutex_lock(&netdev->mutex);
     memcpy(netdev->etheraddr, mac, ETH_ADDR_LEN);
-    netdev_vport_poll_notify(netdev);
     ovs_mutex_unlock(&netdev->mutex);
+    netdev_change_seq_changed(netdev_);
 
     return 0;
 }
@@ -264,12 +268,6 @@ netdev_vport_update_flags(struct netdev *netdev OVS_UNUSED,
     return 0;
 }
 
-static unsigned int
-netdev_vport_change_seq(const struct netdev *netdev)
-{
-    return netdev_vport_cast(netdev)->change_seq;
-}
-
 static void
 netdev_vport_run(void)
 {
@@ -282,17 +280,6 @@ netdev_vport_wait(void)
     route_table_wait();
 }
 \f
-/* Helper functions. */
-
-static void
-netdev_vport_poll_notify(struct netdev_vport *ndv)
-{
-    ndv->change_seq++;
-    if (!ndv->change_seq) {
-        ndv->change_seq++;
-    }
-}
-\f
 /* Code specific to tunnel types. */
 
 static ovs_be64
@@ -444,6 +431,7 @@ set_tunnel_config(struct netdev *dev_, const struct smap *args)
         static struct ovs_mutex mutex = OVS_MUTEX_INITIALIZER;
         static pid_t pid = 0;
 
+#ifndef _WIN32
         ovs_mutex_lock(&mutex);
         if (pid <= 0) {
             char *file_name = xasprintf("%s/%s", ovs_rundir(),
@@ -452,6 +440,7 @@ set_tunnel_config(struct netdev *dev_, const struct smap *args)
             free(file_name);
         }
         ovs_mutex_unlock(&mutex);
+#endif
 
         if (pid < 0) {
             VLOG_ERR("%s: IPsec requires the ovs-monitor-ipsec daemon",
@@ -495,7 +484,7 @@ set_tunnel_config(struct netdev *dev_, const struct smap *args)
 
     ovs_mutex_lock(&dev->mutex);
     dev->tnl_cfg = tnl_cfg;
-    netdev_vport_poll_notify(dev);
+    netdev_change_seq_changed(dev_);
     ovs_mutex_unlock(&dev->mutex);
 
     return 0;
@@ -603,7 +592,7 @@ netdev_vport_patch_peer(const struct netdev *netdev_)
 
 void
 netdev_vport_inc_rx(const struct netdev *netdev,
-                          const struct dpif_flow_stats *stats)
+                    const struct dpif_flow_stats *stats)
 {
     if (is_vport_class(netdev_get_class(netdev))) {
         struct netdev_vport *dev = netdev_vport_cast(netdev);
@@ -669,7 +658,7 @@ set_patch_config(struct netdev *dev_, const struct smap *args)
     ovs_mutex_lock(&dev->mutex);
     free(dev->peer);
     dev->peer = xstrdup(peer);
-    netdev_vport_poll_notify(dev);
+    netdev_change_seq_changed(dev_);
     ovs_mutex_unlock(&dev->mutex);
 
     return 0;
@@ -727,7 +716,9 @@ get_stats(const struct netdev *netdev, struct netdev_stats *stats)
     NULL,                       /* set_queue */             \
     NULL,                       /* delete_queue */          \
     NULL,                       /* get_queue_stats */       \
-    NULL,                       /* dump_queues */           \
+    NULL,                       /* queue_dump_start */      \
+    NULL,                       /* queue_dump_next */       \
+    NULL,                       /* queue_dump_done */       \
     NULL,                       /* dump_queue_stats */      \
                                                             \
     NULL,                       /* get_in4 */               \
@@ -740,8 +731,6 @@ get_stats(const struct netdev *netdev, struct netdev_stats *stats)
                                                             \
     netdev_vport_update_flags,                              \
                                                             \
-    netdev_vport_change_seq,                                \
-                                                            \
     NULL,                   /* rx_alloc */                  \
     NULL,                   /* rx_construct */              \
     NULL,                   /* rx_destruct */               \