On Wed, 2020-06-10 at 14:59 -0400, Jarod Wilson wrote:
> I've been unable to get my hands on suitable supported hardware to
> date,
> but I believe this ought to be all that is needed to enable the mlx5
> driver to also work with bonding active-backup crypto offload
> passthru.
> 
> CC: Boris Pismenny <bor...@mellanox.com>
> CC: Saeed Mahameed <sae...@mellanox.com>
> CC: Leon Romanovsky <l...@kernel.org>
> CC: Jay Vosburgh <j.vosbu...@gmail.com>
> CC: Veaceslav Falico <vfal...@gmail.com>
> CC: Andy Gospodarek <a...@greyhouse.net>
> CC: "David S. Miller" <da...@davemloft.net>
> CC: Jeff Kirsher <jeffrey.t.kirs...@intel.com>
> CC: Jakub Kicinski <k...@kernel.org>
> CC: Steffen Klassert <steffen.klass...@secunet.com>
> CC: Herbert Xu <herb...@gondor.apana.org.au>
> CC: net...@vger.kernel.org
> Signed-off-by: Jarod Wilson <ja...@redhat.com>
> ---
>  drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c
> b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c
> index 92eb3bad4acd..72ad6664bd73 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c
> @@ -210,6 +210,9 @@ static inline int
> mlx5e_xfrm_validate_state(struct xfrm_state *x)
>       struct net_device *netdev = x->xso.dev;
>       struct mlx5e_priv *priv;
>  
> +     if (x->xso.slave_dev)
> +             netdev = x->xso.slave_dev;
> +

Do we really need to repeat this per driver ? 
why not just setup xso.real_dev, in xfrm layer once and for all before
calling device drivers ? 

Device drivers will use xso.real_dev blindly.

Will be useful in the future when you add vlan support, etc..


>       priv = netdev_priv(netdev);
>  
>       if (x->props.aalgo != SADB_AALG_NONE) {
> @@ -291,6 +294,9 @@ static int mlx5e_xfrm_add_state(struct xfrm_state
> *x)
>       unsigned int sa_handle;
>       int err;
>  
> +     if (x->xso.slave_dev)
> +             netdev = x->xso.slave_dev;
> +
>       priv = netdev_priv(netdev);
>  
>       err = mlx5e_xfrm_validate_state(x);

Reply via email to