All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/8] docs/zh_CN: add infiniband translation.
@ 2021-08-01 12:25 Yanteng Si
  2021-08-01 12:25 ` [PATCH v2 1/8] docs/zh_CN: add infiniband index translation Yanteng Si
                   ` (7 more replies)
  0 siblings, 8 replies; 27+ messages in thread
From: Yanteng Si @ 2021-08-01 12:25 UTC (permalink / raw)
  To: corbet, alexs, bobwxc, seakeel
  Cc: Yanteng Si, chenhuacai, jiaxun.yang, linux-doc, realpuyuwang,
	chenweiguang82, siyanteng01

v2:

* Modified some words under Alex's and Puyu advices; Thanks for their review!

* add 校译者(proofreading) sign.If you don't want me to do this, please let me know.

*--CC chenweiguang82@126.com

Yanteng Si (8):
  docs/zh_CN: add infiniband index translation
  docs/zh_CN: add infiniband core_locking translation
  docs/zh_CN: add infiniband ipoib translation
  docs/zh_CN: add infiniband opa_vnic translation
  docs/zh_CN: add infiniband sysfs translation
  docs/zh_CN: add infiniband tag_matching translation
  docs/zh_CN: add infiniband user_mad translation
  docs/zh_CN: add infiniband user_verbs translation

 Documentation/translations/zh_CN/index.rst    |   2 +-
 .../zh_CN/infiniband/core_locking.rst         | 115 ++++++++++++
 .../translations/zh_CN/infiniband/index.rst   |  40 +++++
 .../translations/zh_CN/infiniband/ipoib.rst   | 111 ++++++++++++
 .../zh_CN/infiniband/opa_vnic.rst             | 156 +++++++++++++++++
 .../translations/zh_CN/infiniband/sysfs.rst   |  21 +++
 .../zh_CN/infiniband/tag_matching.rst         |  63 +++++++
 .../zh_CN/infiniband/user_mad.rst             | 164 ++++++++++++++++++
 .../zh_CN/infiniband/user_verbs.rst           |  72 ++++++++
 9 files changed, 743 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/infiniband/core_locking.rst
 create mode 100644 Documentation/translations/zh_CN/infiniband/index.rst
 create mode 100644 Documentation/translations/zh_CN/infiniband/ipoib.rst
 create mode 100644 Documentation/translations/zh_CN/infiniband/opa_vnic.rst
 create mode 100644 Documentation/translations/zh_CN/infiniband/sysfs.rst
 create mode 100644 Documentation/translations/zh_CN/infiniband/tag_matching.rst
 create mode 100644 Documentation/translations/zh_CN/infiniband/user_mad.rst
 create mode 100644 Documentation/translations/zh_CN/infiniband/user_verbs.rst

-- 
2.27.0


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 1/8] docs/zh_CN: add infiniband index translation
  2021-08-01 12:25 [PATCH v2 0/8] docs/zh_CN: add infiniband translation Yanteng Si
@ 2021-08-01 12:25 ` Yanteng Si
  2021-08-04  2:26   ` Alex Shi
  2021-08-01 12:25 ` [PATCH v2 2/8] docs/zh_CN: add infiniband core_locking translation Yanteng Si
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 27+ messages in thread
From: Yanteng Si @ 2021-08-01 12:25 UTC (permalink / raw)
  To: corbet, alexs, bobwxc, seakeel
  Cc: Yanteng Si, chenhuacai, jiaxun.yang, linux-doc, realpuyuwang,
	chenweiguang82, siyanteng01

Translate Documentation/infiniband/index.rst into Chinese.

Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
 Documentation/translations/zh_CN/index.rst    |  2 +-
 .../translations/zh_CN/infiniband/index.rst   | 40 +++++++++++++++++++
 2 files changed, 41 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/infiniband/index.rst

diff --git a/Documentation/translations/zh_CN/index.rst b/Documentation/translations/zh_CN/index.rst
index e0d51a167032..84d000245102 100644
--- a/Documentation/translations/zh_CN/index.rst
+++ b/Documentation/translations/zh_CN/index.rst
@@ -102,6 +102,7 @@ TODOList:
    iio/index
    sound/index
    filesystems/index
+   infiniband/index
 
 TODOList:
 
@@ -116,7 +117,6 @@ TODOList:
 * hid/index
 * i2c/index
 * isdn/index
-* infiniband/index
 * leds/index
 * netlabel/index
 * networking/index
diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
new file mode 100644
index 000000000000..ebb1e20b7df4
--- /dev/null
+++ b/Documentation/translations/zh_CN/infiniband/index.rst
@@ -0,0 +1,40 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/infiniband/index.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+:校译:
+
+ 王普宇 Puyu Wang <realpuyuwang@gmail.com>
+ 时奎亮 Alex Shi <alexs@kernel.org>
+
+.. _cn_infiniband_index:
+
+==========
+infiniband
+==========
+
+.. toctree::
+   :maxdepth: 1
+
+TODOLIST:
+
+   core_locking
+   ipoib
+   opa_vnic
+   sysfs
+   tag_matching
+   user_mad
+   user_verbs
+
+.. only::  subproject and html
+
+   Indices
+   =======
+
+   * :ref:`genindex`
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH v2 2/8] docs/zh_CN: add infiniband core_locking translation
  2021-08-01 12:25 [PATCH v2 0/8] docs/zh_CN: add infiniband translation Yanteng Si
  2021-08-01 12:25 ` [PATCH v2 1/8] docs/zh_CN: add infiniband index translation Yanteng Si
@ 2021-08-01 12:25 ` Yanteng Si
  2021-08-04  2:27   ` Alex Shi
  2021-08-06  2:12   ` Puyu Wang
  2021-08-01 12:25 ` [PATCH v2 3/8] docs/zh_CN: add infiniband ipoib translation Yanteng Si
                   ` (5 subsequent siblings)
  7 siblings, 2 replies; 27+ messages in thread
From: Yanteng Si @ 2021-08-01 12:25 UTC (permalink / raw)
  To: corbet, alexs, bobwxc, seakeel
  Cc: Yanteng Si, chenhuacai, jiaxun.yang, linux-doc, realpuyuwang,
	chenweiguang82, siyanteng01

Translate Documentation/infiniband/core_locking.rst into Chinese.

Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
 .../zh_CN/infiniband/core_locking.rst         | 115 ++++++++++++++++++
 .../translations/zh_CN/infiniband/index.rst   |   3 +-
 2 files changed, 117 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/infiniband/core_locking.rst

diff --git a/Documentation/translations/zh_CN/infiniband/core_locking.rst b/Documentation/translations/zh_CN/infiniband/core_locking.rst
new file mode 100644
index 000000000000..42f08038d44b
--- /dev/null
+++ b/Documentation/translations/zh_CN/infiniband/core_locking.rst
@@ -0,0 +1,115 @@
+
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/infiniband/core_locking.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+:校译:
+
+ 王普宇 Puyu Wang <realpuyuwang@gmail.com>
+ 时奎亮 Alex Shi <alexs@kernel.org>
+
+.. _cn_infiniband_core_locking:
+
+==================
+infiniband中间层锁
+==================
+
+  本指南试图明确infiniband中间层的锁假设。它描述了对位于中间层以下的低
+  级驱动程序和使用中间层的上层协议的要求。
+
+睡眠和中断环境
+==============
+
+  除了以下异常情况,ib_device结构体中所有方法的低级驱动实现都可以睡眠。
+  这些异常情况是列表中的任意的方法:
+
+    - create_ah
+    - modify_ah
+    - query_ah
+    - destroy_ah
+    - post_send
+    - post_recv
+    - poll_cq
+    - req_notify_cq
+
+    他们可能不可以睡眠,而且必须可以从任何上下文中调用。
+
+    向上层协议使用者输出的相应函数:
+
+    - rdma_create_ah
+    - rdma_modify_ah
+    - rdma_query_ah
+    - rdma_destroy_ah
+    - ib_post_send
+    - ib_post_recv
+    - ib_req_notify_cq
+
+    因此,在任何情况下都可以安全调用(它们)。
+
+  此外,该函数
+
+    - ib_dispatch_event
+
+  被底层驱动用来通过中间层调度异步事件的“A”,也可以从任何上下文中安全调
+  用。
+
+可重入性
+--------
+
+  由低级驱动程序导出的ib_device结构体中的所有方法必须是完全可重入的。
+  即使使用同一对象的多个函数调用被同时运行,低级驱动程序也需要执行所有
+  必要的同步以保持一致性。
+
+  IB中间层不执行任何函数调用的序列化。
+
+  因为低级驱动程序是可重入的,所以不要求上层协议使用者任何顺序执行。然
+  而,为了得到合理的结果,可能需要一些顺序。例如,一个使用者可以在多个
+  CPU上同时安全地调用ib_poll_cq()。然而,不同的ib_poll_cq()调用之间
+  的工作完成信息的顺序没有被定义。
+
+回调
+----
+
+  低级驱动程序不得直接从与ib_device方法调用相同的调用链中执行回调。例
+  如,低级驱动程序不允许从post_send方法直接调用使用者的完成事件处理程
+  序。相反,低级驱动程序应该推迟这个回调,例如,调度一个tasklet来执行
+  这个回调。
+
+  低层驱动负责确保同一CQ的多个完成事件处理程序不被同时调用。驱动程序必
+  须保证一个给定的CQ的事件处理程序在同一时间只有一个在运行。换句话说,
+  以下情况是不允许的::
+
+          CPU1                                    CPU2
+
+    low-level driver ->
+      consumer CQ event callback:
+        /* ... */
+        ib_req_notify_cq(cq, ...);
+                                          low-level driver ->
+        /* ... */                           consumer CQ event callback:
+                                              /* ... */
+        return from CQ event handler
+
+  完成事件和异步事件回调的运行环境没有被定义。 根据低级别的驱动程序,它可能是
+  进程上下文、softirq上下文或中断上下文。上层协议使用者可能不会在回调中睡眠。
+
+热插拔
+------
+
+  当一个低级驱动程序调用ib_register_device()时,它宣布一个设备已经
+  准备好供使用者使用,所有的初始化必须在这个调用之前完成。设备必须保
+  持可用,直到驱动对ib_unregister_device()的调用返回。
+
+  低级驱动程序必须从进程上下文调用ib_register_device()和
+  ib_unregister_device()。如果使用者在这些调用中回调到驱动程序,它
+  不能持有任何可能导致死锁的semaphores。
+
+  一旦其结构体ib_client的add方法被调用,上层协议使用者就可以开始使用
+  一个IB设备。使用者必须在从移除方法返回之前完成所有的清理工作并释放
+  与设备相关的所有资源。
+
+  使用者被允许在其添加和删除方法中睡眠。
diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
index ebb1e20b7df4..cc00f31c77d0 100644
--- a/Documentation/translations/zh_CN/infiniband/index.rst
+++ b/Documentation/translations/zh_CN/infiniband/index.rst
@@ -22,9 +22,10 @@ infiniband
 .. toctree::
    :maxdepth: 1
 
+   core_locking
+
 TODOLIST:
 
-   core_locking
    ipoib
    opa_vnic
    sysfs
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH v2 3/8] docs/zh_CN: add infiniband ipoib translation
  2021-08-01 12:25 [PATCH v2 0/8] docs/zh_CN: add infiniband translation Yanteng Si
  2021-08-01 12:25 ` [PATCH v2 1/8] docs/zh_CN: add infiniband index translation Yanteng Si
  2021-08-01 12:25 ` [PATCH v2 2/8] docs/zh_CN: add infiniband core_locking translation Yanteng Si
@ 2021-08-01 12:25 ` Yanteng Si
  2021-08-04  2:27   ` Alex Shi
  2021-08-06  2:14   ` Puyu Wang
  2021-08-01 12:25 ` [PATCH v2 4/8] docs/zh_CN: add infiniband opa_vnic translation Yanteng Si
                   ` (4 subsequent siblings)
  7 siblings, 2 replies; 27+ messages in thread
From: Yanteng Si @ 2021-08-01 12:25 UTC (permalink / raw)
  To: corbet, alexs, bobwxc, seakeel
  Cc: Yanteng Si, chenhuacai, jiaxun.yang, linux-doc, realpuyuwang,
	chenweiguang82, siyanteng01

Translate Documentation/infiniband/ipoib.rst into Chinese.

Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
 .../translations/zh_CN/infiniband/index.rst   |   2 +-
 .../translations/zh_CN/infiniband/ipoib.rst   | 111 ++++++++++++++++++
 2 files changed, 112 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/infiniband/ipoib.rst

diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
index cc00f31c77d0..da5e2821f767 100644
--- a/Documentation/translations/zh_CN/infiniband/index.rst
+++ b/Documentation/translations/zh_CN/infiniband/index.rst
@@ -23,10 +23,10 @@ infiniband
    :maxdepth: 1
 
    core_locking
+   ipoib
 
 TODOLIST:
 
-   ipoib
    opa_vnic
    sysfs
    tag_matching
diff --git a/Documentation/translations/zh_CN/infiniband/ipoib.rst b/Documentation/translations/zh_CN/infiniband/ipoib.rst
new file mode 100644
index 000000000000..56517ea5fe9d
--- /dev/null
+++ b/Documentation/translations/zh_CN/infiniband/ipoib.rst
@@ -0,0 +1,111 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/infiniband/ipoib.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+:校译:
+
+ 王普宇 Puyu Wang <realpuyuwang@gmail.com>
+ 时奎亮 Alex Shi <alexs@kernel.org>
+
+.. _cn_infiniband_ipoib:
+
+=========================
+infiniband上的IP(IPoIB)
+=========================
+
+  ib_ipoib驱动是IETF ipoib工作组发布的RFC 4391和4392所规定的
+  infiniband上IP协议的一个实现。它是一个“本地”实现,即把接口类型设置为
+  ARPHRD_INFINIBAND,硬件地址长度为20(早期的专有实现向内核伪装为以太网
+  接口)。
+
+分区和P_Keys
+============
+
+  当IPoIB驱动被加载时,它会使用索引为0的P_Key给每个端口创建一个接口。要用
+  不同的P_Key创建一个接口,将所需的P_Key写入主接口的
+  /sys/class/net/<intf name>/create_child文件里面。比如说::
+
+    echo 0x8001 > /sys/class/net/ib0/create_child
+
+  这将用P_Key 0x8001创建一个名为ib0.8001的接口。要删除一个子接口,使用
+  ``delete_child`` 文件::
+
+    echo 0x8001 > /sys/class/net/ib0/delete_child
+
+  任何接口的P_Key都由“pkey”文件给出,而子接口的主接口在“parent”中。
+
+  子接口的创建/删除也可以使用IPoIB的rtnl_link_ops来完成,使用两种
+  方式创建的子接口的行为是一样的。
+
+数据报与连接模式
+================
+
+  IPoIB驱动支持两种操作模式:数据报和连接。模式是通过接口的
+  /sys/class/net/<intf name>/mode文件设置和读取的。
+
+  在数据报模式下,使用IB UD(不可靠数据报)传输,因此接口MTU等于IB L2 MTU
+  减去IPoIB封装头(4字节)。例如,在一个典型的具有2K MTU的IB结构中,IPoIB
+  MTU将是2048 - 4 = 2044字节。
+
+  在连接模式下,使用IB RC(可靠的连接)传输。连接模式利用IB传输的连接特性,
+  允许MTU达到最大的IP包大小64K,这减少了处理大型UDP数据包、TCP段等所需的
+  IP包数量,提高了大型信息的性能。
+
+  在连接模式下,接口的UD QP仍被用于组播和与不支持连接模式的对等体的通信。
+  在这种情况下,ICMP PMTU数据包的RX仿真被用来使网络堆栈对这些邻居使用较
+  小的UD MTU。
+
+无状态卸载
+==========
+
+  如果IB HW支持IPoIB无状态卸载,IPoIB会向网络堆栈广播TCP/IP校验和/或大量
+  传送(LSO)负载转移能力。
+
+  大量传送(LSO)负载转移也已实现,可以使用ethtool调用打开/关闭。目前,LRO
+  只支持具有校验和卸载能力的设备。
+
+  无状态卸载只在数据报模式下支持。
+
+中断管理
+========
+
+  如果底层IB设备支持CQ事件管理,可以使用ethtool来设置中断缓解参数,从而减少
+  处理中断产生的开销。IPoIB的主要代码路径不使用TX完成信号的事件,所以只支持
+  RX管理。
+
+调试信息
+========
+
+  通过将CONFIG_INFINIBAND_IPOIB_DEBUG设置为“y”来编译IPoIB驱动,跟踪信
+  息被编译到驱动中。通过将模块参数debug_level和mcast_debug_level设置为1来
+  打开它们。这些参数可以在运行时通过/sys/module/ib_ipoib/的文件来控制。
+
+  CONFIG_INFINIBAND_IPOIB_DEBUG也启用debugfs虚拟文件系统中的文件。通过挂
+  载这个文件系统,例如用::
+
+    mount -t debugfs none /sys/kernel/debug
+
+  可以从/sys/kernel/debug/ipoib/ib0_mcg等文件中获得关于多播组的统计数据。
+
+  这个选项对性能的影响可以忽略不计,所以在正常运行时,在debug_level设置为
+  0的情况下启用这个选项是安全的。
+
+  CONFIG_INFINIBAND_IPOIB_DEBUG_DATA当data_debug_level设置为1时,可以
+  在数据路径中启用更多的调试输出。 然而,即使禁用输出,启用这个配置选项也
+  会影响性能,因为它在快速路径中增加了测试。
+
+引用
+====
+
+  在InfiniBand上传输IP(IPoIB)(RFC 4391)。
+    http://ietf.org/rfc/rfc4391.txt
+
+  infiniband上的IP:上的IP架构(RFC 4392)。
+    http://ietf.org/rfc/rfc4392.txt
+
+  infiniband上的IP: 连接模式 (RFC 4755)
+    http://ietf.org/rfc/rfc4755.txt
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH v2 4/8] docs/zh_CN: add infiniband opa_vnic translation
  2021-08-01 12:25 [PATCH v2 0/8] docs/zh_CN: add infiniband translation Yanteng Si
                   ` (2 preceding siblings ...)
  2021-08-01 12:25 ` [PATCH v2 3/8] docs/zh_CN: add infiniband ipoib translation Yanteng Si
