Message ID | 20200610185910.48668-4-jarod@redhat.com |
---|---|
State | Deferred |
Delegated to: | David Miller |
Headers | show |
Series | [net-next,v2,1/4] xfrm: bail early on slave pass over skb | expand |
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@mellanox.com> > CC: Saeed Mahameed <saeedm@mellanox.com> > CC: Leon Romanovsky <leon@kernel.org> > CC: Jay Vosburgh <j.vosburgh@gmail.com> > CC: Veaceslav Falico <vfalico@gmail.com> > CC: Andy Gospodarek <andy@greyhouse.net> > CC: "David S. Miller" <davem@davemloft.net> > CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com> > CC: Jakub Kicinski <kuba@kernel.org> > CC: Steffen Klassert <steffen.klassert@secunet.com> > CC: Herbert Xu <herbert@gondor.apana.org.au> > CC: netdev@vger.kernel.org > Signed-off-by: Jarod Wilson <jarod@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);
On Thu, Jun 11, 2020 at 5:51 PM Saeed Mahameed <saeedm@mellanox.com> wrote: > > 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@mellanox.com> > > CC: Saeed Mahameed <saeedm@mellanox.com> > > CC: Leon Romanovsky <leon@kernel.org> > > CC: Jay Vosburgh <j.vosburgh@gmail.com> > > CC: Veaceslav Falico <vfalico@gmail.com> > > CC: Andy Gospodarek <andy@greyhouse.net> > > CC: "David S. Miller" <davem@davemloft.net> > > CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com> > > CC: Jakub Kicinski <kuba@kernel.org> > > CC: Steffen Klassert <steffen.klassert@secunet.com> > > CC: Herbert Xu <herbert@gondor.apana.org.au> > > CC: netdev@vger.kernel.org > > Signed-off-by: Jarod Wilson <jarod@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.. Apologies, I didn't catch your reply until just recently. Yeah, that sounds like a better approach, if I can work it out cleanly. We just init xso.real_dev to the same thing as xso.dev, then overwrite it in the upper layer drivers (bonding, vlan, etc), while device drivers just always use xso.real_dev, if I'm understanding your suggestion. I'll see what I can come up with.
On Sun, 2020-06-21 at 16:25 -0400, Jarod Wilson wrote: > On Thu, Jun 11, 2020 at 5:51 PM Saeed Mahameed <saeedm@mellanox.com> > wrote: > > 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@mellanox.com> > > > CC: Saeed Mahameed <saeedm@mellanox.com> > > > CC: Leon Romanovsky <leon@kernel.org> > > > CC: Jay Vosburgh <j.vosburgh@gmail.com> > > > CC: Veaceslav Falico <vfalico@gmail.com> > > > CC: Andy Gospodarek <andy@greyhouse.net> > > > CC: "David S. Miller" <davem@davemloft.net> > > > CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com> > > > CC: Jakub Kicinski <kuba@kernel.org> > > > CC: Steffen Klassert <steffen.klassert@secunet.com> > > > CC: Herbert Xu <herbert@gondor.apana.org.au> > > > CC: netdev@vger.kernel.org > > > Signed-off-by: Jarod Wilson <jarod@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.. > > Apologies, I didn't catch your reply until just recently. Yeah, that > sounds like a better approach, if I can work it out cleanly. We just > init xso.real_dev to the same thing as xso.dev, then overwrite it in > the upper layer drivers (bonding, vlan, etc), while device drivers > just always use xso.real_dev, if I'm understanding your suggestion. > I'll see what I can come up with. > > Yes, exactly what i meant, Thanks !
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; + 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);
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@mellanox.com> CC: Saeed Mahameed <saeedm@mellanox.com> CC: Leon Romanovsky <leon@kernel.org> CC: Jay Vosburgh <j.vosburgh@gmail.com> CC: Veaceslav Falico <vfalico@gmail.com> CC: Andy Gospodarek <andy@greyhouse.net> CC: "David S. Miller" <davem@davemloft.net> CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com> CC: Jakub Kicinski <kuba@kernel.org> CC: Steffen Klassert <steffen.klassert@secunet.com> CC: Herbert Xu <herbert@gondor.apana.org.au> CC: netdev@vger.kernel.org Signed-off-by: Jarod Wilson <jarod@redhat.com> --- drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c | 6 ++++++ 1 file changed, 6 insertions(+)