skb_warn_if_lro(skb);
skb_push(skb, ETH_HLEN);
- compute_ip_summed(skb, false);
+
+ if (unlikely(compute_ip_summed(skb, false))) {
+ kfree_skb(skb);
+ return;
+ }
vlan_copy_skb_tci(skb);
vport_receive(vport, skb);
int len;
skb->dev = netdev_vport->dev;
- forward_ip_summed(skb);
+ forward_ip_summed(skb, true);
if (vlan_tx_tag_present(skb) && !dev_supports_vlan_tx(skb->dev)) {
- int err;
int features = 0;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
features = skb->dev->features & skb->dev->vlan_features;
#endif
- err = vswitch_skb_checksum_setup(skb);
- if (unlikely(err)) {
- kfree_skb(skb);
- return 0;
- }
-
if (!vlan_tso)
features &= ~(NETIF_F_TSO | NETIF_F_TSO6 |
NETIF_F_UFO | NETIF_F_FSO);
goto tag;
}
- kfree_skb(skb);
- skb = nskb;
- if (IS_ERR(skb))
+ if (IS_ERR(nskb)) {
+ kfree_skb(skb);
return 0;
+ }
+ consume_skb(skb);
+ skb = nskb;
len = 0;
do {
}
const struct vport_ops netdev_vport_ops = {
- .type = ODP_VPORT_TYPE_NETDEV,
+ .type = OVS_VPORT_TYPE_NETDEV,
.flags = (VPORT_F_REQUIRED |
(USE_VPORT_STATS ? VPORT_F_GEN_STATS : 0)),
.init = netdev_init,