自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(627)
  • 收藏
  • 关注

原创 NVM Command学习

ubuntu系统安装nvme-cli,可以在应用层发起命令。内核当中描述描述coommand的结构体。

2023-08-05 15:50:25 1221

原创 blk_mq_alloc_tag_set函数struct blk_mq_tag_set结构体学习

后面再分析每个成员的作用。

2023-08-01 23:49:53 713

原创 linux scatterlist阅读二

page_link ,offset,length的值,其中page_link 保存的是经过转换以后的物理地址,在使用sg_init_one函数的例子当中,buf传入的是内核虚拟地址。可以看到这个函数的作用就是将sgl起始地址的一段空间清零,然后设置最后一个元素的page_link 值,由于是最后一个元素,所以page_link 的第一个bit被设置为1。而像dma_length,dma_address一类成员的值的设置就要使用dma相关的函数去设置了,设置以后,记录的就是设备认识的dma地址了。

2023-07-22 17:51:45 387

原创 linux scatterlist源码阅读记录

linux scatterlist结构体学习

2023-07-22 14:27:29 438

原创 linux内核自旋锁理解总结

比如一开始是禁止了中断,然后调用spin_lock_irq和spin_unlock_irq,在调用spin_unlock_irq结束后会开启中断,本来一开始是禁止中断的,但是最后开启了中断,这显然是不对的。主要是spin_lock_irq和spin_lock_irqsave的区别理解,,一个会记住在调用函数时中断是否使能,

2023-05-21 21:12:59 114

原创 rdma rxe驱动ack包状态机解析

如果收到了ack包就会进行一系列的处理,如下,红色的代表走的是正常逻辑。文件:rxe_comp.c的rxe_completer函数。

2023-04-19 19:03:18 336

原创 rdma IBV_SEND_FENCE标记位理解

qp->req.wait_fence设置为1,然后返回NULL,所以rxe_requester函数直接退出了,不会进行这个wqe的处理,那么什么时候可以处理呢?只有等到这个设置了IBV_SEND_FENCE标记位的上一个wqe收到了最后一个ack以后,才会对当前设置了IBV_SEND_FENCE标记位的wqe进行处理。在rxe_comp.c里do_complete函数的最后有相应的设置,并且在设置之前,已经产生了cqe,即ack已经得到了相应的处理。在函数的最后有个判断,参考rxe驱动代码,

2023-04-18 18:57:36 844

原创 rdma rxe ack超时处理原理

那么state的变化为COMPST_GET_WQE->COMPST_EXIT->COMPST_ERROR_RETRY->COMPST_ERROR_RETRY,在int rxe_requester(void *arg)发包函数的最后会调用update_state函数,触发retrans_timer定时器。然后从skb队列里取出skb包,如果超时取出的skb为NULL,说明定时器到期以后,还没有ack过来,从而,在定时器到期以后会调度到rxe_completer函数,到了req的调度以后,

2023-04-17 19:22:26 347

原创 rdma cq的同步事件通知机制

调度会调用到rxe_send_complete函数,通过cq->ibcq.comp_handler(&cq->ibcq, cq->ibcq.cq_context);使用例程:https://www.rdmamojo.com/2013/03/16/ibv_ack_cq_events/我想,如果不调用ibv_ack_cq_events的话,在销毁cq时,应该是会阻塞的,可以自己写代码验证下。这个时候,ibv_get_cq_event函数的read就会返回,ibv_req_notify_cq函数要重复的调用。

2023-04-11 16:17:43 998

原创 rdma ack包 Syndrome字段含义总结

5,6bit为11表示这是一个NAK包,01表示RNR NAK包,00是正常情况,代表正确的收到了一个ack包。在rxe的驱动代码里,体现在rxe_comp.c文件的check_ack函数里。NAK包又细分为以下几种情况,以0-4bit代表不同的情况。该字段占一个字节,最高位(7bit)是保留的。

2023-04-04 18:51:48 753

原创 rdma max_dest_rd_atomic和max_rd_atomic字段含义总结

首先是max_rd_atomic字段,如果发送端要发起read或者atomic操作,那么这个字段通常要设置为1,如果设置为0,那么即使你发起了read或者atomic操作也是不起作用的,而对于发送端来说max_dest_rd_atomic字段可以设置为0(当然,条件是它此时不会做为接收端来接收read请求或者atomic请求),max_rd_atomic字段设置为1,就说明它只能处理一次读请求或者原子请求么?所以一般给1就可以。

2023-03-30 19:00:23 331