@ 2021-08-01 12:25 ` Yanteng Si
  2021-08-04  2:28   ` Alex Shi
  2021-08-06  2:14   ` Puyu Wang
  2021-08-01 12:25 ` [PATCH v2 5/8] docs/zh_CN: add infiniband sysfs translation Yanteng Si
                   ` (3 subsequent siblings)
  7 siblings, 2 replies; 27+ messages in thread
From: Yanteng Si @ 2021-08-01 12:25 UTC (permalink / raw)
  To: corbet, alexs, bobwxc, seakeel
  Cc: Yanteng Si, chenhuacai, jiaxun.yang, linux-doc, realpuyuwang,
	chenweiguang82, siyanteng01

Translate Documentation/infiniband/opa_vnic.rst into Chinese.

Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
 .../translations/zh_CN/infiniband/index.rst   |   2 +-
 .../zh_CN/infiniband/opa_vnic.rst             | 156 ++++++++++++++++++
 2 files changed, 157 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/infiniband/opa_vnic.rst

diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
index da5e2821f767..a933e3c6981d 100644
--- a/Documentation/translations/zh_CN/infiniband/index.rst
+++ b/Documentation/translations/zh_CN/infiniband/index.rst
@@ -24,10 +24,10 @@ infiniband
 
    core_locking
    ipoib
+   opa_vnic
 
 TODOLIST:
 
-   opa_vnic
    sysfs
    tag_matching
    user_mad
diff --git a/Documentation/translations/zh_CN/infiniband/opa_vnic.rst b/Documentation/translations/zh_CN/infiniband/opa_vnic.rst
new file mode 100644
index 000000000000..12b147fbf792
--- /dev/null
+++ b/Documentation/translations/zh_CN/infiniband/opa_vnic.rst
@@ -0,0 +1,156 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/infiniband/opa_vnic.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+:校译:
+
+ 王普宇 Puyu Wang <realpuyuwang@gmail.com>
+ 时奎亮 Alex Shi <alexs@kernel.org>
+
+.. _cn_infiniband_opa_vnic:
+
+=============================================
+英特尔全路径(OPA)虚拟网络接口控制器(VNIC)
+=============================================
+
+英特尔全路径(OPA)虚拟网络接口控制器(VNIC)功能通过封装HFI节点之间的以
+太网数据包,支持Omni-Path结构上的以太网功能。
+
+体系结构
+========
+
+Omni-Path封装的以太网数据包的交换模式涉及Omni-Path结构拓扑上覆盖的一个或
+多个虚拟以太网交换机。Omni-Path结构上的HFI节点的一个子集被允许在特定的虚
+拟以太网交换机上交换封装的以太网数据包。虚拟以太网交换机是通过配置结构上的
+HFI节点实现的逻辑抽象,用于生成和处理报头。在最简单的配置中,整个结构的所有
+HFI节点通过一个虚拟以太网交换机交换封装的以太网数据包。一个虚拟以太网交换机,
+实际上是一个独立的以太网网络。该配置由以太网管理器(EM)执行,它是可信的结
+构管理器(FM)应用程序的一部分。HFI节点可以有多个VNIC,每个连接到不同的虚
+拟以太网交换机。下图介绍了两个虚拟以太网交换机与两个HFI节点的情况::
+
+                               +-------------------+
+                               |      子网/        |
+                               |     以太网        |
+                               |      管理         |
+                               +-------------------+
+                                  /          /
+                                /           /
+                              /            /
+                            /             /
+  +-----------------------------+  +------------------------------+
+  |     虚拟以太网切换          |  |      虚拟以太网切换          |
+  |  +---------+    +---------+ |  | +---------+    +---------+   |
+  |  | VPORT   |    |  VPORT  | |  | |  VPORT  |    |  VPORT  |   |
+  +--+---------+----+---------+-+  +-+---------+----+---------+---+
+           |                 \        /                 |
+           |                   \    /                   |
+           |                     \/                     |
+           |                    /  \                    |
+           |                  /      \                  |
+       +-----------+------------+  +-----------+------------+
+       |   VNIC    |    VNIC    |  |    VNIC   |    VNIC    |
+       +-----------+------------+  +-----------+------------+
+       |          HFI           |  |          HFI           |
+       +------------------------+  +------------------------+
+
+
+Omni-Path封装的以太网数据包格式如下所述。
+
+==================== ================================
+位                   域
+==================== ================================
+Quad Word 0:
+0-19                 SLID (低20位)
+20-30                长度 (以四字为单位)
+31                   BECN 位
+32-51                DLID (低20位)
+52-56                SC (服务级别)
+57-59                RC (路由控制)
+60                   FECN 位
+61-62                L2 (=10, 16B 格式)
+63                   LT (=1, 链路传输头 Flit)
+
+Quad Word 1:
+0-7                  L4 type (=0x78 ETHERNET)
+8-11                 SLID[23:20]
+12-15                DLID[23:20]
+16-31                PKEY
+32-47                熵
+48-63                保留
+
+Quad Word 2:
+0-15                 保留
+16-31                L4 头
+32-63                以太网数据包
+
+Quad Words 3 to N-1:
+0-63                 以太网数据包 (pad拓展)
+
+Quad Word N (last):
+0-23                 以太网数据包 (pad拓展)
+24-55                ICRC
+56-61                尾
+62-63                LT (=01, 链路传输尾 Flit)
+==================== ================================
+
+以太网数据包在传输端被填充,以确保VNIC OPA数据包是四字对齐的。“尾”字段
+包含填充的字节数。在接收端,“尾”字段被读取,在将数据包向上传递到网络堆
+栈之前,填充物被移除(与ICRC、尾和OPA头一起)。
+
+L4头字段包含VNIC端口所属的虚拟以太网交换机ID。在接收端,该字段用于将收
+到的VNIC数据包去多路复用到不同的VNIC端口。
+
+驱动设计
+========
+
+英特尔OPA VNIC的软件设计如下图所示。OPA VNIC功能有一个依赖于硬件的部分
+和一个独立于硬件的部分。
+
+对IB设备分配和释放RDMA netdev设备的支持已经被加入。RDMA netdev支持与
+网络堆栈的对接,从而创建标准的网络接口。OPA_VNIC是一个RDMA netdev设备
+类型。
+
+依赖于HW的VNIC功能是HFI1驱动的一部分。它实现了分配和释放OPA_VNIC RDMA
+netdev的动作。它涉及VNIC功能的HW资源分配/管理。它与网络堆栈接口并实现所
+需的net_device_ops功能。它在传输路径中期待Omni-Path封装的以太网数据包,
+并提供对它们的HW访问。在将数据包向上传递到网络堆栈之前,它把Omni-Path头
+从接收的数据包中剥离。它还实现了RDMA netdev控制操作。
+
+OPA VNIC模块实现了独立于硬件的VNIC功能。它由两部分组成。VNIC以太网管理
+代理(VEMA)作为一个IB客户端向IB核心注册,并与IB MAD栈接口。它与以太网
+管理器(EM)和VNIC netdev交换管理信息。VNIC netdev部分分配和释放OPA_VNIC
+RDMA netdev设备。它在需要时覆盖由依赖HW的VNIC驱动设置的net_device_ops函数,
+以适应任何控制操作。它还处理以太网数据包的封装,在传输路径中使用Omni-Path头。
+对于每个VNIC接口,封装所需的信息是由EM通过VEMA MAD接口配置的。它还通过调用
+RDMA netdev控制操作将任何控制信息传递给依赖于HW的驱动程序::
+
+        +-------------------+ +----------------------+
+        |                   | |       Linux          |
+        |     IB MAD        | |       网络           |
+        |                   | |       栈             |
+        +-------------------+ +----------------------+
+                 |               |          |
+                 |               |          |
+        +----------------------------+      |
+        |                            |      |
+        |      OPA VNIC 模块         |      |
+        |  (OPA VNIC RDMA Netdev     |      |
+        |     & EMA 函数)            |      |
+        |                            |      |
+        +----------------------------+      |
+                    |                       |
+                    |                       |
+           +------------------+             |
+           |     IB 核心      |             |
+           +------------------+             |
+                    |                       |
+                    |                       |
+        +--------------------------------------------+
+        |                                            |
+        |      HFI1 驱动和 VNIC 支持                 |
+        |                                            |
+        +--------------------------------------------+
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH v2 5/8] docs/zh_CN: add infiniband sysfs translation
  2021-08-01 12:25 [PATCH v2 0/8] docs/zh_CN: add infiniband translation Yanteng Si
                   ` (3 preceding siblings ...)
  2021-08-01 12:25 ` [PATCH v2 4/8] docs/zh_CN: add infiniband opa_vnic translation Yanteng Si
@ 2021-08-01 12:25 ` Yanteng Si
  2021-08-04  2:29   ` Alex Shi
  2021-08-06  2:15   ` Puyu Wang
  2021-08-01 12:25 ` [PATCH v2 6/8] docs/zh_CN: add infiniband tag_matching translation Yanteng Si
                   ` (2 subsequent siblings)
  7 siblings, 2 replies; 27+ messages in thread
From: Yanteng Si @ 2021-08-01 12:25 UTC (permalink / raw)
  To: corbet, alexs, bobwxc, seakeel
  Cc: Yanteng Si, chenhuacai, jiaxun.yang, linux-doc, realpuyuwang,
	chenweiguang82, siyanteng01

Translate Documentation/infiniband/sysfs.rst into Chinese.

Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
 .../translations/zh_CN/infiniband/index.rst   |  2 +-
 .../translations/zh_CN/infiniband/sysfs.rst   | 21 +++++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/infiniband/sysfs.rst

diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
index a933e3c6981d..1d208d50b0c2 100644
--- a/Documentation/translations/zh_CN/infiniband/index.rst
+++ b/Documentation/translations/zh_CN/infiniband/index.rst
@@ -25,10 +25,10 @@ infiniband
    core_locking
    ipoib
    opa_vnic
+   sysfs
 
 TODOLIST:
 
-   sysfs
    tag_matching
    user_mad
    user_verbs
diff --git a/Documentation/translations/zh_CN/infiniband/sysfs.rst b/Documentation/translations/zh_CN/infiniband/sysfs.rst
new file mode 100644
index 000000000000..e9a48b0b2ba6
--- /dev/null
+++ b/Documentation/translations/zh_CN/infiniband/sysfs.rst
@@ -0,0 +1,21 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/infiniband/sysfs.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+:校译:
+
+ 王普宇 Puyu Wang <realpuyuwang@gmail.com>
+ 时奎亮 Alex Shi <alexs@kernel.org>
+
+.. _cn_infiniband_sysfs:
+
+=========
+Sysfs文件
+=========
+
+sysfs接口已移至
+Documentation/ABI/stable/sysfs-class-infiniband.
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH v2 6/8] docs/zh_CN: add infiniband tag_matching translation
  2021-08-01 12:25 [PATCH v2 0/8] docs/zh_CN: add infiniband translation Yanteng Si
                   ` (4 preceding siblings ...)
  2021-08-01 12:25 ` [PATCH v2 5/8] docs/zh_CN: add infiniband sysfs translation Yanteng Si
