Be explicit with XFRM offload direction
Subsystems (7)
cover Be explicit with XFRM offload direction
From: Leon Romanovsky <[email protected]>
Hi Steffen,
I may admit that the title of this series is not the best one as it contains straightforward cleanups and code that converts flags to something less confusing.
This series follows removal of FPGA IPsec code from the mlx5 driver and based on net-next commit 4950b6990e3b ("Merge branch 'ocelot-vcap-cleanups'").
As such, first two patches delete code that was used by mlx5 FPGA code but isn't needed anymore.
Third patch is simple struct rename.
Rest of the patches separate user's provided flags variable from driver's usage. This allows us to created more simple in-kernel interface, that supports type checking without blending different properties into one variable. It is achieved by converting flags to specific bitfield variables with clear, meaningful names.
Such change allows us more clear addition of new input flags needed to mark IPsec offload type.
The followup code uses this extensively:
https://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git/log/?h=xfrm-next
Thanks
Leon Romanovsky (8):
xfrm: free not used XFRM_ESP_NO_TRAILER flag
xfrm: delete not used number of external headers
xfrm: rename xfrm_state_offload struct to allow reuse
xfrm: store and rely on direction to construct offload flags
ixgbe: propagate XFRM offload state direction instead of flags
netdevsim: rely on XFRM state direction instead of flags net/mlx5e: Use XFRM state direction instead of flags
xfrm: drop not needed flags variable in XFRM offload struct
.../net/ethernet/intel/ixgbe/ixgbe_ipsec.c | 9 ++++----- .../net/ethernet/intel/ixgbe/ixgbe_ipsec.h | 2 +- drivers/net/ethernet/intel/ixgbevf/ipsec.c | 6 +++--- drivers/net/ethernet/intel/ixgbevf/ipsec.h | 2 +- .../mellanox/mlx5/core/en_accel/ipsec.c | 10 +++++----- drivers/net/netdevsim/ipsec.c | 2 +- include/net/xfrm.h | 20 +++++++++++-------- net/ipv4/esp4.c | 6 ------ net/ipv6/esp6.c | 6 ------ net/xfrm/xfrm_device.c | 15 +++++++------- net/xfrm/xfrm_state.c | 4 ++-- net/xfrm/xfrm_user.c | 5 +++-- 12 files changed, 40 insertions(+), 47 deletions(-)
Signature · 1 line
2.35.1
PATCH 1/8 xfrm: free not used XFRM_ESP_NO_TRAILER flag
From: Leon Romanovsky <[email protected]>
After removal of Innova IPsec support from mlx5 driver, the last user of this XFRM_ESP_NO_TRAILER was gone too. This means that we can safely remove it as no other hardware is capable (or need) to remove ESP trailer.
--- include/net/xfrm.h | 2 +- net/ipv4/esp4.c | 6 ------ net/ipv6/esp6.c | 6 ------ 3 files changed, 1 insertion(+), 13 deletions(-)
include/net/xfrm.h +1 -1
@@ -1006,7 +1006,7 @@ struct xfrm_offload {#define CRYPTO_FALLBACK 8#define XFRM_GSO_SEGMENT 16#define XFRM_GRO 32 -#define XFRM_ESP_NO_TRAILER 64 +/* 64 is free */ #define XFRM_DEV_RESUME 128#define XFRM_XMIT 256
net/ipv4/esp4.c +0 -6
@@ -705,7 +705,6 @@ static int esp_output(struct xfrm_state *x, struct sk_buff *skb)static inline int esp_remove_trailer (struct sk_buff *skb) {struct xfrm_state *x =xfrm_input_state (skb); -struct xfrm_offload *xo =xfrm_offload (skb);struct crypto_aead *aead = x->data;int alen, hlen, elen;int padlen, trimlen;
@@ -717,11 +716,6 @@ static inline int esp_remove_trailer(struct sk_buff *skb) hlen =sizeof (struct ip_esp_hdr ) +crypto_aead_ivsize (aead); elen = skb->len - hlen; -if (xo && (xo->flags &XFRM_ESP_NO_TRAILER )) { - ret = xo->proto; - goto out; - } -if (skb_copy_bits (skb, skb->len - alen -2 , nexthdr,2 ))BUG ();
net/ipv6/esp6.c +0 -6
@@ -741,7 +741,6 @@ static int esp6_output(struct xfrm_state *x, struct sk_buff *skb)static inline int esp_remove_trailer (struct sk_buff *skb) {struct xfrm_state *x =xfrm_input_state (skb); -struct xfrm_offload *xo =xfrm_offload (skb);struct crypto_aead *aead = x->data;int alen, hlen, elen;int padlen, trimlen;
@@ -753,11 +752,6 @@ static inline int esp_remove_trailer(struct sk_buff *skb) hlen =sizeof (struct ip_esp_hdr ) +crypto_aead_ivsize (aead); elen = skb->len - hlen; -if (xo && (xo->flags &XFRM_ESP_NO_TRAILER )) { - ret = xo->proto; - goto out; - } - ret =skb_copy_bits (skb, skb->len - alen -2 , nexthdr,2 );BUG_ON (ret);
Signature · 1 line
2.35.1
Re: [PATCH ipsec-next 1/8] xfrm: free not used XFRM_ESP_NO_TRAILER flag
From: Leon Romanovsky <[email protected]>
Date: Thu, 5 May 2022 13:06:38 +0300
Quoted 8 lines
From: Leon Romanovsky <[email protected]>
After removal of Innova IPsec support from mlx5 driver, the last user of this
XFRM_ESP_NO_TRAILERwas gone too. This means that we can safely remove it as no other hardware is capable (or need) to remove ESP trailer.Reviewed-by Raed Salem <[email protected]>Signed-off-by Leon Romanovsky <[email protected]>
PATCH 2/8 xfrm: delete not used number of external headers
In reply to Leon RomanovskyFrom: Leon Romanovsky <[email protected]>
num_exthdrs is set but never used, so delete it.
--- include/net/xfrm.h | 1 - net/xfrm/xfrm_device.c | 2 -- 2 files changed, 3 deletions(-)
include/net/xfrm.h +0 -1
@@ -131,7 +131,6 @@ struct xfrm_state_offload {netdevice_tracker dev_tracker;struct net_device *real_dev;unsigned long offload_handle; -unsigned int num_exthdrs;u8 flags; };
net/xfrm/xfrm_device.c +0 -2
@@ -264,13 +264,11 @@ int xfrm_dev_state_add(struct net *net, struct xfrm_state *x, xso->dev = dev;netdev_tracker_alloc (dev, &xso->dev_tracker,GFP_ATOMIC ); xso->real_dev = dev; - xso->num_exthdrs =1 ;/* Don't forward bit that is not implemented */ xso->flags = xuo->flags & ~XFRM_OFFLOAD_IPV6 ; err = dev->xfrmdev_ops->xdo_dev_state_add (x);if (err) { - xso->num_exthdrs =0 ; xso->flags =0 ; xso->dev =NULL ; xso->real_dev =NULL ;
Signature · 1 line
2.35.1
Re: [PATCH ipsec-next 2/8] xfrm: delete not used number of external headers
From: Leon Romanovsky <[email protected]>
Date: Thu, 5 May 2022 13:06:39 +0300
Quoted 6 lines
From: Leon Romanovsky <[email protected]>
num_exthdrsis set but never used, so delete it.Reviewed-by Raed Salem <[email protected]>Signed-off-by Leon Romanovsky <[email protected]>
PATCH 3/8 xfrm: rename xfrm_state_offload struct to allow reuse
In reply to Leon RomanovskyFrom: Leon Romanovsky <[email protected]>
The struct xfrm_state_offload has all fields needed to hold information for offloaded policies too. In order to do not create new struct with same fields, let's rename existing one and reuse it later.
--- include/net/xfrm.h | 10 +++++----- net/xfrm/xfrm_device.c | 2 +- net/xfrm/xfrm_state.c | 4 ++-- net/xfrm/xfrm_user.c | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-)
include/net/xfrm.h +5 -5
@@ -126,7 +126,7 @@ struct xfrm_state_walk {struct xfrm_address_filter *filter; }; -struct xfrm_state_offload { +struct xfrm_dev_offload {struct net_device *dev;netdevice_tracker dev_tracker;struct net_device *real_dev;
@@ -246,7 +246,7 @@ struct xfrm_state {struct xfrm_lifetime_cur curlft;struct hrtimer mtimer; -struct xfrm_state_offload xso; +struct xfrm_dev_offload xso;/* used to fix curlft->add_time when changing date */ long saved_tmo;
@@ -1865,7 +1865,7 @@ bool xfrm_dev_offload_ok(struct sk_buff *skb, struct xfrm_state *x);static inline void xfrm_dev_state_advance_esn (struct xfrm_state *x) { -struct xfrm_state_offload *xso = &x->xso; +struct xfrm_dev_offload *xso = &x->xso;if (xso->dev && xso->dev->xfrmdev_ops->xdo_dev_state_advance_esn) xso->dev->xfrmdev_ops->xdo_dev_state_advance_esn (x);
@@ -1891,7 +1891,7 @@ static inline bool xfrm_dst_offload_ok(struct dst_entry *dst)static inline void xfrm_dev_state_delete (struct xfrm_state *x) { -struct xfrm_state_offload *xso = &x->xso; +struct xfrm_dev_offload *xso = &x->xso;if (xso->dev) xso->dev->xfrmdev_ops->xdo_dev_state_delete (x);
@@ -1899,7 +1899,7 @@ static inline void xfrm_dev_state_delete(struct xfrm_state *x)static inline void xfrm_dev_state_free (struct xfrm_state *x) { -struct xfrm_state_offload *xso = &x->xso; +struct xfrm_dev_offload *xso = &x->xso;struct net_device *dev = xso->dev;if (dev && dev->xfrmdev_ops) {
net/xfrm/xfrm_device.c +1 -1
@@ -212,7 +212,7 @@ int xfrm_dev_state_add(struct net *net, struct xfrm_state *x,int err;struct dst_entry *dst;struct net_device *dev; -struct xfrm_state_offload *xso = &x->xso; +struct xfrm_dev_offload *xso = &x->xso;xfrm_address_t *saddr;xfrm_address_t *daddr;
net/xfrm/xfrm_state.c +2 -2
@@ -751,7 +751,7 @@ xfrm_dev_state_flush_secctx_check(struct net *net, struct net_device *dev, boolfor (i =0 ; i <= net->xfrm.state_hmask; i++) {struct xfrm_state *x; -struct xfrm_state_offload *xso; +struct xfrm_dev_offload *xso;hlist_for_each_entry (x, net->xfrm.state_bydst+i, bydst) { xso = &x->xso;
@@ -835,7 +835,7 @@ int xfrm_dev_state_flush(struct net *net, struct net_device *dev, bool task_vali err = -ESRCH ;for (i =0 ; i <= net->xfrm.state_hmask; i++) {struct xfrm_state *x; -struct xfrm_state_offload *xso; +struct xfrm_dev_offload *xso; restart:hlist_for_each_entry (x, net->xfrm.state_bydst+i, bydst) { xso = &x->xso;
net/xfrm/xfrm_user.c +1 -1
@@ -840,7 +840,7 @@ static int copy_sec_ctx(struct xfrm_sec_ctx *s, struct sk_buff *skb)return 0 ; } -static int copy_user_offload (struct xfrm_state_offload *xso,struct sk_buff *skb) +static int copy_user_offload (struct xfrm_dev_offload *xso,struct sk_buff *skb) {struct xfrm_user_offload *xuo;struct nlattr *attr;
Signature · 1 line
2.35.1
Re: [PATCH ipsec-next 3/8] xfrm: rename xfrm_state_offload struct to allow reuse
From: Leon Romanovsky <[email protected]>
Date: Thu, 5 May 2022 13:06:40 +0300
Quoted 8 lines
From: Leon Romanovsky <[email protected]>
The struct
xfrm_state_offloadhas all fields needed to hold information for offloaded policies too. In order to do not create new struct with same fields, let's rename existing one and reuse it later.Reviewed-by Raed Salem <[email protected]>Signed-off-by Leon Romanovsky <[email protected]>
PATCH 4/8 xfrm: store and rely on direction to construct offload flags
In reply to Leon RomanovskyFrom: Leon Romanovsky <[email protected]>
XFRM state doesn't need anything from flags except to understand direction, so store it separately. For future patches, such change will allow us to reuse xfrm_dev_offload for policy offload too, which has three possible directions instead of two.
--- include/net/xfrm.h | 6 ++++++ net/xfrm/xfrm_device.c | 8 +++++++- net/xfrm/xfrm_user.c | 3 ++- 3 files changed, 15 insertions(+), 2 deletions(-)
include/net/xfrm.h +6 -0
@@ -126,12 +126,18 @@ struct xfrm_state_walk {struct xfrm_address_filter *filter; }; +enum { +XFRM_DEV_OFFLOAD_IN =1 , +XFRM_DEV_OFFLOAD_OUT , +}; +struct xfrm_dev_offload {struct net_device *dev;netdevice_tracker dev_tracker;struct net_device *real_dev;unsigned long offload_handle;u8 flags; +u8 dir :2 ; };struct xfrm_mode {
net/xfrm/xfrm_device.c +7 -1
@@ -117,7 +117,7 @@ struct sk_buff *validate_xmit_xfrm(struct sk_buff *skb, netdev_features_t featur sp =skb_sec_path (skb); x = sp->xvec[sp->len -1 ]; -if (xo->flags &XFRM_GRO || x->xso.flags &XFRM_OFFLOAD_INBOUND ) +if (xo->flags &XFRM_GRO || x->xso.dir ==XFRM_DEV_OFFLOAD_IN )return skb;/* This skb was already validated on the upper/virtual dev */
@@ -267,10 +267,16 @@ int xfrm_dev_state_add(struct net *net, struct xfrm_state *x,/* Don't forward bit that is not implemented */ xso->flags = xuo->flags & ~XFRM_OFFLOAD_IPV6 ; +if (xuo->flags &XFRM_OFFLOAD_INBOUND ) + xso->dir =XFRM_DEV_OFFLOAD_IN ; +else + xso->dir =XFRM_DEV_OFFLOAD_OUT ; + err = dev->xfrmdev_ops->xdo_dev_state_add (x);if (err) { xso->flags =0 ; xso->dev =NULL ; + xso->dir =0 ; xso->real_dev =NULL ;dev_put_track (dev, &xso->dev_tracker);
net/xfrm/xfrm_user.c +2 -1
@@ -852,7 +852,8 @@ static int copy_user_offload(struct xfrm_dev_offload *xso, struct sk_buff *skb) xuo =nla_data (attr);memset (xuo,0 ,sizeof (*xuo)); xuo->ifindex = xso->dev->ifindex; - xuo->flags = xso->flags; +if (xso->dir ==XFRM_DEV_OFFLOAD_IN ) + xuo->flags =XFRM_OFFLOAD_INBOUND ;return 0 ; }
Signature · 1 line
2.35.1
PATCH 5/8 ixgbe: propagate XFRM offload state direction instead of flags
In reply to Leon RomanovskyFrom: Leon Romanovsky <[email protected]>
Convert the ixgbe driver to rely on XFRM offload state direction instead of flags bits that were not checked at all.
--- drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c | 9 ++++----- drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.h | 2 +- drivers/net/ethernet/intel/ixgbevf/ipsec.c | 6 +++--- drivers/net/ethernet/intel/ixgbevf/ipsec.h | 2 +- 4 files changed, 9 insertions(+), 10 deletions(-)
drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c +4 -5
@@ -585,7 +585,7 @@ static int ixgbe_ipsec_add_sa(struct xfrm_state *xs)return -EINVAL ; } -if (xs->xso.flags &XFRM_OFFLOAD_INBOUND ) { +if (xs->xso.dir ==XFRM_DEV_OFFLOAD_IN ) {struct rx_sa rsa;if (xs->calg) {
@@ -757,7 +757,7 @@ static void ixgbe_ipsec_del_sa(struct xfrm_state *xs)u32 zerobuf[4 ] = {0 ,0 ,0 ,0 };u16 sa_idx; -if (xs->xso.flags &XFRM_OFFLOAD_INBOUND ) { +if (xs->xso.dir ==XFRM_DEV_OFFLOAD_IN ) {struct rx_sa *rsa;u8 ipi;
@@ -903,8 +903,7 @@ int ixgbe_ipsec_vf_add_sa(struct ixgbe_adapter *adapter, u32 *msgbuf, u32 vf)/* Tx IPsec offload doesn't seem to work on this * device, so block these requests for now. */ - sam->flags = sam->flags & ~XFRM_OFFLOAD_IPV6 ; -if (sam->flags !=XFRM_OFFLOAD_INBOUND ) { +if (sam->dir !=XFRM_DEV_OFFLOAD_IN ) { err = -EOPNOTSUPP ; goto err_out; }
@@ -915,7 +914,7 @@ int ixgbe_ipsec_vf_add_sa(struct ixgbe_adapter *adapter, u32 *msgbuf, u32 vf) goto err_out; } - xs->xso.flags = sam->flags; + xs->xso.dir = sam->dir; xs->id.spi = sam->spi; xs->id.proto = sam->proto; xs->props.family = sam->family;
drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.h +1 -1
@@ -74,7 +74,7 @@ struct ixgbe_ipsec {struct sa_mbx_msg {__be32 spi; -u8 flags; +u8 dir;u8 proto;u16 family;__be32 addr[4 ];
drivers/net/ethernet/intel/ixgbevf/ipsec.c +3 -3
@@ -25,7 +25,7 @@ static int ixgbevf_ipsec_set_pf_sa(struct ixgbevf_adapter *adapter,/* send the important bits to the PF */ sam = (struct sa_mbx_msg *)(&msgbuf[1 ]); - sam->flags = xs->xso.flags; + sam->dir = xs->xso.dir; sam->spi = xs->id.spi; sam->proto = xs->id.proto; sam->family = xs->props.family;
@@ -280,7 +280,7 @@ static int ixgbevf_ipsec_add_sa(struct xfrm_state *xs)return -EINVAL ; } -if (xs->xso.flags &XFRM_OFFLOAD_INBOUND ) { +if (xs->xso.dir ==XFRM_DEV_OFFLOAD_IN ) {struct rx_sa rsa;if (xs->calg) {
@@ -394,7 +394,7 @@ static void ixgbevf_ipsec_del_sa(struct xfrm_state *xs) adapter =netdev_priv (dev); ipsec = adapter->ipsec; -if (xs->xso.flags &XFRM_OFFLOAD_INBOUND ) { +if (xs->xso.dir ==XFRM_DEV_OFFLOAD_IN ) { sa_idx = xs->xso.offload_handle -IXGBE_IPSEC_BASE_RX_INDEX ;if (!ipsec->rx_tbl[sa_idx].used) {
drivers/net/ethernet/intel/ixgbevf/ipsec.h +1 -1
@@ -57,7 +57,7 @@ struct ixgbevf_ipsec {struct sa_mbx_msg {__be32 spi; -u8 flags; +u8 dir;u8 proto;u16 family;__be32 addr[4 ];
Signature · 1 line
2.35.1
PATCH 6/8 netdevsim: rely on XFRM state direction instead of flags
In reply to Leon RomanovskyFrom: Leon Romanovsky <[email protected]>
Make sure that netdevsim relies on direction and not on flags.
--- drivers/net/netdevsim/ipsec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/netdevsim/ipsec.c +1 -1
@@ -171,7 +171,7 @@ static int nsim_ipsec_add_sa(struct xfrm_state *xs)return ret; } -if (xs->xso.flags &XFRM_OFFLOAD_INBOUND ) { +if (xs->xso.dir ==XFRM_DEV_OFFLOAD_IN ) { sa.rx = true;if (xs->props.family ==AF_INET6 )
Signature · 1 line
2.35.1
Re: [PATCH ipsec-next 6/8] netdevsim: rely on XFRM state direction instead of flags
Quoted 6 lines · On Thu, 5 May 2022 13:06:43 +0300 Leon Romanovsky wrote:
From: Leon Romanovsky <[email protected]>
Make sure that netdevsim relies on direction and not on flags.
Reviewed-by Raed Salem <[email protected]>Signed-off-by Leon Romanovsky <[email protected]>
PATCH 7/8 net/mlx5e: Use XFRM state direction instead of flags
In reply to Leon RomanovskyFrom: Leon Romanovsky <[email protected]>
Convert mlx5 driver to use XFRM state direction.
--- .../net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c +5 -5
@@ -172,9 +172,9 @@ mlx5e_ipsec_build_accel_xfrm_attrs(struct mlx5e_ipsec_sa_entry *sa_entry, }/* action */ - attrs->action = (!(x->xso.flags &XFRM_OFFLOAD_INBOUND )) ? -MLX5_ACCEL_ESP_ACTION_ENCRYPT : -MLX5_ACCEL_ESP_ACTION_DECRYPT ; + attrs->action = (x->xso.dir ==XFRM_DEV_OFFLOAD_OUT ) ? +MLX5_ACCEL_ESP_ACTION_ENCRYPT : +MLX5_ACCEL_ESP_ACTION_DECRYPT ;/* flags */ attrs->flags |= (x->props.mode ==XFRM_MODE_TRANSPORT ) ? MLX5_ACCEL_ESP_FLAGS_TRANSPORT :
@@ -306,7 +306,7 @@ static int mlx5e_xfrm_add_state(struct xfrm_state *x)if (err) goto err_hw_ctx; -if (x->xso.flags &XFRM_OFFLOAD_INBOUND ) { +if (x->xso.dir ==XFRM_DEV_OFFLOAD_IN ) { err =mlx5e_ipsec_sadb_rx_add (sa_entry);if (err) goto err_add_rule;
@@ -333,7 +333,7 @@ static void mlx5e_xfrm_del_state(struct xfrm_state *x) {struct mlx5e_ipsec_sa_entry *sa_entry =to_ipsec_sa_entry (x); -if (x->xso.flags &XFRM_OFFLOAD_INBOUND ) +if (x->xso.dir ==XFRM_DEV_OFFLOAD_IN )mlx5e_ipsec_sadb_rx_del (sa_entry); }
Signature · 1 line
2.35.1
PATCH 8/8 xfrm: drop not needed flags variable in XFRM offload struct
In reply to Leon RomanovskyFrom: Leon Romanovsky <[email protected]>
After drivers were converted to rely on direction, the flags is not used anymore and can be removed.
--- include/net/xfrm.h | 1 - net/xfrm/xfrm_device.c | 3 --- 2 files changed, 4 deletions(-)
include/net/xfrm.h +0 -1
@@ -136,7 +136,6 @@ struct xfrm_dev_offload {netdevice_tracker dev_tracker;struct net_device *real_dev;unsigned long offload_handle; -u8 flags; u8 dir : 2; };
net/xfrm/xfrm_device.c +0 -3
@@ -264,8 +264,6 @@ int xfrm_dev_state_add(struct net *net, struct xfrm_state *x, xso->dev = dev;netdev_tracker_alloc (dev, &xso->dev_tracker,GFP_ATOMIC ); xso->real_dev = dev; -/* Don't forward bit that is not implemented */ - xso->flags = xuo->flags & ~XFRM_OFFLOAD_IPV6 ;if (xuo->flags &XFRM_OFFLOAD_INBOUND ) xso->dir =XFRM_DEV_OFFLOAD_IN ;
@@ -274,7 +272,6 @@ int xfrm_dev_state_add(struct net *net, struct xfrm_state *x, err = dev->xfrmdev_ops->xdo_dev_state_add (x);if (err) { - xso->flags =0 ; xso->dev =NULL ; xso->dir =0 ; xso->real_dev =NULL ;
Signature · 1 line
2.35.1
Steffen Klassert
maintainerQuoted 30 lines · Leon Romanovsky
From: Leon Romanovsky <[email protected]>
Hi Steffen,
I may admit that the title of this series is not the best one as it contains straightforward cleanups and code that converts flags to something less confusing.
This series follows removal of FPGA IPsec code from the mlx5 driver and based on net-next commit
4950b6990e3b("Merge branch 'ocelot-vcap-cleanups'").As such, first two patches delete code that was used by mlx5 FPGA code but isn't needed anymore.
Third patch is simple struct rename.
Rest of the patches separate user's provided flags variable from driver's usage. This allows us to created more simple in-kernel interface, that supports type checking without blending different properties into one variable. It is achieved by converting flags to specific bitfield variables with clear, meaningful names.
Such change allows us more clear addition of new input flags needed to mark IPsec offload type.
The followup code uses this extensively:
https://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git/log/?h=xfrm-nextThanks
Quoted 9 lines
Leon Romanovsky (8):
xfrm: free not usedXFRM_ESP_NO_TRAILERflag
xfrm: delete not used number of external headers
xfrm: renamexfrm_state_offloadstruct to allow reuse
xfrm: store and rely on direction to construct offload flags
ixgbe: propagate XFRM offload state direction instead of flags
netdevsim: rely on XFRM state direction instead of flags net/mlx5e: Use XFRM state direction instead of flags
xfrm: drop not needed flags variable in XFRM offload struct
Series applied, thanks a lot Leon!