Commit 234d1eff authored by Sabrina Dubroca's avatar Sabrina Dubroca Committed by Steffen Klassert
Browse files

xfrm: restore GSO for SW crypto



Commit 49431af6 incorrectly assumes that the GSO path is only used
by HW offload, but it's also useful for SW crypto.

This patch re-enables GSO for SW crypto. It's not an exact revert to
preserve the other changes made to xfrm_dev_offload_ok afterwards, but
it reverts all of its effects.

Fixes: 49431af6 ("xfrm: rely on XFRM offload")
Signed-off-by: default avatarSabrina Dubroca <sd@queasysnail.net>
Reviewed-by: default avatarLeon Romanovsky <leonro@nvidia.com>
Reviewed-by: default avatarZhu Yanjun <yanjun.zhu@linux.dev>
Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
parent 42e42562
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -415,10 +415,12 @@ bool xfrm_dev_offload_ok(struct sk_buff *skb, struct xfrm_state *x)
	struct net_device *dev = x->xso.dev;
	bool check_tunnel_size;

	if (x->xso.type == XFRM_DEV_OFFLOAD_UNSPECIFIED)
	if (!x->type_offload ||
	    (x->xso.type == XFRM_DEV_OFFLOAD_UNSPECIFIED && x->encap))
		return false;

	if ((dev == xfrm_dst_path(dst)->dev) && !xdst->child->xfrm) {
	if ((!dev || dev == xfrm_dst_path(dst)->dev) &&
	    !xdst->child->xfrm) {
		mtu = xfrm_state_mtu(x, xdst->child_mtu_cached);
		if (skb->len <= mtu)
			goto ok;
@@ -430,6 +432,9 @@ bool xfrm_dev_offload_ok(struct sk_buff *skb, struct xfrm_state *x)
	return false;

ok:
	if (!dev)
		return true;

	check_tunnel_size = x->xso.type == XFRM_DEV_OFFLOAD_PACKET &&
			    x->props.mode == XFRM_MODE_TUNNEL;
	switch (x->props.family) {