From: Aviad Yehezkel <avia...@mellanox.com>

New function for getting driver internal sa entry from xfrm state.
All checks are done in one function.

Signed-off-by: Aviad Yehezkel <avia...@mellanox.com>
Signed-off-by: Saeed Mahameed <sae...@mellanox.com>
---
 .../ethernet/mellanox/mlx5/core/en_accel/ipsec.c   | 29 ++++++++++++++--------
 1 file changed, 19 insertions(+), 10 deletions(-)

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 59df3dbd2e65..f5b1d60f96f5 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c
@@ -51,6 +51,21 @@ struct mlx5e_ipsec_sa_entry {
        void *hw_context;
 };
 
+static struct mlx5e_ipsec_sa_entry *to_ipsec_sa_entry(struct xfrm_state *x)
+{
+       struct mlx5e_ipsec_sa_entry *sa;
+
+       if (!x)
+               return NULL;
+
+       sa = (struct mlx5e_ipsec_sa_entry *)x->xso.offload_handle;
+       if (!sa)
+               return NULL;
+
+       WARN_ON(sa->x != x);
+       return sa;
+}
+
 struct xfrm_state *mlx5e_ipsec_sadb_rx_lookup(struct mlx5e_ipsec *ipsec,
                                              unsigned int handle)
 {
@@ -312,28 +327,22 @@ static int mlx5e_xfrm_add_state(struct xfrm_state *x)
 
 static void mlx5e_xfrm_del_state(struct xfrm_state *x)
 {
-       struct mlx5e_ipsec_sa_entry *sa_entry;
+       struct mlx5e_ipsec_sa_entry *sa_entry = to_ipsec_sa_entry(x);
 
-       if (!x->xso.offload_handle)
+       if (!sa_entry)
                return;
 
-       sa_entry = (struct mlx5e_ipsec_sa_entry *)x->xso.offload_handle;
-       WARN_ON(sa_entry->x != x);
-
        if (x->xso.flags & XFRM_OFFLOAD_INBOUND)
                mlx5e_ipsec_sadb_rx_del(sa_entry);
 }
 
 static void mlx5e_xfrm_free_state(struct xfrm_state *x)
 {
-       struct mlx5e_ipsec_sa_entry *sa_entry;
+       struct mlx5e_ipsec_sa_entry *sa_entry = to_ipsec_sa_entry(x);
 
-       if (!x->xso.offload_handle)
+       if (!sa_entry)
                return;
 
-       sa_entry = (struct mlx5e_ipsec_sa_entry *)x->xso.offload_handle;
-       WARN_ON(sa_entry->x != x);
-
        if (sa_entry->hw_context) {
                mlx5_accel_esp_free_hw_context(sa_entry->hw_context);
                mlx5_accel_esp_destroy_xfrm(sa_entry->xfrm);
-- 
2.14.3

Reply via email to