@ 2021-08-01 12:25 ` Yanteng Si
  2021-08-04  2:30   ` Alex Shi
  2021-08-06  2:17   ` Puyu Wang
  2021-08-01 12:25 ` [PATCH v2 7/8] docs/zh_CN: add infiniband user_mad translation Yanteng Si
  2021-08-01 12:25 ` [PATCH v2 8/8] docs/zh_CN: add infiniband user_verbs translation Yanteng Si
  7 siblings, 2 replies; 27+ messages in thread
From: Yanteng Si @ 2021-08-01 12:25 UTC (permalink / raw)
  To: corbet, alexs, bobwxc, seakeel
  Cc: Yanteng Si, chenhuacai, jiaxun.yang, linux-doc, realpuyuwang,
	chenweiguang82, siyanteng01

Translate Documentation/infiniband/tag_matching.rst into Chinese.

Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
 .../translations/zh_CN/infiniband/index.rst   |  2 +-
 .../zh_CN/infiniband/tag_matching.rst         | 63 +++++++++++++++++++
 2 files changed, 64 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/infiniband/tag_matching.rst

diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
index 1d208d50b0c2..c273088b8686 100644
--- a/Documentation/translations/zh_CN/infiniband/index.rst
+++ b/Documentation/translations/zh_CN/infiniband/index.rst
@@ -26,10 +26,10 @@ infiniband
    ipoib
    opa_vnic
    sysfs
+   tag_matching
 
 TODOLIST:
 
-   tag_matching
    user_mad
    user_verbs
 
diff --git a/Documentation/translations/zh_CN/infiniband/tag_matching.rst b/Documentation/translations/zh_CN/infiniband/tag_matching.rst
new file mode 100644
index 000000000000..19b99587b862
--- /dev/null
+++ b/Documentation/translations/zh_CN/infiniband/tag_matching.rst
@@ -0,0 +1,63 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/infiniband/tag_matching.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+:校译:
+
+ 王普宇 Puyu Wang <realpuyuwang@gmail.com>
+ 时奎亮 Alex Shi <alexs@kernel.org>
+
+.. _cn_infiniband_tag_matching:
+
+============
+标签匹配逻辑
+============
+
+MPI标准定义了一套规则,称为标签匹配,用于将源发送操作与目的接收匹配。以下参数必
+须与以下源和目的参数相匹配:
+
+*	沟通者
+*	用户标签--通配符(wild card)可由接收方指定
+*	来源等级--通配符可由接收方指定
+*	目的地等级 – wild
+
+排序规则要求,当一对以上的发送和接收消息信封可能匹配时,包括最早发布-发送和最早
+发布-接收的一对是必须用来满足匹配操作的一对。然而,这并不意味着标签是按照它们被
+创建的顺序消耗的,例如,如果早期的标签不能用来满足匹配规则,那么后来生成的标签
+可能被消耗。
+
+当消息从发送方发送到接收方时,通信库可能试图在相应的匹配接收被发布之后或之前处
+理该操作。如果匹配的接收被发布,这就是一个预期的消息,否则就被称为一个意外的消
+息。实现时经常为这两种不同的匹配实例使用不同的匹配方案。
+
+为了减少MPI库的内存占用,MPI实现通常使用两种不同的协议来实现这一目的:
+
+1.	Eager协议--当发送方处理完发送时,完整的信息就会被发送。在send_cq中会收到
+一个完成发送的通知,通知缓冲区可以被重新使用。
+
+2.	Rendezvous协议--发送方在第一次通知接收方时发送标签匹配头,也许还有一部分
+数据。当相应的缓冲区被发布时,响应者将使用头中的信息,直接向匹配的缓冲区发起
+RDMA读取操作。为了使缓冲区得到重用,需要收到一个fin消息。
+
+标签匹配的实现
+==============
+
+使用的匹配对象有两种类型,即发布的接收列表和意外消息列表。应用程序通过调用发布
+的接收列表中的MPI接收例程发布接收缓冲区,并使用MPI发送例程发布发送消息。发布的
+接收列表的头部可以由硬件来维护,而软件则要对这个列表进行跟踪。
+
+当发送开始并到达接收端时,如果没有为这个到达的消息预先发布接收,它将被传递给软
+件并被放在意外(unexpect)消息列表中。否则,将对该匹配进行处理,包括交会处理,
+如果合适的话,将数据传送到指定的接收缓冲区。这允许接收方MPI标签匹配与计算重叠。
+
+当一个接收信息被发布时,通信库将首先检查软件的意外信息列表,以寻找一个匹配的接
+收信息。如果找到一个匹配的,数据就会被送到用户缓冲区,使用一个软件控制的协议。
+UCX的实现根据数据大小,使用急切或交会协议。如果没有找到匹配,整个预置的接收列
+表由硬件维护,并且有空间在这个列表中增加一个预置的接收,这个接收被传递给硬件。
+软件要对这个列表进行跟踪,以帮助处理MPI取消操作。此外,由于硬件和软件在标签匹
+配操作方面预计不会紧密同步,这个影子列表被用来检测预先发布的接收被传递到硬件的
+情况,因为匹配的意外消息正在从硬件传递到软件。
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH v2 7/8] docs/zh_CN: add infiniband user_mad translation
  2021-08-01 12:25 [PATCH v2 0/8] docs/zh_CN: add infiniband translation Yanteng Si
                   ` (5 preceding siblings ...)
  2021-08-01 12:25 ` [PATCH v2 6/8] docs/zh_CN: add infiniband tag_matching translation Yanteng Si
@ 2021-08-01 12:25 ` Yanteng Si
  2021-08-04  2:30   ` Alex Shi
  2021-08-06  2:18   ` Puyu Wang
  2021-08-01 12:25 ` [PATCH v2 8/8] docs/zh_CN: add infiniband user_verbs translation Yanteng Si
  7 siblings, 2 replies; 27+ messages in thread
From: Yanteng Si @ 2021-08-01 12:25 UTC (permalink / raw)
  To: corbet, alexs, bobwxc, seakeel
  Cc: Yanteng Si, chenhuacai, jiaxun.yang, linux-doc, realpuyuwang,
	chenweiguang82, siyanteng01

Translate Documentation/infiniband/user_mad.rst into Chinese.

Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
 .../translations/zh_CN/infiniband/index.rst   |   2 +-
 .../zh_CN/infiniband/user_mad.rst             | 164 ++++++++++++++++++
 2 files changed, 165 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/translations/zh_CN/infiniband/user_mad.rst

diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
index c273088b8686..55645171a675 100644
--- a/Documentation/translations/zh_CN/infiniband/index.rst
+++ b/Documentation/translations/zh_CN/infiniband/index.rst
@@ -27,10 +27,10 @@ infiniband
    opa_vnic
    sysfs
    tag_matching
+   user_mad
 
 TODOLIST:
 
-   user_mad
    user_verbs
 
 .. only::  subproject and html
diff --git a/Documentation/translations/zh_CN/infiniband/user_mad.rst b/Documentation/translations/zh_CN/infiniband/user_mad.rst
new file mode 100644
index 000000000000..d9ab2edfb559
--- /dev/null
+++ b/Documentation/translations/zh_CN/infiniband/user_mad.rst
@@ -0,0 +1,164 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/infiniband/user_mad.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+:校译:
+
+ 王普宇 Puyu Wang <realpuyuwang@gmail.com>
+ 时奎亮 Alex Shi <alexs@kernel.org>
+
+.. _cn_infiniband_user_mad:
+
+===============
+用户空间MAD访问
+===============
+
+设备文件
+========
+
+  每个InfiniBand设备的每个端口都有一个“umad”设备和一个“issm”设备连接。
+  例如,一个双端口的HCA将有两个umad设备和两个issm设备,而一个交换机将
+  有每个类型的一个设备(对于交换机端口0)。
+
+创建MAD代理
+===========
+
+  一个MAD代理可以通过填写一个结构体ib_user_mad_reg_req来创建,然后在
+  适当的设备文件的文件描述符上调用IB_USER_MAD_REGISTER_AGENT ioctl。
+  如果注册请求成功,结构体中会返回一个32位的ID。比如说::
+
+	struct ib_user_mad_reg_req req = { /* ... */ };
+	ret = ioctl(fd, IB_USER_MAD_REGISTER_AGENT, (char *) &req);
+        if (!ret)
+		my_agent = req.id;
+	else
+		perror("agent register");
+
+  代理可以通过IB_USER_MAD_UNREGISTER_AGENT ioctl取消注册。另外,所有
+  通过文件描述符注册的代理在描述符关闭时将被取消注册。
+
+  2014
+       现在提供了一个新的注册IOctl,允许在注册时提供额外的字段。这个注册
+       调用的用户隐含了对pkey_index的使用(见下文)。现在提供了一个新的
+       注册IOctl,允许在注册时提供额外的字段。这个注册调用的用户隐含了对
+       pkey_index的使用(见下文)。
+
+接收MADs
+========
+
+  使用read()接收MAD。现在接收端支持RMPP。传给read()的缓冲区必须至少是
+  一个struct ib_user_mad + 256字节。比如说:
+
+  如果传递的缓冲区不足以容纳收到的MAD(RMPP),errno被设置为ENOSPC,需
+  要的缓冲区长度被设置在mad.length中。
+
+  正常MAD(非RMPP)的读取示例::
+
+	struct ib_user_mad *mad;
+	mad = malloc(sizeof *mad + 256);
+	ret = read(fd, mad, sizeof *mad + 256);
+	if (ret != sizeof mad + 256) {
+		perror("read");
+		free(mad);
+	}
+
+  RMPP读取示例::
+
+	struct ib_user_mad *mad;
+	mad = malloc(sizeof *mad + 256);
+	ret = read(fd, mad, sizeof *mad + 256);
+	if (ret == -ENOSPC)) {
+		length = mad.length;
+		free(mad);
+		mad = malloc(sizeof *mad + length);
+		ret = read(fd, mad, sizeof *mad + length);
+	}
+	if (ret < 0) {
+		perror("read");
+		free(mad);
+	}
+
+  除了实际的MAD内容外,其他结构体ib_user_mad字段将被填入收到的MAD的信
+  息。例如,远程LID将在mad.lid中。
+
+  如果发送超时,将产生一个接收,mad.status设置为ETIMEDOUT。否则,当一个
+  MAD被成功接收后,mad.status将是0。
+
+  poll()/select()可以用来等待一个MAD可以被读取。
+
+  poll()/select()可以用来等待,直到可以读取一个MAD。
+
+发送MADs
+========
+
+  MADs是用write()发送的。发送的代理ID应该填入MAD的id字段,目的地LID应该
+  填入lid字段,以此类推。发送端确实支持RMPP,所以可以发送任意长度的MAD。
+  比如说::
+
+	struct ib_user_mad *mad;
+
+	mad = malloc(sizeof *mad + mad_length);
+
+	/* fill in mad->data */
+
+	mad->hdr.id  = my_agent;	/* req.id from agent registration */
+	mad->hdr.lid = my_dest;		/* in network byte order... */
+	/* etc. */
+
+	ret = write(fd, &mad, sizeof *mad + mad_length);
+	if (ret != sizeof *mad + mad_length)
+		perror("write");
+
+交换IDs
+=======
+
+  umad设备的用户可以在发送的MAD中使用交换ID字段的低32位(也就是网络字节顺序中
+  最小有效的一半字段)来匹配请求/响应对。上面的32位是保留给内核使用的,在发送
+  MAD之前会被改写。
+
+P_Key索引处理
+=============
+
+  旧的ib_umad接口不允许为发送的MAD设置P_Key索引,也没有提供获取接收的MAD的
+  P_Key索引的方法。一个带有pkey_index成员的struct ib_user_mad_hdr的新布局已
+  经被定义;然而,为了保持与旧的应用程序的二进制兼容性,除非在文件描述符被用于
+  其他用途之前调用IB_USER_MAD_ENABLE_PKEY或IB_USER_MAD_REGISTER_AGENT2 ioctl
+  之一,否则不会使用这种新布局。
+
+  在2008年9月,IB_USER_MAD_ABI_VERSION将被增加到6,默认使用新的ib_user_mad_hdr
+  结构布局,并且IB_USER_MAD_ENABLE_PKEY ioctl将被删除。
+
+设置IsSM功能位
+==============
+
+  要为一个端口设置IsSM功能位,只需打开相应的issm设备文件。如果IsSM位已经被设置,那
+  么打开调用将阻塞,直到该位被清除(或者如果O_NONBLOCK标志被传递给open(),则立即返
+  回,errno设置为EAGAIN)。当issm文件被关闭时,IsSM位将被清除。在issm文件上不能进
+  行任何读、写或其他操作。
+
+/dev文件
+========
+
+为了用 udev自动创建相应的字符设备文件,一个类似::
+
+    KERNEL=="umad*", NAME="infiniband/%k"
+    KERNEL=="issm*", NAME="infiniband/%k"
+
+  的规则可以被使用。它将创建节点的名字::
+
+    /dev/infiniband/umad0
+    /dev/infiniband/issm0
+
+  为第一个端口,以此类推。与这些设备相关的infiniband设备和端口可以从以下文件中确定::
+
+    /sys/class/infiniband_mad/umad0/ibdev
+    /sys/class/infiniband_mad/umad0/port
+
+  和::
+
+    /sys/class/infiniband_mad/issm0/ibdev
+    /sys/class/infiniband_mad/issm0/port
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH v2 8/8] docs/zh_CN: add infiniband user_verbs translation
  2021-08-01 12:25 [PATCH v2 0/8] docs/zh_CN: add infiniband translation Yanteng Si
                   ` (6 preceding siblings ...)
  2021-08-01 12:25 ` [PATCH v2 7/8] docs/zh_CN: add infiniband user_mad translation Yanteng Si
@ 2021-08-01 12:25 ` Yanteng Si
  2021-08-04  2:35   ` Alex Shi
  2021-08-06  2:29   ` Puyu Wang
  7 siblings, 2 replies; 27+ messages in thread
From: Yanteng Si @ 2021-08-01 12:25 UTC (permalink / raw)
  To: corbet, alexs, bobwxc, seakeel
  Cc: Yanteng Si, chenhuacai, jiaxun.yang, linux-doc, realpuyuwang,
	chenweiguang82, siyanteng01

Translate Documentation/infiniband/user_verbs.rst into Chinese.

Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
---
 .../translations/zh_CN/infiniband/index.rst   |  3 +-
 .../zh_CN/infiniband/user_verbs.rst           | 72 +++++++++++++++++++
 2 files changed, 73 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/translations/zh_CN/infiniband/user_verbs.rst

diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
index 55645171a675..5634cc48379f 100644
--- a/Documentation/translations/zh_CN/infiniband/index.rst
+++ b/Documentation/translations/zh_CN/infiniband/index.rst
@@ -28,10 +28,9 @@ infiniband
    sysfs
    tag_matching
    user_mad
+   user_verbs
 
-TODOLIST:
 
-   user_verbs
 
 .. only::  subproject and html
 
diff --git a/Documentation/translations/zh_CN/infiniband/user_verbs.rst b/Documentation/translations/zh_CN/infiniband/user_verbs.rst
new file mode 100644
index 000000000000..ba5db85ae722
--- /dev/null
+++ b/Documentation/translations/zh_CN/infiniband/user_verbs.rst
@@ -0,0 +1,72 @@
+.. include:: ../disclaimer-zh_CN.rst
+
+:Original: Documentation/infiniband/user_verbs.rst
+
+:翻译:
+
+ 司延腾 Yanteng Si <siyanteng@loongson.cn>
+
+:校译:
+
+ 王普宇 Puyu Wang <realpuyuwang@gmail.com>
+ 时奎亮 Alex Shi <alexs@kernel.org>
+
+.. _cn_infiniband_user_verbs:
+
+=================
+用户空间verbs访问
+=================
+
+  ib_uverbs模块,通过启用CONFIG_INFINIBAND_USER_VERBS构建,使用户空间
+  通过“verbs”直接访问IB硬件,如InfiniBand架构规范第11章所述。
+
+  要使用verbs,需要libibverbs库,可从https://github.com/linux-rdma/rdma-core。
+  libibverbs包含一个独立于设备的API,用于使用ib_uverbs接口。libibverbs
+  还需要为你的InfiniBand硬件提供适当的独立于设备的内核和用户空间驱动。例如,
+  要使用Mellanox HCA,你需要安装ib_mthca内核模块和libmthca用户空间驱动。
+
+用户-内核通信
+=============
+
+  用户空间通过/dev/infiniband/uverbsN字符设备与内核进行慢速路径、资源管理
+  操作的通信。快速路径操作通常是通过直接写入硬件寄存器mmap()到用户空间来完成
+  的,没有系统调用或上下文切换到内核。
+
+  命令是通过在这些设备文件上的write()s发送给内核的。ABI在
+  drivers/infiniband/include/ib_user_verbs.h中定义。需要内核响应的命令的结
+  构包含一个64位字段,用来传递一个指向输出缓冲区的指针。状态作为write()系统调
+  用的返回值被返回到用户空间。
+
+资源管理
+========
+
+  由于所有IB资源的创建和销毁都是通过文件描述符传递的命令完成的,所以内核可以跟
+  踪哪些资源被附加到一个给定的用户空间上下文。ib_uverbs模块维护着idr表,用来在
+  内核指针和不透明的用户空间句柄之间进行转换,这样内核指针就不会暴露给用户空间,
+  而用户空间也无法欺骗内核去跟踪一个假的指针。
+
+  这也允许内核在一个进程退出时进行清理,并防止一个进程触及另一个进程的资源。
+
+内存引脚
+========
+
+  直接的用户空间I/O要求与作为潜在I/O目标的内存区域保持在同一物理地址上。ib_uverbs
+  模块通过get_user_pages()和put_page()调用来管理内存区域的固定和解除固定。它还核
+  算进程的pinned_vm中被固定的内存量,并检查非特权进程是否超过其RLIMIT_MEMLOCK限制。
+
+  被多次固定的页面在每次被固定时都会被计数,所以pinned_vm的值可能会高估一个进程所
+  固定的页面数量。
+
+/dev文件
+========
+
+  要想用udev自动创建适当的字符设备文件,可以采用如下规则::
+
+    KERNEL=="uverbs*", NAME="infiniband/%k"
+
+  可以使用。 这将创建设备节点,名为::
+
+    /dev/infiniband/uverbs0
+
+  等等。由于InfiniBand的用户空间verbs对于非特权进程来说应该是安全的,因此在udev规
+  则中加入适当的MODE或GROUP可能是有用的。
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 1/8] docs/zh_CN: add infiniband index translation
  2021-08-01 12:25 ` [PATCH v2 1/8] docs/zh_CN: add infiniband index translation Yanteng Si
@ 2021-08-04  2:26   ` Alex Shi
  2021-08-06  2:06     ` Puyu Wang
  0 siblings, 1 reply; 27+ messages in thread
From: Alex Shi @ 2021-08-04  2:26 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Huacai Chen, Jiaxun Yang, linux-doc, Puyu Wang, chenweiguang82,
	yanteng si

On Sun, Aug 1, 2021 at 8:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/index.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>

Reviewed-by: Alex Shi <alexs@kernel.org>

> ---
>  Documentation/translations/zh_CN/index.rst    |  2 +-
>  .../translations/zh_CN/infiniband/index.rst   | 40 +++++++++++++++++++
>  2 files changed, 41 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/index.rst
>
> diff --git a/Documentation/translations/zh_CN/index.rst b/Documentation/translations/zh_CN/index.rst
> index e0d51a167032..84d000245102 100644
> --- a/Documentation/translations/zh_CN/index.rst
> +++ b/Documentation/translations/zh_CN/index.rst
> @@ -102,6 +102,7 @@ TODOList:
>     iio/index
>     sound/index
>     filesystems/index
> +   infiniband/index
>
>  TODOList:
>
> @@ -116,7 +117,6 @@ TODOList:
>  * hid/index
>  * i2c/index
>  * isdn/index
> -* infiniband/index
>  * leds/index
>  * netlabel/index
>  * networking/index
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> new file mode 100644
> index 000000000000..ebb1e20b7df4
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -0,0 +1,40 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/index.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_index:
> +
> +==========
> +infiniband
> +==========
> +
> +.. toctree::
> +   :maxdepth: 1
> +
> +TODOLIST:
> +
> +   core_locking
> +   ipoib
> +   opa_vnic
> +   sysfs
> +   tag_matching
> +   user_mad
> +   user_verbs
> +
> +.. only::  subproject and html
> +
> +   Indices
> +   =======
> +
> +   * :ref:`genindex`
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 2/8] docs/zh_CN: add infiniband core_locking translation
  2021-08-01 12:25 ` [PATCH v2 2/8] docs/zh_CN: add infiniband core_locking translation Yanteng Si
@ 2021-08-04  2:27   ` Alex Shi
  2021-08-06  2:12   ` Puyu Wang
  1 sibling, 0 replies; 27+ messages in thread
From: Alex Shi @ 2021-08-04  2:27 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Huacai Chen, Jiaxun Yang, linux-doc, Puyu Wang, chenweiguang82,
	yanteng si

On Sun, Aug 1, 2021 at 8:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/core_locking.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>

Reviewed-by: Alex Shi <alexs@kernel.org>

