common/mlx5: support more fields in DevX CQ create
[dpdk.git] / drivers / baseband / turbo_sw / bbdev_turbo_software.c
index f2fe7a2..a36099e 100644 (file)
@@ -34,8 +34,7 @@
 
 #define DRIVER_NAME baseband_turbo_sw
 
-/* Turbo SW PMD logging ID */
-static int bbdev_turbo_sw_logtype;
+RTE_LOG_REGISTER(bbdev_turbo_sw_logtype, pmd.bb.turbo_sw, NOTICE);
 
 /* Helper macro for logging */
 #define rte_bbdev_log(level, fmt, ...) \
@@ -218,8 +217,7 @@ info_get(struct rte_bbdev *dev, struct rte_bbdev_driver_info *dev_info)
                                        RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE |
                                        RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE,
                        .llr_size = 8,
-                       .llr_decimals = 2,
-                       .harq_memory_size = 0,
+                       .llr_decimals = 4,
                        .num_buffers_src =
                                        RTE_BBDEV_LDPC_MAX_CODE_BLOCKS,
                        .num_buffers_hard_out =
@@ -251,6 +249,7 @@ info_get(struct rte_bbdev *dev, struct rte_bbdev_driver_info *dev_info)
        dev_info->default_queue_conf = default_queue_conf;
        dev_info->capabilities = bbdev_capabilities;
        dev_info->min_alignment = 64;
+       dev_info->harq_buffer_size = 0;
 
        rte_bbdev_log_debug("got device info from %u\n", dev->data->dev_id);
 }
@@ -1335,7 +1334,7 @@ process_dec_cb(struct turbo_sw_queue *q, struct rte_bbdev_dec_op *op,
 
 static inline void
 process_ldpc_dec_cb(struct turbo_sw_queue *q, struct rte_bbdev_dec_op *op,
-               uint8_t c, uint16_t out_length, uint16_t e,
+               uint8_t c, uint16_t out_length, uint32_t e,
                struct rte_mbuf *m_in,
                struct rte_mbuf *m_out_head, struct rte_mbuf *m_out,
                struct rte_mbuf *m_harq_in,
@@ -1617,8 +1616,8 @@ enqueue_ldpc_dec_one_op(struct turbo_sw_queue *q, struct rte_bbdev_dec_op *op,
                struct rte_bbdev_stats *queue_stats)
 {
        uint8_t c, r = 0;
-       uint16_t e, out_length;
-       uint16_t crc24_overlap = 0;
+       uint32_t e;
+       uint16_t out_length, crc24_overlap = 0;
        struct rte_bbdev_op_ldpc_dec *dec = &op->ldpc_dec;
        struct rte_mbuf *m_in = dec->input.data;
        struct rte_mbuf *m_harq_in = dec->harq_combined_input.data;
@@ -1660,8 +1659,11 @@ enqueue_ldpc_dec_one_op(struct turbo_sw_queue *q, struct rte_bbdev_dec_op *op,
                if (dec->code_block_mode == 0)
                        e = (r < dec->tb_params.cab) ?
                                dec->tb_params.ea : dec->tb_params.eb;
-
-               seg_total_left = rte_pktmbuf_data_len(m_in) - in_offset;
+               /* Special case handling when overusing mbuf */
+               if (e < RTE_BBDEV_LDPC_E_MAX_MBUF)
+                       seg_total_left = rte_pktmbuf_data_len(m_in) - in_offset;
+               else
+                       seg_total_left = e;
 
                process_ldpc_dec_cb(q, op, c, out_length, e,
                                m_in, m_out_head, m_out,
@@ -1987,10 +1989,3 @@ RTE_PMD_REGISTER_PARAM_STRING(DRIVER_NAME,
        TURBO_SW_MAX_NB_QUEUES_ARG"=<int> "
        TURBO_SW_SOCKET_ID_ARG"=<int>");
 RTE_PMD_REGISTER_ALIAS(DRIVER_NAME, turbo_sw);
-
-RTE_INIT(turbo_sw_bbdev_init_log)
-{
-       bbdev_turbo_sw_logtype = rte_log_register("pmd.bb.turbo_sw");
-       if (bbdev_turbo_sw_logtype >= 0)
-               rte_log_set_level(bbdev_turbo_sw_logtype, RTE_LOG_NOTICE);
-}