net/i40e: set VF MAC from VF
[dpdk.git] / lib / librte_cryptodev / rte_crypto_sym.h
index 9d678b2..d3d38e4 100644 (file)
@@ -366,6 +366,25 @@ struct rte_cryptodev_sym_session;
  * it must have a valid *rte_mbuf* structure attached, via m_src parameter,
  * which contains the source data which the crypto operation is to be performed
  * on.
+ * While the mbuf is in use by a crypto operation no part of the mbuf should be
+ * changed by the application as the device may read or write to any part of the
+ * mbuf. In the case of hardware crypto devices some or all of the mbuf
+ * may be DMAed in and out of the device, so writing over the original data,
+ * though only the part specified by the rte_crypto_sym_op for transformation
+ * will be changed.
+ * Out-of-place (OOP) operation, where the source mbuf is different to the
+ * destination mbuf, is a special case. Data will be copied from m_src to m_dst.
+ * The part copied includes all the parts of the source mbuf that will be
+ * operated on, based on the cipher.data.offset+cipher.data.length and
+ * auth.data.offset+auth.data.length values in the rte_crypto_sym_op. The part
+ * indicated by the cipher parameters will be transformed, any extra data around
+ * this indicated by the auth parameters will be copied unchanged from source to
+ * destination mbuf.
+ * Also in OOP operation the cipher.data.offset and auth.data.offset apply to
+ * both source and destination mbufs. As these offsets are relative to the
+ * data_off parameter in each mbuf this can result in the data written to the
+ * destination buffer being at a different alignment, relative to buffer start,
+ * to the data in the source buffer.
  */
 struct rte_crypto_sym_op {
        struct rte_mbuf *m_src; /**< source mbuf */
@@ -391,8 +410,9 @@ struct rte_crypto_sym_op {
                          * this location.
                          *
                          * @note
-                         * For SNOW 3G @ RTE_CRYPTO_CIPHER_SNOW3G_UEA2
-                         * and KASUMI @ RTE_CRYPTO_CIPHER_KASUMI_F8,
+                         * For SNOW 3G @ RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+                         * KASUMI @ RTE_CRYPTO_CIPHER_KASUMI_F8
+                         * and ZUC @ RTE_CRYPTO_CIPHER_ZUC_EEA3,
                          * this field should be in bits.
                          */
 
@@ -416,8 +436,9 @@ struct rte_crypto_sym_op {
                          * field should be set to 0.
                          *
                          * @note
-                         * For SNOW 3G @ RTE_CRYPTO_AUTH_SNOW3G_UEA2
-                         * and KASUMI @ RTE_CRYPTO_CIPHER_KASUMI_F8,
+                         * For SNOW 3G @ RTE_CRYPTO_AUTH_SNOW3G_UEA2,
+                         * KASUMI @ RTE_CRYPTO_CIPHER_KASUMI_F8
+                         * and ZUC @ RTE_CRYPTO_CIPHER_ZUC_EEA3,
                          * this field should be in bits.
                          */
                } data; /**< Data offsets and length for ciphering */
@@ -490,8 +511,9 @@ struct rte_crypto_sym_op {
                          * used instead
                          *
                          * @note
-                         * For SNOW 3G @ RTE_CRYPTO_AUTH_SNOW3G_UIA2
-                         * and KASUMI @ RTE_CRYPTO_AUTH_KASUMI_F9,
+                         * For SNOW 3G @ RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+                         * KASUMI @ RTE_CRYPTO_AUTH_KASUMI_F9
+                         * and ZUC @ RTE_CRYPTO_AUTH_ZUC_EIA3,
                          * this field should be in bits.
                          */
 
@@ -510,8 +532,9 @@ struct rte_crypto_sym_op {
                          * Auth.aad.length is used instead.
                          *
                          * @note
-                         * For SNOW 3G @ RTE_CRYPTO_AUTH_SNOW3G_UIA2
-                         * and KASUMI @ RTE_CRYPTO_AUTH_KASUMI_F9,
+                         * For SNOW 3G @ RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+                         * KASUMI @ RTE_CRYPTO_AUTH_KASUMI_F9
+                         * and ZUC @ RTE_CRYPTO_AUTH_ZUC_EIA3,
                          * this field should be in bits.
                          */
                } data; /**< Data offsets and length for authentication */