> ---
>  .../zh_CN/infiniband/core_locking.rst         | 115 ++++++++++++++++++
>  .../translations/zh_CN/infiniband/index.rst   |   3 +-
>  2 files changed, 117 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/core_locking.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/core_locking.rst b/Documentation/translations/zh_CN/infiniband/core_locking.rst
> new file mode 100644
> index 000000000000..42f08038d44b
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/core_locking.rst
> @@ -0,0 +1,115 @@
> +
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/core_locking.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_core_locking:
> +
> +==================
> +infiniband中间层锁
> +==================
> +
> +  本指南试图明确infiniband中间层的锁假设。它描述了对位于中间层以下的低
> +  级驱动程序和使用中间层的上层协议的要求。
> +
> +睡眠和中断环境
> +==============
> +
> +  除了以下异常情况,ib_device结构体中所有方法的低级驱动实现都可以睡眠。
> +  这些异常情况是列表中的任意的方法:
> +
> +    - create_ah
> +    - modify_ah
> +    - query_ah
> +    - destroy_ah
> +    - post_send
> +    - post_recv
> +    - poll_cq
> +    - req_notify_cq
> +
> +    他们可能不可以睡眠,而且必须可以从任何上下文中调用。
> +
> +    向上层协议使用者输出的相应函数:
> +
> +    - rdma_create_ah
> +    - rdma_modify_ah
> +    - rdma_query_ah
> +    - rdma_destroy_ah
> +    - ib_post_send
> +    - ib_post_recv
> +    - ib_req_notify_cq
> +
> +    因此,在任何情况下都可以安全调用(它们)。
> +
> +  此外,该函数
> +
> +    - ib_dispatch_event
> +
> +  被底层驱动用来通过中间层调度异步事件的“A”,也可以从任何上下文中安全调
> +  用。
> +
> +可重入性
> +--------
> +
> +  由低级驱动程序导出的ib_device结构体中的所有方法必须是完全可重入的。
> +  即使使用同一对象的多个函数调用被同时运行,低级驱动程序也需要执行所有
> +  必要的同步以保持一致性。
> +
> +  IB中间层不执行任何函数调用的序列化。
> +
> +  因为低级驱动程序是可重入的,所以不要求上层协议使用者任何顺序执行。然
> +  而,为了得到合理的结果,可能需要一些顺序。例如,一个使用者可以在多个
> +  CPU上同时安全地调用ib_poll_cq()。然而,不同的ib_poll_cq()调用之间
> +  的工作完成信息的顺序没有被定义。
> +
> +回调
> +----
> +
> +  低级驱动程序不得直接从与ib_device方法调用相同的调用链中执行回调。例
> +  如,低级驱动程序不允许从post_send方法直接调用使用者的完成事件处理程
> +  序。相反,低级驱动程序应该推迟这个回调,例如,调度一个tasklet来执行
> +  这个回调。
> +
> +  低层驱动负责确保同一CQ的多个完成事件处理程序不被同时调用。驱动程序必
> +  须保证一个给定的CQ的事件处理程序在同一时间只有一个在运行。换句话说,
> +  以下情况是不允许的::
> +
> +          CPU1                                    CPU2
> +
> +    low-level driver ->
> +      consumer CQ event callback:
> +        /* ... */
> +        ib_req_notify_cq(cq, ...);
> +                                          low-level driver ->
> +        /* ... */                           consumer CQ event callback:
> +                                              /* ... */
> +        return from CQ event handler
> +
> +  完成事件和异步事件回调的运行环境没有被定义。 根据低级别的驱动程序,它可能是
> +  进程上下文、softirq上下文或中断上下文。上层协议使用者可能不会在回调中睡眠。
> +
> +热插拔
> +------
> +
> +  当一个低级驱动程序调用ib_register_device()时,它宣布一个设备已经
> +  准备好供使用者使用,所有的初始化必须在这个调用之前完成。设备必须保
> +  持可用,直到驱动对ib_unregister_device()的调用返回。
> +
> +  低级驱动程序必须从进程上下文调用ib_register_device()和
> +  ib_unregister_device()。如果使用者在这些调用中回调到驱动程序,它
> +  不能持有任何可能导致死锁的semaphores。
> +
> +  一旦其结构体ib_client的add方法被调用,上层协议使用者就可以开始使用
> +  一个IB设备。使用者必须在从移除方法返回之前完成所有的清理工作并释放
> +  与设备相关的所有资源。
> +
> +  使用者被允许在其添加和删除方法中睡眠。
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index ebb1e20b7df4..cc00f31c77d0 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -22,9 +22,10 @@ infiniband
>  .. toctree::
>     :maxdepth: 1
>
> +   core_locking
> +
>  TODOLIST:
>
> -   core_locking
>     ipoib
>     opa_vnic
>     sysfs
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 3/8] docs/zh_CN: add infiniband ipoib translation
  2021-08-01 12:25 ` [PATCH v2 3/8] docs/zh_CN: add infiniband ipoib translation Yanteng Si
@ 2021-08-04  2:27   ` Alex Shi
  2021-08-06  2:14   ` Puyu Wang
  1 sibling, 0 replies; 27+ messages in thread
From: Alex Shi @ 2021-08-04  2:27 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Huacai Chen, Jiaxun Yang, linux-doc, Puyu Wang, chenweiguang82,
	yanteng si

On Sun, Aug 1, 2021 at 8:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/ipoib.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>

Reviewed-by: Alex Shi <alexs@kernel.org>

> ---
>  .../translations/zh_CN/infiniband/index.rst   |   2 +-
>  .../translations/zh_CN/infiniband/ipoib.rst   | 111 ++++++++++++++++++
>  2 files changed, 112 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/ipoib.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index cc00f31c77d0..da5e2821f767 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -23,10 +23,10 @@ infiniband
>     :maxdepth: 1
>
>     core_locking
> +   ipoib
>
>  TODOLIST:
>
> -   ipoib
>     opa_vnic
>     sysfs
>     tag_matching
> diff --git a/Documentation/translations/zh_CN/infiniband/ipoib.rst b/Documentation/translations/zh_CN/infiniband/ipoib.rst
> new file mode 100644
> index 000000000000..56517ea5fe9d
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/ipoib.rst
> @@ -0,0 +1,111 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/ipoib.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_ipoib:
> +
> +=========================
> +infiniband上的IP(IPoIB)
> +=========================
> +
> +  ib_ipoib驱动是IETF ipoib工作组发布的RFC 4391和4392所规定的
> +  infiniband上IP协议的一个实现。它是一个“本地”实现,即把接口类型设置为
> +  ARPHRD_INFINIBAND,硬件地址长度为20(早期的专有实现向内核伪装为以太网
> +  接口)。
> +
> +分区和P_Keys
> +============
> +
> +  当IPoIB驱动被加载时,它会使用索引为0的P_Key给每个端口创建一个接口。要用
> +  不同的P_Key创建一个接口,将所需的P_Key写入主接口的
> +  /sys/class/net/<intf name>/create_child文件里面。比如说::
> +
> +    echo 0x8001 > /sys/class/net/ib0/create_child
> +
> +  这将用P_Key 0x8001创建一个名为ib0.8001的接口。要删除一个子接口,使用
> +  ``delete_child`` 文件::
> +
> +    echo 0x8001 > /sys/class/net/ib0/delete_child
> +
> +  任何接口的P_Key都由“pkey”文件给出,而子接口的主接口在“parent”中。
> +
> +  子接口的创建/删除也可以使用IPoIB的rtnl_link_ops来完成,使用两种
> +  方式创建的子接口的行为是一样的。
> +
> +数据报与连接模式
> +================
> +
> +  IPoIB驱动支持两种操作模式:数据报和连接。模式是通过接口的
> +  /sys/class/net/<intf name>/mode文件设置和读取的。
> +
> +  在数据报模式下,使用IB UD(不可靠数据报)传输,因此接口MTU等于IB L2 MTU
> +  减去IPoIB封装头(4字节)。例如,在一个典型的具有2K MTU的IB结构中,IPoIB
> +  MTU将是2048 - 4 = 2044字节。
> +
> +  在连接模式下,使用IB RC(可靠的连接)传输。连接模式利用IB传输的连接特性,
> +  允许MTU达到最大的IP包大小64K,这减少了处理大型UDP数据包、TCP段等所需的
> +  IP包数量,提高了大型信息的性能。
> +
> +  在连接模式下,接口的UD QP仍被用于组播和与不支持连接模式的对等体的通信。
> +  在这种情况下,ICMP PMTU数据包的RX仿真被用来使网络堆栈对这些邻居使用较
> +  小的UD MTU。
> +
> +无状态卸载
> +==========
> +
> +  如果IB HW支持IPoIB无状态卸载,IPoIB会向网络堆栈广播TCP/IP校验和/或大量
> +  传送(LSO)负载转移能力。
> +
> +  大量传送(LSO)负载转移也已实现,可以使用ethtool调用打开/关闭。目前,LRO
> +  只支持具有校验和卸载能力的设备。
> +
> +  无状态卸载只在数据报模式下支持。
> +
> +中断管理
> +========
> +
> +  如果底层IB设备支持CQ事件管理,可以使用ethtool来设置中断缓解参数,从而减少
> +  处理中断产生的开销。IPoIB的主要代码路径不使用TX完成信号的事件,所以只支持
> +  RX管理。
> +
> +调试信息
> +========
> +
> +  通过将CONFIG_INFINIBAND_IPOIB_DEBUG设置为“y”来编译IPoIB驱动,跟踪信
> +  息被编译到驱动中。通过将模块参数debug_level和mcast_debug_level设置为1来
> +  打开它们。这些参数可以在运行时通过/sys/module/ib_ipoib/的文件来控制。
> +
> +  CONFIG_INFINIBAND_IPOIB_DEBUG也启用debugfs虚拟文件系统中的文件。通过挂
> +  载这个文件系统,例如用::
> +
> +    mount -t debugfs none /sys/kernel/debug
> +
> +  可以从/sys/kernel/debug/ipoib/ib0_mcg等文件中获得关于多播组的统计数据。
> +
> +  这个选项对性能的影响可以忽略不计,所以在正常运行时,在debug_level设置为
> +  0的情况下启用这个选项是安全的。
> +
> +  CONFIG_INFINIBAND_IPOIB_DEBUG_DATA当data_debug_level设置为1时,可以
> +  在数据路径中启用更多的调试输出。 然而,即使禁用输出,启用这个配置选项也
> +  会影响性能,因为它在快速路径中增加了测试。
> +
> +引用
> +====
> +
> +  在InfiniBand上传输IP(IPoIB)(RFC 4391)。
> +    http://ietf.org/rfc/rfc4391.txt
> +
> +  infiniband上的IP:上的IP架构(RFC 4392)。
> +    http://ietf.org/rfc/rfc4392.txt
> +
> +  infiniband上的IP: 连接模式 (RFC 4755)
> +    http://ietf.org/rfc/rfc4755.txt
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 4/8] docs/zh_CN: add infiniband opa_vnic translation
  2021-08-01 12:25 ` [PATCH v2 4/8] docs/zh_CN: add infiniband opa_vnic translation Yanteng Si
@ 2021-08-04  2:28   ` Alex Shi
  2021-08-06  2:14   ` Puyu Wang
  1 sibling, 0 replies; 27+ messages in thread
From: Alex Shi @ 2021-08-04  2:28 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Huacai Chen, Jiaxun Yang, linux-doc, Puyu Wang, chenweiguang82,
	yanteng si

On Sun, Aug 1, 2021 at 8:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/opa_vnic.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>

Reviewed-by: Alex Shi <alexs@kernel.org>

> ---
>  .../translations/zh_CN/infiniband/index.rst   |   2 +-
>  .../zh_CN/infiniband/opa_vnic.rst             | 156 ++++++++++++++++++
>  2 files changed, 157 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/opa_vnic.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index da5e2821f767..a933e3c6981d 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -24,10 +24,10 @@ infiniband
>
>     core_locking
>     ipoib
> +   opa_vnic
>
>  TODOLIST:
>
> -   opa_vnic
>     sysfs
>     tag_matching
>     user_mad
> diff --git a/Documentation/translations/zh_CN/infiniband/opa_vnic.rst b/Documentation/translations/zh_CN/infiniband/opa_vnic.rst
> new file mode 100644
> index 000000000000..12b147fbf792
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/opa_vnic.rst
> @@ -0,0 +1,156 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/opa_vnic.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_opa_vnic:
> +
> +=============================================
> +英特尔全路径(OPA)虚拟网络接口控制器(VNIC)
> +=============================================
> +
> +英特尔全路径(OPA)虚拟网络接口控制器(VNIC)功能通过封装HFI节点之间的以
> +太网数据包,支持Omni-Path结构上的以太网功能。
> +
> +体系结构
> +========
> +
> +Omni-Path封装的以太网数据包的交换模式涉及Omni-Path结构拓扑上覆盖的一个或
> +多个虚拟以太网交换机。Omni-Path结构上的HFI节点的一个子集被允许在特定的虚
> +拟以太网交换机上交换封装的以太网数据包。虚拟以太网交换机是通过配置结构上的
> +HFI节点实现的逻辑抽象,用于生成和处理报头。在最简单的配置中,整个结构的所有
> +HFI节点通过一个虚拟以太网交换机交换封装的以太网数据包。一个虚拟以太网交换机,
> +实际上是一个独立的以太网网络。该配置由以太网管理器(EM)执行,它是可信的结
> +构管理器(FM)应用程序的一部分。HFI节点可以有多个VNIC,每个连接到不同的虚
> +拟以太网交换机。下图介绍了两个虚拟以太网交换机与两个HFI节点的情况::
> +
> +                               +-------------------+
> +                               |      子网/        |
> +                               |     以太网        |
> +                               |      管理         |
> +                               +-------------------+
> +                                  /          /
> +                                /           /
> +                              /            /
> +                            /             /
> +  +-----------------------------+  +------------------------------+
> +  |     虚拟以太网切换          |  |      虚拟以太网切换          |
> +  |  +---------+    +---------+ |  | +---------+    +---------+   |
> +  |  | VPORT   |    |  VPORT  | |  | |  VPORT  |    |  VPORT  |   |
> +  +--+---------+----+---------+-+  +-+---------+----+---------+---+
> +           |                 \        /                 |
> +           |                   \    /                   |
> +           |                     \/                     |
> +           |                    /  \                    |
> +           |                  /      \                  |
> +       +-----------+------------+  +-----------+------------+
> +       |   VNIC    |    VNIC    |  |    VNIC   |    VNIC    |
> +       +-----------+------------+  +-----------+------------+
> +       |          HFI           |  |          HFI           |
> +       +------------------------+  +------------------------+
> +
> +
> +Omni-Path封装的以太网数据包格式如下所述。
> +
> +==================== ================================
> +位                   域
> +==================== ================================
> +Quad Word 0:
> +0-19                 SLID (低20位)
> +20-30                长度 (以四字为单位)
> +31                   BECN 位
> +32-51                DLID (低20位)
> +52-56                SC (服务级别)
> +57-59                RC (路由控制)
> +60                   FECN 位
> +61-62                L2 (=10, 16B 格式)
> +63                   LT (=1, 链路传输头 Flit)
> +
> +Quad Word 1:
> +0-7                  L4 type (=0x78 ETHERNET)
> +8-11                 SLID[23:20]
> +12-15                DLID[23:20]
> +16-31                PKEY
> +32-47                熵
> +48-63                保留
> +
> +Quad Word 2:
> +0-15                 保留
> +16-31                L4 头
> +32-63                以太网数据包
> +
> +Quad Words 3 to N-1:
> +0-63                 以太网数据包 (pad拓展)
> +
> +Quad Word N (last):
> +0-23                 以太网数据包 (pad拓展)
> +24-55                ICRC
> +56-61                尾
> +62-63                LT (=01, 链路传输尾 Flit)
> +==================== ================================
> +
> +以太网数据包在传输端被填充,以确保VNIC OPA数据包是四字对齐的。“尾”字段
> +包含填充的字节数。在接收端,“尾”字段被读取,在将数据包向上传递到网络堆
> +栈之前,填充物被移除(与ICRC、尾和OPA头一起)。
> +
> +L4头字段包含VNIC端口所属的虚拟以太网交换机ID。在接收端,该字段用于将收
> +到的VNIC数据包去多路复用到不同的VNIC端口。
> +
> +驱动设计
> +========
> +
> +英特尔OPA VNIC的软件设计如下图所示。OPA VNIC功能有一个依赖于硬件的部分
> +和一个独立于硬件的部分。
> +
> +对IB设备分配和释放RDMA netdev设备的支持已经被加入。RDMA netdev支持与
> +网络堆栈的对接,从而创建标准的网络接口。OPA_VNIC是一个RDMA netdev设备
> +类型。
> +
> +依赖于HW的VNIC功能是HFI1驱动的一部分。它实现了分配和释放OPA_VNIC RDMA
> +netdev的动作。它涉及VNIC功能的HW资源分配/管理。它与网络堆栈接口并实现所
> +需的net_device_ops功能。它在传输路径中期待Omni-Path封装的以太网数据包,
> +并提供对它们的HW访问。在将数据包向上传递到网络堆栈之前,它把Omni-Path头
> +从接收的数据包中剥离。它还实现了RDMA netdev控制操作。
> +
> +OPA VNIC模块实现了独立于硬件的VNIC功能。它由两部分组成。VNIC以太网管理
> +代理(VEMA)作为一个IB客户端向IB核心注册,并与IB MAD栈接口。它与以太网
> +管理器(EM)和VNIC netdev交换管理信息。VNIC netdev部分分配和释放OPA_VNIC
> +RDMA netdev设备。它在需要时覆盖由依赖HW的VNIC驱动设置的net_device_ops函数,
> +以适应任何控制操作。它还处理以太网数据包的封装,在传输路径中使用Omni-Path头。
> +对于每个VNIC接口,封装所需的信息是由EM通过VEMA MAD接口配置的。它还通过调用
> +RDMA netdev控制操作将任何控制信息传递给依赖于HW的驱动程序::
> +
> +        +-------------------+ +----------------------+
> +        |                   | |       Linux          |
> +        |     IB MAD        | |       网络           |
> +        |                   | |       栈             |
> +        +-------------------+ +----------------------+
> +                 |               |          |
> +                 |               |          |
> +        +----------------------------+      |
> +        |                            |      |
> +        |      OPA VNIC 模块         |      |
> +        |  (OPA VNIC RDMA Netdev     |      |
> +        |     & EMA 函数)            |      |
> +        |                            |      |
> +        +----------------------------+      |
> +                    |                       |
> +                    |                       |
> +           +------------------+             |
> +           |     IB 核心      |             |
> +           +------------------+             |
> +                    |                       |
> +                    |                       |
> +        +--------------------------------------------+
> +        |                                            |
> +        |      HFI1 驱动和 VNIC 支持                 |
> +        |                                            |
> +        +--------------------------------------------+
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 5/8] docs/zh_CN: add infiniband sysfs translation
  2021-08-01 12:25 ` [PATCH v2 5/8] docs/zh_CN: add infiniband sysfs translation Yanteng Si
@ 2021-08-04  2:29   ` Alex Shi
  2021-08-06  2:15   ` Puyu Wang
  1 sibling, 0 replies; 27+ messages in thread
From: Alex Shi @ 2021-08-04  2:29 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Huacai Chen, Jiaxun Yang, linux-doc, Puyu Wang, chenweiguang82,
	yanteng si

On Sun, Aug 1, 2021 at 8:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/sysfs.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>

Reviewed-by: Alex Shi <alexs@kernel.org>

> ---
>  .../translations/zh_CN/infiniband/index.rst   |  2 +-
>  .../translations/zh_CN/infiniband/sysfs.rst   | 21 +++++++++++++++++++
>  2 files changed, 22 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/sysfs.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index a933e3c6981d..1d208d50b0c2 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -25,10 +25,10 @@ infiniband
>     core_locking
>     ipoib
>     opa_vnic
> +   sysfs
>
>  TODOLIST:
>
> -   sysfs
>     tag_matching
>     user_mad
>     user_verbs
> diff --git a/Documentation/translations/zh_CN/infiniband/sysfs.rst b/Documentation/translations/zh_CN/infiniband/sysfs.rst
> new file mode 100644
> index 000000000000..e9a48b0b2ba6
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/sysfs.rst
> @@ -0,0 +1,21 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/sysfs.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_sysfs:
> +
> +=========
> +Sysfs文件
> +=========
> +
> +sysfs接口已移至
> +Documentation/ABI/stable/sysfs-class-infiniband.
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 6/8] docs/zh_CN: add infiniband tag_matching translation
  2021-08-01 12:25 ` [PATCH v2 6/8] docs/zh_CN: add infiniband tag_matching translation Yanteng Si
