struct ovs_frag_data {
unsigned long dst;
struct vport *vport;
- struct ovs_skb_cb cb;
+ struct ovs_gso_cb cb;
__be16 inner_protocol;
__u16 vlan_tci;
__be16 vlan_proto;
u8 l2_data[MAX_L2_LEN];
};
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
static DEFINE_PER_CPU(struct ovs_frag_data, ovs_frag_data_storage);
+#endif
#define DEFERRED_ACTION_FIFO_SIZE 10
struct action_fifo {
return 0;
}
-#if LINUX_VERSION_CODE > KERNEL_VERSION(3,9,0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
static int ovs_vport_output(OVS_VPORT_OUTPUT_PARAMS)
{
struct ovs_frag_data *data = get_pcpu_ptr(ovs_frag_data_storage);
}
__skb_dst_copy(skb, data->dst);
- *OVS_CB(skb) = data->cb;
+ *OVS_GSO_CB(skb) = data->cb;
ovs_skb_set_inner_protocol(skb, data->inner_protocol);
skb->vlan_tci = data->vlan_tci;
skb->vlan_proto = data->vlan_proto;
data = get_pcpu_ptr(ovs_frag_data_storage);
data->dst = (unsigned long) skb_dst(skb);
data->vport = vport;
- data->cb = *OVS_CB(skb);
+ data->cb = *OVS_GSO_CB(skb);
data->inner_protocol = ovs_skb_get_inner_protocol(skb);
data->vlan_tci = skb->vlan_tci;
data->vlan_proto = skb->vlan_proto;
err:
kfree_skb(skb);
}
-#else /* <= 3.9 */
+#else /* < 3.10 */
static void ovs_fragment(struct vport *vport, struct sk_buff *skb, u16 mru,
__be16 ethertype)
{