xref: /dpdk/doc/guides/tools/testbbdev.rst (revision 22900d7fd65ec30a47d7f6d5906bb46b6112b507)
1..  SPDX-License-Identifier: BSD-3-Clause
2    Copyright(c) 2017 Intel Corporation
3
4.. _test_bbdev_application:
5
6dpdk-test-bbdev Application
7===========================
8
9The ``dpdk-test-bbdev`` tool is a Data Plane Development Kit (DPDK) utility that
10allows measuring performance parameters of PMDs available in the bbdev framework.
11Tests available for execution are: latency, throughput, validation,
12bler and sanity tests. Execution of tests can be customized using various
13parameters passed to a python running script.
14
15
16Running the Application
17-----------------------
18
19The tool application has a number of command line options:
20
21.. code-block:: console
22
23    test-bbdev.py [-h] [-p TESTAPP_PATH] [-e EAL_PARAMS] [-t TIMEOUT]
24                       [-c TEST_CASE [TEST_CASE ...]]
25                       [-v TEST_VECTOR [TEST_VECTOR...]] [-n NUM_OPS]
26                       [-b BURST_SIZE [BURST_SIZE ...]] [-l NUM_LCORES]
27                       [-t MAX_ITERS [MAX_ITERS ...]]
28                       [-s SNR [SNR ...]]
29
30command-line Options
31~~~~~~~~~~~~~~~~~~~~
32
33The following are the command-line options:
34
35``-h, --help``
36 Shows help message and exit.
37
38``-p TESTAPP_PATH, --testapp_path TESTAPP_PATH``
39 Indicates the path to the bbdev test app. If not specified path is set based
40 on "../.." concatenated with "*/build/app/dpdk-test-bbdev*".
41
42``-e EAL_PARAMS, --eal_params EAL_PARAMS``
43 Specifies EAL arguments which are passed to the test app. For more details,
44 refer to DPDK documentation at :doc:`../linux_gsg/linux_eal_parameters`.
45
46``-t TIMEOUT, --timeout TIMEOUT``
47 Specifies timeout in seconds. If not specified timeout is set to 300 seconds.
48
49``-c TEST_CASE [TEST_CASE ...], --test_cases TEST_CASE [TEST_CASE ...]``
50 Defines test cases to run. If not specified all available tests are run.
51
52 **Example usage:**
53
54 ``./test-bbdev.py -c validation``
55  Runs validation test suite
56
57 ``./test-bbdev.py -c latency throughput``
58  Runs latency and throughput test suites
59
60``-v TEST_VECTOR [TEST_VECTOR ...], --test_vector TEST_VECTOR [TEST_VECTOR ...]``
61 Specifies paths to the test vector files. If not specified path is set based
62 on "../.." concatenated with "*/app/test-bbdev/test_vectors/bbdev_null.data*"
63 and indicates default data file.
64
65 **Example usage:**
66
67 ``./test-bbdev.py -v app/test-bbdev/test_vectors/turbo_dec_test1.data``
68  Fills vector based on turbo_dec_test1.data file and runs all tests
69
70 ``./test-bbdev.py -v turbo_dec_test1.data turbo_enc_test2.data``
71  The bbdev test app is executed twice. First time vector is filled based on
72  *turbo_dec_test1.data* file and second time based on
73  *turb_enc_test2.data* file. For both executions all tests are run.
74
75``-n NUM_OPS, --num_ops NUM_OPS``
76 Specifies number of operations to process on device. If not specified num_ops
77 is set to 32 operations.
78
79``-l NUM_LCORES, --num_lcores NUM_LCORES``
80 Specifies number of lcores to run. If not specified num_lcores is set
81 according to value from RTE configuration (EAL coremask)
82
83``-b BURST_SIZE [BURST_SIZE ...], --burst-size BURST_SIZE [BURST_SIZE ...]``
84 Specifies operations enqueue/dequeue burst size. If not specified burst_size is
85 set to 32. Maximum is 512.
86
87``-t MAX_ITERS [MAX_ITERS ...], --iter_max MAX_ITERS [MAX_ITERS ...]``
88 Specifies LDPC decoder operations maximum number of iterations for throughput
89 and bler tests. If not specified iter_max is set to 6.
90
91``-s SNR [SNR ...], --snr SNR [SNR ...]``
92 Specifies for LDPC decoder operations the SNR in dB used when generating LLRs
93 for bler tests. If not specified snr is set to 0 dB.
94
95Test Cases
96~~~~~~~~~~
97
98There are 7 main test cases that can be executed using testbbdev tool:
99
100* Sanity checks [-c unittest]
101    - Performs sanity checks on BBDEV interface, validating basic functionality
102
103* Validation tests [-c validation]
104    - Performs full operation of enqueue and dequeue
105    - Compares the dequeued data buffer with a expected values in the test
106      vector (TV) being used
107    - Fails if any dequeued value does not match the data in the TV
108
109* Offload Cost measurement [-c offload]
110    - Measures the CPU cycles consumed from the receipt of a user enqueue
111      until it is put on the device queue
112    - The test measures 4 metrics
113        (a) *SW Enq Offload Cost*: Software only enqueue offload cost, the cycle
114            counts and time (us) from the point the enqueue API is called until
115            the point the operation is put on the accelerator queue.
116        (b) *Acc Enq Offload Cost*: The cycle count and time (us) from the
117            point the operation is put on the accelerator queue until the return
118            from enqueue.
119        (c) *SW Deq Offload Cost*: Software dequeue cost, the cycle counts and
120            time (us) consumed to dequeue one operation.
121        (d) *Empty Queue Enq Offload Cost*: The cycle count and time (us)
122            consumed to dequeue from an empty queue.
123
124* Latency measurement [-c latency]
125    - Measures the time consumed from the first enqueue until the first
126      appearance of a dequeued result
127    - This measurement represents the full latency of a bbdev operation
128      (encode or decode) to execute
129
130* Poll-mode Throughput measurement [-c throughput]
131    - Performs full operation of enqueue and dequeue
132    - Executes in poll mode
133    - Measures the achieved throughput on a subset or all available CPU cores
134    - Dequeued data is not validated against expected values stored in TV
135    - Results are printed in million operations per second and million bits
136      per second
137
138* BLER measurement [-c bler]
139    - Performs full operation of enqueue and dequeue
140    - Measures the achieved throughput on a subset or all available CPU cores
141    - Computed BLER (Block Error Rate, ratio of blocks not decoded at a given
142      SNR) in % based on the total number of operations.
143
144* Interrupt-mode Throughput [-c interrupt]
145    - Similar to Throughput test case, but using interrupts. No polling.
146
147
148Parameter Globbing
149~~~~~~~~~~~~~~~~~~
150
151Thanks to the globbing functionality in python test-bbdev.py script allows to
152run tests with different set of vector files without giving all of them explicitly.
153
154**Example usage for 4G:**
155
156.. code-block:: console
157
158  ./test-bbdev.py -v app/test-bbdev/test_vectors/turbo_<enc/dec>_c<c>_k<k>_r<r>_e<e>_<extra-info>.data
159
160It runs all tests with following vectors:
161
162- ``bbdev_null.data``
163
164- ``turbo_dec_c1_k6144_r0_e34560_sbd_negllr.data``
165
166- ``turbo_enc_c1_k40_r0_e1196_rm.data``
167
168- ``turbo_enc_c2_k5952_r0_e17868_crc24b.data``
169
170- ``turbo_dec_c1_k40_r0_e17280_sbd_negllr.data``
171
172- ``turbo_dec_c1_k6144_r0_e34560_sbd_posllr.data``
173
174- ``turbo_enc_c1_k40_r0_e272_rm.data``
175
176- ``turbo_enc_c3_k4800_r2_e14412_crc24b.data``
177
178- ``turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data``
179
180- ``turbo_dec_c2_k3136_r0_e4920_sbd_negllr_crc24b.data``
181
182- ``turbo_enc_c1_k6144_r0_e120_rm_rvidx.data``
183
184- ``turbo_enc_c4_k4800_r2_e14412_crc24b.data``
185
186- ``turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_low_snr.data``
187
188- ``turbo_dec_c2_k3136_r0_e4920_sbd_negllr.data``
189
190- ``turbo_enc_c1_k6144_r0_e18444.data``
191
192- ``turbo_dec_c1_k6144_r0_e34560_negllr.data``
193
194- ``turbo_enc_c1_k40_r0_e1190_rm.data``
195
196- ``turbo_enc_c1_k6144_r0_e18448_crc24a.data``
197
198- ``turbo_dec_c1_k6144_r0_e34560_posllr.data``
199
200- ``turbo_enc_c1_k40_r0_e1194_rm.data``
201
202- ``turbo_enc_c1_k6144_r0_e32256_crc24b_rm.data``
203
204.. code-block:: console
205
206  ./test-bbdev.py -v app/test-bbdev/turbo_*_default.data
207
208It runs all tests with "default" vectors.
209
210* ``turbo_dec_default.data`` is a soft link to
211  ``turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data``
212
213* ``turbo_enc_default.data`` is a soft link to
214  ``turbo_enc_c1_k6144_r0_e32256_crc24b_rm.data``
215
216* ``ldpc_dec_default.data`` is a soft link to
217  ``ldpc_dec_v6563.data``
218
219* ``ldpc_enc_default.data`` is a soft link to
220  ``ldpc_enc_c1_k8148_r0_e9372_rm.data``
221
222Running Tests
223-------------
224
225All default reference test-vectors are stored in the test_vector
226directory below.
227The prefix trivially defines which type of operation is included :
228turbo_enc, turbo_dec, ldpc_enc, ldpc_dec.
229The details of the configuration are captured in the file but some
230vector name refer more explicitly processing specificity such as
231'HARQ' when HARQ retransmission is used, 'loopback' when the data
232is purely read/written for external DDR, lbrm when limited buffer
233rate matching is expected, or crc_fail when a CRC failure is expected.
234They are chosen to have a good coverage across sizes and processing
235parameters while still keeping their number limited as part of sanity
236regression.
237
238Shortened tree of isg_cid-wireless_dpdk_ae with dpdk compiled and output
239to the build directory:
240
241::
242
243 |-- app
244     |-- test-bbdev
245         |-- test_vectors
246
247 |-- build
248     |-- app
249         |-- dpdk-test-bbdev
250
251All bbdev devices
252~~~~~~~~~~~~~~~~~
253
254.. code-block:: console
255
256  ./test-bbdev.py -p ../../build/app/dpdk-test-bbdev
257  -v turbo_dec_default.data
258
259It runs all available tests using the test vector filled based on
260*turbo_dec_default.data* file.
261By default number of operations to process on device is set to 32, timeout is
262set to 300s and operations enqueue/dequeue burst size is set to 32.
263Moreover a bbdev (*baseband_null*) device will be created.
264
265baseband turbo_sw device
266~~~~~~~~~~~~~~~~~~~~~~~~
267
268.. code-block:: console
269
270  ./test-bbdev.py -p ../../build/app/dpdk-test-bbdev
271  -e="--vdev=baseband_turbo_sw" -t 120 -c validation
272  -v ./test_vectors/* -n 64 -b 8 32
273
274It runs **validation** test for each vector file that matches the given pattern.
275Number of operations to process on device is set to 64 and operations timeout is
276set to 120s and enqueue/dequeue burst size is set to 8 and to 32.
277Moreover a bbdev (*baseband_turbo_sw*) device will be created.
278
279
280bbdev null device
281~~~~~~~~~~~~~~~~~
282
283Executing bbdev null device with *bbdev_null.data* helps in measuring the
284overhead introduced by the bbdev framework.
285
286.. code-block:: console
287
288  ./test-bbdev.py -e="--vdev=baseband_null0"
289  -v ./test_vectors/bbdev_null.data
290
291**Note:**
292
293baseband_null device does not have to be defined explicitly as it is created by default.
294
295
296
297Test Vector files
298-----------------
299
300Test Vector files contain the data which is used to set turbo decoder/encoder
301parameters and buffers for validation purpose. New test vector files should be
302stored in ``app/test-bbdev/test_vectors/`` directory. Detailed description of
303the syntax of the test vector files is in the following section.
304
305
306Basic principles for test vector files
307~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
308Line started with ``#`` is treated as a comment and is ignored.
309
310If variable is a chain of values, values should be separated by a comma. If
311assignment is split into several lines, each line (except the last one) has to
312be ended with a comma.
313There is no comma after last value in last line. Correct assignment should
314look like the following:
315
316.. parsed-literal::
317
318 variable =
319 value, value, value, value,
320 value, value
321
322In case where variable is a single value correct assignment looks like the
323following:
324
325.. parsed-literal::
326
327 variable =
328 value
329
330Length of chain variable is calculated by parser. Can not be defined
331explicitly.
332
333Variable op_type has to be defined as a first variable in file. It specifies
334what type of operations will be executed. For 4G decoder op_type has to be set to
335``RTE_BBDEV_OP_TURBO_DEC`` and for 4G encoder to ``RTE_BBDEV_OP_TURBO_ENC``.
336
337Bbdev-test adjusts the byte endianness based on the PMD capability (data_endianness)
338and all the test vectors input/output data are assumed to be LE by default
339
340Full details of the meaning and valid values for the below fields are
341documented in *rte_bbdev_op.h*
342
343
344Turbo decoder test vectors template
345~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
346
347For turbo decoder it has to be always set to ``RTE_BBDEV_OP_TURBO_DEC``
348
349.. parsed-literal::
350
351    op_type =
352    RTE_BBDEV_OP_TURBO_DEC
353
354Chain of uint32_t values. Note that it is possible to define more than one
355input/output entries which will result in chaining two or more data structures
356for *segmented Transport Blocks*
357
358.. parsed-literal::
359
360    input0 =
361    0x00000000, 0x7f817f00, 0x7f7f8100, 0x817f8100, 0x81008100, 0x7f818100, 0x81817f00, 0x7f818100,
362    0x81007f00, 0x7f818100, 0x817f8100, 0x81817f00, 0x81008100, 0x817f7f00, 0x7f7f8100, 0x81817f00
363
364Chain of uint32_t values
365
366.. parsed-literal::
367
368    input1 =
369    0x7f7f0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
370    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
371
372Chain of uint32_t values
373
374.. parsed-literal::
375
376    input2 =
377    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
378    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
379
380Chain of uint32_t values
381
382.. parsed-literal::
383
384    hard_output0 =
385    0xa7d6732e
386
387Chain of uint32_t values
388
389.. parsed-literal::
390
391    hard_output1 =
392    0xa61
393
394Chain of uint32_t values
395
396.. parsed-literal::
397
398    soft_output0 =
399    0x817f817f, 0x7f817f7f, 0x81818181, 0x817f7f81, 0x7f818181, 0x8181817f, 0x817f817f, 0x8181817f
400
401Chain of uint32_t values
402
403.. parsed-literal::
404
405    soft_output1 =
406    0x817f7f81, 0x7f7f7f81, 0x7f7f8181
407
408uint32_t value
409
410.. parsed-literal::
411
412    e =
413    44
414
415uint16_t value
416
417.. parsed-literal::
418
419    k =
420    40
421
422uint8_t value
423
424.. parsed-literal::
425
426    rv_index =
427    0
428
429uint8_t value
430
431.. parsed-literal::
432
433    iter_max =
434    8
435
436uint8_t value
437
438.. parsed-literal::
439
440    iter_min =
441    4
442
443uint8_t value
444
445.. parsed-literal::
446
447    expected_iter_count =
448    8
449
450uint8_t value
451
452.. parsed-literal::
453
454    ext_scale =
455    15
456
457uint8_t value
458
459.. parsed-literal::
460
461    num_maps =
462    0
463
464Chain of flags for LDPC decoder operation based on the rte_bbdev_op_td_flag_bitmasks:
465
466Example:
467
468    .. parsed-literal::
469
470        op_flags =
471        RTE_BBDEV_TURBO_SUBBLOCK_DEINTERLEAVE, RTE_BBDEV_TURBO_EQUALIZER,
472        RTE_BBDEV_TURBO_SOFT_OUTPUT
473
474Chain of operation statuses that are expected after operation is performed.
475Following statuses can be used:
476
477- ``DMA``
478
479- ``FCW``
480
481- ``CRC``
482
483- ``OK``
484
485``OK`` means no errors are expected. Cannot be used with other values.
486
487.. parsed-literal::
488
489    expected_status =
490    FCW, CRC
491
492
493Turbo encoder test vectors template
494~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
495
496For turbo encoder it has to be always set to ``RTE_BBDEV_OP_TURBO_ENC``
497
498.. parsed-literal::
499
500    op_type =
501    RTE_BBDEV_OP_TURBO_ENC
502
503Chain of uint32_t values
504
505.. parsed-literal::
506
507    input0 =
508    0x11d2bcac, 0x4d
509
510Chain of uint32_t values
511
512.. parsed-literal::
513
514    output0 =
515    0xd2399179, 0x640eb999, 0x2cbaf577, 0xaf224ae2, 0x9d139927, 0xe6909b29,
516    0xa25b7f47, 0x2aa224ce, 0x79f2
517
518uint32_t value
519
520.. parsed-literal::
521
522    e =
523    272
524
525uint16_t value
526
527.. parsed-literal::
528
529    k =
530    40
531
532uint16_t value
533
534.. parsed-literal::
535
536    ncb =
537    192
538
539uint8_t value
540
541.. parsed-literal::
542
543    rv_index =
544    0
545
546Chain of flags for LDPC decoder operation based on the rte_bbdev_op_te_flag_bitmasks:
547
548``RTE_BBDEV_TURBO_ENC_SCATTER_GATHER`` is used to indicate the parser to
549force the input data to be memory split and formed as a segmented mbuf.
550
551
552.. parsed-literal::
553
554    op_flags =
555    RTE_BBDEV_TURBO_RATE_MATCH
556
557Chain of operation statuses that are expected after operation is performed.
558Following statuses can be used:
559
560- ``DMA``
561
562- ``FCW``
563
564- ``OK``
565
566``OK`` means no errors are expected. Cannot be used with other values.
567
568.. parsed-literal::
569
570    expected_status =
571    OK
572
573LDPC decoder test vectors template
574~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
575
576For LDPC decoder it has to be always set to ``RTE_BBDEV_OP_LDPC_DEC``
577
578.. parsed-literal::
579
580    op_type =
581    RTE_BBDEV_OP_LDPC_DEC
582
583Chain of uint32_t values. Note that it is possible to define more than one
584input/output entries which will result in chaining two or more data structures
585for *segmented Transport Blocks*
586
587.. parsed-literal::
588
589    input0 =
590    0x00000000, 0x7f817f00, 0x7f7f8100, 0x817f8100, 0x81008100, 0x7f818100, 0x81817f00, 0x7f818100,
591    0x81007f00, 0x7f818100, 0x817f8100, 0x81817f00, 0x81008100, 0x817f7f00, 0x7f7f8100, 0x81817f00
592
593.. parsed-literal::
594
595    output0 =
596    0xa7d6732e
597
598uint8_t value
599
600.. parsed-literal::
601
602    basegraph=
603    1
604
605uint16_t value
606
607.. parsed-literal::
608
609    z_c=
610    224
611
612uint16_t value
613
614.. parsed-literal::
615
616    n_cb=
617    14784
618
619uint8_t value
620
621.. parsed-literal::
622
623    q_m=
624    1
625
626uint16_t value
627
628.. parsed-literal::
629
630    n_filler=
631    40
632
633uint32_t value
634
635.. parsed-literal::
636
637    e=
638    13072
639
640uint8_t value
641
642.. parsed-literal::
643
644    rv_index=
645    2
646
647uint8_t value
648
649.. parsed-literal::
650    code_block_mode=
651    1
652
653uint8_t value
654
655.. parsed-literal::
656
657    iter_max=
658    20
659
660uint8_t value
661
662.. parsed-literal::
663
664    expected_iter_count=
665    8
666
667
668Chain of flags for LDPC decoder operation based on the rte_bbdev_op_ldpcdec_flag_bitmasks:
669
670Example:
671
672    .. parsed-literal::
673
674        op_flags =
675        RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE, RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE,
676        RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE, RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION
677
678Chain of operation statuses that are expected after operation is performed.
679Following statuses can be used:
680
681- ``OK`` : No error reported.
682
683- ``SYN`` : LDPC syndrome parity check is failing.
684
685- ``CRC`` : CRC parity check is failing when CRC check operation is included.
686
687- ``SYNCRC`` : Both CRC and LDPC syndromes parity checks are failing.
688
689``OK`` means no errors are expected. Cannot be used with other values.
690
691.. parsed-literal::
692
693    expected_status =
694    CRC
695
696
697LDPC encoder test vectors template
698~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
699
700For turbo encoder it has to be always set to ``RTE_BBDEV_OP_LDPC_ENC``
701
702.. parsed-literal::
703
704    op_type =
705    RTE_BBDEV_OP_LDPC_ENC
706
707Chain of uint32_t values
708
709.. parsed-literal::
710
711    input0 =
712    0x11d2bcac, 0x4d
713
714Chain of uint32_t values
715
716.. parsed-literal::
717
718    output0 =
719    0xd2399179, 0x640eb999, 0x2cbaf577, 0xaf224ae2, 0x9d139927, 0xe6909b29,
720    0xa25b7f47, 0x2aa224ce, 0x79f2
721
722
723uint8_t value
724
725.. parsed-literal::
726
727    basegraph=
728    1
729
730uint16_t value
731
732.. parsed-literal::
733
734    z_c=
735    52
736
737uint16_t value
738
739.. parsed-literal::
740
741    n_cb=
742    3432
743
744uint8_t value
745
746.. parsed-literal::
747
748    q_m=
749    6
750
751uint16_t value
752
753.. parsed-literal::
754
755    n_filler=
756    0
757
758uint32_t value
759
760.. parsed-literal::
761
762    e =
763    1380
764
765uint8_t value
766
767.. parsed-literal::
768
769    rv_index =
770    1
771
772uint8_t value
773
774.. parsed-literal::
775
776    code_block_mode =
777    1
778
779
780Chain of flags for LDPC encoder operation based on the
781rte_bbdev_op_ldpcenc_flag_bitmasks:
782
783.. parsed-literal::
784
785    op_flags =
786    RTE_BBDEV_LDPC_RATE_MATCH
787
788Chain of operation statuses that are expected after operation is performed.
789Following statuses can be used:
790
791- ``DMA``
792
793- ``FCW``
794
795- ``OK``
796
797``OK`` means no errors are expected. Cannot be used with other values.
798
799.. parsed-literal::
800
801    expected_status =
802    OK
803
804
805FFT test vectors template
806~~~~~~~~~~~~~~~~~~~~~~~~~
807
808For FFT it has to be always set to ``RTE_BBDEV_OP_FFT``
809
810.. parsed-literal::
811
812    op_type =
813    RTE_BBDEV_OP_FFT
814
815Chain of uint32_t values
816
817.. parsed-literal::
818
819    input0 =
820    0x11d2bcac, ...
821
822Chain of uint32_t values
823
824.. parsed-literal::
825
826    output0 =
827    0xd2399179, ...
828
829uint16_t value
830
831.. parsed-literal::
832
833    in_sequence_size =
834    60
835
836uint16_t value
837
838.. parsed-literal::
839
840    in_leading_padding =
841    4
842
843uint16_t value
844
845.. parsed-literal::
846
847    out_sequence_size =
848    60
849
850uint6_t value
851
852.. parsed-literal::
853
854    out_leading_depadding =
855    0
856
857List of window indexes
858
859.. parsed-literal::
860
861    window_index =
862    2, 5, 8, 11, 14, 2, 5, 8, 11, 14, 2, 5
863
864uint8_t value
865
866.. parsed-literal::
867
868    num_antennas_log2 =
869    3
870
871uint8_t value
872
873.. parsed-literal::
874
875    ifft_log2 =
876    6
877
878uint8_t value
879
880.. parsed-literal::
881
882    fft_log2 =
883    6
884
885uint8_t value
886
887.. parsed-literal::
888
889    cs_time_adjustment =
890    0
891
892uint8_t value
893
894.. parsed-literal::
895
896    ifft_shift =
897    3
898
899uint8_t value
900
901.. parsed-literal::
902
903    fft_shift =
904    3
905
906uint16_t value
907
908.. parsed-literal::
909
910    ncs_reciprocal =
911    5461
912
913Chain of flags for FFT operation based on the
914rte_bbdev_op_fft_flag_bitmasks:
915
916.. parsed-literal::
917
918    op_flags =
919    RTE_BBDEV_FFT_CS_ADJUSTMENT, RTE_BBDEV_FFT_WINDOWING
920
921Chain of operation statuses that are expected after operation is performed.
922Following statuses can be used:
923
924- ``DMA``
925
926- ``FCW``
927
928- ``OK``
929
930``OK`` means no errors are expected. Cannot be used with other values.
931
932.. parsed-literal::
933
934    expected_status =
935    OK
936