On Wed, Mar 7, 2018 at 1:18 PM, Pravin Shelar <pshe...@ovn.org> wrote: > On Tue, Mar 6, 2018 at 5:56 PM, William Tu <u9012...@gmail.com> wrote: >> When sending a packet to a tunnel device, the dev's hard_header_len >> could be larger than the skb->len in function packet_length(). >> In the case of ip6gretap/erspan, hard_header_len = LL_MAX_HEADER + t_hlen, >> which is around 180, and an ARP packet sent to this tunnel has >> skb->len = 42. This causes the 'unsign int length' to become super >> large because it is negative value, causing the later ovs_vport_send >> to drop it due to over-mtu size. The patch fixes it by setting it to 0. >> >> Signed-off-by: William Tu <u9012...@gmail.com> >> --- >> net/openvswitch/vport.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/net/openvswitch/vport.c b/net/openvswitch/vport.c >> index b6c8524032a0..7718d5b4cf8a 100644 >> --- a/net/openvswitch/vport.c >> +++ b/net/openvswitch/vport.c >> @@ -467,7 +467,7 @@ int ovs_vport_receive(struct vport *vport, struct >> sk_buff *skb, >> static unsigned int packet_length(const struct sk_buff *skb, >> struct net_device *dev) > Can you also change return type of this function? >
OK, I will change to int. Thanks