@ 2021-08-04  2:30   ` Alex Shi
  2021-08-06  2:17   ` Puyu Wang
  1 sibling, 0 replies; 27+ messages in thread
From: Alex Shi @ 2021-08-04  2:30 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Huacai Chen, Jiaxun Yang, linux-doc, Puyu Wang, chenweiguang82,
	yanteng si

On Sun, Aug 1, 2021 at 8:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/tag_matching.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>

Reviewed-by: Alex Shi <alexs@kernel.org>

> ---
>  .../translations/zh_CN/infiniband/index.rst   |  2 +-
>  .../zh_CN/infiniband/tag_matching.rst         | 63 +++++++++++++++++++
>  2 files changed, 64 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/tag_matching.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index 1d208d50b0c2..c273088b8686 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -26,10 +26,10 @@ infiniband
>     ipoib
>     opa_vnic
>     sysfs
> +   tag_matching
>
>  TODOLIST:
>
> -   tag_matching
>     user_mad
>     user_verbs
>
> diff --git a/Documentation/translations/zh_CN/infiniband/tag_matching.rst b/Documentation/translations/zh_CN/infiniband/tag_matching.rst
> new file mode 100644
> index 000000000000..19b99587b862
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/tag_matching.rst
> @@ -0,0 +1,63 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/tag_matching.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_tag_matching:
> +
> +============
> +标签匹配逻辑
> +============
> +
> +MPI标准定义了一套规则,称为标签匹配,用于将源发送操作与目的接收匹配。以下参数必
> +须与以下源和目的参数相匹配:
> +
> +*      沟通者
> +*      用户标签--通配符(wild card)可由接收方指定
> +*      来源等级--通配符可由接收方指定
> +*      目的地等级 – wild
> +
> +排序规则要求,当一对以上的发送和接收消息信封可能匹配时,包括最早发布-发送和最早
> +发布-接收的一对是必须用来满足匹配操作的一对。然而,这并不意味着标签是按照它们被
> +创建的顺序消耗的,例如,如果早期的标签不能用来满足匹配规则,那么后来生成的标签
> +可能被消耗。
> +
> +当消息从发送方发送到接收方时,通信库可能试图在相应的匹配接收被发布之后或之前处
> +理该操作。如果匹配的接收被发布,这就是一个预期的消息,否则就被称为一个意外的消
> +息。实现时经常为这两种不同的匹配实例使用不同的匹配方案。
> +
> +为了减少MPI库的内存占用,MPI实现通常使用两种不同的协议来实现这一目的:
> +
> +1.     Eager协议--当发送方处理完发送时,完整的信息就会被发送。在send_cq中会收到
> +一个完成发送的通知,通知缓冲区可以被重新使用。
> +
> +2.     Rendezvous协议--发送方在第一次通知接收方时发送标签匹配头,也许还有一部分
> +数据。当相应的缓冲区被发布时,响应者将使用头中的信息,直接向匹配的缓冲区发起
> +RDMA读取操作。为了使缓冲区得到重用,需要收到一个fin消息。
> +
> +标签匹配的实现
> +==============
> +
> +使用的匹配对象有两种类型,即发布的接收列表和意外消息列表。应用程序通过调用发布
> +的接收列表中的MPI接收例程发布接收缓冲区,并使用MPI发送例程发布发送消息。发布的
> +接收列表的头部可以由硬件来维护,而软件则要对这个列表进行跟踪。
> +
> +当发送开始并到达接收端时,如果没有为这个到达的消息预先发布接收,它将被传递给软
> +件并被放在意外(unexpect)消息列表中。否则,将对该匹配进行处理,包括交会处理,
> +如果合适的话,将数据传送到指定的接收缓冲区。这允许接收方MPI标签匹配与计算重叠。
> +
> +当一个接收信息被发布时,通信库将首先检查软件的意外信息列表,以寻找一个匹配的接
> +收信息。如果找到一个匹配的,数据就会被送到用户缓冲区,使用一个软件控制的协议。
> +UCX的实现根据数据大小,使用急切或交会协议。如果没有找到匹配,整个预置的接收列
> +表由硬件维护,并且有空间在这个列表中增加一个预置的接收,这个接收被传递给硬件。
> +软件要对这个列表进行跟踪,以帮助处理MPI取消操作。此外,由于硬件和软件在标签匹
> +配操作方面预计不会紧密同步,这个影子列表被用来检测预先发布的接收被传递到硬件的
> +情况,因为匹配的意外消息正在从硬件传递到软件。
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 7/8] docs/zh_CN: add infiniband user_mad translation
  2021-08-01 12:25 ` [PATCH v2 7/8] docs/zh_CN: add infiniband user_mad translation Yanteng Si
@ 2021-08-04  2:30   ` Alex Shi
  2021-08-06  2:18   ` Puyu Wang
  1 sibling, 0 replies; 27+ messages in thread
From: Alex Shi @ 2021-08-04  2:30 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Huacai Chen, Jiaxun Yang, linux-doc, Puyu Wang, chenweiguang82,
	yanteng si

On Sun, Aug 1, 2021 at 8:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/user_mad.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>

Reviewed-by: Alex Shi <alexs@kernel.org>

> ---
>  .../translations/zh_CN/infiniband/index.rst   |   2 +-
>  .../zh_CN/infiniband/user_mad.rst             | 164 ++++++++++++++++++
>  2 files changed, 165 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/user_mad.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index c273088b8686..55645171a675 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -27,10 +27,10 @@ infiniband
>     opa_vnic
>     sysfs
>     tag_matching
> +   user_mad
>
>  TODOLIST:
>
> -   user_mad
>     user_verbs
>
>  .. only::  subproject and html
> diff --git a/Documentation/translations/zh_CN/infiniband/user_mad.rst b/Documentation/translations/zh_CN/infiniband/user_mad.rst
> new file mode 100644
> index 000000000000..d9ab2edfb559
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/user_mad.rst
> @@ -0,0 +1,164 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/user_mad.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_user_mad:
> +
> +===============
> +用户空间MAD访问
> +===============
> +
> +设备文件
> +========
> +
> +  每个InfiniBand设备的每个端口都有一个“umad”设备和一个“issm”设备连接。
> +  例如,一个双端口的HCA将有两个umad设备和两个issm设备,而一个交换机将
> +  有每个类型的一个设备(对于交换机端口0)。
> +
> +创建MAD代理
> +===========
> +
> +  一个MAD代理可以通过填写一个结构体ib_user_mad_reg_req来创建,然后在
> +  适当的设备文件的文件描述符上调用IB_USER_MAD_REGISTER_AGENT ioctl。
> +  如果注册请求成功,结构体中会返回一个32位的ID。比如说::
> +
> +       struct ib_user_mad_reg_req req = { /* ... */ };
> +       ret = ioctl(fd, IB_USER_MAD_REGISTER_AGENT, (char *) &req);
> +        if (!ret)
> +               my_agent = req.id;
> +       else
> +               perror("agent register");
> +
> +  代理可以通过IB_USER_MAD_UNREGISTER_AGENT ioctl取消注册。另外,所有
> +  通过文件描述符注册的代理在描述符关闭时将被取消注册。
> +
> +  2014
> +       现在提供了一个新的注册IOctl,允许在注册时提供额外的字段。这个注册
> +       调用的用户隐含了对pkey_index的使用(见下文)。现在提供了一个新的
> +       注册IOctl,允许在注册时提供额外的字段。这个注册调用的用户隐含了对
> +       pkey_index的使用(见下文)。
> +
> +接收MADs
> +========
> +
> +  使用read()接收MAD。现在接收端支持RMPP。传给read()的缓冲区必须至少是
> +  一个struct ib_user_mad + 256字节。比如说:
> +
> +  如果传递的缓冲区不足以容纳收到的MAD(RMPP),errno被设置为ENOSPC,需
> +  要的缓冲区长度被设置在mad.length中。
> +
> +  正常MAD(非RMPP)的读取示例::
> +
> +       struct ib_user_mad *mad;
> +       mad = malloc(sizeof *mad + 256);
> +       ret = read(fd, mad, sizeof *mad + 256);
> +       if (ret != sizeof mad + 256) {
> +               perror("read");
> +               free(mad);
> +       }
> +
> +  RMPP读取示例::
> +
> +       struct ib_user_mad *mad;
> +       mad = malloc(sizeof *mad + 256);
> +       ret = read(fd, mad, sizeof *mad + 256);
> +       if (ret == -ENOSPC)) {
> +               length = mad.length;
> +               free(mad);
> +               mad = malloc(sizeof *mad + length);
> +               ret = read(fd, mad, sizeof *mad + length);
> +       }
> +       if (ret < 0) {
> +               perror("read");
> +               free(mad);
> +       }
> +
> +  除了实际的MAD内容外,其他结构体ib_user_mad字段将被填入收到的MAD的信
> +  息。例如,远程LID将在mad.lid中。
> +
> +  如果发送超时,将产生一个接收,mad.status设置为ETIMEDOUT。否则,当一个
> +  MAD被成功接收后,mad.status将是0。
> +
> +  poll()/select()可以用来等待一个MAD可以被读取。
> +
> +  poll()/select()可以用来等待,直到可以读取一个MAD。
> +
> +发送MADs
> +========
> +
> +  MADs是用write()发送的。发送的代理ID应该填入MAD的id字段,目的地LID应该
> +  填入lid字段,以此类推。发送端确实支持RMPP,所以可以发送任意长度的MAD。
> +  比如说::
> +
> +       struct ib_user_mad *mad;
> +
> +       mad = malloc(sizeof *mad + mad_length);
> +
> +       /* fill in mad->data */
> +
> +       mad->hdr.id  = my_agent;        /* req.id from agent registration */
> +       mad->hdr.lid = my_dest;         /* in network byte order... */
> +       /* etc. */
> +
> +       ret = write(fd, &mad, sizeof *mad + mad_length);
> +       if (ret != sizeof *mad + mad_length)
> +               perror("write");
> +
> +交换IDs
> +=======
> +
> +  umad设备的用户可以在发送的MAD中使用交换ID字段的低32位(也就是网络字节顺序中
> +  最小有效的一半字段)来匹配请求/响应对。上面的32位是保留给内核使用的,在发送
> +  MAD之前会被改写。
> +
> +P_Key索引处理
> +=============
> +
> +  旧的ib_umad接口不允许为发送的MAD设置P_Key索引,也没有提供获取接收的MAD的
> +  P_Key索引的方法。一个带有pkey_index成员的struct ib_user_mad_hdr的新布局已
> +  经被定义;然而,为了保持与旧的应用程序的二进制兼容性,除非在文件描述符被用于
> +  其他用途之前调用IB_USER_MAD_ENABLE_PKEY或IB_USER_MAD_REGISTER_AGENT2 ioctl
> +  之一,否则不会使用这种新布局。
> +
> +  在2008年9月,IB_USER_MAD_ABI_VERSION将被增加到6,默认使用新的ib_user_mad_hdr
> +  结构布局,并且IB_USER_MAD_ENABLE_PKEY ioctl将被删除。
> +
> +设置IsSM功能位
> +==============
> +
> +  要为一个端口设置IsSM功能位,只需打开相应的issm设备文件。如果IsSM位已经被设置,那
> +  么打开调用将阻塞,直到该位被清除(或者如果O_NONBLOCK标志被传递给open(),则立即返
> +  回,errno设置为EAGAIN)。当issm文件被关闭时,IsSM位将被清除。在issm文件上不能进
> +  行任何读、写或其他操作。
> +
> +/dev文件
> +========
> +
> +为了用 udev自动创建相应的字符设备文件,一个类似::
> +
> +    KERNEL=="umad*", NAME="infiniband/%k"
> +    KERNEL=="issm*", NAME="infiniband/%k"
> +
> +  的规则可以被使用。它将创建节点的名字::
> +
> +    /dev/infiniband/umad0
> +    /dev/infiniband/issm0
> +
> +  为第一个端口,以此类推。与这些设备相关的infiniband设备和端口可以从以下文件中确定::
> +
> +    /sys/class/infiniband_mad/umad0/ibdev
> +    /sys/class/infiniband_mad/umad0/port
> +
> +  和::
> +
> +    /sys/class/infiniband_mad/issm0/ibdev
> +    /sys/class/infiniband_mad/issm0/port
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 8/8] docs/zh_CN: add infiniband user_verbs translation
  2021-08-01 12:25 ` [PATCH v2 8/8] docs/zh_CN: add infiniband user_verbs translation Yanteng Si
@ 2021-08-04  2:35   ` Alex Shi
  2021-08-04  6:38     ` yanteng si
  2021-08-06  2:29   ` Puyu Wang
  1 sibling, 1 reply; 27+ messages in thread
From: Alex Shi @ 2021-08-04  2:35 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Huacai Chen, Jiaxun Yang, linux-doc, Puyu Wang, chenweiguang82,
	yanteng si

On Sun, Aug 1, 2021 at 8:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/user_verbs.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
> ---
>  .../translations/zh_CN/infiniband/index.rst   |  3 +-
>  .../zh_CN/infiniband/user_verbs.rst           | 72 +++++++++++++++++++
>  2 files changed, 73 insertions(+), 2 deletions(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/user_verbs.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index 55645171a675..5634cc48379f 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -28,10 +28,9 @@ infiniband
>     sysfs
>     tag_matching
>     user_mad
> +   user_verbs
>
> -TODOLIST:
>
> -   user_verbs
>
>  .. only::  subproject and html
>
> diff --git a/Documentation/translations/zh_CN/infiniband/user_verbs.rst b/Documentation/translations/zh_CN/infiniband/user_verbs.rst
> new file mode 100644
> index 000000000000..ba5db85ae722
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/user_verbs.rst
> @@ -0,0 +1,72 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/user_verbs.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_user_verbs:
> +
> +=================
> +用户空间verbs访问
> +=================
> +
> +  ib_uverbs模块,通过启用CONFIG_INFINIBAND_USER_VERBS构建,使用户空间
> +  通过“verbs”直接访问IB硬件,如InfiniBand架构规范第11章所述。
> +
> +  要使用verbs,需要libibverbs库,可从https://github.com/linux-rdma/rdma-core。
> +  libibverbs包含一个独立于设备的API,用于使用ib_uverbs接口。libibverbs
> +  还需要为你的InfiniBand硬件提供适当的独立于设备的内核和用户空间驱动。例如,
> +  要使用Mellanox HCA,你需要安装ib_mthca内核模块和libmthca用户空间驱动。
> +
> +用户-内核通信
> +=============
> +
> +  用户空间通过/dev/infiniband/uverbsN字符设备与内核进行慢速路径、资源管理
> +  操作的通信。快速路径操作通常是通过直接写入硬件寄存器mmap()到用户空间来完成
> +  的,没有系统调用或上下文切换到内核。
> +
> +  命令是通过在这些设备文件上的write()s发送给内核的。ABI在
> +  drivers/infiniband/include/ib_user_verbs.h中定义。需要内核响应的命令的结
> +  构包含一个64位字段,用来传递一个指向输出缓冲区的指针。状态作为write()系统调
> +  用的返回值被返回到用户空间。
> +
> +资源管理
> +========
> +
> +  由于所有IB资源的创建和销毁都是通过文件描述符传递的命令完成的,所以内核可以跟
> +  踪哪些资源被附加到一个给定的用户空间上下文。ib_uverbs模块维护着idr表,用来在
> +  内核指针和不透明的用户空间句柄之间进行转换,这样内核指针就不会暴露给用户空间,
> +  而用户空间也无法欺骗内核去跟踪一个假的指针。
> +
> +  这也允许内核在一个进程退出时进行清理,并防止一个进程触及另一个进程的资源。
> +
> +内存引脚

memory pinning, means 内存内容被固定, 不能删除或者释放等, 所以, pinning should be
translated as 固定 as your tranlation in following contexts.

with this change

Reviewed-by: Alex Shi <alexs@kernel.org>

Thanks
Alex

> +========
> +
> +  直接的用户空间I/O要求与作为潜在I/O目标的内存区域保持在同一物理地址上。ib_uverbs
> +  模块通过get_user_pages()和put_page()调用来管理内存区域的固定和解除固定。它还核
> +  算进程的pinned_vm中被固定的内存量,并检查非特权进程是否超过其RLIMIT_MEMLOCK限制。
> +
> +  被多次固定的页面在每次被固定时都会被计数,所以pinned_vm的值可能会高估一个进程所
> +  固定的页面数量。
> +
> +/dev文件
> +========
> +
> +  要想用udev自动创建适当的字符设备文件,可以采用如下规则::
> +
> +    KERNEL=="uverbs*", NAME="infiniband/%k"
> +
> +  可以使用。 这将创建设备节点,名为::
> +
> +    /dev/infiniband/uverbs0
> +
> +  等等。由于InfiniBand的用户空间verbs对于非特权进程来说应该是安全的,因此在udev规
> +  则中加入适当的MODE或GROUP可能是有用的。
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 8/8] docs/zh_CN: add infiniband user_verbs translation
  2021-08-04  2:35   ` Alex Shi
