datapath: Drop BUG_ON when checksumming and copying.
authorJesse Gross <jesse@nicira.com>
Thu, 3 Mar 2011 21:53:08 +0000 (13:53 -0800)
committerJesse Gross <jesse@nicira.com>
Thu, 3 Mar 2011 22:56:20 +0000 (14:56 -0800)
Normally when performing checksum offloading the transport header
must be present in the linear data area.  However, this might not
be the case with packets processed by GRO.  On transmit these
packets are processed by GSO if emulation of checksum offloading
needs to be performed.  Unlike skb_checksum_help(), the GSO code
does not have any requirements about the packet structure.  Since
our code that copies and checksums packets to userspace is called
in conditions similar to GSO and does not have any assumptions
about layout, drop the BUG_ON assertion.

NIC-343

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
datapath/datapath.c

index ebfc2e9..5633dc9 100644 (file)
@@ -359,7 +359,6 @@ static void copy_and_csum_skb(struct sk_buff *skb, void *to)
 
        get_skb_csum_pointers(skb, &csum_start, &csum_offset);
        csum_start -= skb_headroom(skb);
-       BUG_ON(csum_start >= skb_headlen(skb));
 
        skb_copy_bits(skb, 0, to, csum_start);