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 <[email protected]>
> CC: Saeed Mahameed <[email protected]>
> CC: Leon Romanovsky <[email protected]>
> CC: Jay Vosburgh <[email protected]>
> CC: Veaceslav Falico <[email protected]>
> CC: Andy Gospodarek <[email protected]>
> CC: "David S. Miller" <[email protected]>
> CC: Jeff Kirsher <[email protected]>
> CC: Jakub Kicinski <[email protected]>
> CC: Steffen Klassert <[email protected]>
> CC: Herbert Xu <[email protected]>
> CC: [email protected]
> Signed-off-by: Jarod Wilson <[email protected]>
> ---
> 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);