From patchwork Thu Jun 15 16:48:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Chautru, Nicolas" X-Patchwork-Id: 128753 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 169CC42CC8; Thu, 15 Jun 2023 18:54:57 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 675AB41104; Thu, 15 Jun 2023 18:54:54 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 016E340A8B for ; Thu, 15 Jun 2023 18:54:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686848091; x=1718384091; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=42Gygtp/7atkz/3bcSHg796R8QSSy9twDwUaGrPIeFI=; b=F1AHFS+yMtIP5g/Uwlb59yhd3skusx/O+6MqPuI6LuTuADpfP5Y1B7UF y9XYFtOiwVfuF5rWZz2m/kDWzEtQVjzfz/lYLHSHZg/p/SryvUnvusOyj pGgIgVwmstyIGWWyy9haRpgUMDEodlWBvkpMVLnVv6CT/6Of2MU47PnuC YGXyAUOvZ9xJSHhZSgRexzjOPPHU/+KkEYvGy9g81/XEhawXI37Q6wXsI ui3MrOlSVyo7j/ZVM04OadECigMyWZlq3WJ/wBTvwU9ebCsAzoHPX6yXl 4N+mXPESrsGGgWfnV8RLo77N0yliJAbcTQl2tX4LzJXU0PPFUgJ3JteEc w==; X-IronPort-AV: E=McAfee;i="6600,9927,10742"; a="356469814" X-IronPort-AV: E=Sophos;i="6.00,245,1681196400"; d="scan'208";a="356469814" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jun 2023 09:54:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10742"; a="712518713" X-IronPort-AV: E=Sophos;i="6.00,245,1681196400"; d="scan'208";a="712518713" Received: from spr-npg-bds1-eec2.sn.intel.com (HELO spr-npg-bds1-eec2..) ([10.233.181.123]) by orsmga002.jf.intel.com with ESMTP; 15 Jun 2023 09:54:28 -0700 From: Nicolas Chautru To: dev@dpdk.org, maxime.coquelin@redhat.com Cc: trix@redhat.com, hemant.agrawal@nxp.com, david.marchand@redhat.com, hernan.vargas@intel.com, Nicolas Chautru Subject: [PATCH v2 2/5] bbdev: add new capabilities for FFT processing Date: Thu, 15 Jun 2023 16:48:58 +0000 Message-Id: <20230615164901.40845-3-nicolas.chautru@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230615164901.40845-1-nicolas.chautru@intel.com> References: <20230615164901.40845-1-nicolas.chautru@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 Extending existing FFT operation for new capabilities. Optional frequency domain dewindowing, frequency resampling, timing error correction and time offset per CS. Signed-off-by: Nicolas Chautru Acked-by: Maxime Coquelin --- doc/guides/prog_guide/bbdev.rst | 24 ++++++++++++++++++++++++ lib/bbdev/rte_bbdev_op.h | 23 ++++++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/doc/guides/prog_guide/bbdev.rst b/doc/guides/prog_guide/bbdev.rst index 8e384015ee..95b33562fe 100644 --- a/doc/guides/prog_guide/bbdev.rst +++ b/doc/guides/prog_guide/bbdev.rst @@ -1111,6 +1111,18 @@ with the operation flags forming a bitmask in the ``op_flags`` field. |RTE_BBDEV_FFT_FP16_OUTPUT | | Set if the output data shall use FP16 format instead of INT16 | +--------------------------------------------------------------------+ +|RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS | +| Set if device supports adjusting time offset per CS | ++--------------------------------------------------------------------+ +|RTE_BBDEV_FFT_TIMING_ERROR | +| Set if device supports correcting for timing error | ++--------------------------------------------------------------------+ +|RTE_BBDEV_FFT_DEWINDOWING | +| Set if enabling the option FFT Dewindowing in Frequency domain | ++--------------------------------------------------------------------+ +|RTE_BBDEV_FFT_FREQ_RESAMPLING | +| Set if device supports the optional frequency resampling | ++--------------------------------------------------------------------+ The FFT parameters are set out in the table below. @@ -1121,6 +1133,8 @@ The FFT parameters are set out in the table below. +-------------------------+--------------------------------------------------------------+ |base_output |output data | +-------------------------+--------------------------------------------------------------+ +|dewindowing_input |optional frequency domain dewindowing input data | ++-------------------------+--------------------------------------------------------------+ |power_meas_output |optional output data with power measurement on DFT output | +-------------------------+--------------------------------------------------------------+ |op_flags |bitmask of all active operation capabilities | @@ -1155,6 +1169,16 @@ The FFT parameters are set out in the table below. +-------------------------+--------------------------------------------------------------+ |fp16_exp_adjust |value added to FP16 exponent at conversion from INT16 | +-------------------------+--------------------------------------------------------------+ +|freq_resample_mode |frequency ressampling mode (0:transparent, 1-2: resample) | ++-------------------------+--------------------------------------------------------------+ +| output_depadded_size |output depadded size prior to frequency resampling | ++-------------------------+--------------------------------------------------------------+ +|cs_theta_0 |timing error correction initial phase | ++-------------------------+--------------------------------------------------------------+ +|cs_theta_d |timing error correction phase increment | ++-------------------------+--------------------------------------------------------------+ +|time_offset |time offset per CS of time domain samples | ++-------------------------+--------------------------------------------------------------+ The mbuf input ``base_input`` is mandatory for all bbdev PMDs and is the incoming data for the processing. Its size may not fit into an actual mbuf, diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h index 990d110fa7..682e265327 100644 --- a/lib/bbdev/rte_bbdev_op.h +++ b/lib/bbdev/rte_bbdev_op.h @@ -50,6 +50,7 @@ extern "C" { #define RTE_BBDEV_LDPC_MAX_CODE_BLOCKS (256) /* 12 CS maximum */ #define RTE_BBDEV_MAX_CS_2 (6) +#define RTE_BBDEV_MAX_CS (12) /* MLD-TS up to 4 layers */ #define RTE_BBDEV_MAX_MLD_LAYERS (4) /* 12 SB per RB */ @@ -242,7 +243,15 @@ enum rte_bbdev_op_fft_flag_bitmasks { /** Set if the input data used FP16 format. */ RTE_BBDEV_FFT_FP16_INPUT = (1ULL << 6), /** Set if the output data uses FP16 format. */ - RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7) + RTE_BBDEV_FFT_FP16_OUTPUT = (1ULL << 7), + /** Flexible adjustment of Timing offset adjustment per CS. */ + RTE_BBDEV_FFT_TIMING_OFFSET_PER_CS = (1ULL << 8), + /** Flexible adjustment of Timing error correction per CS. */ + RTE_BBDEV_FFT_TIMING_ERROR = (1ULL << 9), + /** Set for optional frequency domain dewindowing. */ + RTE_BBDEV_FFT_DEWINDOWING = (1ULL << 10), + /** Flexible adjustment of frequency resampling mode. */ + RTE_BBDEV_FFT_FREQ_RESAMPLING = (1ULL << 11) }; /** Flags for MLDTS operation and capability structure */ @@ -756,6 +765,8 @@ struct rte_bbdev_op_fft { struct rte_bbdev_op_data base_input; /** Output data starting from first antenna and first cyclic shift. */ struct rte_bbdev_op_data base_output; + /** Optional frequency window input data. */ + struct rte_bbdev_op_data dewindowing_input; /** Optional power measurement output data. */ struct rte_bbdev_op_data power_meas_output; /** Flags from rte_bbdev_op_fft_flag_bitmasks. */ @@ -790,6 +801,16 @@ struct rte_bbdev_op_fft { uint16_t power_shift; /** Adjust the FP6 exponent for INT<->FP16 conversion. */ uint16_t fp16_exp_adjust; + /** Frequency resampling : 0: Transparent Mode1: 4/3 Resample2: 2/3 Resample. */ + int8_t freq_resample_mode; + /** Output depadded size prior to frequency resampling. */ + uint16_t output_depadded_size; + /** Time error correction initial phase. */ + uint16_t cs_theta_0[RTE_BBDEV_MAX_CS]; + /** Time error correction phase increment. */ + uint32_t cs_theta_d[RTE_BBDEV_MAX_CS]; + /* Time offset per CS of time domain samples. */ + int8_t time_offset[RTE_BBDEV_MAX_CS]; }; /* >8 End of structure rte_bbdev_op_fft. */