Re: [PATCH net-next v2 3/4] mlx5: become aware of when running as a bonding slave

From: Saeed Mahameed
Date: Thu Jun 11 2020 - 17:51:38 EST


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 <borisp@xxxxxxxxxxxx>
> CC: Saeed Mahameed <saeedm@xxxxxxxxxxxx>
> CC: Leon Romanovsky <leon@xxxxxxxxxx>
> CC: Jay Vosburgh <j.vosburgh@xxxxxxxxx>
> CC: Veaceslav Falico <vfalico@xxxxxxxxx>
> CC: Andy Gospodarek <andy@xxxxxxxxxxxxx>
> CC: "David S. Miller" <davem@xxxxxxxxxxxxx>
> CC: Jeff Kirsher <jeffrey.t.kirsher@xxxxxxxxx>
> CC: Jakub Kicinski <kuba@xxxxxxxxxx>
> CC: Steffen Klassert <steffen.klassert@xxxxxxxxxxx>
> CC: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
> CC: netdev@xxxxxxxxxxxxxxx
> Signed-off-by: Jarod Wilson <jarod@xxxxxxxxxx>
> ---
> 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);