原创 rdma struct ibv_qp_attr属性timeout,retry_cnt,rnr_retry等字段含义。

没有收到ack,此时由于将接收端的发送函数注释了,所以不会收到ack包,由于此时将timeout设置为0,所以不会将数据进行重新发送。含义:远程QP在报告错误之前发送RNR NACK时,QP将尝试重发数据包的总次数7为特殊值,表示在RNR情况下重试无限次。这个值是对端给你回复nack包时,你要重新发送数据包的次数,那我们可以模拟一下对端回复nack的情况。驱动底下是用一个3bit的值表示的,所以最大的值可以给7,给7的意思是重新发送无限次。含义:远端没有应答而报告错误之前,QP将尝试重发数据包的总次数。

2023-03-28 17:29:09 1210

原创 linux内核红黑树

相关结构体定义如下:使用案例:

2023-03-19 17:35:51 129

原创 linux内核链表的基本操作

一:链表的头插法参考:

2023-03-18 20:43:33 108

原创 linux kernel常用的对齐函数总结

内核字节对齐函数

2023-03-10 18:15:11 553

原创 IBV_WR_ATOMIC_FETCH_AND_ADD和IBV_WR_ATOMIC_CMP_AND_SWP使用总结

RDMA原子操作

2023-03-10 16:38:18 367 3

原创 module_param_array()用法

ubuntu5.4.135平台。

2023-03-02 14:35:08 374

原创 rdma rocev2报文格式总结

rdma rocev2报文格式总结

2023-02-15 14:46:06 7814 4

原创 内核态socket编程

内核态socket编程

2023-02-10 20:15:59 713 1

原创 RDMA IBV_SEND_INLINE和IBV_SEND_SIGNALED区别

IBV_SEND_SIGNALED 和 IBV_SEND_INLINE 区别

2023-02-10 19:22:24 296

原创 ib_register_device注册一个IB设备

ib_register_device注册一个IB设备

2022-12-28 18:27:46 508

原创 关于ib_alloc_device的理解

ib_alloc_device的理解

2022-12-15 14:28:45 691 1

原创 关于IBV_WR_RDMA_WRITE_WITH_IMM的理解

对于IBV_WC_RECV_RDMA_WITH_IMM的描述是这样的,也就是说并不需要sge,所以下发的sge,可以是NULL,个数可以是0。(1)需要下发post_recv,但是下发是post_recv当中的sge的地址可以是空,sge个数可以是0。伪代码,实际的rkey和addr已经通过socket交换。并且poll_cq时,有返回,在这篇文章当中对于poll_cq时,主要区别点有两个,这个是对于接收端而言。(2)可以带即时数据,

2022-12-13 11:34:56 1420

原创 提取文件路径和文件名称,文件大小

获取文件路径,名称,大小

2022-12-09 11:46:56 1030 3

原创 获取以太网接口mtu大小

获取mtu大小

2022-12-08 18:59:33 252

原创 __attribute__((alias(__stringify(A))));备忘

__attribute__((alias(__stringify(A))));备忘。

2022-11-30 15:17:35 361

原创 c语言进度条显示备忘

进度条显示

2022-11-25 11:19:08 372

原创 debugfs调试学习

linux debugfs

2022-11-23 19:33:14 239

原创 dd命令创建指定大小的文件

dd命令

2022-11-21 18:04:47 3081

原创 rdma-core/ud_pingpong.c阅读记录

rdma-core/ud_pingpong.c阅读记录

2022-11-16 20:29:08 548

原创 安装facebook/wdt备忘

facebook/wdt

2022-11-15 15:03:11 583

原创 rdma-ud例程

rdma-ud例程

2022-11-08 16:32:27 605

原创 inet_pton和inet_ntop使用总结

inet_ntop和inet_pton

2022-11-08 13:41:11 868

原创 rdma-core ud_pingpong.c阅读记录

rdma-ud_pingpong.c

2022-11-07 19:45:01 703 3

原创 rdma-read/write例程

rdma read/write例程

2022-11-04 15:33:44 558

原创 RDMA-send/recv例程

rdma例程

2022-11-02 19:44:58 352

原创 rdma-轮询常用cq函数。

rdma-cq轮询

2022-11-01 18:19:12 1011

原创 rdma-cq的创建与销毁

rdma-cq

2022-10-28 15:22:22 577

原创 Event Channel Operations

rdma event

2022-10-27 18:24:49 228

原创 自定义命令备录

自定义命令

2022-10-26 18:56:01 123

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除