From: William Tu <hidden> Date: 2018-03-07 01:57:20
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 <redacted>
---
net/openvswitch/vport.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
On Tue, Mar 6, 2018 at 5:56 PM, William Tu [off-list ref] wrote:
quoted hunk
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 <redacted>
---
net/openvswitch/vport.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
From: William Tu <hidden> Date: 2018-03-07 22:43:03
On Wed, Mar 7, 2018 at 1:18 PM, Pravin Shelar [off-list ref] wrote:
On Tue, Mar 6, 2018 at 5:56 PM, William Tu [off-list ref] wrote:
quoted
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 <redacted>
---
net/openvswitch/vport.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)