> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/man/man4/irdma.4.md).

# irdma.4

`irdma` — Intel(R) Ethernet Controller E810 的 RDMA FreeBSD 驱动

## 名称

`irdma`

## 概要

`此模块依赖 ice(4)`

`options OFED options OFED_DEBUG_INIT options COMPAT_LINUXKPI options SDP options IPOIB_CM`

以下内核选项应包含在配置中：

## 描述

### 特性

`irdma` 驱动在由 [ice(4)](/man/man4/ice.4.md) 支持的、支持 RDMA 的 Intel Ethernet 800 系列网卡上提供 RDMA 协议支持。

该驱动同时支持 iWARP 和 RoCEv2 协议。

## 配置

### 加载器可调参数

可调参数可在引导内核前于 [loader(8)](/man/man8/loader.8.md) 提示符下设置，或存储在 loader.conf(5) 中。

**`dev.irdma<interface_number>.roce_enable`** 在 \<interface\_number> 接口上启用 RoCEv2 协议。默认使用 RoCEv2 协议。

**`dev.irdma<interface_number>.dcqcn_cc_cfg_valid`** 表示所有 DCQCN 参数有效，应在寄存器或 QP 上下文中更新。将此参数设置为 1 表示 *dcqcn\_min\_dec\_factor , dcqcn\_min\_rate\_MBps , dcqcn\_F , dcqcn\_T, dcqcn\_B, dcqcn\_rai\_factor, dcqcn\_hai\_factor, dcqcn\_rreduce\_mperiod* 中的设置将被采用。否则使用默认值。注意：此可调参数生效时还必须设置 "roce\_enable"。

**`dev.irdma<interface_number>.dcqcn_min_dec_factor`** 处理 CNP 时当前发送速率可改变的最小因子。值以百分比（1-100）给出。注意：此可调参数生效时还必须设置 "roce\_enable" 和 "dcqcn\_cc\_cfg\_valid"。

**`dev.irdma<interface_number>.dcqcn_min_rate_MBps`** 速率限制的最小值，单位为 Mbits/s。注意：此可调参数生效时还必须设置 "roce\_enable" 和 "dcqcn\_cc\_cfg\_valid"。

**`dev.irdma<interface_number>.dcqcn_F`** 在带宽恢复的每个阶段中保持的次数。注意：此可调参数生效时还必须设置 "roce\_enable" 和 "dcqcn\_cc\_cfg\_valid"。

**`dev.irdma<interface_number>.dcqcn_T`** 在 DCQCN 模式下增加 CWND 前应经过的微秒数。注意：此可调参数生效时还必须设置 "roce\_enable" 和 "dcqcn\_cc\_cfg\_valid"。

**`dev.irdma<interface_number>.dcqcn_B`** 在 DCQCN 模式下更新 CWND 前要发送的字节数。注意：此可调参数生效时还必须设置 "roce\_enable" 和 "dcqcn\_cc\_cfg\_valid"。

**`dev.irdma<interface_number>.dcqcn_rai_factor`** 在加性增加模式下加到拥塞窗口的 MSS 数量。注意：此可调参数生效时还必须设置 "roce\_enable" 和 "dcqcn\_cc\_cfg\_valid"。

**`dev.irdma<interface_number>.dcqcn_hai_factor`** 在超活跃增加模式下加到拥塞窗口的 MSS 数量。注意：此可调参数生效时还必须设置 "roce\_enable" 和 "dcqcn\_cc\_cfg\_valid"。

**`dev.irdma<interface_number>.dcqcn_rreduce_mperiod`** 单个流连续两次速率降低之间的最短时间。仅在相关时间间隔内收到 CNP 时才会发生速率降低。注意：此可调参数生效时还必须设置 "roce\_enable" 和 "dcqcn\_cc\_cfg\_valid"。

### SYSCTL 过程

运行时调整可使用 sysctl 控制。

**`dev.irdma<interface_number>.debug`** 定义调试消息级别。典型值：1 表示仅错误，0x7fffffff 表示完整调试。

**`dev.irdma<interface_number>.dcqcn_enable`** 为 RoCEv2 启用 DCQCN 算法。注意：此 sysctl 生效时还必须设置 "roce\_enable"。注意：可随时更改此设置，但仅应用于新创建的 QP。

### 测试

```sh
kldload irdma
```

```sh
hw.ice.irdma=1
```

```sh
sysctl -a | grep infiniband
```

```sh
dev.irdma<interface_number>.roce_enable=1
```

**dev.irdma0.roce\_enable=0**

**dev.irdma1.roce\_enable=1**

```sh
sysctl dev.irdma<interface_number>.roce_enable
```

```sh
sysctl dev.irdma2.roce_enable
```

```sh
sysctl dev.ice.<interface_number>.fc=3
```

make clean

make

make install

kldload krping

```sh
echo size=64,count=1,port=6601,addr=100.0.0.189,server > /dev/krping
```

```sh
echo size=64,count=1,port=6601,addr=100.0.0.189,client > /dev/krping
```

* 要加载 irdma 驱动，运行：如果 if\_ice 尚未加载，系统会自动加载。如果 irdma 驱动未加载，请检查 sysctl `hw.ice.irdma` 的值是否为 1。要更改值，在 **/boot/loader.conf** 中写入：并重启。
* 要检查驱动是否已加载，运行：通常，如果一切顺利，每个 PF 将出现约 190 个条目。
* 网卡的每个接口可在 iWARP 或 RoCEv2 模式下工作。要启用 RoCEv2 兼容性，添加：其中 \<interface\_number> 是需要启用 RoCEv2 协议的所需 ice 接口编号，写入：**/boot/loader.conf**，例如：将在 ice0 上保持 iWARP 模式并在接口 ice1 上启用 RoCEv2 模式。RoCEv2 模式为默认。要检查 irdma roce\_enable 状态，运行：例如：返回值为 '0' 表示 iWARP 模式，值为 '1' 表示 RoCEv2 模式。注意：以一种模式配置的接口将无法连接到以另一种模式配置的节点。注意：RoCEv2 当前支持有限，仅用于功能测试。当前不支持 DCB 和优先级流控制（PFC），可能导致显著的性能损失或连接问题。
* 在 ice 驱动中启用流控制：在系统所连接的交换机上启用流控制。详细信息请参见交换机文档。
* krping 软件的源代码随内核提供，位于 **/usr/src/sys/contrib/rdma/krping/**。要编译该软件，切换到 **/usr/src/sys/modules/rdma/krping/** 并执行以下命令：
* 在一台机器上启动 krping 服务器：
* 从另一台机器连接客户端：

## 支持

如需一般信息和支持，请访问 Intel 支持网站：\<Lk <http://support.intel.com/>。>

如果使用受支持的适配器发现此驱动的问题，请将与问题相关的所有具体信息发送邮件至 <freebsd@intel.com>。

## 参见

[ice(4)](/man/man4/ice.4.md)

## 作者

`irdma` 驱动由 Bartosz Sobczak <bartosz.sobczak@intel.com> 编写。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://book.bsdcn.org/man/man4/irdma.4.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
