Commit e0aeb9b9 authored by Raed Salem's avatar Raed Salem Committed by Leon Romanovsky
Browse files

xfrm: add new device offload acquire flag



During XFRM acquire flow, a default SA is created to be updated later,
once acquire netlink message is handled in user space. When the relevant
policy is offloaded this default SA is also offloaded to IPsec offload
supporting driver, however this SA does not have context suitable for
offloading in HW, nor is interesting to offload to HW, consequently needs
a special driver handling apart from other offloaded SA(s).
Add a special flag that marks such SA so driver can handle it correctly.

Signed-off-by: default avatarRaed Salem <raeds@nvidia.com>
Link: https://lore.kernel.org/r/f5da0834d8c6b82ab9ba38bd4a0c55e71f0e3dab.1678714336.git.leon@kernel.org


Acked-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
parent fa5aa2f8
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -138,6 +138,10 @@ enum {
	XFRM_DEV_OFFLOAD_PACKET,
};

enum {
	XFRM_DEV_OFFLOAD_FLAG_ACQ = 1,
};

struct xfrm_dev_offload {
	struct net_device	*dev;
	netdevice_tracker	dev_tracker;
@@ -145,6 +149,7 @@ struct xfrm_dev_offload {
	unsigned long		offload_handle;
	u8			dir : 2;
	u8			type : 2;
	u8			flags : 2;
};

struct xfrm_mode {
+1 −0
Original line number Diff line number Diff line
@@ -1272,6 +1272,7 @@ xfrm_state_find(const xfrm_address_t *daddr, const xfrm_address_t *saddr,
			xso->dir = xdo->dir;
			xso->dev = xdo->dev;
			xso->real_dev = xdo->real_dev;
			xso->flags = XFRM_DEV_OFFLOAD_FLAG_ACQ;
			netdev_tracker_alloc(xso->dev, &xso->dev_tracker,
					     GFP_ATOMIC);
			error = xso->dev->xfrmdev_ops->xdo_dev_state_add(x, NULL);