WD加速器用户态驱动层接口- WD南向接口

用户态Vendor驱动对接Warpdrive接口

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
struct wd_drv_dio_if {
char *hw_type;/* vendor tag which is used to select right vendor driver */
int (*open)(struct wd_queue *q); /* user space WD queue initiation */
void (*close)(struct wd_queue *q); /* user space WD queue uninitiation */
int (*send)(struct wd_queue *q, void *req); /* Send WCRYPTO message to WD queue */
int (*recv)(struct wd_queue *q, void **resp); /* Receive WCRYPTO msg from WD queue */
};

/* The regions of warpdrve queue, which are from the definition of UACCE(the kernel part of Warpdrive) */
enum uacce_qfrt {
UACCE_QFRT_MMIO = 0,/* device mmio region */
UACCE_QFRT_DKO,/* device kernel-only */
UACCE_QFRT_DUS,/* device user share */
UACCE_QFRT_SS,/* static share memory */
UACCE_QFRT_MAX,
};

函数原型

void *wd_drv_mmap_qfr(struct wd_queue *q, enum uacce_qfrt qfrt,

enum uacce_qfrt qfrt_next, size_t size);

函数功能

映射warpdrive队列的指定区域,并尝试获取起始地址

输入说明

q:warpdrive queue

qfrt:需要映射的指定区域

qfrt_next:指定区域的下一个区域

size:指定区域的大小

输出说明

返回值说明

The VA of the denoted region

使用说明

南向接口

注意事项

驱动与队列初始化时获取各个region的虚拟地址区域

函数原型

void wd_drv_unmmap_qfr(struct wd_queue *q, void *addr,

enum uacce_qfrt qfrt, enum uacce_qfrt qfrt_next, size_t size);

函数功能

取消映射warpdrive队列的指定区域

输入说明

q:warpdrive队列

addr:队列中指定区域的起始VA

qfrt:需要映射的指定区域

qfrt_next:指定区域的下一个区域

size:指定区域的大小

输出说明

返回值说明

NA

使用说明

南向接口

注意事项

队列释放时,驱动进行unmap处理

函数原型

void *drv_iova_map(struct wd_queue *q, void *va, size_t sz);

函数功能

发送到硬件设备之前,通过映射获取虚拟设备的iova

输入说明

q:warpdrive队列

va:指定区域的起始VA

sz:VA区域的大小

输出说明

返回值说明

返回对应VA的iova

使用说明

南向接口

注意事项

  

函数原型

void drv_iova_unmap(struct wd_queue *q, void *va, void *iova, size_t sz);

函数功能

取消之前创建的iova和va之间的映射关系

输入说明

q:warpdrive队列

va:指定区域的起始VA

iova:指定区域的起始IOVA

sz:区域的大小

输出说明

返回值说明

NA

使用说明

南向接口

注意事项

  

其他南向接口分布在各个算法的算法层中,均有注明。