MCPcopy Create free account
hub / github.com/F-Stack/f-stack / dpaa2_qdma_reset

Function dpaa2_qdma_reset

dpdk/drivers/dma/dpaa2/dpaa2_qdma.c:1379–1415  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1377}
1378
1379static int
1380dpaa2_qdma_reset(struct rte_dma_dev *dev)
1381{
1382 struct dpaa2_dpdmai_dev *dpdmai_dev = dev->data->dev_private;
1383 struct qdma_device *qdma_dev = dpdmai_dev->qdma_dev;
1384 int i;
1385
1386 DPAA2_QDMA_FUNC_TRACE();
1387
1388 /* In case QDMA device is not in stopped state, return -EBUSY */
1389 if (qdma_dev->state == 1) {
1390 DPAA2_QDMA_ERR(
1391 "Device is in running state. Stop before reset.");
1392 return -EBUSY;
1393 }
1394
1395 /* In case there are pending jobs on any VQ, return -EBUSY */
1396 for (i = 0; i < qdma_dev->num_vqs; i++) {
1397 if (qdma_dev->vqs[i].in_use && (qdma_dev->vqs[i].num_enqueues !=
1398 qdma_dev->vqs[i].num_dequeues)) {
1399 DPAA2_QDMA_ERR("Jobs are still pending on VQ: %d", i);
1400 return -EBUSY;
1401 }
1402 }
1403
1404 /* Reset and free virtual queues */
1405 for (i = 0; i < qdma_dev->num_vqs; i++) {
1406 rte_ring_free(qdma_dev->vqs[i].status_ring);
1407 }
1408 rte_free(qdma_dev->vqs);
1409 qdma_dev->vqs = NULL;
1410
1411 /* Reset QDMA device structure */
1412 qdma_dev->num_vqs = 0;
1413
1414 return 0;
1415}
1416
1417static int
1418dpaa2_qdma_close(__rte_unused struct rte_dma_dev *dev)

Callers 2

dpaa2_qdma_closeFunction · 0.85
dpaa2_dpdmai_dev_initFunction · 0.85

Calls 2

rte_ring_freeFunction · 0.85
rte_freeFunction · 0.85

Tested by

no test coverage detected