[ofa-general] Re: [PATCH] IPOIB: use LRO

Roland Dreier rdreier at cisco.com
Thu Dec 6 15:27:06 PST 2007


 > TODO:
 > add checksum offload support to the core and hw devices.

Given this I assume this is just an RFC and you don't expect this to
be merged as-is, right?

 > +static int get_skb_hdr(struct sk_buff *skb, void **iphdr,
 > +		       void **tcph, u64 *hdr_flags, void *priv)
 > +{
 > +	unsigned int ip_len;
 > +	struct iphdr *iph;
 > +
 > +	/* FIXME - verify CQE checksum ??? */
 > +
 > +	/* non tcp packet */

I don't understand this comment here.

 > +	skb_reset_network_header(skb);
 > +	iph = ip_hdr(skb);
 > +	if (iph->protocol != IPPROTO_TCP)
 > +		return -1;
 > +
 > +	ip_len = ip_hdrlen(skb);
 > +	skb_set_transport_header(skb, ip_len);
 > +	*tcph = tcp_hdr(skb);
 > +
 > +	/* check if ip header and tcp header are complete */
 > +	if (iph->tot_len < ip_len + tcp_hdrlen(skb))
 > +		return -1;
 > +
 > +	*hdr_flags = LRO_IPV4 | LRO_TCP;

I don't see anywhere that you test the ethertype for IPv4 vs. IPv6.
So how do you know you have an IPv4 packet here?  I guess you need the
check before you use ip_hdr() above.

 > +	*iphdr = iph;
 > +
 > +	return 0;



More information about the general mailing list