@ 2021-08-04  6:38     ` yanteng si
  0 siblings, 0 replies; 27+ messages in thread
From: yanteng si @ 2021-08-04  6:38 UTC (permalink / raw)
  To: Alex Shi
  Cc: Yanteng Si, Jonathan Corbet, Alex Shi, Wu X.C.,
	Huacai Chen, Jiaxun Yang, linux-doc, Puyu Wang, chenweiguang82

Alex Shi <seakeel@gmail.com> 于2021年8月4日周三 上午10:36写道:
>
> On Sun, Aug 1, 2021 at 8:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
> >
> > Translate Documentation/infiniband/user_verbs.rst into Chinese.
> >
> > Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
> > ---
> >  .../translations/zh_CN/infiniband/index.rst   |  3 +-
> >  .../zh_CN/infiniband/user_verbs.rst           | 72 +++++++++++++++++++
> >  2 files changed, 73 insertions(+), 2 deletions(-)
> >  create mode 100644 Documentation/translations/zh_CN/infiniband/user_verbs.rst
> >
> > diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> > index 55645171a675..5634cc48379f 100644
> > --- a/Documentation/translations/zh_CN/infiniband/index.rst
> > +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> > @@ -28,10 +28,9 @@ infiniband
> >     sysfs
> >     tag_matching
> >     user_mad
> > +   user_verbs
> >
> > -TODOLIST:
> >
> > -   user_verbs
> >
> >  .. only::  subproject and html
> >
> > diff --git a/Documentation/translations/zh_CN/infiniband/user_verbs.rst b/Documentation/translations/zh_CN/infiniband/user_verbs.rst
> > new file mode 100644
> > index 000000000000..ba5db85ae722
> > --- /dev/null
> > +++ b/Documentation/translations/zh_CN/infiniband/user_verbs.rst
> > @@ -0,0 +1,72 @@
> > +.. include:: ../disclaimer-zh_CN.rst
> > +
> > +:Original: Documentation/infiniband/user_verbs.rst
> > +
> > +:翻译:
> > +
> > + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> > +
> > +:校译:
> > +
> > + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> > + 时奎亮 Alex Shi <alexs@kernel.org>
> > +
> > +.. _cn_infiniband_user_verbs:
> > +
> > +=================
> > +用户空间verbs访问
> > +=================
> > +
> > +  ib_uverbs模块,通过启用CONFIG_INFINIBAND_USER_VERBS构建,使用户空间
> > +  通过“verbs”直接访问IB硬件,如InfiniBand架构规范第11章所述。
> > +
> > +  要使用verbs,需要libibverbs库,可从https://github.com/linux-rdma/rdma-core。
> > +  libibverbs包含一个独立于设备的API,用于使用ib_uverbs接口。libibverbs
> > +  还需要为你的InfiniBand硬件提供适当的独立于设备的内核和用户空间驱动。例如,
> > +  要使用Mellanox HCA,你需要安装ib_mthca内核模块和libmthca用户空间驱动。
> > +
> > +用户-内核通信
> > +=============
> > +
> > +  用户空间通过/dev/infiniband/uverbsN字符设备与内核进行慢速路径、资源管理
> > +  操作的通信。快速路径操作通常是通过直接写入硬件寄存器mmap()到用户空间来完成
> > +  的,没有系统调用或上下文切换到内核。
> > +
> > +  命令是通过在这些设备文件上的write()s发送给内核的。ABI在
> > +  drivers/infiniband/include/ib_user_verbs.h中定义。需要内核响应的命令的结
> > +  构包含一个64位字段,用来传递一个指向输出缓冲区的指针。状态作为write()系统调
> > +  用的返回值被返回到用户空间。
> > +
> > +资源管理
> > +========
> > +
> > +  由于所有IB资源的创建和销毁都是通过文件描述符传递的命令完成的,所以内核可以跟
> > +  踪哪些资源被附加到一个给定的用户空间上下文。ib_uverbs模块维护着idr表,用来在
> > +  内核指针和不透明的用户空间句柄之间进行转换,这样内核指针就不会暴露给用户空间,
> > +  而用户空间也无法欺骗内核去跟踪一个假的指针。
> > +
> > +  这也允许内核在一个进程退出时进行清理,并防止一个进程触及另一个进程的资源。
> > +
> > +内存引脚
>
> memory pinning, means 内存内容被固定, 不能删除或者释放等, 所以, pinning should be
> translated as 固定 as your tranlation in following contexts.
>
> with this change
>
> Reviewed-by: Alex Shi <alexs@kernel.org>
>
OK!
Thank you for your review!

Thanks,

Yanteng

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 1/8] docs/zh_CN: add infiniband index translation
  2021-08-04  2:26   ` Alex Shi
@ 2021-08-06  2:06     ` Puyu Wang
  0 siblings, 0 replies; 27+ messages in thread
From: Puyu Wang @ 2021-08-06  2:06 UTC (permalink / raw)
  To: Alex Shi
  Cc: Yanteng Si, Jonathan Corbet, Alex Shi, Wu X.C.,
	Huacai Chen, Jiaxun Yang, linux-doc, chenweiguang82, yanteng si

Reviewed-by: Puyu Wang <realpuyuwang@gmail.com>


On Wed, Aug 4, 2021 at 2:27 AM Alex Shi <seakeel@gmail.com> wrote:
>
> On Sun, Aug 1, 2021 at 8:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
> >
> > Translate Documentation/infiniband/index.rst into Chinese.
> >
> > Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
>
> Reviewed-by: Alex Shi <alexs@kernel.org>
>
> > ---
> >  Documentation/translations/zh_CN/index.rst    |  2 +-
> >  .../translations/zh_CN/infiniband/index.rst   | 40 +++++++++++++++++++
> >  2 files changed, 41 insertions(+), 1 deletion(-)
> >  create mode 100644 Documentation/translations/zh_CN/infiniband/index.rst
> >
> > diff --git a/Documentation/translations/zh_CN/index.rst b/Documentation/translations/zh_CN/index.rst
> > index e0d51a167032..84d000245102 100644
> > --- a/Documentation/translations/zh_CN/index.rst
> > +++ b/Documentation/translations/zh_CN/index.rst
> > @@ -102,6 +102,7 @@ TODOList:
> >     iio/index
> >     sound/index
> >     filesystems/index
> > +   infiniband/index
> >
> >  TODOList:
> >
> > @@ -116,7 +117,6 @@ TODOList:
> >  * hid/index
> >  * i2c/index
> >  * isdn/index
> > -* infiniband/index
> >  * leds/index
> >  * netlabel/index
> >  * networking/index
> > diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> > new file mode 100644
> > index 000000000000..ebb1e20b7df4
> > --- /dev/null
> > +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> > @@ -0,0 +1,40 @@
> > +.. SPDX-License-Identifier: GPL-2.0
> > +
> > +.. include:: ../disclaimer-zh_CN.rst
> > +
> > +:Original: Documentation/infiniband/index.rst
> > +
> > +:翻译:
> > +
> > + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> > +
> > +:校译:
> > +
> > + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> > + 时奎亮 Alex Shi <alexs@kernel.org>
> > +
> > +.. _cn_infiniband_index:
> > +
> > +==========
> > +infiniband
> > +==========
> > +
> > +.. toctree::
> > +   :maxdepth: 1
> > +
> > +TODOLIST:
> > +
> > +   core_locking
> > +   ipoib
> > +   opa_vnic
> > +   sysfs
> > +   tag_matching
> > +   user_mad
> > +   user_verbs
> > +
> > +.. only::  subproject and html
> > +
> > +   Indices
> > +   =======
> > +
> > +   * :ref:`genindex`
> > --
> > 2.27.0
> >

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 2/8] docs/zh_CN: add infiniband core_locking translation
  2021-08-01 12:25 ` [PATCH v2 2/8] docs/zh_CN: add infiniband core_locking translation Yanteng Si
  2021-08-04  2:27   ` Alex Shi
@ 2021-08-06  2:12   ` Puyu Wang
  1 sibling, 0 replies; 27+ messages in thread
From: Puyu Wang @ 2021-08-06  2:12 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Alex Shi, Huacai Chen, Jiaxun Yang, linux-doc, chenweiguang82,
	Yanteng Si

On Sun, Aug 1, 2021 at 12:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/core_locking.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Puyu Wang <realpuyuwang@gmail.com>
> ---
>  .../zh_CN/infiniband/core_locking.rst         | 115 ++++++++++++++++++
>  .../translations/zh_CN/infiniband/index.rst   |   3 +-
>  2 files changed, 117 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/core_locking.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/core_locking.rst b/Documentation/translations/zh_CN/infiniband/core_locking.rst
> new file mode 100644
> index 000000000000..42f08038d44b
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/core_locking.rst
> @@ -0,0 +1,115 @@
> +
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/core_locking.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_core_locking:
> +
> +==================
> +infiniband中间层锁
> +==================
> +
> +  本指南试图明确infiniband中间层的锁假设。它描述了对位于中间层以下的低
> +  级驱动程序和使用中间层的上层协议的要求。
> +
> +睡眠和中断环境
> +==============
> +
> +  除了以下异常情况,ib_device结构体中所有方法的低级驱动实现都可以睡眠。
> +  这些异常情况是列表中的任意的方法:
> +
> +    - create_ah
> +    - modify_ah
> +    - query_ah
> +    - destroy_ah
> +    - post_send
> +    - post_recv
> +    - poll_cq
> +    - req_notify_cq
> +
> +    他们可能不可以睡眠,而且必须可以从任何上下文中调用。
> +
> +    向上层协议使用者输出的相应函数:
> +
> +    - rdma_create_ah
> +    - rdma_modify_ah
> +    - rdma_query_ah
> +    - rdma_destroy_ah
> +    - ib_post_send
> +    - ib_post_recv
> +    - ib_req_notify_cq
> +
> +    因此,在任何情况下都可以安全调用(它们)。
> +
> +  此外,该函数
> +
> +    - ib_dispatch_event
> +
> +  被底层驱动用来通过中间层调度异步事件的“A”,也可以从任何上下文中安全调
> +  用。
> +
> +可重入性
> +--------
> +
> +  由低级驱动程序导出的ib_device结构体中的所有方法必须是完全可重入的。
> +  即使使用同一对象的多个函数调用被同时运行,低级驱动程序也需要执行所有
> +  必要的同步以保持一致性。
> +
> +  IB中间层不执行任何函数调用的序列化。
> +
> +  因为低级驱动程序是可重入的,所以不要求上层协议使用者任何顺序执行。然
> +  而,为了得到合理的结果,可能需要一些顺序。例如,一个使用者可以在多个
> +  CPU上同时安全地调用ib_poll_cq()。然而,不同的ib_poll_cq()调用之间
> +  的工作完成信息的顺序没有被定义。
> +
> +回调
> +----
> +
> +  低级驱动程序不得直接从与ib_device方法调用相同的调用链中执行回调。例
> +  如,低级驱动程序不允许从post_send方法直接调用使用者的完成事件处理程
> +  序。相反,低级驱动程序应该推迟这个回调,例如,调度一个tasklet来执行
> +  这个回调。
> +
> +  低层驱动负责确保同一CQ的多个完成事件处理程序不被同时调用。驱动程序必
> +  须保证一个给定的CQ的事件处理程序在同一时间只有一个在运行。换句话说,
> +  以下情况是不允许的::
> +
> +          CPU1                                    CPU2
> +
> +    low-level driver ->
> +      consumer CQ event callback:
> +        /* ... */
> +        ib_req_notify_cq(cq, ...);
> +                                          low-level driver ->
> +        /* ... */                           consumer CQ event callback:
> +                                              /* ... */
> +        return from CQ event handler
> +
> +  完成事件和异步事件回调的运行环境没有被定义。 根据低级别的驱动程序,它可能是
> +  进程上下文、softirq上下文或中断上下文。上层协议使用者可能不会在回调中睡眠。
> +
> +热插拔
> +------
> +
> +  当一个低级驱动程序调用ib_register_device()时,它宣布一个设备已经
> +  准备好供使用者使用,所有的初始化必须在这个调用之前完成。设备必须保
> +  持可用,直到驱动对ib_unregister_device()的调用返回。
> +
> +  低级驱动程序必须从进程上下文调用ib_register_device()和
> +  ib_unregister_device()。如果使用者在这些调用中回调到驱动程序,它
> +  不能持有任何可能导致死锁的semaphores。
> +
> +  一旦其结构体ib_client的add方法被调用,上层协议使用者就可以开始使用
> +  一个IB设备。使用者必须在从移除方法返回之前完成所有的清理工作并释放
> +  与设备相关的所有资源。
> +
> +  使用者被允许在其添加和删除方法中睡眠。
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index ebb1e20b7df4..cc00f31c77d0 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -22,9 +22,10 @@ infiniband
>  .. toctree::
>     :maxdepth: 1
>
> +   core_locking
> +
>  TODOLIST:
>
> -   core_locking
>     ipoib
>     opa_vnic
>     sysfs
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 3/8] docs/zh_CN: add infiniband ipoib translation
  2021-08-01 12:25 ` [PATCH v2 3/8] docs/zh_CN: add infiniband ipoib translation Yanteng Si
  2021-08-04  2:27   ` Alex Shi
@ 2021-08-06  2:14   ` Puyu Wang
  1 sibling, 0 replies; 27+ messages in thread
From: Puyu Wang @ 2021-08-06  2:14 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Alex Shi, Huacai Chen, Jiaxun Yang, linux-doc, chenweiguang82,
	Yanteng Si

On Sun, Aug 1, 2021 at 12:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/ipoib.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Puyu Wang <realpuyuwang@gmail.com>
> ---
>  .../translations/zh_CN/infiniband/index.rst   |   2 +-
>  .../translations/zh_CN/infiniband/ipoib.rst   | 111 ++++++++++++++++++
>  2 files changed, 112 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/ipoib.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index cc00f31c77d0..da5e2821f767 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -23,10 +23,10 @@ infiniband
>     :maxdepth: 1
>
>     core_locking
> +   ipoib
>
>  TODOLIST:
>
> -   ipoib
>     opa_vnic
>     sysfs
>     tag_matching
> diff --git a/Documentation/translations/zh_CN/infiniband/ipoib.rst b/Documentation/translations/zh_CN/infiniband/ipoib.rst
> new file mode 100644
> index 000000000000..56517ea5fe9d
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/ipoib.rst
> @@ -0,0 +1,111 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/ipoib.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_ipoib:
> +
> +=========================
> +infiniband上的IP(IPoIB)
> +=========================
> +
> +  ib_ipoib驱动是IETF ipoib工作组发布的RFC 4391和4392所规定的
> +  infiniband上IP协议的一个实现。它是一个“本地”实现,即把接口类型设置为
> +  ARPHRD_INFINIBAND,硬件地址长度为20(早期的专有实现向内核伪装为以太网
> +  接口)。
> +
> +分区和P_Keys
> +============
> +
> +  当IPoIB驱动被加载时,它会使用索引为0的P_Key给每个端口创建一个接口。要用
> +  不同的P_Key创建一个接口,将所需的P_Key写入主接口的
> +  /sys/class/net/<intf name>/create_child文件里面。比如说::
> +
> +    echo 0x8001 > /sys/class/net/ib0/create_child
> +
> +  这将用P_Key 0x8001创建一个名为ib0.8001的接口。要删除一个子接口,使用
> +  ``delete_child`` 文件::
> +
> +    echo 0x8001 > /sys/class/net/ib0/delete_child
> +
> +  任何接口的P_Key都由“pkey”文件给出,而子接口的主接口在“parent”中。
> +
> +  子接口的创建/删除也可以使用IPoIB的rtnl_link_ops来完成,使用两种
> +  方式创建的子接口的行为是一样的。
> +
> +数据报与连接模式
> +================
> +
> +  IPoIB驱动支持两种操作模式:数据报和连接。模式是通过接口的
> +  /sys/class/net/<intf name>/mode文件设置和读取的。
> +
> +  在数据报模式下,使用IB UD(不可靠数据报)传输,因此接口MTU等于IB L2 MTU
> +  减去IPoIB封装头(4字节)。例如,在一个典型的具有2K MTU的IB结构中,IPoIB
> +  MTU将是2048 - 4 = 2044字节。
> +
> +  在连接模式下,使用IB RC(可靠的连接)传输。连接模式利用IB传输的连接特性,
> +  允许MTU达到最大的IP包大小64K,这减少了处理大型UDP数据包、TCP段等所需的
> +  IP包数量,提高了大型信息的性能。
> +
> +  在连接模式下,接口的UD QP仍被用于组播和与不支持连接模式的对等体的通信。
> +  在这种情况下,ICMP PMTU数据包的RX仿真被用来使网络堆栈对这些邻居使用较
> +  小的UD MTU。
> +
> +无状态卸载
> +==========
> +
> +  如果IB HW支持IPoIB无状态卸载,IPoIB会向网络堆栈广播TCP/IP校验和/或大量
> +  传送(LSO)负载转移能力。
> +
> +  大量传送(LSO)负载转移也已实现,可以使用ethtool调用打开/关闭。目前,LRO
> +  只支持具有校验和卸载能力的设备。
> +
> +  无状态卸载只在数据报模式下支持。
> +
> +中断管理
> +========
> +
> +  如果底层IB设备支持CQ事件管理,可以使用ethtool来设置中断缓解参数,从而减少
> +  处理中断产生的开销。IPoIB的主要代码路径不使用TX完成信号的事件,所以只支持
> +  RX管理。
> +
> +调试信息
> +========
> +
> +  通过将CONFIG_INFINIBAND_IPOIB_DEBUG设置为“y”来编译IPoIB驱动,跟踪信
> +  息被编译到驱动中。通过将模块参数debug_level和mcast_debug_level设置为1来
> +  打开它们。这些参数可以在运行时通过/sys/module/ib_ipoib/的文件来控制。
> +
> +  CONFIG_INFINIBAND_IPOIB_DEBUG也启用debugfs虚拟文件系统中的文件。通过挂
> +  载这个文件系统,例如用::
> +
> +    mount -t debugfs none /sys/kernel/debug
> +
> +  可以从/sys/kernel/debug/ipoib/ib0_mcg等文件中获得关于多播组的统计数据。
> +
> +  这个选项对性能的影响可以忽略不计,所以在正常运行时,在debug_level设置为
> +  0的情况下启用这个选项是安全的。
> +
> +  CONFIG_INFINIBAND_IPOIB_DEBUG_DATA当data_debug_level设置为1时,可以
> +  在数据路径中启用更多的调试输出。 然而,即使禁用输出,启用这个配置选项也
> +  会影响性能,因为它在快速路径中增加了测试。
> +
> +引用
> +====
> +
> +  在InfiniBand上传输IP(IPoIB)(RFC 4391)。
> +    http://ietf.org/rfc/rfc4391.txt
> +
> +  infiniband上的IP:上的IP架构(RFC 4392)。
> +    http://ietf.org/rfc/rfc4392.txt
> +
> +  infiniband上的IP: 连接模式 (RFC 4755)
> +    http://ietf.org/rfc/rfc4755.txt
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 4/8] docs/zh_CN: add infiniband opa_vnic translation
  2021-08-01 12:25 ` [PATCH v2 4/8] docs/zh_CN: add infiniband opa_vnic translation Yanteng Si
  2021-08-04  2:28   ` Alex Shi
@ 2021-08-06  2:14   ` Puyu Wang
  1 sibling, 0 replies; 27+ messages in thread
