#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"
#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
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;
};
/**
* @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.
/* 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];
/**
* 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;
};