]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfrm: rely on XFRM offload
authorLeon Romanovsky <leonro@nvidia.com>
Wed, 19 Feb 2025 13:50:59 +0000 (15:50 +0200)
committerSteffen Klassert <steffen.klassert@secunet.com>
Fri, 21 Feb 2025 07:08:15 +0000 (08:08 +0100)
After change of initialization of x->type_offload pointer to be valid
only for offloaded SAs. There is no need to rely on both x->type_offload
and x->xso.type to determine if SA is offloaded or not.

Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/xfrm/xfrm_device.c

index 97c8030cc41733fa5460ae22721a580df69d6ff0..8d24f47431079a6b30464846605a1c54047636f4 100644 (file)
@@ -419,13 +419,11 @@ bool xfrm_dev_offload_ok(struct sk_buff *skb, struct xfrm_state *x)
        struct xfrm_dst *xdst = (struct xfrm_dst *)dst;
        struct net_device *dev = x->xso.dev;
 
-       if (!x->type_offload ||
-           (x->xso.type == XFRM_DEV_OFFLOAD_UNSPECIFIED && x->encap))
+       if (x->xso.type == XFRM_DEV_OFFLOAD_UNSPECIFIED)
                return false;
 
        if (x->xso.type == XFRM_DEV_OFFLOAD_PACKET ||
-           ((!dev || (dev == xfrm_dst_path(dst)->dev)) &&
-            !xdst->child->xfrm)) {
+           ((dev == xfrm_dst_path(dst)->dev) && !xdst->child->xfrm)) {
                mtu = xfrm_state_mtu(x, xdst->child_mtu_cached);
                if (skb->len <= mtu)
                        goto ok;
@@ -437,8 +435,8 @@ bool xfrm_dev_offload_ok(struct sk_buff *skb, struct xfrm_state *x)
        return false;
 
 ok:
-       if (dev && dev->xfrmdev_ops && dev->xfrmdev_ops->xdo_dev_offload_ok)
-               return x->xso.dev->xfrmdev_ops->xdo_dev_offload_ok(skb, x);
+       if (dev->xfrmdev_ops->xdo_dev_offload_ok)
+               return dev->xfrmdev_ops->xdo_dev_offload_ok(skb, x);
 
        return true;
 }