| 791 | } |
| 792 | |
| 793 | int |
| 794 | rte_dma_dump(int16_t dev_id, FILE *f) |
| 795 | { |
| 796 | const struct rte_dma_dev *dev = &rte_dma_devices[dev_id]; |
| 797 | struct rte_dma_info dev_info; |
| 798 | int ret; |
| 799 | |
| 800 | if (!rte_dma_is_valid(dev_id) || f == NULL) |
| 801 | return -EINVAL; |
| 802 | |
| 803 | ret = rte_dma_info_get(dev_id, &dev_info); |
| 804 | if (ret != 0) { |
| 805 | RTE_DMA_LOG(ERR, "Device %d get device info fail", dev_id); |
| 806 | return -EINVAL; |
| 807 | } |
| 808 | |
| 809 | (void)fprintf(f, "DMA Dev %d, '%s' [%s]\n", |
| 810 | dev->data->dev_id, |
| 811 | dev->data->dev_name, |
| 812 | dev->data->dev_started ? "started" : "stopped"); |
| 813 | dma_dump_capability(f, dev_info.dev_capa); |
| 814 | (void)fprintf(f, " max_vchans_supported: %u\n", dev_info.max_vchans); |
| 815 | (void)fprintf(f, " nb_vchans_configured: %u\n", dev_info.nb_vchans); |
| 816 | (void)fprintf(f, " silent_mode: %s\n", |
| 817 | dev->data->dev_conf.enable_silent ? "on" : "off"); |
| 818 | |
| 819 | if (dev->dev_ops->dev_dump != NULL) |
| 820 | ret = (*dev->dev_ops->dev_dump)(dev, f); |
| 821 | rte_dma_trace_dump(dev_id, f, ret); |
| 822 | |
| 823 | return ret; |
| 824 | } |
| 825 | |
| 826 | static int |
| 827 | dummy_copy(__rte_unused void *dev_private, __rte_unused uint16_t vchan, |