From: Puyu Wang @ 2021-08-06  2:14 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Alex Shi, Huacai Chen, Jiaxun Yang, linux-doc, chenweiguang82,
	Yanteng Si

On Sun, Aug 1, 2021 at 12:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/opa_vnic.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Puyu Wang <realpuyuwang@gmail.com>
> ---
>  .../translations/zh_CN/infiniband/index.rst   |   2 +-
>  .../zh_CN/infiniband/opa_vnic.rst             | 156 ++++++++++++++++++
>  2 files changed, 157 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/opa_vnic.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index da5e2821f767..a933e3c6981d 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -24,10 +24,10 @@ infiniband
>
>     core_locking
>     ipoib
> +   opa_vnic
>
>  TODOLIST:
>
> -   opa_vnic
>     sysfs
>     tag_matching
>     user_mad
> diff --git a/Documentation/translations/zh_CN/infiniband/opa_vnic.rst b/Documentation/translations/zh_CN/infiniband/opa_vnic.rst
> new file mode 100644
> index 000000000000..12b147fbf792
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/opa_vnic.rst
> @@ -0,0 +1,156 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/opa_vnic.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_opa_vnic:
> +
> +=============================================
> +英特尔全路径(OPA)虚拟网络接口控制器(VNIC)
> +=============================================
> +
> +英特尔全路径(OPA)虚拟网络接口控制器(VNIC)功能通过封装HFI节点之间的以
> +太网数据包,支持Omni-Path结构上的以太网功能。
> +
> +体系结构
> +========
> +
> +Omni-Path封装的以太网数据包的交换模式涉及Omni-Path结构拓扑上覆盖的一个或
> +多个虚拟以太网交换机。Omni-Path结构上的HFI节点的一个子集被允许在特定的虚
> +拟以太网交换机上交换封装的以太网数据包。虚拟以太网交换机是通过配置结构上的
> +HFI节点实现的逻辑抽象,用于生成和处理报头。在最简单的配置中,整个结构的所有
> +HFI节点通过一个虚拟以太网交换机交换封装的以太网数据包。一个虚拟以太网交换机,
> +实际上是一个独立的以太网网络。该配置由以太网管理器(EM)执行,它是可信的结
> +构管理器(FM)应用程序的一部分。HFI节点可以有多个VNIC,每个连接到不同的虚
> +拟以太网交换机。下图介绍了两个虚拟以太网交换机与两个HFI节点的情况::
> +
> +                               +-------------------+
> +                               |      子网/        |
> +                               |     以太网        |
> +                               |      管理         |
> +                               +-------------------+
> +                                  /          /
> +                                /           /
> +                              /            /
> +                            /             /
> +  +-----------------------------+  +------------------------------+
> +  |     虚拟以太网切换          |  |      虚拟以太网切换          |
> +  |  +---------+    +---------+ |  | +---------+    +---------+   |
> +  |  | VPORT   |    |  VPORT  | |  | |  VPORT  |    |  VPORT  |   |
> +  +--+---------+----+---------+-+  +-+---------+----+---------+---+
> +           |                 \        /                 |
> +           |                   \    /                   |
> +           |                     \/                     |
> +           |                    /  \                    |
> +           |                  /      \                  |
> +       +-----------+------------+  +-----------+------------+
> +       |   VNIC    |    VNIC    |  |    VNIC   |    VNIC    |
> +       +-----------+------------+  +-----------+------------+
> +       |          HFI           |  |          HFI           |
> +       +------------------------+  +------------------------+
> +
> +
> +Omni-Path封装的以太网数据包格式如下所述。
> +
> +==================== ================================
> +位                   域
> +==================== ================================
> +Quad Word 0:
> +0-19                 SLID (低20位)
> +20-30                长度 (以四字为单位)
> +31                   BECN 位
> +32-51                DLID (低20位)
> +52-56                SC (服务级别)
> +57-59                RC (路由控制)
> +60                   FECN 位
> +61-62                L2 (=10, 16B 格式)
> +63                   LT (=1, 链路传输头 Flit)
> +
> +Quad Word 1:
> +0-7                  L4 type (=0x78 ETHERNET)
> +8-11                 SLID[23:20]
> +12-15                DLID[23:20]
> +16-31                PKEY
> +32-47                熵
> +48-63                保留
> +
> +Quad Word 2:
> +0-15                 保留
> +16-31                L4 头
> +32-63                以太网数据包
> +
> +Quad Words 3 to N-1:
> +0-63                 以太网数据包 (pad拓展)
> +
> +Quad Word N (last):
> +0-23                 以太网数据包 (pad拓展)
> +24-55                ICRC
> +56-61                尾
> +62-63                LT (=01, 链路传输尾 Flit)
> +==================== ================================
> +
> +以太网数据包在传输端被填充,以确保VNIC OPA数据包是四字对齐的。“尾”字段
> +包含填充的字节数。在接收端,“尾”字段被读取,在将数据包向上传递到网络堆
> +栈之前,填充物被移除(与ICRC、尾和OPA头一起)。
> +
> +L4头字段包含VNIC端口所属的虚拟以太网交换机ID。在接收端,该字段用于将收
> +到的VNIC数据包去多路复用到不同的VNIC端口。
> +
> +驱动设计
> +========
> +
> +英特尔OPA VNIC的软件设计如下图所示。OPA VNIC功能有一个依赖于硬件的部分
> +和一个独立于硬件的部分。
> +
> +对IB设备分配和释放RDMA netdev设备的支持已经被加入。RDMA netdev支持与
> +网络堆栈的对接,从而创建标准的网络接口。OPA_VNIC是一个RDMA netdev设备
> +类型。
> +
> +依赖于HW的VNIC功能是HFI1驱动的一部分。它实现了分配和释放OPA_VNIC RDMA
> +netdev的动作。它涉及VNIC功能的HW资源分配/管理。它与网络堆栈接口并实现所
> +需的net_device_ops功能。它在传输路径中期待Omni-Path封装的以太网数据包,
> +并提供对它们的HW访问。在将数据包向上传递到网络堆栈之前,它把Omni-Path头
> +从接收的数据包中剥离。它还实现了RDMA netdev控制操作。
> +
> +OPA VNIC模块实现了独立于硬件的VNIC功能。它由两部分组成。VNIC以太网管理
> +代理(VEMA)作为一个IB客户端向IB核心注册,并与IB MAD栈接口。它与以太网
> +管理器(EM)和VNIC netdev交换管理信息。VNIC netdev部分分配和释放OPA_VNIC
> +RDMA netdev设备。它在需要时覆盖由依赖HW的VNIC驱动设置的net_device_ops函数,
> +以适应任何控制操作。它还处理以太网数据包的封装,在传输路径中使用Omni-Path头。
> +对于每个VNIC接口,封装所需的信息是由EM通过VEMA MAD接口配置的。它还通过调用
> +RDMA netdev控制操作将任何控制信息传递给依赖于HW的驱动程序::
> +
> +        +-------------------+ +----------------------+
> +        |                   | |       Linux          |
> +        |     IB MAD        | |       网络           |
> +        |                   | |       栈             |
> +        +-------------------+ +----------------------+
> +                 |               |          |
> +                 |               |          |
> +        +----------------------------+      |
> +        |                            |      |
> +        |      OPA VNIC 模块         |      |
> +        |  (OPA VNIC RDMA Netdev     |      |
> +        |     & EMA 函数)            |      |
> +        |                            |      |
> +        +----------------------------+      |
> +                    |                       |
> +                    |                       |
> +           +------------------+             |
> +           |     IB 核心      |             |
> +           +------------------+             |
> +                    |                       |
> +                    |                       |
> +        +--------------------------------------------+
> +        |                                            |
> +        |      HFI1 驱动和 VNIC 支持                 |
> +        |                                            |
> +        +--------------------------------------------+
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 5/8] docs/zh_CN: add infiniband sysfs translation
  2021-08-01 12:25 ` [PATCH v2 5/8] docs/zh_CN: add infiniband sysfs translation Yanteng Si
  2021-08-04  2:29   ` Alex Shi
@ 2021-08-06  2:15   ` Puyu Wang
  1 sibling, 0 replies; 27+ messages in thread
From: Puyu Wang @ 2021-08-06  2:15 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Alex Shi, Huacai Chen, Jiaxun Yang, linux-doc, chenweiguang82,
	Yanteng Si

On Sun, Aug 1, 2021 at 12:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/sysfs.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Puyu Wang <realpuyuwang@gmail.com>
> ---
>  .../translations/zh_CN/infiniband/index.rst   |  2 +-
>  .../translations/zh_CN/infiniband/sysfs.rst   | 21 +++++++++++++++++++
>  2 files changed, 22 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/sysfs.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index a933e3c6981d..1d208d50b0c2 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -25,10 +25,10 @@ infiniband
>     core_locking
>     ipoib
>     opa_vnic
> +   sysfs
>
>  TODOLIST:
>
> -   sysfs
>     tag_matching
>     user_mad
>     user_verbs
> diff --git a/Documentation/translations/zh_CN/infiniband/sysfs.rst b/Documentation/translations/zh_CN/infiniband/sysfs.rst
> new file mode 100644
> index 000000000000..e9a48b0b2ba6
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/sysfs.rst
> @@ -0,0 +1,21 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/sysfs.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_sysfs:
> +
> +=========
> +Sysfs文件
> +=========
> +
> +sysfs接口已移至
> +Documentation/ABI/stable/sysfs-class-infiniband.
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 6/8] docs/zh_CN: add infiniband tag_matching translation
  2021-08-01 12:25 ` [PATCH v2 6/8] docs/zh_CN: add infiniband tag_matching translation Yanteng Si
  2021-08-04  2:30   ` Alex Shi
@ 2021-08-06  2:17   ` Puyu Wang
  1 sibling, 0 replies; 27+ messages in thread
From: Puyu Wang @ 2021-08-06  2:17 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Alex Shi, Huacai Chen, Jiaxun Yang, linux-doc, chenweiguang82,
	Yanteng Si

On Sun, Aug 1, 2021 at 12:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/tag_matching.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Puyu Wang <realpuyuwang@gmail.com>
> ---
>  .../translations/zh_CN/infiniband/index.rst   |  2 +-
>  .../zh_CN/infiniband/tag_matching.rst         | 63 +++++++++++++++++++
>  2 files changed, 64 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/tag_matching.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index 1d208d50b0c2..c273088b8686 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -26,10 +26,10 @@ infiniband
>     ipoib
>     opa_vnic
>     sysfs
> +   tag_matching
>
>  TODOLIST:
>
> -   tag_matching
>     user_mad
>     user_verbs
>
> diff --git a/Documentation/translations/zh_CN/infiniband/tag_matching.rst b/Documentation/translations/zh_CN/infiniband/tag_matching.rst
> new file mode 100644
> index 000000000000..19b99587b862
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/tag_matching.rst
> @@ -0,0 +1,63 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/tag_matching.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_tag_matching:
> +
> +============
> +标签匹配逻辑
> +============
> +
> +MPI标准定义了一套规则,称为标签匹配,用于将源发送操作与目的接收匹配。以下参数必
> +须与以下源和目的参数相匹配:
> +
> +*      沟通者
> +*      用户标签--通配符(wild card)可由接收方指定
> +*      来源等级--通配符可由接收方指定
> +*      目的地等级 – wild
> +
> +排序规则要求,当一对以上的发送和接收消息信封可能匹配时,包括最早发布-发送和最早
> +发布-接收的一对是必须用来满足匹配操作的一对。然而,这并不意味着标签是按照它们被
> +创建的顺序消耗的,例如,如果早期的标签不能用来满足匹配规则,那么后来生成的标签
> +可能被消耗。
> +
> +当消息从发送方发送到接收方时,通信库可能试图在相应的匹配接收被发布之后或之前处
> +理该操作。如果匹配的接收被发布,这就是一个预期的消息,否则就被称为一个意外的消
> +息。实现时经常为这两种不同的匹配实例使用不同的匹配方案。
> +
> +为了减少MPI库的内存占用,MPI实现通常使用两种不同的协议来实现这一目的:
> +
> +1.     Eager协议--当发送方处理完发送时,完整的信息就会被发送。在send_cq中会收到
> +一个完成发送的通知,通知缓冲区可以被重新使用。
> +
> +2.     Rendezvous协议--发送方在第一次通知接收方时发送标签匹配头,也许还有一部分
> +数据。当相应的缓冲区被发布时,响应者将使用头中的信息,直接向匹配的缓冲区发起
> +RDMA读取操作。为了使缓冲区得到重用,需要收到一个fin消息。
> +
> +标签匹配的实现
> +==============
> +
> +使用的匹配对象有两种类型,即发布的接收列表和意外消息列表。应用程序通过调用发布
> +的接收列表中的MPI接收例程发布接收缓冲区,并使用MPI发送例程发布发送消息。发布的
> +接收列表的头部可以由硬件来维护,而软件则要对这个列表进行跟踪。
> +
> +当发送开始并到达接收端时,如果没有为这个到达的消息预先发布接收,它将被传递给软
> +件并被放在意外(unexpect)消息列表中。否则,将对该匹配进行处理,包括交会处理,
> +如果合适的话,将数据传送到指定的接收缓冲区。这允许接收方MPI标签匹配与计算重叠。
> +
> +当一个接收信息被发布时,通信库将首先检查软件的意外信息列表,以寻找一个匹配的接
> +收信息。如果找到一个匹配的,数据就会被送到用户缓冲区,使用一个软件控制的协议。
> +UCX的实现根据数据大小,使用急切或交会协议。如果没有找到匹配,整个预置的接收列
> +表由硬件维护,并且有空间在这个列表中增加一个预置的接收,这个接收被传递给硬件。
> +软件要对这个列表进行跟踪,以帮助处理MPI取消操作。此外,由于硬件和软件在标签匹
> +配操作方面预计不会紧密同步,这个影子列表被用来检测预先发布的接收被传递到硬件的
> +情况,因为匹配的意外消息正在从硬件传递到软件。
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 7/8] docs/zh_CN: add infiniband user_mad translation
  2021-08-01 12:25 ` [PATCH v2 7/8] docs/zh_CN: add infiniband user_mad translation Yanteng Si
  2021-08-04  2:30   ` Alex Shi
