RDMA的ibv_post_send() 函数】的更多相关文章

函数原型为 int ibv_post_send(struct ibv_qp *qp, struct ibv_send_wr *wr, struct ibv_send_wr **bad_wr); 其中struct ibv_send_wr结构体的定义为: struct ibv_send_wr { uint64_t wr_id; struct ibv_send_wr *next; struct ibv_sge *sg_list; int num_sge; enum ibv_wr_opcode opco…
OFA定义了一组标准的Verbs,并提供了一个标准库libibvers.在用户态实现NVMe over RDMA的Host(i.e. Initiator)和Target, 少不了要跟OFA定义的Verbs打交道.但是,仅仅有libibverbs里的API是不够的,还需要对应的RDMA硬件的用户态驱动支持.在前文中,我们分析了内核态ib_post_send()的实现,理解了内核空间的回调函数post_send()是如何跟mlx5卡的设备驱动函数mlx5_ib_post_send()关联在一起的.本…
一:首先根据系统发行版本下载对应的驱动,下载地址如下: http://www.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers 本次下载的驱动版本为:MLNX_OFED_LINUX-1.5.3-4.0.42-sles11-x86_64.tgz 二:添加针对当前内核的IB驱动 1.把下载好的mellanox驱动解压缩 linux:~ # tar xzvf MLNX_OFED_LINUX-1.5.3-4.0.…
目标: (1)创建Source Insight 工程,方便后面分析如何启动内核的 (2)分析uboot传递参数,链接脚本如何进入stext的  (3) 分析stext函数如何启动内核:  (3.1) 关闭irq和fiq,设置svc管理模式      (3.2)判断是或支持这个CPU      (3.3)判断是否支持这个单板(通过uboot传入的机器ID判断)      (3.4)创建页表,为后面的MMU做准备      (3.5) 使能MMU并跳到__switch_data处,复制数据段,清除b…
const char *ibv_get_device_name(struct ibv_device *device); 描述 函数用来获取一个与RDMA设备相关联的名字 注意 这个名字在一台特定的机器中是唯一的(相同的名字不会分配给其他设备): 这个名字在跨InfiniBand fabric并不是唯一的: 当一台电脑上拥有多于一台的RDMA设备时,修改RDMA设备在电脑上的位置(例如,总线上的位置),可能会导致关联的name改变: 为了区分设备,建议使用设备的GUID进行区分,函数ibv_get…
struct ibv_context *ibv_open_device(struct ibv_device *device); 描述 函数会创建一个RDMA设备相关的context:可以通过ibv_close_device()函数来关闭设备. context的作用 查询RDMA设备的资源 创建资源 注意: 函数的功能与函数名所代表的意思不同,它事实上并不是打开设备: 设备实际是被内核底层的驱动打开: 设备可能被其他的用户/内核层的代码所使用: 这个verb仅仅打开一个context,供用户层应用…
uint64_t ibv_get_device_guid(struct ibv_device *device); 描述 函数返回RDMA 设备的 GUID(The Global Unique IDentifier) GUID:设备的供应商在制造过程中分配给设备,是唯一的,被用作RDMA设备的标识. 注意:从RDMA设备的GUID的前缀,可以知道设备的供应商. 参数(struct ibv_device *device) 参数为函数ibv_get_device_list()返回的可用RDMA设备数组…
waylau/netty-4-user-guide: Chinese translation of Netty 4.x User Guide. 中文翻译<Netty 4.x 用户指南> https://github.com/waylau/netty-4-user-guide Rich Buffer Data Structure 丰富的缓冲实现 · GitBook https://waylau.com/netty-4-user-guide/Architectural%20Overview/Ric…
int ibv_close_device(struct ibv_context *context); 描述 函数用来关闭一个RDMA设备context: 注意: 函数不能用来释放与该Context关联的资源 用户应该在调用这个ibv_close_device()函数之前释放这些资源,为了避免资源泄露 使用这些孤子资源可能会导致一个segmentation fault 当进程结束时,操作系统会自动清理这些资源 参数 参数为函数ibv_open_device()返回值 返回值 成功返回0 失败返回-…
void ibv_free_device_list(struct ibv_device **list); 描述 函数用来释放当前可用的RDMA设备数组. 注意 数组一旦释放,指向设备的指针将不能再由ibv_open_device()函数打开 参数(struct ibv_device **list) 待释放的RDMA设备数组 返回值 返回None 例子 获取设备链表,释放它 struct ibv_device **dev_list; dev_list = ibv_get_device_list(N…