[ovs-dev] [PATCH] datapath: Don't drop MTU-sized VLAN packets from userspace
Justin Pettit
jpettit at nicira.com
Sat Sep 5 02:06:24 UTC 2009
In this version of the patch, I forgot to thank Ben for his help
diagnosing the issue. It's been fixed in the commit message that will
eventually go out.
--Justin
On Sep 4, 2009, at 6:03 PM, Justin Pettit wrote:
> Before transimitting a packet, the datapath checks that the packet
> length is not greater than the MTU. It determines the length based on
> the 'protocol' field in the skb. If 'protocol' is ETH_P_8021Q, it
> reduces
> the packet length as stored in the 'len' field by four bytes, which
> is the size of a VLAN tag header. Unfortunately, packets that arrived
> from userspace were not having the 'protocol' field set, which would
> cause MTU-sized packets to be dropped. This commit sets the
> 'protocol'
> field appropriately.
>
> NIC-17 and NIC-26
> ---
> datapath/datapath.c | 9 +++++++++
> 1 files changed, 9 insertions(+), 0 deletions(-)
>
> diff --git a/datapath/datapath.c b/datapath/datapath.c
> index 1460215..215dfdf 100644
> --- a/datapath/datapath.c
> +++ b/datapath/datapath.c
> @@ -1127,6 +1127,7 @@ static int do_execute(struct datapath *dp,
> const struct odp_execute *executep)
> struct odp_flow_key key;
> struct sk_buff *skb;
> struct sw_flow_actions *actions;
> + struct ethhdr *eth;
> int err;
>
> err = -EFAULT;
> @@ -1166,6 +1167,14 @@ static int do_execute(struct datapath *dp,
> const struct odp_execute *executep)
> execute.length))
> goto error_free_skb;
>
> + skb_reset_mac_header(skb);
> + eth = eth_hdr(skb);
> +
> + if (ntohs(eth->h_proto) >= 1536)
> + skb->protocol = eth->h_proto;
> + else
> + skb->protocol = htons(ETH_P_802_2);
> +
> flow_extract(skb, execute.in_port, &key);
> err = execute_actions(dp, skb, &key, actions->actions,
> actions->n_actions, GFP_KERNEL);
> --
> 1.5.5
>
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev_openvswitch.org
More information about the dev
mailing list