[v2,2/5] bbdev: add new capabilities for FFT processing
Checks
Commit Message
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
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
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
>
>
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
> >
> >
@@ -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,
@@ -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. */