X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fdatapath.h;h=e1bdb7b4ce17f621d0fbc67d6608b774244c2185;hb=cdee00f;hp=3a38235f9cc947d0ba5b2e6e50088bf5e1c1ce82;hpb=f1588b1fa1be46231ee079358e428dae74ff09cc;p=openvswitch diff --git a/datapath/datapath.h b/datapath/datapath.h index 3a38235f..e1bdb7b4 100644 --- a/datapath/datapath.h +++ b/datapath/datapath.h @@ -19,11 +19,12 @@ #include #include #include + +#include "checksum.h" #include "flow.h" #include "dp_sysfs.h" struct vport; -struct dp_port; /* Mask for the priority bits in a vlan header. If we ever merge upstream * then this should go into include/linux/if_vlan.h. */ @@ -67,7 +68,7 @@ struct dp_stats_percpu { * @n_flows: Number of flows currently in flow table. * @table: Current flow table (RCU protected). * @n_ports: Number of ports currently in @ports. - * @ports: Map from port number to &struct dp_port. %ODPP_LOCAL port + * @ports: Map from port number to &struct vport. %ODPP_LOCAL port * always exists, other ports may be %NULL. * @port_list: List of all ports in @ports in arbitrary order. * @stats_percpu: Per-CPU datapath statistics. @@ -91,7 +92,7 @@ struct datapath { /* Switch ports. */ unsigned int n_ports; - struct dp_port *ports[DP_MAX_PORTS]; + struct vport *ports[DP_MAX_PORTS]; struct list_head port_list; /* Stats. */ @@ -101,40 +102,9 @@ struct datapath { unsigned int sflow_probability; }; -/** - * struct dp_port - one port within a datapath - * @port_no: Index into @dp's @ports array. - * @dp: Datapath to which this port belongs. - * @vport: The network device attached to this port. The contents depends on - * the device and should be accessed only through the vport_* functions. - * @kobj: Represents /sys/class/net//brport. - * @linkname: The name of the link from /sys/class/net//brif to this - * &struct dp_port. (We keep this around so that we can delete it if the - * device 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 dp_port { - u16 port_no; - struct datapath *dp; - struct vport *vport; - struct kobject kobj; - char linkname[IFNAMSIZ]; - struct list_head node; - atomic_t sflow_pool; -}; - -enum csum_type { - OVS_CSUM_NONE = 0, - OVS_CSUM_UNNECESSARY = 1, - OVS_CSUM_COMPLETE = 2, - OVS_CSUM_PARTIAL = 3, -}; - /** * struct ovs_skb_cb - OVS data in skb CB - * @dp_port: The datapath port on which the skb entered the switch. + * @vport: 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. @@ -142,9 +112,11 @@ enum csum_type { * packet. It is 0 if the packet was not received on a tunnel. */ struct ovs_skb_cb { - struct dp_port *dp_port; + struct vport *vport; struct sw_flow *flow; +#ifdef NEED_CSUM_NORMALIZE enum csum_type ip_summed; +#endif __be32 tun_id; }; #define OVS_CB(skb) ((struct ovs_skb_cb *)(skb)->cb) @@ -152,8 +124,8 @@ struct ovs_skb_cb { extern struct notifier_block dp_device_notifier; extern int (*dp_ioctl_hook)(struct net_device *dev, struct ifreq *rq, int cmd); -void dp_process_received_packet(struct dp_port *, struct sk_buff *); -int dp_detach_port(struct dp_port *, int may_delete); +void dp_process_received_packet(struct vport *, struct sk_buff *); +int dp_detach_port(struct vport *); int dp_output_control(struct datapath *, struct sk_buff *, int, u32 arg); int dp_min_mtu(const struct datapath *dp); void set_internal_devs_mtu(const struct datapath *dp); @@ -161,16 +133,4 @@ void set_internal_devs_mtu(const struct datapath *dp); struct datapath *get_dp(int dp_idx); const char *dp_name(const struct datapath *dp); -#if defined(CONFIG_XEN) && defined(HAVE_PROTO_DATA_VALID) -int vswitch_skb_checksum_setup(struct sk_buff *skb); -#else -static inline int vswitch_skb_checksum_setup(struct sk_buff *skb) -{ - return 0; -} -#endif - -void compute_ip_summed(struct sk_buff *skb, bool xmit); -void forward_ip_summed(struct sk_buff *skb); - #endif /* datapath.h */