From patchwork Tue Apr 16 08:12:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ganapati Kundapura X-Patchwork-Id: 139414 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6537A43E74; Tue, 16 Apr 2024 10:12:29 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E24DE4029E; Tue, 16 Apr 2024 10:12:28 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.17]) by mails.dpdk.org (Postfix) with ESMTP id 25FBA40293 for ; Tue, 16 Apr 2024 10:12:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1713255147; x=1744791147; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=vSkqWVwFPa9RgO/8VYcQeZe2/WqqVi03bfhOwZI0wuk=; b=JuYBQVcsBIz9GbQQauEeZnsJCeaX6jcaEw0+mskW93MSBFvac6f0h2do EScZPmFyxoEx3c7CLoHO26wh2n8SBHjyndJXY4Fw6qcZNlTH/yAr/oWSd ZnIMkB83cRbmmyY0I6X7QH2fCTpnH3NOCk0Ra2WjNj/mIxeVgU19ICR86 4GtWu/7hpeogexUG7K4KI7JMMAdvMS3blyOi8bAzP3BdUov1SUuwO6nPJ QSLLSXuy1uAfhW1jWx4z0dsNyae5GjXNMb17SuGA31vfv06aAAvC5fgBy 20Cg0bZXxIpp8EPK/V6A6E47jk1ZszDtYpohR3E9fXzEM5jjJ8A9B4eQX Q==; X-CSE-ConnectionGUID: KoFjEH8BTpGniC+3YVaKpA== X-CSE-MsgGUID: fGZw8s4HS3OF4DKJ3zLIiQ== X-IronPort-AV: E=McAfee;i="6600,9927,11045"; a="8540901" X-IronPort-AV: E=Sophos;i="6.07,205,1708416000"; d="scan'208";a="8540901" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Apr 2024 01:12:26 -0700 X-CSE-ConnectionGUID: I2jS85jBRiSUx4RIFIgCOQ== X-CSE-MsgGUID: StpomYV5Q2iK51m+vHM9ig== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,205,1708416000"; d="scan'208";a="22246330" Received: from txandevlnx322.an.intel.com ([10.123.117.44]) by fmviesa006.fm.intel.com with ESMTP; 16 Apr 2024 01:12:26 -0700 From: Ganapati Kundapura To: dev@dpdk.org Cc: abhinandan.gujjar@intel.com, ciara.power@intel.com, gakhil@marvell.com, fanzhang.oss@gmail.com Subject: [PATCH v1] crypto: fix build issues on crypto callbacks macro undefined Date: Tue, 16 Apr 2024 03:12:22 -0500 Message-Id: <20240416081222.3002268-1-ganapati.kundapura@intel.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Crypto callbacks macro is defined with value 1 and being used with ifdef, on config value is changed to 0 to disable, crypto callback changes still being compiled. Defined crypto callbacks macro without value, undef to disable Wrapped crypto callback changes with RTE_CRYPTO_CALLBACKS macro to fix build issues when macro is undefined. As callback head nodes have valid pointer, this patch checks the next node from the head if callbacks registered. Fixes: 1c3ffb9 ("cryptodev: add enqueue and dequeue callbacks") Fixes: 5523a75 ("test/crypto: add case for enqueue/dequeue callbacks") Signed-off-by: Ganapati Kundapura Acked-by: Abhinandan Gujjar Acked-by: Ciara Power diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index 1703ebccf1..1a592f2302 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -14547,6 +14547,7 @@ test_null_burst_operation(void) return TEST_SUCCESS; } +#ifdef RTE_CRYPTO_CALLBACKS static uint16_t test_enq_callback(uint16_t dev_id, uint16_t qp_id, struct rte_crypto_op **ops, uint16_t nb_ops, void *user_param) @@ -14784,6 +14785,7 @@ test_deq_callback_setup(void) return TEST_SUCCESS; } +#endif /* RTE_CRYPTO_CALLBACKS */ static void generate_gmac_large_plaintext(uint8_t *data) @@ -18069,8 +18071,10 @@ static struct unit_test_suite cryptodev_gen_testsuite = { TEST_CASE_ST(ut_setup, ut_teardown, test_device_configure_invalid_queue_pair_ids), TEST_CASE_ST(ut_setup, ut_teardown, test_stats), +#ifdef RTE_CRYPTO_CALLBACKS TEST_CASE_ST(ut_setup, ut_teardown, test_enq_callback_setup), TEST_CASE_ST(ut_setup, ut_teardown, test_deq_callback_setup), +#endif TEST_CASES_END() /**< NULL terminate unit test array */ } }; diff --git a/config/rte_config.h b/config/rte_config.h index dd7bb0d35b..b647a69ba8 100644 --- a/config/rte_config.h +++ b/config/rte_config.h @@ -72,7 +72,7 @@ /* cryptodev defines */ #define RTE_CRYPTO_MAX_DEVS 64 #define RTE_CRYPTODEV_NAME_LEN 64 -#define RTE_CRYPTO_CALLBACKS 1 +#define RTE_CRYPTO_CALLBACKS /* No Value, undef/comment out to disable */ /* compressdev defines */ #define RTE_COMPRESS_MAX_DEVS 64 diff --git a/lib/cryptodev/rte_cryptodev.c b/lib/cryptodev/rte_cryptodev.c index 886eb7adc4..5f3b17a517 100644 --- a/lib/cryptodev/rte_cryptodev.c +++ b/lib/cryptodev/rte_cryptodev.c @@ -628,6 +628,7 @@ rte_cryptodev_asym_xform_capability_check_hash( return ret; } +#ifdef RTE_CRYPTO_CALLBACKS /* spinlock for crypto device enq callbacks */ static rte_spinlock_t rte_cryptodev_callback_lock = RTE_SPINLOCK_INITIALIZER; @@ -744,6 +745,7 @@ cryptodev_cb_init(struct rte_cryptodev *dev) cryptodev_cb_cleanup(dev); return -ENOMEM; } +#endif /* RTE_CRYPTO_CALLBACKS */ const char * rte_cryptodev_get_feature_name(uint64_t flag) @@ -1244,9 +1246,11 @@ rte_cryptodev_configure(uint8_t dev_id, struct rte_cryptodev_config *config) if (*dev->dev_ops->dev_configure == NULL) return -ENOTSUP; +#ifdef RTE_CRYPTO_CALLBACKS rte_spinlock_lock(&rte_cryptodev_callback_lock); cryptodev_cb_cleanup(dev); rte_spinlock_unlock(&rte_cryptodev_callback_lock); +#endif /* Setup new number of queue pairs and reconfigure device. */ diag = rte_cryptodev_queue_pairs_config(dev, config->nb_queue_pairs, @@ -1257,6 +1261,7 @@ rte_cryptodev_configure(uint8_t dev_id, struct rte_cryptodev_config *config) return diag; } +#ifdef RTE_CRYPTO_CALLBACKS rte_spinlock_lock(&rte_cryptodev_callback_lock); diag = cryptodev_cb_init(dev); rte_spinlock_unlock(&rte_cryptodev_callback_lock); @@ -1264,6 +1269,7 @@ rte_cryptodev_configure(uint8_t dev_id, struct rte_cryptodev_config *config) CDEV_LOG_ERR("Callback init failed for dev_id=%d", dev_id); return diag; } +#endif rte_cryptodev_trace_configure(dev_id, config); return (*dev->dev_ops->dev_configure)(dev, config); @@ -1485,6 +1491,7 @@ rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id, socket_id); } +#ifdef RTE_CRYPTO_CALLBACKS struct rte_cryptodev_cb * rte_cryptodev_add_enq_callback(uint8_t dev_id, uint16_t qp_id, @@ -1763,6 +1770,7 @@ rte_cryptodev_remove_deq_callback(uint8_t dev_id, rte_spinlock_unlock(&rte_cryptodev_callback_lock); return ret; } +#endif /* RTE_CRYPTO_CALLBACKS */ int rte_cryptodev_stats_get(uint8_t dev_id, struct rte_cryptodev_stats *stats) diff --git a/lib/cryptodev/rte_cryptodev.h b/lib/cryptodev/rte_cryptodev.h index 00ba6a234a..b811b458d5 100644 --- a/lib/cryptodev/rte_cryptodev.h +++ b/lib/cryptodev/rte_cryptodev.h @@ -1910,7 +1910,7 @@ rte_cryptodev_dequeue_burst(uint8_t dev_id, uint16_t qp_id, nb_ops = fp_ops->dequeue_burst(qp, ops, nb_ops); #ifdef RTE_CRYPTO_CALLBACKS - if (unlikely(fp_ops->qp.deq_cb != NULL)) { + if (unlikely(fp_ops->qp.deq_cb[qp_id].next != NULL)) { struct rte_cryptodev_cb_rcu *list; struct rte_cryptodev_cb *cb; @@ -1977,7 +1977,7 @@ rte_cryptodev_enqueue_burst(uint8_t dev_id, uint16_t qp_id, fp_ops = &rte_crypto_fp_ops[dev_id]; qp = fp_ops->qp.data[qp_id]; #ifdef RTE_CRYPTO_CALLBACKS - if (unlikely(fp_ops->qp.enq_cb != NULL)) { + if (unlikely(fp_ops->qp.enq_cb[qp_id].next != NULL)) { struct rte_cryptodev_cb_rcu *list; struct rte_cryptodev_cb *cb;