|
@@ -464,10 +464,10 @@ int ovs_vport_receive(struct vport *vport, struct sk_buff *skb,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static unsigned int packet_length(const struct sk_buff *skb,
|
|
|
- struct net_device *dev)
|
|
|
+static int packet_length(const struct sk_buff *skb,
|
|
|
+ struct net_device *dev)
|
|
|
{
|
|
|
- unsigned int length = skb->len - dev->hard_header_len;
|
|
|
+ int length = skb->len - dev->hard_header_len;
|
|
|
|
|
|
if (!skb_vlan_tag_present(skb) &&
|
|
|
eth_type_vlan(skb->protocol))
|
|
@@ -478,7 +478,7 @@ static unsigned int packet_length(const struct sk_buff *skb,
|
|
|
* account for 802.1ad. e.g. is_skb_forwardable().
|
|
|
*/
|
|
|
|
|
|
- return length;
|
|
|
+ return length > 0 ? length : 0;
|
|
|
}
|
|
|
|
|
|
void ovs_vport_send(struct vport *vport, struct sk_buff *skb, u8 mac_proto)
|