*csum = csum_ipv6_magic(&fl->fl6_src, &fl->fl6_dst, len, fl->proto, tmp_csum); 
tmp_csum = csum_ipv6_magic(&fl->fl6_src, &fl->fl6_dst, inet->cork.length, fl->proto, tmp_csum); 
static int rawv6_push_pending_frames(struct sock *sk, struct flowi *fl,				     struct raw6_sock *rp, int len){	struct sk_buff *skb;	int err = 0;	u16 *csum;	u32 tmp_csum;	if (!rp->checksum)		goto send;	if ((skb = skb_peek(&sk->sk_write_queue)) == NULL)		goto out;	if (rp->offset + 1 < len)		csum = (u16 *)(skb->h.raw + rp->offset);	else {		err = -EINVAL;		goto out;	}	/* should be check HW csum miyazawa */	if (skb_queue_len(&sk->sk_write_queue) == 1) {		/*		 * Only one fragment on the socket.		 */		tmp_csum = skb->csum;	} else {		tmp_csum = 0;		skb_queue_walk(&sk->sk_write_queue, skb) {			tmp_csum = csum_add(tmp_csum, skb->csum);		}	}	/* in case cksum was not initialized */	if (unlikely(*csum))		tmp_csum = csum_sub(tmp_csum, *csum);	*csum = csum_ipv6_magic(&fl->fl6_src,				&fl->fl6_dst,				len, fl->proto, tmp_csum);	if (*csum == 0)		*csum = -1;send:	err = ip6_push_pending_frames(sk);out:	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/357b40a18b04c699da1d45608436e9b76b50e251/raw.c/clean/net/ipv6/raw.c