From patchwork Mon Apr 22 19:07:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hernan Vargas X-Patchwork-Id: 139635 X-Patchwork-Delegate: maxime.coquelin@redhat.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 3F59743EDD; Mon, 22 Apr 2024 21:12:30 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A1AD840A8B; Mon, 22 Apr 2024 21:11:46 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.11]) by mails.dpdk.org (Postfix) with ESMTP id EC2B9402C5 for ; Mon, 22 Apr 2024 21:11:35 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1713813096; x=1745349096; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WjFTOCV68sgZ48p+4zvrvWZyj370txY2WUuzEH0S6Lo=; b=dnP6KlRzZjP4Yg0az1gaiFttf63fbCD5Mx9eFtQDUqDYdhvL2lP1+syS 8fwtmt360Qn6i3HB2TccxA4DWeVwN8cmlvCEI6gKcI6ETcIqeOlZa0bbg MIctD6prenFq1dWqJH+ffZJX0w7EyFPx6H5IvQ/aErs0JzvCBzDZGX2H+ AH0kyWIyN5/AFqd/RiSU7CUfAWcN5tQFKQDX38NvaZe25Qcj7PtpK6B+8 2Ck/9Agna/33A2J3B4wFVLQ8qvwWR4WrurNcu830S/fmudFOAHehwz9R3 QaNC74f6o6LpLRJl4hMv+0MsEb2N/uG+EZhLqat5X+BI5p0v8NMbtljdz g==; X-CSE-ConnectionGUID: hl1+AkGwST62st0t9UBvQQ== X-CSE-MsgGUID: SyNlTq25ToS0agjlz7x/Qw== X-IronPort-AV: E=McAfee;i="6600,9927,11052"; a="19922822" X-IronPort-AV: E=Sophos;i="6.07,221,1708416000"; d="scan'208";a="19922822" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2024 12:11:36 -0700 X-CSE-ConnectionGUID: QhmHSAgtRROUHIfkTEL0TA== X-CSE-MsgGUID: hlf8MB70QQeIewBn0FbrOg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,221,1708416000"; d="scan'208";a="24555975" Received: from unknown (HELO csl-npg-qt0.la.intel.com) ([10.233.181.103]) by orviesa006.jf.intel.com with ESMTP; 22 Apr 2024 12:11:35 -0700 From: Hernan Vargas To: dev@dpdk.org, gakhil@marvell.com, trix@redhat.com, maxime.coquelin@redhat.com Cc: nicolas.chautru@intel.com, qi.z.zhang@intel.com, Hernan Vargas Subject: [PATCH v1 8/9] test/bbdev: update fft measurement output Date: Mon, 22 Apr 2024 12:07:59 -0700 Message-Id: <20240422190800.123027-9-hernan.vargas@intel.com> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20240422190800.123027-1-hernan.vargas@intel.com> References: <20240422190800.123027-1-hernan.vargas@intel.com> 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 Update check for FFT measurement output to better account for tolerance. Signed-off-by: Hernan Vargas --- app/test-bbdev/test_bbdev_perf.c | 52 +++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c index 57b21730cab2..639e67a937b2 100644 --- a/app/test-bbdev/test_bbdev_perf.c +++ b/app/test-bbdev/test_bbdev_perf.c @@ -2637,6 +2637,56 @@ validate_op_fft_chain(struct rte_bbdev_op_data *op, struct op_data_entries *orig return TEST_SUCCESS; } +static inline int +validate_op_fft_meas_chain(struct rte_bbdev_op_data *op, struct op_data_entries *orig_op, + bool skip_validate_output) +{ + struct rte_mbuf *m = op->data; + uint8_t i, nb_dst_segments = orig_op->nb_segments; + double thres_hold = 1.0; + uint32_t j, data_len_iq, error_num; + int32_t *ref_out, *op_out; + double estSNR, refSNR, delt, abs_delt; + + TEST_ASSERT(nb_dst_segments == m->nb_segs, + "Number of segments differ in original (%u) and filled (%u) op fft", + nb_dst_segments, m->nb_segs); + + /* Due to size limitation of mbuf, FFT doesn't use real mbuf. */ + for (i = 0; i < nb_dst_segments; ++i) { + uint16_t offset = (i == 0) ? op->offset : 0; + uint32_t data_len = op->length; + + TEST_ASSERT(orig_op->segments[i].length == data_len, + "Length of segment differ in original (%u) and filled (%u) op fft", + orig_op->segments[i].length, data_len); + + /* Divided by 4 to get the number of 32 bits data. */ + data_len_iq = data_len >> 2; + ref_out = (int32_t *)(orig_op->segments[i].addr); + op_out = rte_pktmbuf_mtod_offset(m, int32_t *, offset); + error_num = 0; + for (j = 0; j < data_len_iq; j++) { + estSNR = 10*log10(op_out[j]); + refSNR = 10*log10(ref_out[j]); + delt = refSNR - estSNR; + abs_delt = delt > 0 ? delt : -delt; + error_num += (abs_delt > thres_hold ? 1 : 0); + } + if ((error_num > 0) && !skip_validate_output) { + rte_memdump(stdout, "Buffer A", ref_out, data_len); + rte_memdump(stdout, "Buffer B", op_out, data_len); + TEST_ASSERT(error_num == 0, + "FFT Output are not matched total (%u) errors (%u)", + data_len_iq, error_num); + } + + m = m->next; + } + + return TEST_SUCCESS; +} + static inline int validate_op_mldts_chain(struct rte_bbdev_op_data *op, struct op_data_entries *orig_op) @@ -2712,7 +2762,7 @@ validate_fft_op(struct rte_bbdev_fft_op **ops, const uint16_t n, &ops[i]->fft.base_output, fft_data_orig, skip_validate_output), "FFT Output buffers (op=%u) are not matched", i); if (check_bit(ops[i]->fft.op_flags, RTE_BBDEV_FFT_POWER_MEAS)) - TEST_ASSERT_SUCCESS(validate_op_fft_chain( + TEST_ASSERT_SUCCESS(validate_op_fft_meas_chain( &ops[i]->fft.power_meas_output, fft_pwr_orig, skip_validate_output), "FFT Power Output buffers (op=%u) are not matched", i); }