From patchwork Thu May 25 23:23:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Chautru, Nicolas" X-Patchwork-Id: 127509 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 C5DD242BA1; Fri, 26 May 2023 01:29:05 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D9A3742BDA; Fri, 26 May 2023 01:28:59 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 6C0E640A87 for ; Fri, 26 May 2023 01:28:57 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685057337; x=1716593337; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XPLt+omkIV/bTUJA5DGx+Exobx/S1VAtqV4rp3GjkFQ=; b=CAkFQhwt4CTjUq6x89okM9S2XSkWRtYnuQxWDqZds+az36cO09DFduKv 2Zt1Z8a2+iipfCdIye2LEtnvCAwt4xbhnQ0HNmM8hdWRNLKXzaCYiNP0+ GTiS5R2of1IH4GYY1Y9K2grWwd33KzPwvFxV44iZ07EaX4b9db/XiKGq9 Fv5x7r+6H9QR3GuzbD3L+QklTQI1K7pQF8Q3cZcvhDvXq0OAgIn3CIl4k bwZWeUqP3LyGDIkv6M0fiF8cuTPeblUyLO5GwFSR5Wp3Z8+pVHcb1PouW IP9hLPHQkj91s9UYIn3I83/Uss2VuRpUTzzbypNfRZIp3EZ7SAKakZvnJ g==; X-IronPort-AV: E=McAfee;i="6600,9927,10721"; a="338653650" X-IronPort-AV: E=Sophos;i="6.00,192,1681196400"; d="scan'208";a="338653650" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 May 2023 16:28:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10721"; a="655428620" X-IronPort-AV: E=Sophos;i="6.00,192,1681196400"; d="scan'208";a="655428620" Received: from spr-npg-bds1-eec2.sn.intel.com (HELO spr-npg-bds1-eec2..) ([10.233.181.123]) by orsmga003.jf.intel.com with ESMTP; 25 May 2023 16:28:42 -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 v1 2/4] bbdev: add new capabilities for FFT processing Date: Thu, 25 May 2023 23:23:29 +0000 Message-Id: <20230525232331.34645-3-nicolas.chautru@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230525232331.34645-1-nicolas.chautru@intel.com> References: <20230525232331.34645-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 --- 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 5b09c92963..d5c7522f79 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. */