Message ID | 123bc1de57218089184a77465218d930997a8cf6.1649578827.git.leonro@nvidia.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | Extra IPsec cleanup | expand |
On 10 Apr 11:28, Leon Romanovsky wrote: >From: Leon Romanovsky <leonro@nvidia.com> > >Ensure that flow steering is usable as early as possible, to understand >if crypto IPsec is supported or not. > >Reviewed-by: Raed Salem <raeds@nvidia.com> >Signed-off-by: Leon Romanovsky <leonro@nvidia.com> >--- > drivers/net/ethernet/mellanox/mlx5/core/en/fs.h | 1 - > .../ethernet/mellanox/mlx5/core/en_accel/ipsec.c | 1 + > .../ethernet/mellanox/mlx5/core/en_accel/ipsec.h | 1 + > .../mellanox/mlx5/core/en_accel/ipsec_fs.c | 16 +++++++++------- > 4 files changed, 11 insertions(+), 8 deletions(-) > >diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h b/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h >index 678ffbb48a25..4130a871de61 100644 >--- a/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h >+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h >@@ -164,7 +164,6 @@ struct mlx5e_ptp_fs; > > struct mlx5e_flow_steering { > struct mlx5_flow_namespace *ns; >- struct mlx5_flow_namespace *egress_ns; > #ifdef CONFIG_MLX5_EN_RXNFC > struct mlx5e_ethtool_steering ethtool; > #endif >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 5a10755dd4f1..285ccb773de6 100644 >--- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c >+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c >@@ -415,6 +415,7 @@ int mlx5e_ipsec_init(struct mlx5e_priv *priv) > > hash_init(ipsec->sadb_rx); > spin_lock_init(&ipsec->sadb_rx_lock); >+ ipsec->mdev = priv->mdev; > ipsec->en_priv = priv; > ipsec->wq = alloc_ordered_workqueue("mlx5e_ipsec: %s", 0, > priv->netdev->name); >diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h >index a0e9dade09e9..bbf48d4616f9 100644 >--- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h >+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h >@@ -61,6 +61,7 @@ struct mlx5e_accel_fs_esp; > struct mlx5e_ipsec_tx; > > struct mlx5e_ipsec { >+ struct mlx5_core_dev *mdev; > struct mlx5e_priv *en_priv; Reviewed-by: Saeed Mahameed <saeedm@nvidia.com> we could probably remove en_priv, I already sent you a patch, please try to include it in the next version.
On Sun, Apr 10, 2022 at 04:46:12PM -0700, Saeed Mahameed wrote: > On 10 Apr 11:28, Leon Romanovsky wrote: > > From: Leon Romanovsky <leonro@nvidia.com> > > > > Ensure that flow steering is usable as early as possible, to understand > > if crypto IPsec is supported or not. > > > > Reviewed-by: Raed Salem <raeds@nvidia.com> > > Signed-off-by: Leon Romanovsky <leonro@nvidia.com> > > --- > > drivers/net/ethernet/mellanox/mlx5/core/en/fs.h | 1 - > > .../ethernet/mellanox/mlx5/core/en_accel/ipsec.c | 1 + > > .../ethernet/mellanox/mlx5/core/en_accel/ipsec.h | 1 + > > .../mellanox/mlx5/core/en_accel/ipsec_fs.c | 16 +++++++++------- > > 4 files changed, 11 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h b/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h > > index 678ffbb48a25..4130a871de61 100644 > > --- a/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h > > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h > > @@ -164,7 +164,6 @@ struct mlx5e_ptp_fs; > > > > struct mlx5e_flow_steering { > > struct mlx5_flow_namespace *ns; > > - struct mlx5_flow_namespace *egress_ns; > > #ifdef CONFIG_MLX5_EN_RXNFC > > struct mlx5e_ethtool_steering ethtool; > > #endif > > 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 5a10755dd4f1..285ccb773de6 100644 > > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c > > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c > > @@ -415,6 +415,7 @@ int mlx5e_ipsec_init(struct mlx5e_priv *priv) > > > > hash_init(ipsec->sadb_rx); > > spin_lock_init(&ipsec->sadb_rx_lock); > > + ipsec->mdev = priv->mdev; > > ipsec->en_priv = priv; > > ipsec->wq = alloc_ordered_workqueue("mlx5e_ipsec: %s", 0, > > priv->netdev->name); > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h > > index a0e9dade09e9..bbf48d4616f9 100644 > > --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h > > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h > > @@ -61,6 +61,7 @@ struct mlx5e_accel_fs_esp; > > struct mlx5e_ipsec_tx; > > > > struct mlx5e_ipsec { > > + struct mlx5_core_dev *mdev; > > struct mlx5e_priv *en_priv; > > Reviewed-by: Saeed Mahameed <saeedm@nvidia.com> > > we could probably remove en_priv, I already sent you a patch, please try to > include it in the next version. I removed this en_priv in patch #6 "net/mlx5: Store IPsec ESN update work in XFRM state" https://lore.kernel.org/netdev/1d965d2697dda0bd2c34fc1ccbbb45efaf03b0de.1649578827.git.leonro@nvidia.com/T/#u Thanks
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h b/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h index 678ffbb48a25..4130a871de61 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h @@ -164,7 +164,6 @@ struct mlx5e_ptp_fs; struct mlx5e_flow_steering { struct mlx5_flow_namespace *ns; - struct mlx5_flow_namespace *egress_ns; #ifdef CONFIG_MLX5_EN_RXNFC struct mlx5e_ethtool_steering ethtool; #endif 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 5a10755dd4f1..285ccb773de6 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c @@ -415,6 +415,7 @@ int mlx5e_ipsec_init(struct mlx5e_priv *priv) hash_init(ipsec->sadb_rx); spin_lock_init(&ipsec->sadb_rx_lock); + ipsec->mdev = priv->mdev; ipsec->en_priv = priv; ipsec->wq = alloc_ordered_workqueue("mlx5e_ipsec: %s", 0, priv->netdev->name); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h index a0e9dade09e9..bbf48d4616f9 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h @@ -61,6 +61,7 @@ struct mlx5e_accel_fs_esp; struct mlx5e_ipsec_tx; struct mlx5e_ipsec { + struct mlx5_core_dev *mdev; struct mlx5e_priv *en_priv; DECLARE_HASHTABLE(sadb_rx, MLX5E_IPSEC_SADB_RX_BITS); spinlock_t sadb_rx_lock; /* Protects sadb_rx */ diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c index 869b5692e9b9..66b8ead8b579 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c @@ -35,6 +35,7 @@ struct mlx5e_accel_fs_esp { }; struct mlx5e_ipsec_tx { + struct mlx5_flow_namespace *ns; struct mlx5_flow_table *ft; struct mutex mutex; /* Protect IPsec TX steering */ u32 refcnt; @@ -338,15 +339,9 @@ static int tx_create(struct mlx5e_priv *priv) struct mlx5_flow_table *ft; int err; - priv->fs.egress_ns = - mlx5_get_flow_namespace(priv->mdev, - MLX5_FLOW_NAMESPACE_EGRESS_KERNEL); - if (!priv->fs.egress_ns) - return -EOPNOTSUPP; - ft_attr.max_fte = NUM_IPSEC_FTE; ft_attr.autogroup.max_num_groups = 1; - ft = mlx5_create_auto_grouped_flow_table(priv->fs.egress_ns, &ft_attr); + ft = mlx5_create_auto_grouped_flow_table(ipsec->tx_fs->ns, &ft_attr); if (IS_ERR(ft)) { err = PTR_ERR(ft); netdev_err(priv->netdev, "fail to create ipsec tx ft err=%d\n", err); @@ -658,9 +653,15 @@ int mlx5e_ipsec_fs_init(struct mlx5e_ipsec *ipsec) { struct mlx5e_accel_fs_esp_prot *fs_prot; struct mlx5e_accel_fs_esp *accel_esp; + struct mlx5_flow_namespace *ns; enum accel_fs_esp_type i; int err = -ENOMEM; + ns = mlx5_get_flow_namespace(ipsec->mdev, + MLX5_FLOW_NAMESPACE_EGRESS_KERNEL); + if (!ns) + return -EOPNOTSUPP; + ipsec->tx_fs = kzalloc(sizeof(*ipsec->tx_fs), GFP_KERNEL); if (!ipsec->tx_fs) return -ENOMEM; @@ -670,6 +671,7 @@ int mlx5e_ipsec_fs_init(struct mlx5e_ipsec *ipsec) goto err_rx; mutex_init(&ipsec->tx_fs->mutex); + ipsec->tx_fs->ns = ns; accel_esp = ipsec->rx_fs; for (i = 0; i < ACCEL_FS_ESP_NUM_TYPES; i++) {