@ 2021-08-06  2:18   ` Puyu Wang
  1 sibling, 0 replies; 27+ messages in thread
From: Puyu Wang @ 2021-08-06  2:18 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Alex Shi, Huacai Chen, Jiaxun Yang, linux-doc, chenweiguang82,
	Yanteng Si

On Sun, Aug 1, 2021 at 12:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/user_mad.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Puyu Wang <realpuyuwang@gmail.com>
> ---
>  .../translations/zh_CN/infiniband/index.rst   |   2 +-
>  .../zh_CN/infiniband/user_mad.rst             | 164 ++++++++++++++++++
>  2 files changed, 165 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/user_mad.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index c273088b8686..55645171a675 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -27,10 +27,10 @@ infiniband
>     opa_vnic
>     sysfs
>     tag_matching
> +   user_mad
>
>  TODOLIST:
>
> -   user_mad
>     user_verbs
>
>  .. only::  subproject and html
> diff --git a/Documentation/translations/zh_CN/infiniband/user_mad.rst b/Documentation/translations/zh_CN/infiniband/user_mad.rst
> new file mode 100644
> index 000000000000..d9ab2edfb559
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/user_mad.rst
> @@ -0,0 +1,164 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/user_mad.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_user_mad:
> +
> +===============
> +用户空间MAD访问
> +===============
> +
> +设备文件
> +========
> +
> +  每个InfiniBand设备的每个端口都有一个“umad”设备和一个“issm”设备连接。
> +  例如,一个双端口的HCA将有两个umad设备和两个issm设备,而一个交换机将
> +  有每个类型的一个设备(对于交换机端口0)。
> +
> +创建MAD代理
> +===========
> +
> +  一个MAD代理可以通过填写一个结构体ib_user_mad_reg_req来创建,然后在
> +  适当的设备文件的文件描述符上调用IB_USER_MAD_REGISTER_AGENT ioctl。
> +  如果注册请求成功,结构体中会返回一个32位的ID。比如说::
> +
> +       struct ib_user_mad_reg_req req = { /* ... */ };
> +       ret = ioctl(fd, IB_USER_MAD_REGISTER_AGENT, (char *) &req);
> +        if (!ret)
> +               my_agent = req.id;
> +       else
> +               perror("agent register");
> +
> +  代理可以通过IB_USER_MAD_UNREGISTER_AGENT ioctl取消注册。另外,所有
> +  通过文件描述符注册的代理在描述符关闭时将被取消注册。
> +
> +  2014
> +       现在提供了一个新的注册IOctl,允许在注册时提供额外的字段。这个注册
> +       调用的用户隐含了对pkey_index的使用(见下文)。现在提供了一个新的
> +       注册IOctl,允许在注册时提供额外的字段。这个注册调用的用户隐含了对
> +       pkey_index的使用(见下文)。
> +
> +接收MADs
> +========
> +
> +  使用read()接收MAD。现在接收端支持RMPP。传给read()的缓冲区必须至少是
> +  一个struct ib_user_mad + 256字节。比如说:
> +
> +  如果传递的缓冲区不足以容纳收到的MAD(RMPP),errno被设置为ENOSPC,需
> +  要的缓冲区长度被设置在mad.length中。
> +
> +  正常MAD(非RMPP)的读取示例::
> +
> +       struct ib_user_mad *mad;
> +       mad = malloc(sizeof *mad + 256);
> +       ret = read(fd, mad, sizeof *mad + 256);
> +       if (ret != sizeof mad + 256) {
> +               perror("read");
> +               free(mad);
> +       }
> +
> +  RMPP读取示例::
> +
> +       struct ib_user_mad *mad;
> +       mad = malloc(sizeof *mad + 256);
> +       ret = read(fd, mad, sizeof *mad + 256);
> +       if (ret == -ENOSPC)) {
> +               length = mad.length;
> +               free(mad);
> +               mad = malloc(sizeof *mad + length);
> +               ret = read(fd, mad, sizeof *mad + length);
> +       }
> +       if (ret < 0) {
> +               perror("read");
> +               free(mad);
> +       }
> +
> +  除了实际的MAD内容外,其他结构体ib_user_mad字段将被填入收到的MAD的信
> +  息。例如,远程LID将在mad.lid中。
> +
> +  如果发送超时,将产生一个接收,mad.status设置为ETIMEDOUT。否则,当一个
> +  MAD被成功接收后,mad.status将是0。
> +
> +  poll()/select()可以用来等待一个MAD可以被读取。
> +
> +  poll()/select()可以用来等待,直到可以读取一个MAD。
> +
> +发送MADs
> +========
> +
> +  MADs是用write()发送的。发送的代理ID应该填入MAD的id字段,目的地LID应该
> +  填入lid字段,以此类推。发送端确实支持RMPP,所以可以发送任意长度的MAD。
> +  比如说::
> +
> +       struct ib_user_mad *mad;
> +
> +       mad = malloc(sizeof *mad + mad_length);
> +
> +       /* fill in mad->data */
> +
> +       mad->hdr.id  = my_agent;        /* req.id from agent registration */
> +       mad->hdr.lid = my_dest;         /* in network byte order... */
> +       /* etc. */
> +
> +       ret = write(fd, &mad, sizeof *mad + mad_length);
> +       if (ret != sizeof *mad + mad_length)
> +               perror("write");
> +
> +交换IDs
> +=======
> +
> +  umad设备的用户可以在发送的MAD中使用交换ID字段的低32位(也就是网络字节顺序中
> +  最小有效的一半字段)来匹配请求/响应对。上面的32位是保留给内核使用的,在发送
> +  MAD之前会被改写。
> +
> +P_Key索引处理
> +=============
> +
> +  旧的ib_umad接口不允许为发送的MAD设置P_Key索引,也没有提供获取接收的MAD的
> +  P_Key索引的方法。一个带有pkey_index成员的struct ib_user_mad_hdr的新布局已
> +  经被定义;然而,为了保持与旧的应用程序的二进制兼容性,除非在文件描述符被用于
> +  其他用途之前调用IB_USER_MAD_ENABLE_PKEY或IB_USER_MAD_REGISTER_AGENT2 ioctl
> +  之一,否则不会使用这种新布局。
> +
> +  在2008年9月,IB_USER_MAD_ABI_VERSION将被增加到6,默认使用新的ib_user_mad_hdr
> +  结构布局,并且IB_USER_MAD_ENABLE_PKEY ioctl将被删除。
> +
> +设置IsSM功能位
> +==============
> +
> +  要为一个端口设置IsSM功能位,只需打开相应的issm设备文件。如果IsSM位已经被设置,那
> +  么打开调用将阻塞,直到该位被清除(或者如果O_NONBLOCK标志被传递给open(),则立即返
> +  回,errno设置为EAGAIN)。当issm文件被关闭时,IsSM位将被清除。在issm文件上不能进
> +  行任何读、写或其他操作。
> +
> +/dev文件
> +========
> +
> +为了用 udev自动创建相应的字符设备文件,一个类似::
> +
> +    KERNEL=="umad*", NAME="infiniband/%k"
> +    KERNEL=="issm*", NAME="infiniband/%k"
> +
> +  的规则可以被使用。它将创建节点的名字::
> +
> +    /dev/infiniband/umad0
> +    /dev/infiniband/issm0
> +
> +  为第一个端口,以此类推。与这些设备相关的infiniband设备和端口可以从以下文件中确定::
> +
> +    /sys/class/infiniband_mad/umad0/ibdev
> +    /sys/class/infiniband_mad/umad0/port
> +
> +  和::
> +
> +    /sys/class/infiniband_mad/issm0/ibdev
> +    /sys/class/infiniband_mad/issm0/port
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 8/8] docs/zh_CN: add infiniband user_verbs translation
  2021-08-01 12:25 ` [PATCH v2 8/8] docs/zh_CN: add infiniband user_verbs translation Yanteng Si
  2021-08-04  2:35   ` Alex Shi
@ 2021-08-06  2:29   ` Puyu Wang
  2021-08-06  2:45     ` yanteng si
  1 sibling, 1 reply; 27+ messages in thread
From: Puyu Wang @ 2021-08-06  2:29 UTC (permalink / raw)
  To: Yanteng Si
  Cc: Jonathan Corbet, Alex Shi, Wu X.C.,
	Alex Shi, Huacai Chen, Jiaxun Yang, linux-doc, chenweiguang82,
	Yanteng Si

On Sun, Aug 1, 2021 at 12:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
>
> Translate Documentation/infiniband/user_verbs.rst into Chinese.
>
> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
Reviewed-by: Puyu Wang <realpuyuwang@gmail.com>
> ---
>  .../translations/zh_CN/infiniband/index.rst   |  3 +-
>  .../zh_CN/infiniband/user_verbs.rst           | 72 +++++++++++++++++++
>  2 files changed, 73 insertions(+), 2 deletions(-)
>  create mode 100644 Documentation/translations/zh_CN/infiniband/user_verbs.rst
>
> diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> index 55645171a675..5634cc48379f 100644
> --- a/Documentation/translations/zh_CN/infiniband/index.rst
> +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> @@ -28,10 +28,9 @@ infiniband
>     sysfs
>     tag_matching
>     user_mad
> +   user_verbs
>
> -TODOLIST:
>
> -   user_verbs
>
>  .. only::  subproject and html
>
> diff --git a/Documentation/translations/zh_CN/infiniband/user_verbs.rst b/Documentation/translations/zh_CN/infiniband/user_verbs.rst
> new file mode 100644
> index 000000000000..ba5db85ae722
> --- /dev/null
> +++ b/Documentation/translations/zh_CN/infiniband/user_verbs.rst
> @@ -0,0 +1,72 @@
> +.. include:: ../disclaimer-zh_CN.rst
> +
> +:Original: Documentation/infiniband/user_verbs.rst
> +
> +:翻译:
> +
> + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> +
> +:校译:
> +
> + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> + 时奎亮 Alex Shi <alexs@kernel.org>
> +
> +.. _cn_infiniband_user_verbs:
> +
> +=================
> +用户空间verbs访问
> +=================
> +
> +  ib_uverbs模块,通过启用CONFIG_INFINIBAND_USER_VERBS构建,使用户空间
> +  通过“verbs”直接访问IB硬件,如InfiniBand架构规范第11章所述。
> +
> +  要使用verbs,需要libibverbs库,可从https://github.com/linux-rdma/rdma-core。
> +  libibverbs包含一个独立于设备的API,用于使用ib_uverbs接口。libibverbs
> +  还需要为你的InfiniBand硬件提供适当的独立于设备的内核和用户空间驱动。例如,
> +  要使用Mellanox HCA,你需要安装ib_mthca内核模块和libmthca用户空间驱动。
> +
> +用户-内核通信
> +=============
> +
> +  用户空间通过/dev/infiniband/uverbsN字符设备与内核进行慢速路径、资源管理
> +  操作的通信。快速路径操作通常是通过直接写入硬件寄存器mmap()到用户空间来完成
> +  的,没有系统调用或上下文切换到内核。
> +
> +  命令是通过在这些设备文件上的write()s发送给内核的。ABI在
> +  drivers/infiniband/include/ib_user_verbs.h中定义。需要内核响应的命令的结
> +  构包含一个64位字段,用来传递一个指向输出缓冲区的指针。状态作为write()系统调
> +  用的返回值被返回到用户空间。
> +
> +资源管理
> +========
> +
> +  由于所有IB资源的创建和销毁都是通过文件描述符传递的命令完成的,所以内核可以跟
> +  踪哪些资源被附加到一个给定的用户空间上下文。ib_uverbs模块维护着idr表,用来在
I think it should be '跟踪那些被附加到给定用户空间上下文的资源', instead of
‘跟踪哪些资源被附加到一个给定的用户空间上下文’.
> +  内核指针和不透明的用户空间句柄之间进行转换,这样内核指针就不会暴露给用户空间,
> +  而用户空间也无法欺骗内核去跟踪一个假的指针。
> +
> +  这也允许内核在一个进程退出时进行清理,并防止一个进程触及另一个进程的资源。
> +
> +内存引脚
> +========
> +
> +  直接的用户空间I/O要求与作为潜在I/O目标的内存区域保持在同一物理地址上。ib_uverbs
> +  模块通过get_user_pages()和put_page()调用来管理内存区域的固定和解除固定。它还核
> +  算进程的pinned_vm中被固定的内存量,并检查非特权进程是否超过其RLIMIT_MEMLOCK限制。
> +
> +  被多次固定的页面在每次被固定时都会被计数,所以pinned_vm的值可能会高估一个进程所
> +  固定的页面数量。
> +
> +/dev文件
> +========
> +
> +  要想用udev自动创建适当的字符设备文件,可以采用如下规则::
> +
> +    KERNEL=="uverbs*", NAME="infiniband/%k"
> +
> +  可以使用。 这将创建设备节点,名为::
> +
> +    /dev/infiniband/uverbs0
> +
> +  等等。由于InfiniBand的用户空间verbs对于非特权进程来说应该是安全的,因此在udev规
> +  则中加入适当的MODE或GROUP可能是有用的。
> --
> 2.27.0
>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 8/8] docs/zh_CN: add infiniband user_verbs translation
  2021-08-06  2:29   ` Puyu Wang
@ 2021-08-06  2:45     ` yanteng si
  0 siblings, 0 replies; 27+ messages in thread
From: yanteng si @ 2021-08-06  2:45 UTC (permalink / raw)
  To: Puyu Wang
  Cc: Yanteng Si, Jonathan Corbet, Alex Shi, Wu X.C.,
	Alex Shi, Huacai Chen, Jiaxun Yang, linux-doc, chenweiguang82

Puyu Wang <realpuyuwang@gmail.com> 于2021年8月6日周五 上午10:29写道:
>
> On Sun, Aug 1, 2021 at 12:25 PM Yanteng Si <siyanteng@loongson.cn> wrote:
> >
> > Translate Documentation/infiniband/user_verbs.rst into Chinese.
> >
> > Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
> Reviewed-by: Puyu Wang <realpuyuwang@gmail.com>
> > ---
> >  .../translations/zh_CN/infiniband/index.rst   |  3 +-
> >  .../zh_CN/infiniband/user_verbs.rst           | 72 +++++++++++++++++++
> >  2 files changed, 73 insertions(+), 2 deletions(-)
> >  create mode 100644 Documentation/translations/zh_CN/infiniband/user_verbs.rst
> >
> > diff --git a/Documentation/translations/zh_CN/infiniband/index.rst b/Documentation/translations/zh_CN/infiniband/index.rst
> > index 55645171a675..5634cc48379f 100644
> > --- a/Documentation/translations/zh_CN/infiniband/index.rst
> > +++ b/Documentation/translations/zh_CN/infiniband/index.rst
> > @@ -28,10 +28,9 @@ infiniband
> >     sysfs
> >     tag_matching
> >     user_mad
> > +   user_verbs
> >
> > -TODOLIST:
> >
> > -   user_verbs
> >
> >  .. only::  subproject and html
> >
> > diff --git a/Documentation/translations/zh_CN/infiniband/user_verbs.rst b/Documentation/translations/zh_CN/infiniband/user_verbs.rst
> > new file mode 100644
> > index 000000000000..ba5db85ae722
> > --- /dev/null
> > +++ b/Documentation/translations/zh_CN/infiniband/user_verbs.rst
> > @@ -0,0 +1,72 @@
> > +.. include:: ../disclaimer-zh_CN.rst
> > +
> > +:Original: Documentation/infiniband/user_verbs.rst
> > +
> > +:翻译:
> > +
> > + 司延腾 Yanteng Si <siyanteng@loongson.cn>
> > +
> > +:校译:
> > +
> > + 王普宇 Puyu Wang <realpuyuwang@gmail.com>
> > + 时奎亮 Alex Shi <alexs@kernel.org>
> > +
> > +.. _cn_infiniband_user_verbs:
> > +
> > +=================
> > +用户空间verbs访问
> > +=================
> > +
> > +  ib_uverbs模块,通过启用CONFIG_INFINIBAND_USER_VERBS构建,使用户空间
> > +  通过“verbs”直接访问IB硬件,如InfiniBand架构规范第11章所述。
> > +
> > +  要使用verbs,需要libibverbs库,可从https://github.com/linux-rdma/rdma-core。
> > +  libibverbs包含一个独立于设备的API,用于使用ib_uverbs接口。libibverbs
> > +  还需要为你的InfiniBand硬件提供适当的独立于设备的内核和用户空间驱动。例如,
> > +  要使用Mellanox HCA,你需要安装ib_mthca内核模块和libmthca用户空间驱动。
> > +
> > +用户-内核通信
> > +=============
> > +
> > +  用户空间通过/dev/infiniband/uverbsN字符设备与内核进行慢速路径、资源管理
> > +  操作的通信。快速路径操作通常是通过直接写入硬件寄存器mmap()到用户空间来完成
> > +  的,没有系统调用或上下文切换到内核。
> > +
> > +  命令是通过在这些设备文件上的write()s发送给内核的。ABI在
> > +  drivers/infiniband/include/ib_user_verbs.h中定义。需要内核响应的命令的结
> > +  构包含一个64位字段,用来传递一个指向输出缓冲区的指针。状态作为write()系统调
> > +  用的返回值被返回到用户空间。
> > +
> > +资源管理
> > +========
> > +
> > +  由于所有IB资源的创建和销毁都是通过文件描述符传递的命令完成的,所以内核可以跟
> > +  踪哪些资源被附加到一个给定的用户空间上下文。ib_uverbs模块维护着idr表,用来在
> I think it should be '跟踪那些被附加到给定用户空间上下文的资源', instead of
> ‘跟踪哪些资源被附加到一个给定的用户空间上下文’.
ok,I will modify it in next patch version. >_<

Thanks,

Yanteng

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2021-08-06  2:45 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-01 12:25 [PATCH v2 0/8] docs/zh_CN: add infiniband translation Yanteng Si
2021-08-01 12:25 ` [PATCH v2 1/8] docs/zh_CN: add infiniband index translation Yanteng Si
2021-08-04  2:26   ` Alex Shi
2021-08-06  2:06     ` Puyu Wang
2021-08-01 12:25 ` [PATCH v2 2/8] docs/zh_CN: add infiniband core_locking translation Yanteng Si
2021-08-04  2:27   ` Alex Shi
2021-08-06  2:12   ` Puyu Wang
2021-08-01 12:25 ` [PATCH v2 3/8] docs/zh_CN: add infiniband ipoib translation Yanteng Si
2021-08-04  2:27   ` Alex Shi
2021-08-06  2:14   ` Puyu Wang
2021-08-01 12:25 ` [PATCH v2 4/8] docs/zh_CN: add infiniband opa_vnic translation Yanteng Si
2021-08-04  2:28   ` Alex Shi
2021-08-06  2:14   ` Puyu Wang
2021-08-01 12:25 ` [PATCH v2 5/8] docs/zh_CN: add infiniband sysfs translation Yanteng Si
2021-08-04  2:29   ` Alex Shi
2021-08-06  2:15   ` Puyu Wang
2021-08-01 12:25 ` [PATCH v2 6/8] docs/zh_CN: add infiniband tag_matching translation Yanteng Si
2021-08-04  2:30   ` Alex Shi
2021-08-06  2:17   ` Puyu Wang
2021-08-01 12:25 ` [PATCH v2 7/8] docs/zh_CN: add infiniband user_mad translation Yanteng Si
2021-08-04  2:30   ` Alex Shi
2021-08-06  2:18   ` Puyu Wang
2021-08-01 12:25 ` [PATCH v2 8/8] docs/zh_CN: add infiniband user_verbs translation Yanteng Si
2021-08-04  2:35   ` Alex Shi
2021-08-04  6:38     ` yanteng si
2021-08-06  2:29   ` Puyu Wang
2021-08-06  2:45     ` yanteng si

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.