* [dpdk-dev] [PATCH v2 1/2] baseband/fpga_lte_fec: fix probing fatal failure
2019-10-22 13:16 [dpdk-dev] [PATCH v2 0/2] baseband/fpga_lte_fec: bug fixes from FPGA LTE HW validation Nicolas Chautru
@ 2019-10-22 13:16 ` Nicolas Chautru
2019-10-22 13:16 ` [dpdk-dev] [PATCH v2 2/2] baseband/fpga_lte_fec: fix to polling of MMIO register Nicolas Chautru
2019-10-23 13:51 ` [dpdk-dev] [PATCH v2 0/2] baseband/fpga_lte_fec: bug fixes from FPGA LTE HW validation Akhil Goyal
2 siblings, 0 replies; 4+ messages in thread
From: Nicolas Chautru @ 2019-10-22 13:16 UTC (permalink / raw)
To: akhil.goyal, dev; +Cc: ferruh.yigit, thomas, Nic Chautru, stable
From: Nic Chautru <nicolas.chautru@intel.com>
A change to PCI mapping assumption was missed earlier, this causes
probing to fail with the fpga_lte_fec PMD when checking for name
of the rte_driver (not set yet) instead of the rte_pci_driver.
Fixes: 391797f04208 ("drivers/bus: move driver assignment to end of probing")
Cc: thomas@monjalon.net
Cc: stable@dpdk.org
Signed-off-by: Nic Chautru <nicolas.chautru@intel.com>
---
drivers/baseband/fpga_lte_fec/fpga_lte_fec.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c b/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c
index 7e05b94..2fc7f11 100644
--- a/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c
+++ b/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c
@@ -2307,7 +2307,7 @@ struct __rte_cache_aligned fpga_queue {
/* 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,7 +2318,7 @@ struct __rte_cache_aligned fpga_queue {
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;
@@ -2331,7 +2331,7 @@ struct __rte_cache_aligned fpga_queue {
}
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 +2368,7 @@ struct __rte_cache_aligned fpga_queue {
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);
--
1.8.3.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [dpdk-dev] [PATCH v2 2/2] baseband/fpga_lte_fec: fix to polling of MMIO register
2019-10-22 13:16 [dpdk-dev] [PATCH v2 0/2] baseband/fpga_lte_fec: bug fixes from FPGA LTE HW validation Nicolas Chautru
2019-10-22 13:16 ` [dpdk-dev] [PATCH v2 1/2] baseband/fpga_lte_fec: fix probing fatal failure Nicolas Chautru
@ 2019-10-22 13:16 ` Nicolas Chautru
2019-10-23 13:51 ` [dpdk-dev] [PATCH v2 0/2] baseband/fpga_lte_fec: bug fixes from FPGA LTE HW validation Akhil Goyal
2 siblings, 0 replies; 4+ messages in thread
From: Nicolas Chautru @ 2019-10-22 13:16 UTC (permalink / raw)
To: akhil.goyal, dev; +Cc: ferruh.yigit, thomas, Nic Chautru, stable
From: Nic Chautru <nicolas.chautru@intel.com>
Polling of a MMIO register could misreport the actual value
set dynamically in hardware as the variable was not set explicitly
to volatile integer.
Fixes: efd453698c49 ("baseband/fpga_lte_fec: add driver for FEC on FPGA")
Cc: nicolas.chautru@intel.com
Cc: stable@dpdk.org
Signed-off-by: Nic Chautru <nicolas.chautru@intel.com>
---
drivers/baseband/fpga_lte_fec/fpga_lte_fec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c b/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c
index 2fc7f11..8bd10b4 100644
--- a/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c
+++ b/drivers/baseband/fpga_lte_fec/fpga_lte_fec.c
@@ -889,7 +889,7 @@ struct __rte_cache_aligned fpga_queue {
* 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);
--
1.8.3.1
^ permalink raw reply [flat|nested] 4+ messages in thread