DOCA 文档 v2.10.0

功能检查

使用 DOCA 设备的应用程序依赖于一组特定的功能才能按设计运行。因此,建议检查所选 DOCA 设备是否具备这些功能。为了实现这一目标,DOCA SDK 公开了功能,这些功能是一组具有通用外观和感觉的 API,如本页所述。

应用程序应在使用任何 DOCA SDK API(核心、库)之前使用这些功能 API,以便尽早失败(在初始化任何资源之前),并且能够实现回退流程,而不是在应用程序流程中意外出错。

使用 DOCA Core API 的应用程序可能需要根据特定功能来识别要使用的特定 DOCA 设备。

为此,doca_devinfodoca_devinfo_rep 公开了带有前缀 doca_devinfo_cap_*/doca_devinfo_rep_cap_* 的 API。例如

复制
已复制!
            

doca_error_t doca_devinfo_cap_is_hotplug_manager_supported(const struct doca_devinfo *devinfo, uint8_t *is_hotplug_manager); doca_error_t doca_devinfo_rep_cap_is_filter_emulated_supported(const struct doca_devinfo *devinfo, uint8_t *filter_emulated_supported);

每个 DOCA 库都公开了一组功能 API,用于以下目的

  • 查询库上下文或库任务的配置属性的最大/最小值

  • 验证特定 DOCA 设备是否支持库任务

所有库功能 API 都以 doca_<library_name>_cap_* 前缀开头。此外

  • 配置限制功能 API 以 doca_<library_name>_cap_[task_<task_type>]_get_min/max_* 前缀开头

  • 任务支持功能 API 的命名模板为 doca_<library_name>_cap_task_<task_type>_is_supported

例如,DOCA DMA 公开了

复制
已复制!
            

doca_error_t doca_dma_cap_task_memcpy_is_supported(const struct doca_devinfo *devinfo); doca_error_t doca_dma_cap_get_max_num_tasks(struct doca_dma *dma, uint32_t *max_num_tasks); doca_error_t doca_dma_cap_task_memcpy_get_max_buf_size(const struct doca_devinfo *devinfo, uint64_t *buf_size);

与任何其他 DOCA 库一样,每个 DOCA Core 模块也公开了功能 API。

例如

  • 面向热插拔(模拟 PCIe 功能)的应用程序可以检查特定的 DOCA 设备信息结构是否启用热插拔模拟设备,通过调用

    复制
    已复制!
                

    doca_error_t doca_devinfo_cap_is_hotplug_manager_supported(const struct doca_devinfo *devinfo, uint8_t *is_hotplug_manager);

  • 使用 DOCA mmap 在主机和 BlueField 之间共享的应用程序必须从主机导出 doca_mmap 并从 BlueField 导入它。在开始工作流程之前,应用程序可以检查给定的 doca_devinfo 是否支持这些操作,使用以下 API

    复制
    已复制!
                

    doca_error_t doca_mmap_cap_is_export_pci_supported(const struct doca_devinfo *devinfo, uint8_t *mmap_export); doca_error_t doca_mmap_cap_is_create_from_export_pci_supported(const struct doca_devinfo *devinfo, uint8_t *from_export);

© 版权所有 2025 NVIDIA。 上次更新时间:2025 年 2 月 12 日。