[v2,2/5] bbdev: add new capabilities for FFT processing

Message ID 20230615164901.40845-3-nicolas.chautru@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Maxime Coquelin
Headers
Series bbdev: API extension for 23.11 |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Chautru, Nicolas June 15, 2023, 4:48 p.m. UTC
  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.chautru@intel.com>
---
 doc/guides/prog_guide/bbdev.rst | 24 ++++++++++++++++++++++++
 lib/bbdev/rte_bbdev_op.h        | 23 ++++++++++++++++++++++-
 2 files changed, 46 insertions(+), 1 deletion(-)
  

Comments

Maxime Coquelin Sept. 18, 2023, 3:08 p.m. UTC | #1
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.chautru@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

Once done, please add my:
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Maxime
  
Maxime Coquelin Sept. 18, 2023, 3:42 p.m. UTC | #2
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.chautru@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.coquelin@redhat.com>
> 
> Maxime
> 
>
  
Chautru, Nicolas Sept. 18, 2023, 8:50 p.m. UTC | #3
Thanks Maxime. 

> -----Original Message-----
> From: Maxime Coquelin <maxime.coquelin@redhat.com>
> Sent: Monday, September 18, 2023 8:43 AM
> To: Chautru, Nicolas <nicolas.chautru@intel.com>; dev@dpdk.org
> Cc: Rix, Tom <trix@redhat.com>; hemant.agrawal@nxp.com;
> david.marchand@redhat.com; Vargas, Hernan <hernan.vargas@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.chautru@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.coquelin@redhat.com>
> >
> > Maxime
> >
> >
  

Patch

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. */