7070
7171#define SYNC_WAIT 0
7272#define SYNC_START 1
73- #define INVALID_OPAQUE -1
7473
7574#define INVALID_QUEUE_ID -1
7675/* Increment for next code block in external HARQ memory */
7776#define HARQ_INCR 32768
7877/* Headroom for filler LLRs insertion in HARQ buffer */
79- #define FILLER_HEADROOM 1024
78+ #define FILLER_HEADROOM 2048
8079/* Constants from K0 computation from 3GPP 38.212 Table 5.4.2.1-2 */
8180#define N_ZC_1 66 /* N = 66 Zc for BG 1 */
8281#define N_ZC_2 50 /* N = 50 Zc for BG 2 */
8786#define K0_3_1 56 /* K0 fraction numerator for rv 3 and BG 1 */
8887#define K0_3_2 43 /* K0 fraction numerator for rv 3 and BG 2 */
8988
89+ #define HARQ_MEM_TOLERANCE 256
9090static struct test_bbdev_vector test_vector ;
9191
9292/* Switch between PMD and Interrupt for throughput TC */
@@ -1822,10 +1822,9 @@ check_enc_status_and_ordering(struct rte_bbdev_enc_op *op,
18221822 "op_status (%d) != expected_status (%d)" ,
18231823 op -> status , expected_status );
18241824
1825- if (op -> opaque_data != (void * )(uintptr_t )INVALID_OPAQUE )
1826- TEST_ASSERT ((void * )(uintptr_t )order_idx == op -> opaque_data ,
1827- "Ordering error, expected %p, got %p" ,
1828- (void * )(uintptr_t )order_idx , op -> opaque_data );
1825+ TEST_ASSERT ((void * )(uintptr_t )order_idx == op -> opaque_data ,
1826+ "Ordering error, expected %p, got %p" ,
1827+ (void * )(uintptr_t )order_idx , op -> opaque_data );
18291828
18301829 return TEST_SUCCESS ;
18311830}
@@ -1947,13 +1946,17 @@ validate_op_harq_chain(struct rte_bbdev_op_data *op,
19471946 uint16_t data_len = rte_pktmbuf_data_len (m ) - offset ;
19481947 total_data_size += orig_op -> segments [i ].length ;
19491948
1950- TEST_ASSERT (orig_op -> segments [i ].length <
1951- (uint32_t )(data_len + 64 ),
1949+ TEST_ASSERT (orig_op -> segments [i ].length < (uint32_t )(data_len + HARQ_MEM_TOLERANCE ),
19521950 "Length of segment differ in original (%u) and filled (%u) op" ,
19531951 orig_op -> segments [i ].length , data_len );
19541952 harq_orig = (int8_t * ) orig_op -> segments [i ].addr ;
19551953 harq_out = rte_pktmbuf_mtod_offset (m , int8_t * , offset );
19561954
1955+ /* Cannot compare HARQ output data for such cases */
1956+ if ((ldpc_llr_decimals > 1 ) && ((ops_ld -> op_flags & RTE_BBDEV_LDPC_LLR_COMPRESSION )
1957+ || (ops_ld -> op_flags & RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION )))
1958+ break ;
1959+
19571960 if (!(ldpc_cap_flags &
19581961 RTE_BBDEV_LDPC_INTERNAL_HARQ_MEMORY_FILLERS
19591962 ) || (ops_ld -> op_flags &
@@ -1968,9 +1971,9 @@ validate_op_harq_chain(struct rte_bbdev_op_data *op,
19681971 ops_ld -> n_filler ;
19691972 if (data_len > deRmOutSize )
19701973 data_len = deRmOutSize ;
1971- if (data_len > orig_op -> segments [i ].length )
1972- data_len = orig_op -> segments [i ].length ;
19731974 }
1975+ if (data_len > orig_op -> segments [i ].length )
1976+ data_len = orig_op -> segments [i ].length ;
19741977 /*
19751978 * HARQ output can have minor differences
19761979 * due to integer representation and related scaling
@@ -2029,7 +2032,7 @@ validate_op_harq_chain(struct rte_bbdev_op_data *op,
20292032
20302033 /* Validate total mbuf pkt length */
20312034 uint32_t pkt_len = rte_pktmbuf_pkt_len (op -> data ) - op -> offset ;
2032- TEST_ASSERT (total_data_size < pkt_len + 64 ,
2035+ TEST_ASSERT (total_data_size < pkt_len + HARQ_MEM_TOLERANCE ,
20332036 "Length of data differ in original (%u) and filled (%u) op" ,
20342037 total_data_size , pkt_len );
20352038
@@ -4724,7 +4727,7 @@ offload_cost_test(struct active_device *ad,
47244727 printf ("Set RTE_BBDEV_OFFLOAD_COST to 'y' to turn the test on.\n" );
47254728 return TEST_SKIPPED ;
47264729#else
4727- int iter ;
4730+ int iter , ret ;
47284731 uint16_t burst_sz = op_params -> burst_sz ;
47294732 const uint16_t num_to_process = op_params -> num_to_process ;
47304733 const enum rte_bbdev_op_type op_type = test_vector .op_type ;
@@ -4815,7 +4818,10 @@ offload_cost_test(struct active_device *ad,
48154818 rte_get_tsc_hz ());
48164819
48174820 struct rte_bbdev_stats stats = {0 };
4818- get_bbdev_queue_stats (ad -> dev_id , queue_id , & stats );
4821+ ret = get_bbdev_queue_stats (ad -> dev_id , queue_id , & stats );
4822+ TEST_ASSERT_SUCCESS (ret ,
4823+ "Failed to get stats for queue (%u) of device (%u)" ,
4824+ queue_id , ad -> dev_id );
48194825 if (op_type != RTE_BBDEV_OP_LDPC_DEC ) {
48204826 TEST_ASSERT_SUCCESS (stats .enqueued_count != num_to_process ,
48214827 "Mismatch in enqueue count %10" PRIu64 " %d" ,
0 commit comments