X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fbaseband%2Ffpga_lte_fec%2Ffpga_lte_fec.c;h=abc5a1bf6e2c1b6c6d054ffd44e3b63fa3ebfdc1;hb=1b651a2a1d177ff18e2bae5ffaa2ff59b69ba4b5;hp=19e7689793d4e4ad28eb527629541f97d6ab5c51;hpb=efd453698c4970bbaaff569095ada54137d26a26;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 19e7689793..abc5a1bf6e 100644 --- a/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c +++ b/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c @@ -114,7 +114,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 +151,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 +197,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; @@ -607,9 +607,9 @@ fpga_dev_info_get(struct rte_bbdev *dev, RTE_BBDEV_TURBO_DEC_TB_CRC_24B_KEEP, .max_llr_modulus = INT8_MAX, .num_buffers_src = - RTE_BBDEV_MAX_CODE_BLOCKS, + RTE_BBDEV_TURBO_MAX_CODE_BLOCKS, .num_buffers_hard_out = - RTE_BBDEV_MAX_CODE_BLOCKS, + RTE_BBDEV_TURBO_MAX_CODE_BLOCKS, .num_buffers_soft_out = 0 } }, @@ -621,9 +621,9 @@ fpga_dev_info_get(struct rte_bbdev *dev, RTE_BBDEV_TURBO_RATE_MATCH | RTE_BBDEV_TURBO_ENC_INTERRUPTS, .num_buffers_src = - RTE_BBDEV_MAX_CODE_BLOCKS, + RTE_BBDEV_TURBO_MAX_CODE_BLOCKS, .num_buffers_dst = - RTE_BBDEV_MAX_CODE_BLOCKS + RTE_BBDEV_TURBO_MAX_CODE_BLOCKS } }, RTE_BBDEV_END_OF_CAPABILITIES_LIST() @@ -889,7 +889,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); @@ -1332,14 +1332,15 @@ static int validate_enc_op(struct rte_bbdev_enc_op *op) { struct rte_bbdev_op_turbo_enc *turbo_enc = &op->turbo_enc; - struct rte_bbdev_op_enc_cb_params *cb = NULL; - struct rte_bbdev_op_enc_tb_params *tb = NULL; + struct rte_bbdev_op_enc_turbo_cb_params *cb = NULL; + struct rte_bbdev_op_enc_turbo_tb_params *tb = NULL; uint16_t kw, kw_neg, kw_pos; if (turbo_enc->input.length > - RTE_BBDEV_MAX_TB_SIZE >> 3) { + RTE_BBDEV_TURBO_MAX_TB_SIZE >> 3) { rte_bbdev_log(ERR, "TB size (%u) is too big, max: %d", - turbo_enc->input.length, RTE_BBDEV_MAX_TB_SIZE); + turbo_enc->input.length, + RTE_BBDEV_TURBO_MAX_TB_SIZE); op->status = 1 << RTE_BBDEV_DATA_ERROR; return -1; } @@ -1372,32 +1373,32 @@ validate_enc_op(struct rte_bbdev_enc_op *op) if (turbo_enc->code_block_mode == 0) { tb = &turbo_enc->tb_params; - if ((tb->k_neg < RTE_BBDEV_MIN_CB_SIZE - || tb->k_neg > RTE_BBDEV_MAX_CB_SIZE) + if ((tb->k_neg < RTE_BBDEV_TURBO_MIN_CB_SIZE + || tb->k_neg > RTE_BBDEV_TURBO_MAX_CB_SIZE) && tb->c_neg > 0) { rte_bbdev_log(ERR, "k_neg (%u) is out of range %u <= value <= %u", - tb->k_neg, RTE_BBDEV_MIN_CB_SIZE, - RTE_BBDEV_MAX_CB_SIZE); + tb->k_neg, RTE_BBDEV_TURBO_MIN_CB_SIZE, + RTE_BBDEV_TURBO_MAX_CB_SIZE); return -1; } - if (tb->k_pos < RTE_BBDEV_MIN_CB_SIZE - || tb->k_pos > RTE_BBDEV_MAX_CB_SIZE) { + if (tb->k_pos < RTE_BBDEV_TURBO_MIN_CB_SIZE + || tb->k_pos > RTE_BBDEV_TURBO_MAX_CB_SIZE) { rte_bbdev_log(ERR, "k_pos (%u) is out of range %u <= value <= %u", - tb->k_pos, RTE_BBDEV_MIN_CB_SIZE, - RTE_BBDEV_MAX_CB_SIZE); + tb->k_pos, RTE_BBDEV_TURBO_MIN_CB_SIZE, + RTE_BBDEV_TURBO_MAX_CB_SIZE); return -1; } - if (tb->c_neg > (RTE_BBDEV_MAX_CODE_BLOCKS - 1)) + if (tb->c_neg > (RTE_BBDEV_TURBO_MAX_CODE_BLOCKS - 1)) rte_bbdev_log(ERR, "c_neg (%u) is out of range 0 <= value <= %u", tb->c_neg, - RTE_BBDEV_MAX_CODE_BLOCKS - 1); - if (tb->c < 1 || tb->c > RTE_BBDEV_MAX_CODE_BLOCKS) { + RTE_BBDEV_TURBO_MAX_CODE_BLOCKS - 1); + if (tb->c < 1 || tb->c > RTE_BBDEV_TURBO_MAX_CODE_BLOCKS) { rte_bbdev_log(ERR, "c (%u) is out of range 1 <= value <= %u", - tb->c, RTE_BBDEV_MAX_CODE_BLOCKS); + tb->c, RTE_BBDEV_TURBO_MAX_CODE_BLOCKS); return -1; } if (tb->cab > tb->c) { @@ -1406,23 +1407,23 @@ validate_enc_op(struct rte_bbdev_enc_op *op) tb->cab, tb->c); return -1; } - if ((tb->ea < RTE_BBDEV_MIN_CB_SIZE || (tb->ea % 2)) + if ((tb->ea < RTE_BBDEV_TURBO_MIN_CB_SIZE || (tb->ea % 2)) && tb->r < tb->cab) { rte_bbdev_log(ERR, "ea (%u) is less than %u or it is not even", - tb->ea, RTE_BBDEV_MIN_CB_SIZE); + tb->ea, RTE_BBDEV_TURBO_MIN_CB_SIZE); return -1; } - if ((tb->eb < RTE_BBDEV_MIN_CB_SIZE || (tb->eb % 2)) + if ((tb->eb < RTE_BBDEV_TURBO_MIN_CB_SIZE || (tb->eb % 2)) && tb->c > tb->cab) { rte_bbdev_log(ERR, "eb (%u) is less than %u or it is not even", - tb->eb, RTE_BBDEV_MIN_CB_SIZE); + tb->eb, RTE_BBDEV_TURBO_MIN_CB_SIZE); return -1; } kw_neg = 3 * RTE_ALIGN_CEIL(tb->k_neg + 4, - RTE_BBDEV_C_SUBBLOCK); + RTE_BBDEV_TURBO_C_SUBBLOCK); if (tb->ncb_neg < tb->k_neg || tb->ncb_neg > kw_neg) { rte_bbdev_log(ERR, "ncb_neg (%u) is out of range (%u) k_neg <= value <= (%u) kw_neg", @@ -1431,7 +1432,7 @@ validate_enc_op(struct rte_bbdev_enc_op *op) } kw_pos = 3 * RTE_ALIGN_CEIL(tb->k_pos + 4, - RTE_BBDEV_C_SUBBLOCK); + RTE_BBDEV_TURBO_C_SUBBLOCK); if (tb->ncb_pos < tb->k_pos || tb->ncb_pos > kw_pos) { rte_bbdev_log(ERR, "ncb_pos (%u) is out of range (%u) k_pos <= value <= (%u) kw_pos", @@ -1446,23 +1447,23 @@ validate_enc_op(struct rte_bbdev_enc_op *op) } } else { cb = &turbo_enc->cb_params; - if (cb->k < RTE_BBDEV_MIN_CB_SIZE - || cb->k > RTE_BBDEV_MAX_CB_SIZE) { + if (cb->k < RTE_BBDEV_TURBO_MIN_CB_SIZE + || cb->k > RTE_BBDEV_TURBO_MAX_CB_SIZE) { rte_bbdev_log(ERR, "k (%u) is out of range %u <= value <= %u", - cb->k, RTE_BBDEV_MIN_CB_SIZE, - RTE_BBDEV_MAX_CB_SIZE); + cb->k, RTE_BBDEV_TURBO_MIN_CB_SIZE, + RTE_BBDEV_TURBO_MAX_CB_SIZE); return -1; } - if (cb->e < RTE_BBDEV_MIN_CB_SIZE || (cb->e % 2)) { + if (cb->e < RTE_BBDEV_TURBO_MIN_CB_SIZE || (cb->e % 2)) { rte_bbdev_log(ERR, "e (%u) is less than %u or it is not even", - cb->e, RTE_BBDEV_MIN_CB_SIZE); + cb->e, RTE_BBDEV_TURBO_MIN_CB_SIZE); return -1; } - kw = RTE_ALIGN_CEIL(cb->k + 4, RTE_BBDEV_C_SUBBLOCK) * 3; + kw = RTE_ALIGN_CEIL(cb->k + 4, RTE_BBDEV_TURBO_C_SUBBLOCK) * 3; if (cb->ncb < cb->k || cb->ncb > kw) { rte_bbdev_log(ERR, "ncb (%u) is out of range (%u) k <= value <= (%u) kw", @@ -1655,8 +1656,8 @@ static int validate_dec_op(struct rte_bbdev_dec_op *op) { struct rte_bbdev_op_turbo_dec *turbo_dec = &op->turbo_dec; - struct rte_bbdev_op_dec_cb_params *cb = NULL; - struct rte_bbdev_op_dec_tb_params *tb = NULL; + struct rte_bbdev_op_dec_turbo_cb_params *cb = NULL; + struct rte_bbdev_op_dec_turbo_tb_params *tb = NULL; if (op->mempool == NULL) { rte_bbdev_log(ERR, "Invalid mempool pointer"); @@ -1713,33 +1714,33 @@ validate_dec_op(struct rte_bbdev_dec_op *op) } tb = &turbo_dec->tb_params; - if ((tb->k_neg < RTE_BBDEV_MIN_CB_SIZE - || tb->k_neg > RTE_BBDEV_MAX_CB_SIZE) + if ((tb->k_neg < RTE_BBDEV_TURBO_MIN_CB_SIZE + || tb->k_neg > RTE_BBDEV_TURBO_MAX_CB_SIZE) && tb->c_neg > 0) { rte_bbdev_log(ERR, "k_neg (%u) is out of range %u <= value <= %u", - tb->k_neg, RTE_BBDEV_MIN_CB_SIZE, - RTE_BBDEV_MAX_CB_SIZE); + tb->k_neg, RTE_BBDEV_TURBO_MIN_CB_SIZE, + RTE_BBDEV_TURBO_MAX_CB_SIZE); return -1; } - if ((tb->k_pos < RTE_BBDEV_MIN_CB_SIZE - || tb->k_pos > RTE_BBDEV_MAX_CB_SIZE) + if ((tb->k_pos < RTE_BBDEV_TURBO_MIN_CB_SIZE + || tb->k_pos > RTE_BBDEV_TURBO_MAX_CB_SIZE) && tb->c > tb->c_neg) { rte_bbdev_log(ERR, "k_pos (%u) is out of range %u <= value <= %u", - tb->k_pos, RTE_BBDEV_MIN_CB_SIZE, - RTE_BBDEV_MAX_CB_SIZE); + tb->k_pos, RTE_BBDEV_TURBO_MIN_CB_SIZE, + RTE_BBDEV_TURBO_MAX_CB_SIZE); return -1; } - if (tb->c_neg > (RTE_BBDEV_MAX_CODE_BLOCKS - 1)) + if (tb->c_neg > (RTE_BBDEV_TURBO_MAX_CODE_BLOCKS - 1)) rte_bbdev_log(ERR, "c_neg (%u) is out of range 0 <= value <= %u", tb->c_neg, - RTE_BBDEV_MAX_CODE_BLOCKS - 1); - if (tb->c < 1 || tb->c > RTE_BBDEV_MAX_CODE_BLOCKS) { + RTE_BBDEV_TURBO_MAX_CODE_BLOCKS - 1); + if (tb->c < 1 || tb->c > RTE_BBDEV_TURBO_MAX_CODE_BLOCKS) { rte_bbdev_log(ERR, "c (%u) is out of range 1 <= value <= %u", - tb->c, RTE_BBDEV_MAX_CODE_BLOCKS); + tb->c, RTE_BBDEV_TURBO_MAX_CODE_BLOCKS); return -1; } if (tb->cab > tb->c) { @@ -1757,12 +1758,12 @@ validate_dec_op(struct rte_bbdev_dec_op *op) } cb = &turbo_dec->cb_params; - if (cb->k < RTE_BBDEV_MIN_CB_SIZE - || cb->k > RTE_BBDEV_MAX_CB_SIZE) { + if (cb->k < RTE_BBDEV_TURBO_MIN_CB_SIZE + || cb->k > RTE_BBDEV_TURBO_MAX_CB_SIZE) { rte_bbdev_log(ERR, "k (%u) is out of range %u <= value <= %u", - cb->k, RTE_BBDEV_MIN_CB_SIZE, - RTE_BBDEV_MAX_CB_SIZE); + cb->k, RTE_BBDEV_TURBO_MIN_CB_SIZE, + RTE_BBDEV_TURBO_MAX_CB_SIZE); return -1; } } @@ -2306,7 +2307,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); @@ -2317,7 +2318,7 @@ 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; @@ -2330,7 +2331,7 @@ fpga_lte_fec_init(struct rte_bbdev *dev) } 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; @@ -2367,7 +2368,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);