Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/26502/?format=api
https://patches.dpdk.org/api/patches/26502/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/20170705052620.34223-11-pablo.de.lara.guarch@intel.com/", "project": { "id": 1, "url": "https://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20170705052620.34223-11-pablo.de.lara.guarch@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20170705052620.34223-11-pablo.de.lara.guarch@intel.com", "date": "2017-07-05T05:26:18", "name": "[dpdk-dev,v4,10/12] cryptodev: add mempool pointer in queue pair setup", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "0138890da8490f23ccc0ba810647b52e5b07068a", "submitter": { "id": 9, "url": "https://patches.dpdk.org/api/people/9/?format=api", "name": "De Lara Guarch, Pablo", "email": "pablo.de.lara.guarch@intel.com" }, "delegate": { "id": 22, "url": "https://patches.dpdk.org/api/users/22/?format=api", "username": "pdelarag", "first_name": "Pablo", "last_name": "de Lara Guarch", "email": "pablo.de.lara.guarch@intel.com" }, "mbox": "https://patches.dpdk.org/project/dpdk/patch/20170705052620.34223-11-pablo.de.lara.guarch@intel.com/mbox/", "series": [], "comments": "https://patches.dpdk.org/api/patches/26502/comments/", "check": "fail", "checks": "https://patches.dpdk.org/api/patches/26502/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@dpdk.org", "Delivered-To": "patchwork@dpdk.org", "Received": [ "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 3619D58CD;\n\tWed, 5 Jul 2017 15:27:35 +0200 (CEST)", "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n\tby dpdk.org (Postfix) with ESMTP id 499807CAE\n\tfor <dev@dpdk.org>; Wed, 5 Jul 2017 15:27:28 +0200 (CEST)", "from orsmga003.jf.intel.com ([10.7.209.27])\n\tby orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t05 Jul 2017 06:27:27 -0700", "from silpixa00399464.ir.intel.com (HELO\n\tsilpixa00399464.ger.corp.intel.com) ([10.237.222.157])\n\tby orsmga003.jf.intel.com with ESMTP; 05 Jul 2017 06:27:25 -0700" ], "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.40,312,1496127600\"; d=\"scan'208\";a=\"988933532\"", "From": "Pablo de Lara <pablo.de.lara.guarch@intel.com>", "To": "declan.doherty@intel.com, zbigniew.bodek@caviumnetworks.com,\n\tjerin.jacob@caviumnetworks.com, akhil.goyal@nxp.com,\n\themant.agrawal@nxp.com, fiona.trahe@intel.com, john.griffin@intel.com,\n\tdeepak.k.jain@intel.com", "Cc": "dev@dpdk.org,\n\tPablo de Lara <pablo.de.lara.guarch@intel.com>", "Date": "Wed, 5 Jul 2017 06:26:18 +0100", "Message-Id": "<20170705052620.34223-11-pablo.de.lara.guarch@intel.com>", "X-Mailer": "git-send-email 2.9.4", "In-Reply-To": "<20170705052620.34223-1-pablo.de.lara.guarch@intel.com>", "References": "<20170702155719.66530-1-pablo.de.lara.guarch@intel.com>\n\t<20170705052620.34223-1-pablo.de.lara.guarch@intel.com>", "Subject": "[dpdk-dev] [PATCH v4 10/12] cryptodev: add mempool pointer in queue\n\tpair setup", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://dpdk.org/ml/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "The session mempool pointer is needed in each queue pair,\nif session-less operations are being handled.\nTherefore, the API is changed to accept this parameter,\nas the session mempool is created outside the\ndevice configuration function, similar to what ethdev\ndoes with the rx queues.\n\nSigned-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>\n---\n app/test-crypto-perf/main.c | 18 ++++----\n doc/guides/rel_notes/release_17_08.rst | 1 +\n drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c | 4 +-\n drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c | 4 +-\n drivers/crypto/armv8/rte_armv8_pmd_ops.c | 4 +-\n drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 3 +-\n drivers/crypto/kasumi/rte_kasumi_pmd_ops.c | 4 +-\n drivers/crypto/null/null_crypto_pmd_ops.c | 4 +-\n drivers/crypto/openssl/rte_openssl_pmd_ops.c | 4 +-\n drivers/crypto/qat/qat_crypto.h | 3 +-\n drivers/crypto/qat/qat_qp.c | 2 +-\n drivers/crypto/scheduler/scheduler_pmd_ops.c | 13 ++++--\n drivers/crypto/snow3g/rte_snow3g_pmd_ops.c | 4 +-\n drivers/crypto/zuc/rte_zuc_pmd_ops.c | 4 +-\n examples/ipsec-secgw/ipsec-secgw.c | 6 +--\n examples/l2fwd-crypto/main.c | 5 +--\n lib/librte_cryptodev/rte_cryptodev.c | 11 +++--\n lib/librte_cryptodev/rte_cryptodev.h | 9 ++--\n lib/librte_cryptodev/rte_cryptodev_pmd.h | 3 +-\n test/test/test_cryptodev.c | 58 +++++++++++++++-----------\n test/test/test_cryptodev_perf.c | 5 ++-\n 21 files changed, 93 insertions(+), 76 deletions(-)", "diff": "diff --git a/app/test-crypto-perf/main.c b/app/test-crypto-perf/main.c\nindex 90edb24..d300704 100644\n--- a/app/test-crypto-perf/main.c\n+++ b/app/test-crypto-perf/main.c\n@@ -155,20 +155,20 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs,\n \t\t\tsession_pool_socket[socket_id] = sess_mp;\n \t\t}\n \n-\t\tret = rte_cryptodev_configure(cdev_id, &conf,\n-\t\t\t\tsession_pool_socket[socket_id]);\n+\t\tret = rte_cryptodev_configure(cdev_id, &conf);\n \t\tif (ret < 0) {\n \t\t\tprintf(\"Failed to configure cryptodev %u\", cdev_id);\n \t\t\treturn -EINVAL;\n \t\t}\n \n-\t\tret = rte_cryptodev_queue_pair_setup(cdev_id, 0, &qp_conf,\n-\t\t\t\tsocket_id);\n-\t\tif (ret < 0) {\n-\t\t\tprintf(\"Failed to setup queue pair %u on \"\n-\t\t\t\t\"cryptodev %u\",\t0, cdev_id);\n-\t\t\treturn -EINVAL;\n-\t\t}\n+\t\tret = rte_cryptodev_queue_pair_setup(cdev_id, 0,\n+\t\t\t\t&qp_conf, socket_id,\n+\t\t\t\tsession_pool_socket[socket_id]);\n+\t\t\tif (ret < 0) {\n+\t\t\t\tprintf(\"Failed to setup queue pair %u on \"\n+\t\t\t\t\t\"cryptodev %u\",\t0, cdev_id);\n+\t\t\t\treturn -EINVAL;\n+\t\t\t}\n \n \t\tret = rte_cryptodev_start(cdev_id);\n \t\tif (ret < 0) {\ndiff --git a/doc/guides/rel_notes/release_17_08.rst b/doc/guides/rel_notes/release_17_08.rst\nindex 4fae766..638b582 100644\n--- a/doc/guides/rel_notes/release_17_08.rst\n+++ b/doc/guides/rel_notes/release_17_08.rst\n@@ -220,6 +220,7 @@ API Changes\n * Modified parameters of ``rte_cryptodev_sym_session_create()``, to accept\n ``mempool``, instead of ``device id`` and ``rte_crypto_sym_xform``.\n * Remove ``device id`` parameter from ``rte_cryptodev_sym_session_free()``.\n+ * Added new field ``session_pool`` to ``rte_cryptodev_queue_pair_setup()``.\n \n \n ABI Changes\ndiff --git a/drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c b/drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c\nindex 21052cd..6d24a32 100644\n--- a/drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c\n+++ b/drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c\n@@ -230,7 +230,7 @@ aesni_gcm_pmd_qp_create_processed_pkts_ring(struct aesni_gcm_qp *qp,\n static int\n aesni_gcm_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tconst struct rte_cryptodev_qp_conf *qp_conf,\n-\t\t int socket_id)\n+\t\tint socket_id, struct rte_mempool *session_pool)\n {\n \tstruct aesni_gcm_qp *qp = NULL;\n \tstruct aesni_gcm_private *internals = dev->data->dev_private;\n@@ -258,7 +258,7 @@ aesni_gcm_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \tif (qp->processed_pkts == NULL)\n \t\tgoto qp_setup_cleanup;\n \n-\tqp->sess_mp = dev->data->session_pool;\n+\tqp->sess_mp = session_pool;\n \n \tmemset(&qp->qp_stats, 0, sizeof(qp->qp_stats));\n \ndiff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c\nindex ae74ae3..e3a6ef5 100644\n--- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c\n+++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c\n@@ -404,7 +404,7 @@ aesni_mb_pmd_qp_create_processed_ops_ring(struct aesni_mb_qp *qp,\n static int\n aesni_mb_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tconst struct rte_cryptodev_qp_conf *qp_conf,\n-\t\t int socket_id)\n+\t\tint socket_id, struct rte_mempool *session_pool)\n {\n \tstruct aesni_mb_qp *qp = NULL;\n \tstruct aesni_mb_private *internals = dev->data->dev_private;\n@@ -433,7 +433,7 @@ aesni_mb_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \tif (qp->ingress_queue == NULL)\n \t\tgoto qp_setup_cleanup;\n \n-\tqp->sess_mp = dev->data->session_pool;\n+\tqp->sess_mp = session_pool;\n \n \tmemset(&qp->stats, 0, sizeof(qp->stats));\n \ndiff --git a/drivers/crypto/armv8/rte_armv8_pmd_ops.c b/drivers/crypto/armv8/rte_armv8_pmd_ops.c\nindex e14b68c..3aa4888 100644\n--- a/drivers/crypto/armv8/rte_armv8_pmd_ops.c\n+++ b/drivers/crypto/armv8/rte_armv8_pmd_ops.c\n@@ -249,7 +249,7 @@ armv8_crypto_pmd_qp_create_processed_ops_ring(struct armv8_crypto_qp *qp,\n static int\n armv8_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tconst struct rte_cryptodev_qp_conf *qp_conf,\n-\t\t int socket_id)\n+\t\tint socket_id, struct rte_mempool *session_pool)\n {\n \tstruct armv8_crypto_qp *qp = NULL;\n \n@@ -274,7 +274,7 @@ armv8_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \tif (qp->processed_ops == NULL)\n \t\tgoto qp_setup_cleanup;\n \n-\tqp->sess_mp = dev->data->session_pool;\n+\tqp->sess_mp = session_pool;\n \n \tmemset(&qp->stats, 0, sizeof(qp->stats));\n \ndiff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\nindex b764f33..e5bfcf2 100644\n--- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\n+++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\n@@ -816,7 +816,8 @@ dpaa2_sec_queue_pair_release(struct rte_cryptodev *dev, uint16_t queue_pair_id)\n static int\n dpaa2_sec_queue_pair_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\t__rte_unused const struct rte_cryptodev_qp_conf *qp_conf,\n-\t\t__rte_unused int socket_id)\n+\t\t__rte_unused int socket_id,\n+\t\t__rte_unused struct rte_mempool *session_pool)\n {\n \tstruct dpaa2_sec_dev_private *priv = dev->data->dev_private;\n \tstruct dpaa2_sec_qp *qp;\ndiff --git a/drivers/crypto/kasumi/rte_kasumi_pmd_ops.c b/drivers/crypto/kasumi/rte_kasumi_pmd_ops.c\nindex e7bbc29..1d9c0fc 100644\n--- a/drivers/crypto/kasumi/rte_kasumi_pmd_ops.c\n+++ b/drivers/crypto/kasumi/rte_kasumi_pmd_ops.c\n@@ -224,7 +224,7 @@ kasumi_pmd_qp_create_processed_ops_ring(struct kasumi_qp *qp,\n static int\n kasumi_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tconst struct rte_cryptodev_qp_conf *qp_conf,\n-\t\t int socket_id)\n+\t\tint socket_id, struct rte_mempool *session_pool)\n {\n \tstruct kasumi_qp *qp = NULL;\n \n@@ -249,7 +249,7 @@ kasumi_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \tif (qp->processed_ops == NULL)\n \t\tgoto qp_setup_cleanup;\n \n-\tqp->sess_mp = dev->data->session_pool;\n+\tqp->sess_mp = session_pool;\n \n \tmemset(&qp->qp_stats, 0, sizeof(qp->qp_stats));\n \ndiff --git a/drivers/crypto/null/null_crypto_pmd_ops.c b/drivers/crypto/null/null_crypto_pmd_ops.c\nindex d57644d..c618e6b 100644\n--- a/drivers/crypto/null/null_crypto_pmd_ops.c\n+++ b/drivers/crypto/null/null_crypto_pmd_ops.c\n@@ -212,7 +212,7 @@ null_crypto_pmd_qp_create_processed_pkts_ring(struct null_crypto_qp *qp,\n static int\n null_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tconst struct rte_cryptodev_qp_conf *qp_conf,\n-\t\t int socket_id)\n+\t\tint socket_id, struct rte_mempool *session_pool)\n {\n \tstruct null_crypto_private *internals = dev->data->dev_private;\n \tstruct null_crypto_qp *qp;\n@@ -255,7 +255,7 @@ null_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tgoto qp_setup_cleanup;\n \t}\n \n-\tqp->sess_mp = dev->data->session_pool;\n+\tqp->sess_mp = session_pool;\n \n \tmemset(&qp->qp_stats, 0, sizeof(qp->qp_stats));\n \ndiff --git a/drivers/crypto/openssl/rte_openssl_pmd_ops.c b/drivers/crypto/openssl/rte_openssl_pmd_ops.c\nindex 1f8a011..1db4d14 100644\n--- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c\n+++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c\n@@ -599,7 +599,7 @@ openssl_pmd_qp_create_processed_ops_ring(struct openssl_qp *qp,\n static int\n openssl_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tconst struct rte_cryptodev_qp_conf *qp_conf,\n-\t\t int socket_id)\n+\t\tint socket_id, struct rte_mempool *session_pool)\n {\n \tstruct openssl_qp *qp = NULL;\n \n@@ -624,7 +624,7 @@ openssl_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \tif (qp->processed_ops == NULL)\n \t\tgoto qp_setup_cleanup;\n \n-\tqp->sess_mp = dev->data->session_pool;\n+\tqp->sess_mp = session_pool;\n \n \tmemset(&qp->stats, 0, sizeof(qp->stats));\n \ndiff --git a/drivers/crypto/qat/qat_crypto.h b/drivers/crypto/qat/qat_crypto.h\nindex d9d8887..915f960 100644\n--- a/drivers/crypto/qat/qat_crypto.h\n+++ b/drivers/crypto/qat/qat_crypto.h\n@@ -103,7 +103,8 @@ void qat_crypto_sym_stats_get(struct rte_cryptodev *dev,\n void qat_crypto_sym_stats_reset(struct rte_cryptodev *dev);\n \n int qat_crypto_sym_qp_setup(struct rte_cryptodev *dev, uint16_t queue_pair_id,\n-\tconst struct rte_cryptodev_qp_conf *rx_conf, int socket_id);\n+\tconst struct rte_cryptodev_qp_conf *rx_conf, int socket_id,\n+\tstruct rte_mempool *session_pool);\n int qat_crypto_sym_qp_release(struct rte_cryptodev *dev,\n \tuint16_t queue_pair_id);\n \ndiff --git a/drivers/crypto/qat/qat_qp.c b/drivers/crypto/qat/qat_qp.c\nindex 3921c2e..2b2ab42 100644\n--- a/drivers/crypto/qat/qat_qp.c\n+++ b/drivers/crypto/qat/qat_qp.c\n@@ -134,7 +134,7 @@ queue_dma_zone_reserve(const char *queue_name, uint32_t queue_size,\n \n int qat_crypto_sym_qp_setup(struct rte_cryptodev *dev, uint16_t queue_pair_id,\n \tconst struct rte_cryptodev_qp_conf *qp_conf,\n-\tint socket_id)\n+\tint socket_id, struct rte_mempool *session_pool __rte_unused)\n {\n \tstruct qat_qp *qp;\n \tstruct rte_pci_device *pci_dev;\ndiff --git a/drivers/crypto/scheduler/scheduler_pmd_ops.c b/drivers/crypto/scheduler/scheduler_pmd_ops.c\nindex c450f6a..e7f796c 100644\n--- a/drivers/crypto/scheduler/scheduler_pmd_ops.c\n+++ b/drivers/crypto/scheduler/scheduler_pmd_ops.c\n@@ -101,8 +101,7 @@ scheduler_pmd_config(struct rte_cryptodev *dev,\n \tfor (i = 0; i < sched_ctx->nb_slaves; i++) {\n \t\tuint8_t slave_dev_id = sched_ctx->slaves[i].dev_id;\n \n-\t\tret = rte_cryptodev_configure(slave_dev_id, config,\n-\t\t\t\tdev->data->session_pool);\n+\t\tret = rte_cryptodev_configure(slave_dev_id, config);\n \t\tif (ret < 0)\n \t\t\tbreak;\n \t}\n@@ -400,7 +399,8 @@ scheduler_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)\n /** Setup a queue pair */\n static int\n scheduler_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n-\tconst struct rte_cryptodev_qp_conf *qp_conf, int socket_id)\n+\tconst struct rte_cryptodev_qp_conf *qp_conf, int socket_id,\n+\tstruct rte_mempool *session_pool)\n {\n \tstruct scheduler_ctx *sched_ctx = dev->data->dev_private;\n \tstruct scheduler_qp_ctx *qp_ctx;\n@@ -422,8 +422,13 @@ scheduler_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \tfor (i = 0; i < sched_ctx->nb_slaves; i++) {\n \t\tuint8_t slave_id = sched_ctx->slaves[i].dev_id;\n \n+\t\t/*\n+\t\t * All slaves will share the same session mempool\n+\t\t * for session-less operations, so the objects\n+\t\t * must be big enough for all the drivers used.\n+\t\t */\n \t\tret = rte_cryptodev_queue_pair_setup(slave_id, qp_id,\n-\t\t\t\tqp_conf, socket_id);\n+\t\t\t\tqp_conf, socket_id, session_pool);\n \t\tif (ret < 0)\n \t\t\treturn ret;\n \t}\ndiff --git a/drivers/crypto/snow3g/rte_snow3g_pmd_ops.c b/drivers/crypto/snow3g/rte_snow3g_pmd_ops.c\nindex 3accba5..108f251 100644\n--- a/drivers/crypto/snow3g/rte_snow3g_pmd_ops.c\n+++ b/drivers/crypto/snow3g/rte_snow3g_pmd_ops.c\n@@ -221,7 +221,7 @@ snow3g_pmd_qp_create_processed_ops_ring(struct snow3g_qp *qp,\n static int\n snow3g_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tconst struct rte_cryptodev_qp_conf *qp_conf,\n-\t\t int socket_id)\n+\t\tint socket_id, struct rte_mempool *session_pool)\n {\n \tstruct snow3g_qp *qp = NULL;\n \n@@ -246,7 +246,7 @@ snow3g_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \tif (qp->processed_ops == NULL)\n \t\tgoto qp_setup_cleanup;\n \n-\tqp->sess_mp = dev->data->session_pool;\n+\tqp->sess_mp = session_pool;\n \n \tmemset(&qp->qp_stats, 0, sizeof(qp->qp_stats));\n \ndiff --git a/drivers/crypto/zuc/rte_zuc_pmd_ops.c b/drivers/crypto/zuc/rte_zuc_pmd_ops.c\nindex adef343..7cb3f1c 100644\n--- a/drivers/crypto/zuc/rte_zuc_pmd_ops.c\n+++ b/drivers/crypto/zuc/rte_zuc_pmd_ops.c\n@@ -221,7 +221,7 @@ zuc_pmd_qp_create_processed_ops_ring(struct zuc_qp *qp,\n static int\n zuc_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tconst struct rte_cryptodev_qp_conf *qp_conf,\n-\t\t int socket_id)\n+\t\tint socket_id, struct rte_mempool *session_pool)\n {\n \tstruct zuc_qp *qp = NULL;\n \n@@ -246,7 +246,7 @@ zuc_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \tif (qp->processed_ops == NULL)\n \t\tgoto qp_setup_cleanup;\n \n-\tqp->sess_mp = dev->data->session_pool;\n+\tqp->sess_mp = session_pool;\n \n \tmemset(&qp->qp_stats, 0, sizeof(qp->qp_stats));\n \ndiff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c\nindex 708eadd..11f0966 100644\n--- a/examples/ipsec-secgw/ipsec-secgw.c\n+++ b/examples/ipsec-secgw/ipsec-secgw.c\n@@ -1299,15 +1299,15 @@ cryptodevs_init(void)\n \t\t\tsocket_ctx[dev_conf.socket_id].session_pool = sess_mp;\n \t\t}\n \n-\t\tif (rte_cryptodev_configure(cdev_id, &dev_conf,\n-\t\t\t\tsocket_ctx[dev_conf.socket_id].session_pool))\n+\t\tif (rte_cryptodev_configure(cdev_id, &dev_conf))\n \t\t\trte_panic(\"Failed to initialize cryptodev %u\\n\",\n \t\t\t\t\tcdev_id);\n \n \t\tqp_conf.nb_descriptors = CDEV_QUEUE_DESC;\n \t\tfor (qp = 0; qp < dev_conf.nb_queue_pairs; qp++)\n \t\t\tif (rte_cryptodev_queue_pair_setup(cdev_id, qp,\n-\t\t\t\t\t\t&qp_conf, dev_conf.socket_id))\n+\t\t\t\t\t&qp_conf, dev_conf.socket_id,\n+\t\t\t\t\tsocket_ctx[dev_conf.socket_id].session_pool))\n \t\t\t\trte_panic(\"Failed to setup queue %u for \"\n \t\t\t\t\t\t\"cdev_id %u\\n\",\t0, cdev_id);\n \ndiff --git a/examples/l2fwd-crypto/main.c b/examples/l2fwd-crypto/main.c\nindex cba29ce..2a71feb 100644\n--- a/examples/l2fwd-crypto/main.c\n+++ b/examples/l2fwd-crypto/main.c\n@@ -2232,8 +2232,7 @@ initialize_cryptodevs(struct l2fwd_crypto_options *options, unsigned nb_ports,\n \t\t\t\t\t\tcap->sym.auth.digest_size.min;\n \t\t}\n \n-\t\tretval = rte_cryptodev_configure(cdev_id, &conf,\n-\t\t\t\tsession_pool_socket[socket_id]);\n+\t\tretval = rte_cryptodev_configure(cdev_id, &conf);\n \t\tif (retval < 0) {\n \t\t\tprintf(\"Failed to configure cryptodev %u\", cdev_id);\n \t\t\treturn -1;\n@@ -2242,7 +2241,7 @@ initialize_cryptodevs(struct l2fwd_crypto_options *options, unsigned nb_ports,\n \t\tqp_conf.nb_descriptors = 2048;\n \n \t\tretval = rte_cryptodev_queue_pair_setup(cdev_id, 0, &qp_conf,\n-\t\t\t\tsocket_id);\n+\t\t\t\tsocket_id, session_pool_socket[socket_id]);\n \t\tif (retval < 0) {\n \t\t\tprintf(\"Failed to setup queue pair %u on cryptodev %u\",\n \t\t\t\t\t0, cdev_id);\ndiff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c\nindex 373c05b..8ee5d47 100644\n--- a/lib/librte_cryptodev/rte_cryptodev.c\n+++ b/lib/librte_cryptodev/rte_cryptodev.c\n@@ -747,8 +747,7 @@ rte_cryptodev_queue_pair_stop(uint8_t dev_id, uint16_t queue_pair_id)\n }\n \n int\n-rte_cryptodev_configure(uint8_t dev_id, struct rte_cryptodev_config *config,\n-\t\tstruct rte_mempool *session_pool)\n+rte_cryptodev_configure(uint8_t dev_id, struct rte_cryptodev_config *config)\n {\n \tstruct rte_cryptodev *dev;\n \tint diag;\n@@ -768,8 +767,6 @@ rte_cryptodev_configure(uint8_t dev_id, struct rte_cryptodev_config *config,\n \n \tRTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_configure, -ENOTSUP);\n \n-\tdev->data->session_pool = session_pool;\n-\n \t/* Setup new number of queue pairs and reconfigure device. */\n \tdiag = rte_cryptodev_queue_pairs_config(dev, config->nb_queue_pairs,\n \t\t\tconfig->socket_id);\n@@ -881,7 +878,9 @@ rte_cryptodev_close(uint8_t dev_id)\n \n int\n rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,\n-\t\tconst struct rte_cryptodev_qp_conf *qp_conf, int socket_id)\n+\t\tconst struct rte_cryptodev_qp_conf *qp_conf, int socket_id,\n+\t\tstruct rte_mempool *session_pool)\n+\n {\n \tstruct rte_cryptodev *dev;\n \n@@ -905,7 +904,7 @@ rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,\n \tRTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->queue_pair_setup, -ENOTSUP);\n \n \treturn (*dev->dev_ops->queue_pair_setup)(dev, queue_pair_id, qp_conf,\n-\t\t\tsocket_id);\n+\t\t\tsocket_id, session_pool);\n }\n \n \ndiff --git a/lib/librte_cryptodev/rte_cryptodev.h b/lib/librte_cryptodev/rte_cryptodev.h\nindex 3ba3efb..ca7cbdd 100644\n--- a/lib/librte_cryptodev/rte_cryptodev.h\n+++ b/lib/librte_cryptodev/rte_cryptodev.h\n@@ -525,15 +525,13 @@ struct rte_cryptodev_config {\n *\n * @param\tdev_id\t\tThe identifier of the device to configure.\n * @param\tconfig\t\tThe crypto device configuration structure.\n- * @param\tsession_pool\tPointer to device session mempool\n *\n * @return\n * - 0: Success, device configured.\n * - <0: Error code returned by the driver configuration function.\n */\n extern int\n-rte_cryptodev_configure(uint8_t dev_id, struct rte_cryptodev_config *config,\n-\t\tstruct rte_mempool *session_pool);\n+rte_cryptodev_configure(uint8_t dev_id, struct rte_cryptodev_config *config);\n \n /**\n * Start an device.\n@@ -592,6 +590,8 @@ rte_cryptodev_close(uint8_t dev_id);\n *\t\t\t\t*SOCKET_ID_ANY* if there is no NUMA constraint\n *\t\t\t\tfor the DMA memory allocated for the receive\n *\t\t\t\tqueue pair.\n+ * @param\tsession_pool\tPointer to device session mempool, used\n+ *\t\t\t\tfor session-less operations.\n *\n * @return\n * - 0: Success, queue pair correctly set up.\n@@ -599,7 +599,8 @@ rte_cryptodev_close(uint8_t dev_id);\n */\n extern int\n rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,\n-\t\tconst struct rte_cryptodev_qp_conf *qp_conf, int socket_id);\n+\t\tconst struct rte_cryptodev_qp_conf *qp_conf, int socket_id,\n+\t\tstruct rte_mempool *session_pool);\n \n /**\n * Start a specified queue pair of a device. It is used\ndiff --git a/lib/librte_cryptodev/rte_cryptodev_pmd.h b/lib/librte_cryptodev/rte_cryptodev_pmd.h\nindex 2896171..82ad1f7 100644\n--- a/lib/librte_cryptodev/rte_cryptodev_pmd.h\n+++ b/lib/librte_cryptodev/rte_cryptodev_pmd.h\n@@ -207,12 +207,13 @@ typedef int (*cryptodev_queue_pair_stop_t)(struct rte_cryptodev *dev,\n * @param\tqp_id\t\tQueue Pair Index\n * @param\tqp_conf\t\tQueue configuration structure\n * @param\tsocket_id\tSocket Index\n+ * @param\tsession_pool\tPointer to device session mempool\n *\n * @return\tReturns 0 on success.\n */\n typedef int (*cryptodev_queue_pair_setup_t)(struct rte_cryptodev *dev,\n \t\tuint16_t qp_id,\tconst struct rte_cryptodev_qp_conf *qp_conf,\n-\t\tint socket_id);\n+\t\tint socket_id, struct rte_mempool *session_pool);\n \n /**\n * Release memory resources allocated by given queue pair.\ndiff --git a/test/test/test_cryptodev.c b/test/test/test_cryptodev.c\nindex 745f261..b068609 100644\n--- a/test/test/test_cryptodev.c\n+++ b/test/test/test_cryptodev.c\n@@ -404,7 +404,7 @@ testsuite_setup(void)\n \t\t\t\"session mempool allocation failed\");\n \n \tTEST_ASSERT_SUCCESS(rte_cryptodev_configure(dev_id,\n-\t\t\t&ts_params->conf, ts_params->session_mpool),\n+\t\t\t&ts_params->conf),\n \t\t\t\"Failed to configure cryptodev %u with %u qps\",\n \t\t\tdev_id, ts_params->conf.nb_queue_pairs);\n \n@@ -413,7 +413,8 @@ testsuite_setup(void)\n \tfor (qp_id = 0; qp_id < info.max_nb_queue_pairs; qp_id++) {\n \t\tTEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(\n \t\t\tdev_id, qp_id, &ts_params->qp_conf,\n-\t\t\trte_cryptodev_socket_id(dev_id)),\n+\t\t\trte_cryptodev_socket_id(dev_id),\n+\t\t\tts_params->session_mpool),\n \t\t\t\"Failed to setup queue pair %u on cryptodev %u\",\n \t\t\tqp_id, dev_id);\n \t}\n@@ -458,7 +459,7 @@ ut_setup(void)\n \tts_params->conf.socket_id = SOCKET_ID_ANY;\n \n \tTEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->valid_devs[0],\n-\t\t\t&ts_params->conf, ts_params->session_mpool),\n+\t\t\t&ts_params->conf),\n \t\t\t\"Failed to configure cryptodev %u\",\n \t\t\tts_params->valid_devs[0]);\n \n@@ -466,7 +467,8 @@ ut_setup(void)\n \t\tTEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(\n \t\t\tts_params->valid_devs[0], qp_id,\n \t\t\t&ts_params->qp_conf,\n-\t\t\trte_cryptodev_socket_id(ts_params->valid_devs[0])),\n+\t\t\trte_cryptodev_socket_id(ts_params->valid_devs[0]),\n+\t\t\tts_params->session_mpool),\n \t\t\t\"Failed to setup queue pair %u on cryptodev %u\",\n \t\t\tqp_id, ts_params->valid_devs[0]);\n \t}\n@@ -542,23 +544,20 @@ test_device_configure_invalid_dev_id(void)\n \t/* Stop the device in case it's started so it can be configured */\n \trte_cryptodev_stop(ts_params->valid_devs[dev_id]);\n \n-\tTEST_ASSERT_SUCCESS(rte_cryptodev_configure(dev_id, &ts_params->conf,\n-\t\t\t\tts_params->session_mpool),\n+\tTEST_ASSERT_SUCCESS(rte_cryptodev_configure(dev_id, &ts_params->conf),\n \t\t\t\"Failed test for rte_cryptodev_configure: \"\n \t\t\t\"invalid dev_num %u\", dev_id);\n \n \t/* invalid dev_id values */\n \tdev_id = num_devs;\n \n-\tTEST_ASSERT_FAIL(rte_cryptodev_configure(dev_id, &ts_params->conf,\n-\t\t\t\tts_params->session_mpool),\n+\tTEST_ASSERT_FAIL(rte_cryptodev_configure(dev_id, &ts_params->conf),\n \t\t\t\"Failed test for rte_cryptodev_configure: \"\n \t\t\t\"invalid dev_num %u\", dev_id);\n \n \tdev_id = 0xff;\n \n-\tTEST_ASSERT_FAIL(rte_cryptodev_configure(dev_id, &ts_params->conf,\n-\t\t\t\tts_params->session_mpool),\n+\tTEST_ASSERT_FAIL(rte_cryptodev_configure(dev_id, &ts_params->conf),\n \t\t\t\"Failed test for rte_cryptodev_configure:\"\n \t\t\t\"invalid dev_num %u\", dev_id);\n \n@@ -578,7 +577,7 @@ test_device_configure_invalid_queue_pair_ids(void)\n \tts_params->conf.nb_queue_pairs = 1;\n \n \tTEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->valid_devs[0],\n-\t\t\t&ts_params->conf, ts_params->session_mpool),\n+\t\t\t&ts_params->conf),\n \t\t\t\"Failed to configure cryptodev: dev_id %u, qp_id %u\",\n \t\t\tts_params->valid_devs[0], ts_params->conf.nb_queue_pairs);\n \n@@ -587,7 +586,7 @@ test_device_configure_invalid_queue_pair_ids(void)\n \tts_params->conf.nb_queue_pairs = MAX_NUM_QPS_PER_QAT_DEVICE;\n \n \tTEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->valid_devs[0],\n-\t\t\t&ts_params->conf, ts_params->session_mpool),\n+\t\t\t&ts_params->conf),\n \t\t\t\"Failed to configure cryptodev: dev_id %u, qp_id %u\",\n \t\t\tts_params->valid_devs[0],\n \t\t\tts_params->conf.nb_queue_pairs);\n@@ -597,7 +596,7 @@ test_device_configure_invalid_queue_pair_ids(void)\n \tts_params->conf.nb_queue_pairs = 0;\n \n \tTEST_ASSERT_FAIL(rte_cryptodev_configure(ts_params->valid_devs[0],\n-\t\t\t&ts_params->conf, ts_params->session_mpool),\n+\t\t\t&ts_params->conf),\n \t\t\t\"Failed test for rte_cryptodev_configure, dev_id %u,\"\n \t\t\t\" invalid qps: %u\",\n \t\t\tts_params->valid_devs[0],\n@@ -608,7 +607,7 @@ test_device_configure_invalid_queue_pair_ids(void)\n \tts_params->conf.nb_queue_pairs = UINT16_MAX;\n \n \tTEST_ASSERT_FAIL(rte_cryptodev_configure(ts_params->valid_devs[0],\n-\t\t\t&ts_params->conf, ts_params->session_mpool),\n+\t\t\t&ts_params->conf),\n \t\t\t\"Failed test for rte_cryptodev_configure, dev_id %u,\"\n \t\t\t\" invalid qps: %u\",\n \t\t\tts_params->valid_devs[0],\n@@ -619,7 +618,7 @@ test_device_configure_invalid_queue_pair_ids(void)\n \tts_params->conf.nb_queue_pairs = MAX_NUM_QPS_PER_QAT_DEVICE + 1;\n \n \tTEST_ASSERT_FAIL(rte_cryptodev_configure(ts_params->valid_devs[0],\n-\t\t\t&ts_params->conf, ts_params->session_mpool),\n+\t\t\t&ts_params->conf),\n \t\t\t\"Failed test for rte_cryptodev_configure, dev_id %u,\"\n \t\t\t\" invalid qps: %u\",\n \t\t\tts_params->valid_devs[0],\n@@ -649,7 +648,7 @@ test_queue_pair_descriptor_setup(void)\n \trte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);\n \n \tTEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->valid_devs[0],\n-\t\t\t&ts_params->conf, ts_params->session_mpool),\n+\t\t\t&ts_params->conf),\n \t\t\t\"Failed to configure cryptodev %u\",\n \t\t\tts_params->valid_devs[0]);\n \n@@ -663,7 +662,8 @@ test_queue_pair_descriptor_setup(void)\n \t\tTEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(\n \t\t\t\tts_params->valid_devs[0], qp_id, &qp_conf,\n \t\t\t\trte_cryptodev_socket_id(\n-\t\t\t\t\t\tts_params->valid_devs[0])),\n+\t\t\t\t\t\tts_params->valid_devs[0]),\n+\t\t\t\tts_params->session_mpool),\n \t\t\t\t\"Failed test for \"\n \t\t\t\t\"rte_cryptodev_queue_pair_setup: num_inflights \"\n \t\t\t\t\"%u on qp %u on cryptodev %u\",\n@@ -677,7 +677,8 @@ test_queue_pair_descriptor_setup(void)\n \t\tTEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(\n \t\t\t\tts_params->valid_devs[0], qp_id, &qp_conf,\n \t\t\t\trte_cryptodev_socket_id(\n-\t\t\t\t\t\tts_params->valid_devs[0])),\n+\t\t\t\t\t\tts_params->valid_devs[0]),\n+\t\t\t\tts_params->session_mpool),\n \t\t\t\t\"Failed test for\"\n \t\t\t\t\" rte_cryptodev_queue_pair_setup: num_inflights\"\n \t\t\t\t\" %u on qp %u on cryptodev %u\",\n@@ -691,7 +692,8 @@ test_queue_pair_descriptor_setup(void)\n \t\tTEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(\n \t\t\t\tts_params->valid_devs[0], qp_id, &qp_conf,\n \t\t\t\trte_cryptodev_socket_id(\n-\t\t\t\t\t\tts_params->valid_devs[0])),\n+\t\t\t\t\t\tts_params->valid_devs[0]),\n+\t\t\t\tts_params->session_mpool),\n \t\t\t\t\"Failed test for \"\n \t\t\t\t\"rte_cryptodev_queue_pair_setup: num_inflights\"\n \t\t\t\t\" %u on qp %u on cryptodev %u\",\n@@ -706,7 +708,8 @@ test_queue_pair_descriptor_setup(void)\n \t\tTEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(\n \t\t\t\tts_params->valid_devs[0], qp_id, &qp_conf,\n \t\t\t\trte_cryptodev_socket_id(\n-\t\t\t\t\t\tts_params->valid_devs[0])),\n+\t\t\t\t\t\tts_params->valid_devs[0]),\n+\t\t\t\tts_params->session_mpool),\n \t\t\t\t\"Unexpectedly passed test for \"\n \t\t\t\t\"rte_cryptodev_queue_pair_setup:\"\n \t\t\t\t\"num_inflights %u on qp %u on cryptodev %u\",\n@@ -721,7 +724,8 @@ test_queue_pair_descriptor_setup(void)\n \t\tTEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(\n \t\t\t\tts_params->valid_devs[0], qp_id, &qp_conf,\n \t\t\t\trte_cryptodev_socket_id(\n-\t\t\t\t\t\tts_params->valid_devs[0])),\n+\t\t\t\t\t\tts_params->valid_devs[0]),\n+\t\t\t\tts_params->session_mpool),\n \t\t\t\t\"Unexpectedly passed test for \"\n \t\t\t\t\"rte_cryptodev_queue_pair_setup:\"\n \t\t\t\t\"num_inflights %u on qp %u on cryptodev %u\",\n@@ -735,7 +739,8 @@ test_queue_pair_descriptor_setup(void)\n \t\tTEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(\n \t\t\t\tts_params->valid_devs[0], qp_id, &qp_conf,\n \t\t\t\trte_cryptodev_socket_id(\n-\t\t\t\t\t\tts_params->valid_devs[0])),\n+\t\t\t\t\t\tts_params->valid_devs[0]),\n+\t\t\t\tts_params->session_mpool),\n \t\t\t\t\"Failed test for\"\n \t\t\t\t\" rte_cryptodev_queue_pair_setup:\"\n \t\t\t\t\"num_inflights %u on qp %u on cryptodev %u\",\n@@ -750,7 +755,8 @@ test_queue_pair_descriptor_setup(void)\n \t\tTEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(\n \t\t\t\tts_params->valid_devs[0], qp_id, &qp_conf,\n \t\t\t\trte_cryptodev_socket_id(\n-\t\t\t\t\t\tts_params->valid_devs[0])),\n+\t\t\t\t\t\tts_params->valid_devs[0]),\n+\t\t\t\tts_params->session_mpool),\n \t\t\t\t\"Unexpectedly passed test for \"\n \t\t\t\t\"rte_cryptodev_queue_pair_setup:\"\n \t\t\t\t\"num_inflights %u on qp %u on cryptodev %u\",\n@@ -766,7 +772,8 @@ test_queue_pair_descriptor_setup(void)\n \tTEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(\n \t\t\tts_params->valid_devs[0],\n \t\t\tqp_id, &qp_conf,\n-\t\t\trte_cryptodev_socket_id(ts_params->valid_devs[0])),\n+\t\t\trte_cryptodev_socket_id(ts_params->valid_devs[0]),\n+\t\t\tts_params->session_mpool),\n \t\t\t\"Failed test for rte_cryptodev_queue_pair_setup:\"\n \t\t\t\"invalid qp %u on cryptodev %u\",\n \t\t\tqp_id, ts_params->valid_devs[0]);\n@@ -776,7 +783,8 @@ test_queue_pair_descriptor_setup(void)\n \tTEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(\n \t\t\tts_params->valid_devs[0],\n \t\t\tqp_id, &qp_conf,\n-\t\t\trte_cryptodev_socket_id(ts_params->valid_devs[0])),\n+\t\t\trte_cryptodev_socket_id(ts_params->valid_devs[0]),\n+\t\t\tts_params->session_mpool),\n \t\t\t\"Failed test for rte_cryptodev_queue_pair_setup:\"\n \t\t\t\"invalid qp %u on cryptodev %u\",\n \t\t\tqp_id, ts_params->valid_devs[0]);\ndiff --git a/test/test/test_cryptodev_perf.c b/test/test/test_cryptodev_perf.c\nindex e21f5e7..8cddaa7 100644\n--- a/test/test/test_cryptodev_perf.c\n+++ b/test/test/test_cryptodev_perf.c\n@@ -423,7 +423,7 @@ testsuite_setup(void)\n \t\t\t\"session mempool allocation failed\");\n \n \tTEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->dev_id,\n-\t\t\t&ts_params->conf, ts_params->sess_mp),\n+\t\t\t&ts_params->conf),\n \t\t\t\"Failed to configure cryptodev %u\",\n \t\t\tts_params->dev_id);\n \n@@ -433,7 +433,8 @@ testsuite_setup(void)\n \t\tTEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(\n \t\t\tts_params->dev_id, qp_id,\n \t\t\t\t&ts_params->qp_conf,\n-\t\t\t\trte_cryptodev_socket_id(ts_params->dev_id)),\n+\t\t\t\trte_cryptodev_socket_id(ts_params->dev_id),\n+\t\t\t\tts_params->sess_mp),\n \t\t\t\t\"Failed to setup queue pair %u on cryptodev %u\",\n \t\t\t\tqp_id, ts_params->dev_id);\n \t}\n", "prefixes": [ "dpdk-dev", "v4", "10/12" ] }{ "id": 26502, "url": "