autoconf: Tolerate missing file when grepping.
[sliver-openvswitch.git] / datapath / datapath.h
index 991a7e8..3a38235 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/mutex.h>
 #include <linux/netdevice.h>
 #include <linux/workqueue.h>
+#include <linux/seqlock.h>
 #include <linux/skbuff.h>
 #include <linux/version.h>
 #include "flow.h"
@@ -30,7 +31,6 @@ struct dp_port;
 #define VLAN_PCP_SHIFT 13
 
 #define DP_MAX_PORTS 1024
-#define DP_MAX_GROUPS 16
 
 #define DP_N_QUEUES 3
 #define DP_MAX_QUEUE_LEN 100
@@ -53,12 +53,7 @@ struct dp_stats_percpu {
        u64 n_hit;
        u64 n_missed;
        u64 n_lost;
-};
-
-struct dp_port_group {
-       struct rcu_head rcu;
-       int n_ports;
-       u16 ports[];
+       seqcount_t seqlock;
 };
 
 /**
@@ -71,7 +66,6 @@ struct dp_port_group {
  * @waitqueue: Waitqueue, for waiting for new packets in @queues.
  * @n_flows: Number of flows currently in flow table.
  * @table: Current flow table (RCU protected).
- * @groups: Port groups, used by ODPAT_OUTPUT_GROUP action (RCU protected).
  * @n_ports: Number of ports currently in @ports.
  * @ports: Map from port number to &struct dp_port.  %ODPP_LOCAL port
  * always exists, other ports may be %NULL.
@@ -95,9 +89,6 @@ struct datapath {
        /* Flow table. */
        struct tbl *table;
 
-       /* Port groups. */
-       struct dp_port_group *groups[DP_MAX_GROUPS];
-
        /* Switch ports. */
        unsigned int n_ports;
        struct dp_port *ports[DP_MAX_PORTS];
@@ -143,12 +134,16 @@ enum csum_type {
 
 /**
  * struct ovs_skb_cb - OVS data in skb CB
- * @br_port: The bridge port on which the skb entered the switch.
+ * @dp_port: The datapath port on which the skb entered the switch.
+ * @flow: The flow associated with this packet.  May be %NULL if no flow.
  * @ip_summed: Consistently stores L4 checksumming status across different
  * kernel versions.
+ * @tun_id: ID (in network byte order) of the tunnel that encapsulated this
+ * packet. It is 0 if the packet was not received on a tunnel.
  */
 struct ovs_skb_cb {
        struct dp_port          *dp_port;
+       struct sw_flow          *flow;
        enum csum_type          ip_summed;
        __be32                  tun_id;
 };