Thanks Maxime.
> -----Original Message-----
> From: Maxime Coquelin <maxime.coque...@redhat.com>
> Sent: Monday, September 18, 2023 8:43 AM
> To: Chautru, Nicolas <nicolas.chau...@intel.com>; dev@dpdk.org
> Cc: Rix, Tom <t...@redhat.com>; hemant.agra...@nxp.com;
> david.march...@redhat.com; Vargas, Hernan <hernan.var...@intel.com>
> Subject: Re: [PATCH v2 2/5] bbdev: add new capabilities for FFT processing
>
>
>
> On 9/18/23 17:08, Maxime Coquelin wrote:
> >
> >
> > On 6/15/23 18:48, Nicolas Chautru wrote:
> >> 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 <nicolas.chau...@intel.com>
> >> ---
> >> 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. */
> >
> > I think you need to document ABI change in:
> > doc/guides/rel_notes/release_23_11.rst
>
> Nevermind, I forgot the FFT API was still experimental.
> No need to submit a new revision, I will fix the typos in patch 5.
>
> Maxime
>
> > Once done, please add my:
> > Acked-by: Maxime Coquelin <maxime.coque...@redhat.com>
> >
> > Maxime
> >
> >