#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, ...) \
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,
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;
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,
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);
-}