X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fdatapath.h;h=6732b59ea172bffaa4d2123d9fe6659a842bd433;hb=ce640333ea5ad7178a45b1d242af7cad9ca99976;hp=7fa90f3c4232909faf8667eeb8cace1dce45f52c;hpb=b4a7a3f3dea8fdf2a9da184c1676eeccd76f4700;p=openvswitch diff --git a/datapath/datapath.h b/datapath/datapath.h index 7fa90f3c..6732b59e 100644 --- a/datapath/datapath.h +++ b/datapath/datapath.h @@ -94,15 +94,12 @@ struct dp_bucket { * @n_lost: Number of received packets that had no matching flow in the flow * table that could not be sent to userspace (normally due to an overflow in * one of the datapath's queues). - * @sflow_pool: Number of packets that were candidates for sFlow sampling, - * regardless of whether they were actually chosen and sent down to userspace. */ struct dp_stats_percpu { u64 n_frags; u64 n_hit; u64 n_missed; u64 n_lost; - u64 sflow_pool; }; struct dp_port_group { @@ -115,7 +112,7 @@ struct dp_port_group { * struct datapath - datapath for flow-based packet switching * @mutex: Mutual exclusion for ioctls. * @dp_idx: Datapath number (index into the dps[] array in datapath.c). - * @ifobj: &struct kobject representing the datapath. + * @ifobj: Represents /sys/class/net//brif. * @drop_frags: Drop all IP fragments if nonzero. * @queues: %DP_N_QUEUES sets of queued packets for userspace to handle. * @waitqueue: Waitqueue, for waiting for new packets in @queues. @@ -161,13 +158,28 @@ struct datapath { unsigned int sflow_probability; }; +/** + * struct net_bridge_port - one port within a datapath + * @port_no: Index into @dp's @ports array. + * @dp: Datapath to which this port belongs. + * @dev: The network device attached to this port. The @br_port member in @dev + * points back to this &struct net_bridge_port. + * @kobj: Represents /sys/class/net//brport. + * @linkname: The name of the link from /sys/class/net//brif to this + * &struct net_bridge_port. (We keep this around so that we can delete it + * if @dev gets renamed.) Set to the null string when no link exists. + * @node: Element in @dp's @port_list. + * @sflow_pool: Number of packets that were candidates for sFlow sampling, + * regardless of whether they were actually chosen and sent down to userspace. + */ struct net_bridge_port { u16 port_no; struct datapath *dp; struct net_device *dev; struct kobject kobj; char linkname[IFNAMSIZ]; - struct list_head node; /* Element in datapath.ports. */ + struct list_head node; + atomic_t sflow_pool; }; extern struct notifier_block dp_device_notifier; @@ -189,6 +201,7 @@ void dp_process_received_packet(struct sk_buff *, struct net_bridge_port *); int dp_del_port(struct net_bridge_port *); int dp_output_control(struct datapath *, struct sk_buff *, int, u32 arg); int dp_min_mtu(const struct datapath *dp); +void set_dp_devs_mtu(const struct datapath *dp, struct net_device *dev); struct datapath *get_dp(int dp_idx); @@ -197,15 +210,15 @@ static inline const char *dp_name(const struct datapath *dp) return dp->ports[ODPP_LOCAL]->dev->name; } -#ifdef CONFIG_XEN -int skb_checksum_setup(struct sk_buff *skb); +#if defined(CONFIG_XEN) && defined(HAVE_PROTO_DATA_VALID) +int vswitch_skb_checksum_setup(struct sk_buff *skb); #else -static inline int skb_checksum_setup(struct sk_buff *skb) +static inline int vswitch_skb_checksum_setup(struct sk_buff *skb) { return 0; } #endif -int vswitch_skb_checksum_setup(struct sk_buff *skb); +void forward_ip_summed(struct sk_buff *skb); #endif /* datapath.h */