MCPcopy Create free account
hub / github.com/F-Stack/f-stack / rte_cryptodev_sym_session_create

Function rte_cryptodev_sym_session_create

dpdk/lib/cryptodev/rte_cryptodev.c:2071–2136  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2069}
2070
2071void *
2072rte_cryptodev_sym_session_create(uint8_t dev_id,
2073 struct rte_crypto_sym_xform *xforms,
2074 struct rte_mempool *mp)
2075{
2076 struct rte_cryptodev *dev;
2077 struct rte_cryptodev_sym_session *sess;
2078 struct rte_cryptodev_sym_session_pool_private_data *pool_priv;
2079 uint32_t sess_priv_sz;
2080 int ret;
2081
2082 if (!rte_cryptodev_is_valid_dev(dev_id)) {
2083 CDEV_LOG_ERR("Invalid dev_id=%" PRIu8, dev_id);
2084 rte_errno = EINVAL;
2085 return NULL;
2086 }
2087
2088 if (xforms == NULL) {
2089 CDEV_LOG_ERR("Invalid xform");
2090 rte_errno = EINVAL;
2091 return NULL;
2092 }
2093
2094 sess_priv_sz = rte_cryptodev_sym_get_private_session_size(dev_id);
2095 if (!rte_cryptodev_sym_is_valid_session_pool(mp, sess_priv_sz)) {
2096 CDEV_LOG_ERR("Invalid mempool");
2097 rte_errno = EINVAL;
2098 return NULL;
2099 }
2100
2101 dev = rte_cryptodev_pmd_get_dev(dev_id);
2102
2103 /* Allocate a session structure from the session pool */
2104 if (rte_mempool_get(mp, (void **)&sess)) {
2105 CDEV_LOG_ERR("couldn't get object from session mempool");
2106 rte_errno = ENOMEM;
2107 return NULL;
2108 }
2109
2110 pool_priv = rte_mempool_get_priv(mp);
2111 sess->driver_id = dev->driver_id;
2112 sess->sess_data_sz = pool_priv->sess_data_sz;
2113 sess->user_data_sz = pool_priv->user_data_sz;
2114 sess->driver_priv_data_iova = rte_mempool_virt2iova(sess) +
2115 offsetof(struct rte_cryptodev_sym_session, driver_priv_data);
2116
2117 if (dev->dev_ops->sym_session_configure == NULL) {
2118 rte_errno = ENOTSUP;
2119 goto error_exit;
2120 }
2121 memset(sess->driver_priv_data, 0, pool_priv->sess_data_sz + pool_priv->user_data_sz);
2122
2123 ret = dev->dev_ops->sym_session_configure(dev, xforms, sess);
2124 if (ret < 0) {
2125 rte_errno = -ret;
2126 goto error_exit;
2127 }
2128 sess->driver_id = dev->driver_id;

Calls 9

rte_mempool_getFunction · 0.85
rte_mempool_get_privFunction · 0.85
rte_mempool_virt2iovaFunction · 0.85
memsetFunction · 0.85
rte_mempool_putFunction · 0.85