X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fbaseband%2Fturbo_sw%2Fbbdev_turbo_software.c;h=a36099e91d72b8d6416c7908288b94e335337afd;hb=8ee821cfae8fe4fdc61f5265c020a490342ece0e;hp=acb63a44782ab40b1abf718be27289cc6b55b467;hpb=c769c711757a76622d5fb9ad3216629c8bae3412;p=dpdk.git diff --git a/drivers/baseband/turbo_sw/bbdev_turbo_software.c b/drivers/baseband/turbo_sw/bbdev_turbo_software.c index acb63a4478..a36099e91d 100644 --- a/drivers/baseband/turbo_sw/bbdev_turbo_software.c +++ b/drivers/baseband/turbo_sw/bbdev_turbo_software.c @@ -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, @@ -1610,12 +1609,6 @@ enqueue_dec_one_op(struct turbo_sw_queue *q, struct rte_bbdev_dec_op *op, } r++; } - - if (mbuf_total_left != 0) { - op->status |= 1 << RTE_BBDEV_DATA_ERROR; - rte_bbdev_log(ERR, - "Mismatch between mbuf length and included Circular buffer sizes"); - } } static inline void @@ -1623,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; @@ -1666,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, @@ -1706,12 +1702,6 @@ enqueue_ldpc_dec_one_op(struct turbo_sw_queue *q, struct rte_bbdev_dec_op *op, } r++; } - - if (mbuf_total_left != 0) { - op->status |= 1 << RTE_BBDEV_DATA_ERROR; - rte_bbdev_log(ERR, - "Mismatch between mbuf length and included Circular buffer sizes"); - } } static inline uint16_t @@ -1999,10 +1989,3 @@ RTE_PMD_REGISTER_PARAM_STRING(DRIVER_NAME, TURBO_SW_MAX_NB_QUEUES_ARG"= " TURBO_SW_SOCKET_ID_ARG"="); 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); -}