compressdev: support hash operations
- Added hash algo enumeration and params in xform and rte_comp_op - Updated compress/decompress xform to input hash algorithm - Updated struct rte_comp_op to input hash buffer User in capability query will know about support hashes via device info comp_feature_flag. If supported, application can initialize desired algorithm enumeration in xform structure and pass valid hash buffer during enqueue_burst(). Signed-off-by: Shally Verma <shally.verma@caviumnetworks.com> Signed-off-by: Sunila Sahu <sunila.sahu@caviumnetworks.com> Signed-off-by: Ashish Gupta <ashish.gupta@caviumnetworks.com>
This commit is contained in:
parent
b342c57aae
commit
0d6717c437
@ -63,6 +63,17 @@ enum rte_comp_algorithm {
|
|||||||
RTE_COMP_ALGO_LIST_END
|
RTE_COMP_ALGO_LIST_END
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Compression Hash Algorithms */
|
||||||
|
enum rte_comp_hash_algorithm {
|
||||||
|
RTE_COMP_HASH_ALGO_NONE = 0,
|
||||||
|
/**< No hash */
|
||||||
|
RTE_COMP_HASH_ALGO_SHA1,
|
||||||
|
/**< SHA1 hash algorithm */
|
||||||
|
RTE_COMP_HASH_ALGO_SHA2_256,
|
||||||
|
/**< SHA256 hash algorithm of SHA2 family */
|
||||||
|
RTE_COMP_HASH_ALGO_LIST_END
|
||||||
|
};
|
||||||
|
|
||||||
/**< Compression Level.
|
/**< Compression Level.
|
||||||
* The number is interpreted by each PMD differently. However, lower numbers
|
* The number is interpreted by each PMD differently. However, lower numbers
|
||||||
* give fastest compression, at the expense of compression ratio while
|
* give fastest compression, at the expense of compression ratio while
|
||||||
@ -172,6 +183,10 @@ struct rte_comp_compress_xform {
|
|||||||
*/
|
*/
|
||||||
enum rte_comp_checksum_type chksum;
|
enum rte_comp_checksum_type chksum;
|
||||||
/**< Type of checksum to generate on the uncompressed data */
|
/**< Type of checksum to generate on the uncompressed data */
|
||||||
|
enum rte_comp_hash_algorithm hash_algo;
|
||||||
|
/**< Hash algorithm to be used with compress operation. Hash is always
|
||||||
|
* done on plaintext.
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -187,6 +202,10 @@ struct rte_comp_decompress_xform {
|
|||||||
* compressed data. If window size can't be supported by the PMD then
|
* compressed data. If window size can't be supported by the PMD then
|
||||||
* setup of stream or private_xform should fail.
|
* setup of stream or private_xform should fail.
|
||||||
*/
|
*/
|
||||||
|
enum rte_comp_hash_algorithm hash_algo;
|
||||||
|
/**< Hash algorithm to be used with decompress operation. Hash is always
|
||||||
|
* done on plaintext.
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -272,6 +291,19 @@ struct rte_comp_op {
|
|||||||
* decompress direction.
|
* decompress direction.
|
||||||
*/
|
*/
|
||||||
} dst;
|
} dst;
|
||||||
|
struct {
|
||||||
|
uint8_t *digest;
|
||||||
|
/**< Output buffer to store hash output, if enabled in xform.
|
||||||
|
* Buffer would contain valid value only after an op with
|
||||||
|
* flush flag = RTE_COMP_FLUSH_FULL/FLUSH_FINAL is processed
|
||||||
|
* successfully.
|
||||||
|
*
|
||||||
|
* Length of buffer should be contiguous and large enough to
|
||||||
|
* accommodate digest produced by specific hash algo.
|
||||||
|
*/
|
||||||
|
rte_iova_t iova_addr;
|
||||||
|
/**< IO address of the buffer */
|
||||||
|
} hash;
|
||||||
enum rte_comp_flush_flag flush_flag;
|
enum rte_comp_flush_flag flush_flag;
|
||||||
/**< Defines flush characteristics for the output data.
|
/**< Defines flush characteristics for the output data.
|
||||||
* Only applicable in compress direction
|
* Only applicable in compress direction
|
||||||
|
Loading…
x
Reference in New Issue
Block a user