return dev_gro_receive(napi, skb);
drop:
- return 2;
+ return GRO_DROP;
}
int vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp,
unsigned int vlan_tci, struct sk_buff *skb)
{
- skb_gro_reset_offset(skb);
+ if (netpoll_rx_on(skb))
+ return vlan_hwaccel_receive_skb(skb, grp, vlan_tci);
- if (netpoll_receive_skb(skb))
- return NET_RX_DROP;
+ skb_gro_reset_offset(skb);
return napi_skb_finish(vlan_gro_common(napi, grp, vlan_tci, skb), skb);
}
if (!skb)
return NET_RX_DROP;
- if (netpoll_receive_skb(skb))
- return NET_RX_DROP;
+ if (netpoll_rx_on(skb)) {
+ skb->protocol = eth_type_trans(skb, skb->dev);
+ return vlan_hwaccel_receive_skb(skb, grp, vlan_tci);
+ }
return napi_frags_finish(napi, skb,
vlan_gro_common(napi, grp, vlan_tci, skb));