u32 action;
        struct mlx5_modify_hdr  *modify_hdr;
        struct mlx5_pkt_reformat *pkt_reformat;
-       uintptr_t esp_id;
+       union {
+               u32 ipsec_obj_id;
+               uintptr_t esp_id;
+       };
        u32 flags;
        struct mlx5_fs_vlan vlan[MLX5_FS_VLAN_DEPTH];
        struct ib_counters *counters;
 
        u8         table_miss_action_domain[0x1];
        u8         termination_table[0x1];
        u8         reformat_and_fwd_to_table[0x1];
-       u8         reserved_at_1a[0x6];
+       u8         reserved_at_1a[0x2];
+       u8         ipsec_encrypt[0x1];
+       u8         ipsec_decrypt[0x1];
+       u8         reserved_at_1e[0x2];
+
        u8         termination_table_raw_traffic[0x1];
        u8         reserved_at_21[0x1];
        u8         log_max_ft_size[0x6];
        MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH = 0x100,
        MLX5_FLOW_CONTEXT_ACTION_VLAN_POP_2  = 0x400,
        MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH_2 = 0x800,
+       MLX5_FLOW_CONTEXT_ACTION_IPSEC_DECRYPT = 0x1000,
+       MLX5_FLOW_CONTEXT_ACTION_IPSEC_ENCRYPT = 0x2000,
 };
 
 enum {
 
        struct mlx5_ifc_vlan_bits push_vlan_2;
 
-       u8         reserved_at_120[0xe0];
+       u8         ipsec_obj_id[0x20];
+       u8         reserved_at_140[0xc0];
 
        struct mlx5_ifc_fte_match_param_bits match_value;
 
        MLX5_ACTION_IN_FIELD_METADATA_REG_C_7  = 0x58,
        MLX5_ACTION_IN_FIELD_OUT_TCP_SEQ_NUM   = 0x59,
        MLX5_ACTION_IN_FIELD_OUT_TCP_ACK_NUM   = 0x5B,
+       MLX5_ACTION_IN_FIELD_IPSEC_SYNDROME    = 0x5D,
 };
 
 struct mlx5_ifc_alloc_modify_header_context_out_bits {