Commit 89edf402 authored by Leon Romanovsky's avatar Leon Romanovsky Committed by Paolo Abeni
Browse files

xfrm: Support UDP encapsulation in packet offload mode



Since mlx5 supports UDP encapsulation in packet offload, change the XFRM
core to allow users to configure it.

Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
Acked-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent d6595493
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -247,12 +247,6 @@ int xfrm_dev_state_add(struct net *net, struct xfrm_state *x,
		return -EINVAL;
	}

	/* We don't yet support UDP encapsulation and TFC padding. */
	if (x->encap || x->tfcpad) {
		NL_SET_ERR_MSG(extack, "Encapsulation and TFC padding can't be offloaded");
		return -EINVAL;
	}

	if (xuo->flags &
	    ~(XFRM_OFFLOAD_IPV6 | XFRM_OFFLOAD_INBOUND | XFRM_OFFLOAD_PACKET)) {
		NL_SET_ERR_MSG(extack, "Unrecognized flags in offload request");
@@ -260,6 +254,13 @@ int xfrm_dev_state_add(struct net *net, struct xfrm_state *x,
	}

	is_packet_offload = xuo->flags & XFRM_OFFLOAD_PACKET;

	/* We don't yet support UDP encapsulation and TFC padding. */
	if ((!is_packet_offload && x->encap) || x->tfcpad) {
		NL_SET_ERR_MSG(extack, "Encapsulation and TFC padding can't be offloaded");
		return -EINVAL;
	}

	dev = dev_get_by_index(net, xuo->ifindex);
	if (!dev) {
		if (!(xuo->flags & XFRM_OFFLOAD_INBOUND)) {