odp: Only pass vlan_tci to commit_vlan_action()
[sliver-openvswitch.git] / ofproto / ofproto-dpif-upcall.h
index f742060..cd97e79 100644 (file)
@@ -36,7 +36,6 @@ struct udpif *udpif_create(struct dpif_backer *, struct dpif *);
 void udpif_recv_set(struct udpif *, size_t n_workers, bool enable);
 void udpif_destroy(struct udpif *);
 
-void udpif_run(struct udpif *);
 void udpif_wait(struct udpif *);
 
 void udpif_revalidate(struct udpif *);
@@ -60,13 +59,14 @@ enum upcall_type {
 /* An upcall. */
 struct upcall {
     struct list list_node;          /* For queuing upcalls. */
+    struct flow_miss *flow_miss;    /* This upcall's flow_miss. */
 
     enum upcall_type type;          /* Classification. */
 
     /* Raw upcall plus data for keeping track of the memory backing it. */
     struct dpif_upcall dpif_upcall; /* As returned by dpif_recv() */
     struct ofpbuf upcall_buf;       /* Owns some data in 'dpif_upcall'. */
-    uint64_t upcall_stub[256 / 8];  /* Buffer to reduce need for malloc(). */
+    uint64_t upcall_stub[512 / 8];  /* Buffer to reduce need for malloc(). */
 };
 
 struct upcall *upcall_next(struct udpif *);
@@ -91,13 +91,10 @@ struct flow_miss {
     enum odp_key_fitness key_fitness;
     const struct nlattr *key;
     size_t key_len;
-    struct list packets;
     enum dpif_upcall_type upcall_type;
     struct dpif_flow_stats stats;
 
     struct xlate_out xout;
-
-    struct list upcalls;
 };
 
 struct flow_miss_batch {
@@ -105,6 +102,13 @@ struct flow_miss_batch {
 
     struct flow_miss miss_buf[FLOW_MISS_MAX_BATCH];
     struct hmap misses;
+
+    unsigned int reval_seq;
+
+    /* Flow misses refer to the memory held by "struct upcall"s,
+     * so we need to keep track of the upcalls to be able to
+     * free them when done. */
+    struct list upcalls;        /* Contains "struct upcall"s. */
 };
 
 struct flow_miss_batch *flow_miss_batch_next(struct udpif *);