On Mon, Jul 29, 2013 at 3:48 PM, Pravin B Shelar <[email protected]> wrote:
> diff --git a/datapath/vport-lisp.c b/datapath/vport-lisp.c
> index 847cb39..9ffa74f 100644
> --- a/datapath/vport-lisp.c
> +++ b/datapath/vport-lisp.c
> +static void handle_offloads(struct sk_buff *skb)
> {
> - int err;
> + if (skb_is_gso(skb))
> + OVS_GSO_CB(skb)->fix_segment = lisp_build_header;
Is it right to use lisp_build_header() here? It seems like this stuff
should be constant across segments and will just get regenerated but
the UDP length won't be updated.
> +static int tnl_send(struct vport *vport, struct sk_buff *skb)
> {
Is it possible to reorganize this function a little bit to more
closely mirror the GRE/VXLAN code paths? It seems like some of the
things like the split between lisp_tnl_send()/tnl_send() and the code
order are a little bit historical. The more the superficial
differences that we can remove the easier I think it will be to
maintain - particularly in areas like the checksum compatibility code.
> min_headroom = LL_RESERVED_SPACE(rt_dst(rt).dev) +
> rt_dst(rt).header_len
> + tunnel_hlen
I think we probably can remove the VLAN portion of the headroom
calculation given that we drop all the L2 information.
> @@ -480,77 +422,27 @@ static int ovs_tnl_send(struct vport *vport, struct
> sk_buff *skb,
> goto err_free_rt;
> }
>
> + __skb_push(skb, LISP_HLEN);
> + skb_reset_transport_header(skb);
> +
> + lisp_build_header(skb);
> + udph = udp_hdr(skb);
> + udph->dest = lisp_port->dst_port;
> + udph->source = htons(ovs_tnl_get_src_port(skb));
Should rename ovs_tnl_get_src_port() now that it is LISP-specific? I
think all of the other former tunnel functions have now been renamed
or deleted. On the other hand, maybe we should just use
vxlan_src_port().
> - /* Push IP header. */
> - iph = ip_hdr(skb);
> - iph->version = 4;
> - iph->ihl = sizeof(struct iphdr) >> 2;
> - iph->protocol = ipproto;
> - iph->daddr = OVS_CB(skb)->tun_key->ipv4_dst;
> - iph->saddr = saddr;
> - iph->tos = OVS_CB(skb)->tun_key->ipv4_tos;
> - iph->ttl = OVS_CB(skb)->tun_key->ipv4_ttl;
> - iph->frag_off = OVS_CB(skb)->tun_key->tun_flags &
> + handle_offloads(skb);
Do we want to do this before setting the transport header since we are
calling skb_reset_inner_headers()?
X-CudaMail-Whitelist-To: [email protected]
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev