vdpa/mlx5: add task ring for multi-thread management
[dpdk.git] / drivers / dma / idxd / idxd_pci.c
index 81952cf..65c6bbf 100644 (file)
@@ -22,7 +22,7 @@ const struct rte_pci_id pci_id_idxd_map[] = {
 static inline int
 idxd_pci_dev_command(struct idxd_dmadev *idxd, enum rte_idxd_cmds command)
 {
-       uint8_t err_code;
+       uint32_t err_code;
        uint16_t qid = idxd->qid;
        int i = 0;
 
@@ -37,13 +37,14 @@ idxd_pci_dev_command(struct idxd_dmadev *idxd, enum rte_idxd_cmds command)
                if (++i >= 1000) {
                        IDXD_PMD_ERR("Timeout waiting for command response from HW");
                        rte_spinlock_unlock(&idxd->u.pci->lk);
+                       err_code &= CMDSTATUS_ERR_MASK;
                        return err_code;
                }
        } while (err_code & CMDSTATUS_ACTIVE_MASK);
        rte_spinlock_unlock(&idxd->u.pci->lk);
 
        err_code &= CMDSTATUS_ERR_MASK;
-       return -err_code;
+       return err_code;
 }
 
 static uint32_t *
@@ -258,6 +259,7 @@ init_pci_device(struct rte_pci_device *dev, struct idxd_dmadev *idxd,
 
        idxd->u.pci = pci;
        idxd->max_batches = wq_size;
+       idxd->max_batch_size = 1 << lg2_max_batch;
 
        /* enable the device itself */
        err_code = idxd_pci_dev_command(idxd, idxd_enable_dev);