cryptodev: set AES-GMAC as auth-only algo
[dpdk.git] / drivers / crypto / aesni_gcm / aesni_gcm_pmd_private.h
index 9878d6e..fea5fbe 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2016 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2016-2017 Intel Corporation. All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
  *   modification, are permitted provided that the following conditions
@@ -58,8 +58,6 @@
 
 /** private data structure for each virtual AESNI GCM device */
 struct aesni_gcm_private {
-       enum aesni_gcm_vector_mode vector_mode;
-       /**< Vector mode */
        unsigned max_nb_queue_pairs;
        /**< Max number of queue pairs supported by device */
        unsigned max_nb_sessions;
@@ -71,8 +69,6 @@ struct aesni_gcm_qp {
        /**< Queue Pair Identifier */
        char name[RTE_CRYPTODEV_NAME_LEN];
        /**< Unique Queue Pair Name */
-       const struct aesni_gcm_ops *ops;
-       /**< Architecture dependent function pointer table of the gcm APIs */
        struct rte_ring *processed_pkts;
        /**< Ring for placing process packets */
        struct rte_mempool *sess_mp;
@@ -84,13 +80,31 @@ struct aesni_gcm_qp {
 
 enum aesni_gcm_operation {
        AESNI_GCM_OP_AUTHENTICATED_ENCRYPTION,
-       AESNI_GCM_OP_AUTHENTICATED_DECRYPTION
+       AESNI_GCM_OP_AUTHENTICATED_DECRYPTION,
+       AESNI_GMAC_OP_GENERATE,
+       AESNI_GMAC_OP_VERIFY
+};
+
+enum aesni_gcm_key {
+       AESNI_GCM_KEY_128,
+       AESNI_GCM_KEY_256
 };
 
 /** AESNI GCM private session structure */
 struct aesni_gcm_session {
+       struct {
+               uint16_t length;
+               uint16_t offset;
+       } iv;
+       /**< IV parameters */
+       uint16_t aad_length;
+       /**< AAD length */
+       uint16_t digest_length;
+       /**< Digest length */
        enum aesni_gcm_operation op;
        /**< GCM operation type */
+       enum aesni_gcm_key key;
+       /**< GCM key type */
        struct gcm_data gdata __rte_cache_aligned;
        /**< GCM parameters */
 };
@@ -98,7 +112,6 @@ struct aesni_gcm_session {
 
 /**
  * Setup GCM session parameters
- * @param      ops     gcm ops function pointer table
  * @param      sess    aesni gcm session structure
  * @param      xform   crypto transform chain
  *
@@ -107,8 +120,7 @@ struct aesni_gcm_session {
  * - On failure returns error code < 0
  */
 extern int
-aesni_gcm_set_session_parameters(const struct aesni_gcm_ops *ops,
-               struct aesni_gcm_session *sess,
+aesni_gcm_set_session_parameters(struct aesni_gcm_session *sess,
                const struct rte_crypto_sym_xform *xform);