199a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause 299a2dd95SBruce Richardson * Copyright 2017 NXP. 399a2dd95SBruce Richardson * Copyright(c) 2017 Intel Corporation. 499a2dd95SBruce Richardson */ 599a2dd95SBruce Richardson 699a2dd95SBruce Richardson #ifndef _RTE_SECURITY_DRIVER_H_ 799a2dd95SBruce Richardson #define _RTE_SECURITY_DRIVER_H_ 899a2dd95SBruce Richardson 999a2dd95SBruce Richardson /** 1099a2dd95SBruce Richardson * @file rte_security_driver.h 1199a2dd95SBruce Richardson * 1299a2dd95SBruce Richardson * RTE Security Common Definitions 1399a2dd95SBruce Richardson * 1499a2dd95SBruce Richardson */ 1599a2dd95SBruce Richardson 1699a2dd95SBruce Richardson #ifdef __cplusplus 1799a2dd95SBruce Richardson extern "C" { 1899a2dd95SBruce Richardson #endif 1999a2dd95SBruce Richardson 2099a2dd95SBruce Richardson #include "rte_security.h" 2199a2dd95SBruce Richardson 2299a2dd95SBruce Richardson /** 2399a2dd95SBruce Richardson * Configure a security session on a device. 2499a2dd95SBruce Richardson * 2599a2dd95SBruce Richardson * @param device Crypto/eth device pointer 2699a2dd95SBruce Richardson * @param conf Security session configuration 2799a2dd95SBruce Richardson * @param sess Pointer to Security private session structure 2899a2dd95SBruce Richardson * @param mp Mempool where the private session is allocated 2999a2dd95SBruce Richardson * 3099a2dd95SBruce Richardson * @return 3199a2dd95SBruce Richardson * - Returns 0 if private session structure have been created successfully. 3299a2dd95SBruce Richardson * - Returns -EINVAL if input parameters are invalid. 3399a2dd95SBruce Richardson * - Returns -ENOTSUP if crypto device does not support the crypto transform. 3499a2dd95SBruce Richardson * - Returns -ENOMEM if the private session could not be allocated. 3599a2dd95SBruce Richardson */ 3699a2dd95SBruce Richardson typedef int (*security_session_create_t)(void *device, 3799a2dd95SBruce Richardson struct rte_security_session_conf *conf, 3899a2dd95SBruce Richardson struct rte_security_session *sess, 3999a2dd95SBruce Richardson struct rte_mempool *mp); 4099a2dd95SBruce Richardson 4199a2dd95SBruce Richardson /** 4299a2dd95SBruce Richardson * Free driver private session data. 4399a2dd95SBruce Richardson * 4499a2dd95SBruce Richardson * @param device Crypto/eth device pointer 4599a2dd95SBruce Richardson * @param sess Security session structure 4699a2dd95SBruce Richardson */ 4799a2dd95SBruce Richardson typedef int (*security_session_destroy_t)(void *device, 4899a2dd95SBruce Richardson struct rte_security_session *sess); 4999a2dd95SBruce Richardson 5099a2dd95SBruce Richardson /** 5199a2dd95SBruce Richardson * Update driver private session data. 5299a2dd95SBruce Richardson * 5399a2dd95SBruce Richardson * @param device Crypto/eth device pointer 5499a2dd95SBruce Richardson * @param sess Pointer to Security private session structure 5599a2dd95SBruce Richardson * @param conf Security session configuration 5699a2dd95SBruce Richardson * 5799a2dd95SBruce Richardson * @return 5899a2dd95SBruce Richardson * - Returns 0 if private session structure have been updated successfully. 5999a2dd95SBruce Richardson * - Returns -EINVAL if input parameters are invalid. 6099a2dd95SBruce Richardson * - Returns -ENOTSUP if crypto device does not support the crypto transform. 6199a2dd95SBruce Richardson */ 6299a2dd95SBruce Richardson typedef int (*security_session_update_t)(void *device, 6399a2dd95SBruce Richardson struct rte_security_session *sess, 6499a2dd95SBruce Richardson struct rte_security_session_conf *conf); 6599a2dd95SBruce Richardson 6699a2dd95SBruce Richardson /** 6799a2dd95SBruce Richardson * Get the size of a security session 6899a2dd95SBruce Richardson * 6999a2dd95SBruce Richardson * @param device Crypto/eth device pointer 7099a2dd95SBruce Richardson * 7199a2dd95SBruce Richardson * @return 7299a2dd95SBruce Richardson * - On success returns the size of the session structure for device 7399a2dd95SBruce Richardson * - On failure returns 0 7499a2dd95SBruce Richardson */ 7599a2dd95SBruce Richardson typedef unsigned int (*security_session_get_size)(void *device); 7699a2dd95SBruce Richardson 7799a2dd95SBruce Richardson /** 7899a2dd95SBruce Richardson * Get stats from the PMD. 7999a2dd95SBruce Richardson * 8099a2dd95SBruce Richardson * @param device Crypto/eth device pointer 8199a2dd95SBruce Richardson * @param sess Pointer to Security private session structure 8299a2dd95SBruce Richardson * @param stats Security stats of the driver 8399a2dd95SBruce Richardson * 8499a2dd95SBruce Richardson * @return 8599a2dd95SBruce Richardson * - Returns 0 if private session structure have been updated successfully. 8699a2dd95SBruce Richardson * - Returns -EINVAL if session parameters are invalid. 8799a2dd95SBruce Richardson */ 8899a2dd95SBruce Richardson typedef int (*security_session_stats_get_t)(void *device, 8999a2dd95SBruce Richardson struct rte_security_session *sess, 9099a2dd95SBruce Richardson struct rte_security_stats *stats); 9199a2dd95SBruce Richardson 92*3867ed02SAkhil Goyal __rte_internal 9399a2dd95SBruce Richardson int rte_security_dynfield_register(void); 9499a2dd95SBruce Richardson 9599a2dd95SBruce Richardson /** 9699a2dd95SBruce Richardson * Update the mbuf with provided metadata. 9799a2dd95SBruce Richardson * 9899a2dd95SBruce Richardson * @param device Crypto/eth device pointer 9999a2dd95SBruce Richardson * @param sess Security session structure 10099a2dd95SBruce Richardson * @param mb Packet buffer 10199a2dd95SBruce Richardson * @param params Metadata 10299a2dd95SBruce Richardson * 10399a2dd95SBruce Richardson * @return 10499a2dd95SBruce Richardson * - Returns 0 if metadata updated successfully. 10599a2dd95SBruce Richardson * - Returns -ve value for errors. 10699a2dd95SBruce Richardson */ 10799a2dd95SBruce Richardson typedef int (*security_set_pkt_metadata_t)(void *device, 10899a2dd95SBruce Richardson struct rte_security_session *sess, struct rte_mbuf *mb, 10999a2dd95SBruce Richardson void *params); 11099a2dd95SBruce Richardson 11199a2dd95SBruce Richardson /** 11299a2dd95SBruce Richardson * Get application specific userdata associated with the security session. 11399a2dd95SBruce Richardson * Device specific metadata provided would be used to uniquely identify 11499a2dd95SBruce Richardson * the security session being referred to. 11599a2dd95SBruce Richardson * 11699a2dd95SBruce Richardson * @param device Crypto/eth device pointer 11799a2dd95SBruce Richardson * @param md Metadata 11899a2dd95SBruce Richardson * @param userdata Pointer to receive userdata 11999a2dd95SBruce Richardson * 12099a2dd95SBruce Richardson * @return 12199a2dd95SBruce Richardson * - Returns 0 if userdata is retrieved successfully. 12299a2dd95SBruce Richardson * - Returns -ve value for errors. 12399a2dd95SBruce Richardson */ 12499a2dd95SBruce Richardson typedef int (*security_get_userdata_t)(void *device, 12599a2dd95SBruce Richardson uint64_t md, void **userdata); 12699a2dd95SBruce Richardson 12799a2dd95SBruce Richardson /** 12899a2dd95SBruce Richardson * Get security capabilities of the device. 12999a2dd95SBruce Richardson * 13099a2dd95SBruce Richardson * @param device crypto/eth device pointer 13199a2dd95SBruce Richardson * 13299a2dd95SBruce Richardson * @return 13399a2dd95SBruce Richardson * - Returns rte_security_capability pointer on success. 13499a2dd95SBruce Richardson * - Returns NULL on error. 13599a2dd95SBruce Richardson */ 13699a2dd95SBruce Richardson typedef const struct rte_security_capability *(*security_capabilities_get_t)( 13799a2dd95SBruce Richardson void *device); 13899a2dd95SBruce Richardson 13999a2dd95SBruce Richardson /** Security operations function pointer table */ 14099a2dd95SBruce Richardson struct rte_security_ops { 14199a2dd95SBruce Richardson security_session_create_t session_create; 14299a2dd95SBruce Richardson /**< Configure a security session. */ 14399a2dd95SBruce Richardson security_session_update_t session_update; 14499a2dd95SBruce Richardson /**< Update a security session. */ 14599a2dd95SBruce Richardson security_session_get_size session_get_size; 14699a2dd95SBruce Richardson /**< Return size of security session. */ 14799a2dd95SBruce Richardson security_session_stats_get_t session_stats_get; 14899a2dd95SBruce Richardson /**< Get security session statistics. */ 14999a2dd95SBruce Richardson security_session_destroy_t session_destroy; 15099a2dd95SBruce Richardson /**< Clear a security sessions private data. */ 15199a2dd95SBruce Richardson security_set_pkt_metadata_t set_pkt_metadata; 15299a2dd95SBruce Richardson /**< Update mbuf metadata. */ 15399a2dd95SBruce Richardson security_get_userdata_t get_userdata; 15499a2dd95SBruce Richardson /**< Get userdata associated with session which processed the packet. */ 15599a2dd95SBruce Richardson security_capabilities_get_t capabilities_get; 15699a2dd95SBruce Richardson /**< Get security capabilities. */ 15799a2dd95SBruce Richardson }; 15899a2dd95SBruce Richardson 15999a2dd95SBruce Richardson #ifdef __cplusplus 16099a2dd95SBruce Richardson } 16199a2dd95SBruce Richardson #endif 16299a2dd95SBruce Richardson 16399a2dd95SBruce Richardson #endif /* _RTE_SECURITY_DRIVER_H_ */ 164