xref: /dpdk/lib/security/rte_security_driver.h (revision 3867ed02)
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