Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be5cfeab authored by Jiri Benc's avatar Jiri Benc Committed by David S. Miller
Browse files

vxlan: simplify vxlan_remcsum



Part of the parameters is not needed. Simplify the caller of this function
in preparation of making vxlan rx more comprehensible.

Signed-off-by: default avatarJiri Benc <jbenc@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 54bfd872
Loading
Loading
Loading
Loading
+8 −14
Original line number Original line Diff line number Diff line
@@ -1135,29 +1135,25 @@ static int vxlan_igmp_leave(struct vxlan_dev *vxlan)
	return ret;
	return ret;
}
}


static struct vxlanhdr *vxlan_remcsum(struct sk_buff *skb, struct vxlanhdr *vh,
static bool vxlan_remcsum(struct sk_buff *skb, u32 vxflags, __be32 vni_field)
				      size_t hdrlen, __be32 vni_field,
				      bool nopartial)
{
{
	size_t start, offset, plen;
	size_t start, offset, plen;


	if (skb->remcsum_offload)
	if (skb->remcsum_offload)
		return vh;
		return true;


	start = vxlan_rco_start(vni_field);
	start = vxlan_rco_start(vni_field);
	offset = start + vxlan_rco_offset(vni_field);
	offset = start + vxlan_rco_offset(vni_field);


	plen = hdrlen + offset + sizeof(u16);
	plen = sizeof(struct vxlanhdr) + offset + sizeof(u16);


	if (!pskb_may_pull(skb, plen))
	if (!pskb_may_pull(skb, plen))
		return NULL;
		return false;

	vh = (struct vxlanhdr *)(udp_hdr(skb) + 1);


	skb_remcsum_process(skb, (void *)vh + hdrlen, start, offset,
	skb_remcsum_process(skb, (void *)(vxlan_hdr(skb) + 1), start, offset,
			    nopartial);
			    !!(vxflags & VXLAN_F_REMCSUM_NOPARTIAL));


	return vh;
	return true;
}
}


static void vxlan_rcv(struct vxlan_sock *vs, struct sk_buff *skb,
static void vxlan_rcv(struct vxlan_sock *vs, struct sk_buff *skb,
@@ -1285,9 +1281,7 @@ static int vxlan_udp_encap_recv(struct sock *sk, struct sk_buff *skb)
		goto drop;
		goto drop;


	if ((flags & VXLAN_HF_RCO) && (vs->flags & VXLAN_F_REMCSUM_RX)) {
	if ((flags & VXLAN_HF_RCO) && (vs->flags & VXLAN_F_REMCSUM_RX)) {
		if (!vxlan_remcsum(skb, vxlan_hdr(skb), sizeof(struct vxlanhdr),
		if (!vxlan_remcsum(skb, vs->flags, vni_field))
				   vni_field,
				   !!(vs->flags & VXLAN_F_REMCSUM_NOPARTIAL)))
			goto drop;
			goto drop;


		flags &= ~VXLAN_HF_RCO;
		flags &= ~VXLAN_HF_RCO;