net/mlx5e: Added common function for to_ipsec_sa_entry
authorAviad Yehezkel <aviadye@mellanox.com>
Thu, 18 Jan 2018 14:31:55 +0000 (16:31 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Wed, 7 Mar 2018 23:54:35 +0000 (15:54 -0800)
New function for getting driver internal sa entry from xfrm state.
All checks are done in one function.

Signed-off-by: Aviad Yehezkel <aviadye@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c

index 59df3db..f5b1d60 100644 (file)
@@ -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 @@ out:
 
 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);