X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fbaseband%2Ffpga_lte_fec%2Ffpga_lte_fec.c;h=350c4248ebc42eb1b7cccd2bf42af7cc98e33c0b;hb=48fbc1be82b551e41c58e94de780fdd2ffaaeb78;hp=7e05b94cfeac5f566f6f7dc5624c0b2326566db2;hpb=b443f318c608e97ae4acdc71e2648ab7db3ab940;p=dpdk.git diff --git a/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c b/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c index 7e05b94cfe..350c4248eb 100644 --- a/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c +++ b/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c @@ -22,8 +22,11 @@ #include "fpga_lte_fec.h" -/* Turbo SW PMD logging ID */ -static int fpga_lte_fec_logtype; +#ifdef RTE_LIBRTE_BBDEV_DEBUG +RTE_LOG_REGISTER_DEFAULT(fpga_lte_fec_logtype, DEBUG); +#else +RTE_LOG_REGISTER_DEFAULT(fpga_lte_fec_logtype, NOTICE); +#endif /* Helper macro for logging */ #define rte_bbdev_log(level, fmt, ...) \ @@ -114,7 +117,7 @@ enum { }; /* FPGA LTE FEC DMA Encoding Request Descriptor */ -struct __attribute__((__packed__)) fpga_dma_enc_desc { +struct __rte_packed fpga_dma_enc_desc { uint32_t done:1, rsrvd0:11, error:4, @@ -151,7 +154,7 @@ struct __attribute__((__packed__)) fpga_dma_enc_desc { }; /* FPGA LTE FEC DMA Decoding Request Descriptor */ -struct __attribute__((__packed__)) fpga_dma_dec_desc { +struct __rte_packed fpga_dma_dec_desc { uint32_t done:1, iter:5, rsrvd0:2, @@ -197,7 +200,7 @@ union fpga_dma_desc { }; /* FPGA LTE FEC Ring Control Register */ -struct __attribute__((__packed__)) fpga_ring_ctrl_reg { +struct __rte_packed fpga_ring_ctrl_reg { uint64_t ring_base_addr; uint64_t ring_head_addr; uint16_t ring_size:11; @@ -889,7 +892,7 @@ fpga_queue_stop(struct rte_bbdev *dev, uint16_t queue_id) * completed. If completion flag is not updated within 1ms it is * considered as a failure. */ - while (!(*((uint8_t *)d->flush_queue_status + q->q_idx) & payload)) { + while (!(*((volatile uint8_t *)d->flush_queue_status + q->q_idx) & payload)) { if (counter > timeout) { rte_bbdev_log(ERR, "FPGA Queue Flush failed for queue %d", queue_id); @@ -1248,14 +1251,14 @@ fpga_dma_desc_te_fill(struct rte_bbdev_enc_op *op, desc->offset = desc_offset; /* Set inbound data buffer address */ desc->in_addr_hi = (uint32_t)( - rte_pktmbuf_mtophys_offset(input, in_offset) >> 32); + rte_pktmbuf_iova_offset(input, in_offset) >> 32); desc->in_addr_lw = (uint32_t)( - rte_pktmbuf_mtophys_offset(input, in_offset)); + rte_pktmbuf_iova_offset(input, in_offset)); desc->out_addr_hi = (uint32_t)( - rte_pktmbuf_mtophys_offset(output, out_offset) >> 32); + rte_pktmbuf_iova_offset(output, out_offset) >> 32); desc->out_addr_lw = (uint32_t)( - rte_pktmbuf_mtophys_offset(output, out_offset)); + rte_pktmbuf_iova_offset(output, out_offset)); /* Save software context needed for dequeue */ desc->op_addr = op; @@ -1299,23 +1302,23 @@ fpga_dma_desc_td_fill(struct rte_bbdev_dec_op *op, desc->done = 0; /* Set inbound data buffer address */ desc->in_addr_hi = (uint32_t)( - rte_pktmbuf_mtophys_offset(input, in_offset) >> 32); + rte_pktmbuf_iova_offset(input, in_offset) >> 32); desc->in_addr_lw = (uint32_t)( - rte_pktmbuf_mtophys_offset(input, in_offset)); + rte_pktmbuf_iova_offset(input, in_offset)); desc->in_len = in_length; desc->k = k; desc->crc_type = !check_bit(op->turbo_dec.op_flags, RTE_BBDEV_TURBO_CRC_TYPE_24B); - if ((op->turbo_dec.code_block_mode == 0) + if ((op->turbo_dec.code_block_mode == RTE_BBDEV_TRANSPORT_BLOCK) && !check_bit(op->turbo_dec.op_flags, RTE_BBDEV_TURBO_DEC_TB_CRC_24B_KEEP)) desc->drop_crc = 1; desc->max_iter = op->turbo_dec.iter_max * 2; desc->offset = desc_offset; desc->out_addr_hi = (uint32_t)( - rte_pktmbuf_mtophys_offset(output, out_offset) >> 32); + rte_pktmbuf_iova_offset(output, out_offset) >> 32); desc->out_addr_lw = (uint32_t)( - rte_pktmbuf_mtophys_offset(output, out_offset)); + rte_pktmbuf_iova_offset(output, out_offset)); /* Save software context needed for dequeue */ desc->op_addr = op; @@ -1363,15 +1366,15 @@ validate_enc_op(struct rte_bbdev_enc_op *op) turbo_enc->rv_index); return -1; } - if (turbo_enc->code_block_mode != 0 && - turbo_enc->code_block_mode != 1) { + if (turbo_enc->code_block_mode != RTE_BBDEV_TRANSPORT_BLOCK && + turbo_enc->code_block_mode != RTE_BBDEV_CODE_BLOCK) { rte_bbdev_log(ERR, "code_block_mode (%u) is out of range 0 <= value <= 1", turbo_enc->code_block_mode); return -1; } - if (turbo_enc->code_block_mode == 0) { + if (turbo_enc->code_block_mode == RTE_BBDEV_TRANSPORT_BLOCK) { tb = &turbo_enc->tb_params; if ((tb->k_neg < RTE_BBDEV_TURBO_MIN_CB_SIZE || tb->k_neg > RTE_BBDEV_TURBO_MAX_CB_SIZE) @@ -1695,15 +1698,15 @@ validate_dec_op(struct rte_bbdev_dec_op *op) turbo_dec->iter_min, turbo_dec->iter_max); return -1; } - if (turbo_dec->code_block_mode != 0 && - turbo_dec->code_block_mode != 1) { + if (turbo_dec->code_block_mode != RTE_BBDEV_TRANSPORT_BLOCK && + turbo_dec->code_block_mode != RTE_BBDEV_CODE_BLOCK) { rte_bbdev_log(ERR, "code_block_mode (%u) is out of range 0 <= value <= 1", turbo_dec->code_block_mode); return -1; } - if (turbo_dec->code_block_mode == 0) { + if (turbo_dec->code_block_mode == RTE_BBDEV_TRANSPORT_BLOCK) { if ((turbo_dec->op_flags & RTE_BBDEV_TURBO_DEC_TB_CRC_24B_KEEP) && @@ -1954,7 +1957,8 @@ fpga_enqueue_enc(struct rte_bbdev_queue_data *q_data, q->ring_ctrl_reg.ring_size + q->head_free_desc - q->tail - 1; for (i = 0; i < num; ++i) { - if (ops[i]->turbo_enc.code_block_mode == 0) { + if (ops[i]->turbo_enc.code_block_mode == + RTE_BBDEV_TRANSPORT_BLOCK) { cbs_in_op = get_num_cbs_in_op_enc(&ops[i]->turbo_enc); /* Check if there is available space for further * processing @@ -2023,7 +2027,8 @@ fpga_enqueue_dec(struct rte_bbdev_queue_data *q_data, q->ring_ctrl_reg.ring_size + q->head_free_desc - q->tail - 1; for (i = 0; i < num; ++i) { - if (ops[i]->turbo_dec.code_block_mode == 0) { + if (ops[i]->turbo_dec.code_block_mode == + RTE_BBDEV_TRANSPORT_BLOCK) { cbs_in_op = get_num_cbs_in_op_dec(&ops[i]->turbo_dec); /* Check if there is available space for further * processing @@ -2243,7 +2248,7 @@ fpga_dequeue_enc(struct rte_bbdev_queue_data *q_data, for (i = 0; (i < num) && (dequeued_cbs < avail); ++i) { op = (q->ring_addr + ((q->head_free_desc + dequeued_cbs) & q->sw_ring_wrap_mask))->enc_req.op_addr; - if (op->turbo_enc.code_block_mode == 0) + if (op->turbo_enc.code_block_mode == RTE_BBDEV_TRANSPORT_BLOCK) ret = dequeue_enc_one_op_tb(q, &ops[i], dequeued_cbs); else ret = dequeue_enc_one_op_cb(q, &ops[i], dequeued_cbs); @@ -2281,7 +2286,7 @@ fpga_dequeue_dec(struct rte_bbdev_queue_data *q_data, for (i = 0; (i < num) && (dequeued_cbs < avail); ++i) { op = (q->ring_addr + ((q->head_free_desc + dequeued_cbs) & q->sw_ring_wrap_mask))->dec_req.op_addr; - if (op->turbo_dec.code_block_mode == 0) + if (op->turbo_dec.code_block_mode == RTE_BBDEV_TRANSPORT_BLOCK) ret = dequeue_dec_one_op_tb(q, &ops[i], dequeued_cbs); else ret = dequeue_dec_one_op_cb(q, &ops[i], dequeued_cbs); @@ -2307,7 +2312,7 @@ fpga_dequeue_dec(struct rte_bbdev_queue_data *q_data, /* Initialization Function */ static void -fpga_lte_fec_init(struct rte_bbdev *dev) +fpga_lte_fec_init(struct rte_bbdev *dev, struct rte_pci_driver *drv) { struct rte_pci_device *pci_dev = RTE_DEV_TO_PCI(dev->device); @@ -2318,20 +2323,20 @@ fpga_lte_fec_init(struct rte_bbdev *dev) dev->dequeue_dec_ops = fpga_dequeue_dec; ((struct fpga_lte_fec_device *) dev->data->dev_private)->pf_device = - !strcmp(dev->device->driver->name, + !strcmp(drv->driver.name, RTE_STR(FPGA_LTE_FEC_PF_DRIVER_NAME)); ((struct fpga_lte_fec_device *) dev->data->dev_private)->mmio_base = pci_dev->mem_resource[0].addr; rte_bbdev_log_debug( "Init device %s [%s] @ virtaddr %p phyaddr %#"PRIx64, - dev->device->driver->name, dev->data->name, + drv->driver.name, dev->data->name, (void *)pci_dev->mem_resource[0].addr, pci_dev->mem_resource[0].phys_addr); } static int -fpga_lte_fec_probe(struct rte_pci_driver *pci_drv __rte_unused, +fpga_lte_fec_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) { struct rte_bbdev *bbdev = NULL; @@ -2368,7 +2373,7 @@ fpga_lte_fec_probe(struct rte_pci_driver *pci_drv __rte_unused, bbdev->data->socket_id = pci_dev->device.numa_node; /* Invoke FEC FPGA device initialization function */ - fpga_lte_fec_init(bbdev); + fpga_lte_fec_init(bbdev, pci_drv); rte_bbdev_log_debug("bbdev id = %u [%s]", bbdev->data->dev_id, dev_name); @@ -2380,7 +2385,7 @@ fpga_lte_fec_probe(struct rte_pci_driver *pci_drv __rte_unused, ((uint16_t)(version_id >> 16)), ((uint16_t)version_id)); #ifdef RTE_LIBRTE_BBDEV_DEBUG - if (!strcmp(bbdev->device->driver->name, + if (!strcmp(pci_drv->driver.name, RTE_STR(FPGA_LTE_FEC_PF_DRIVER_NAME))) print_static_reg_debug_info(d->mmio_base); #endif @@ -2429,10 +2434,10 @@ fpga_lte_fec_remove(struct rte_pci_device *pci_dev) } static inline void -set_default_fpga_conf(struct fpga_lte_fec_conf *def_conf) +set_default_fpga_conf(struct rte_fpga_lte_fec_conf *def_conf) { /* clear default configuration before initialization */ - memset(def_conf, 0, sizeof(struct fpga_lte_fec_conf)); + memset(def_conf, 0, sizeof(struct rte_fpga_lte_fec_conf)); /* Set pf mode to true */ def_conf->pf_mode_en = true; @@ -2447,15 +2452,15 @@ set_default_fpga_conf(struct fpga_lte_fec_conf *def_conf) /* Initial configuration of FPGA LTE FEC device */ int -fpga_lte_fec_configure(const char *dev_name, - const struct fpga_lte_fec_conf *conf) +rte_fpga_lte_fec_configure(const char *dev_name, + const struct rte_fpga_lte_fec_conf *conf) { uint32_t payload_32, address; uint16_t payload_16; uint8_t payload_8; uint16_t q_id, vf_id, total_q_id, total_ul_q_id, total_dl_q_id; struct rte_bbdev *bbdev = rte_bbdev_get_named_dev(dev_name); - struct fpga_lte_fec_conf def_conf; + struct rte_fpga_lte_fec_conf def_conf; if (bbdev == NULL) { rte_bbdev_log(ERR, @@ -2662,14 +2667,3 @@ RTE_PMD_REGISTER_PCI_TABLE(FPGA_LTE_FEC_PF_DRIVER_NAME, RTE_PMD_REGISTER_PCI(FPGA_LTE_FEC_VF_DRIVER_NAME, fpga_lte_fec_pci_vf_driver); RTE_PMD_REGISTER_PCI_TABLE(FPGA_LTE_FEC_VF_DRIVER_NAME, pci_id_fpga_lte_fec_vf_map); - -RTE_INIT(fpga_lte_fec_init_log) -{ - fpga_lte_fec_logtype = rte_log_register("pmd.bb.fpga_lte_fec"); - if (fpga_lte_fec_logtype >= 0) -#ifdef RTE_LIBRTE_BBDEV_DEBUG - rte_log_set_level(fpga_lte_fec_logtype, RTE_LOG_DEBUG); -#else - rte_log_set_level(fpga_lte_fec_logtype, RTE_LOG_NOTICE); -#endif -}