Skip to content

Commit

Permalink
vxlan: simplify vxlan_remcsum
Browse files Browse the repository at this point in the history
Part of the parameters is not needed. Simplify the caller of this function
in preparation of making vxlan rx more comprehensible.

Signed-off-by: Jiri Benc <jbenc@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jiri Benc authored and David S. Miller committed Feb 18, 2016
1 parent 54bfd87 commit be5cfea
Showing 1 changed file with 8 additions and 14 deletions.
22 changes: 8 additions & 14 deletions drivers/net/vxlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -1135,29 +1135,25 @@ static int vxlan_igmp_leave(struct vxlan_dev *vxlan)
return ret;
}

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

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

start = vxlan_rco_start(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))
return NULL;

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

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

return vh;
return true;
}

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

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

flags &= ~VXLAN_HF_RCO;
Expand Down

0 comments on commit be5cfea

Please sign in to comment.