#include "vport-internal_dev.h"
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) || \
- LINUX_VERSION_CODE > KERNEL_VERSION(2,6,39)
-#error Kernels before 2.6.18 or after 2.6.39 are not supported by this version of Open vSwitch.
+ LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
+#error Kernels before 2.6.18 or after 3.0 are not supported by this version of Open vSwitch.
#endif
int (*dp_ioctl_hook)(struct net_device *dev, struct ifreq *rq, int cmd);
}
if (is_frag && dp->drop_frags) {
- kfree_skb(skb);
+ consume_skb(skb);
stats_counter_off = offsetof(struct dp_stats_percpu, n_frags);
goto out;
}
if (skb_is_gso(skb)) {
struct sk_buff *nskb = skb_gso_segment(skb, NETIF_F_SG | NETIF_F_HW_CSUM);
- kfree_skb(skb);
- skb = nskb;
- if (IS_ERR(skb)) {
- err = PTR_ERR(skb);
+ if (IS_ERR(nskb)) {
+ kfree_skb(skb);
+ err = PTR_ERR(nskb);
goto err;
}
+ consume_skb(skb);
+ skb = nskb;
}
err = queue_control_packets(dp, skb, upcall_info);
if (err)
goto err_kfree_skbs;
- kfree_skb(skb);
+ consume_skb(skb);
skb = nskb;
} while (skb);
return 0;