Skip to content

Commit 72a255d

Browse files
author
dpdk-spec-leader
committed
docs(spec): revise dpdk-23-24 spec — 4 patches via user KNI feedback (3->4)
Revision (v0.2) of the dpdk_23_24_upgrade spec set, triggered by user feedback at 2026-06-09 14:50 on KNI handling. Two key corrections: (1) F-Stack 'KNI' truth (lib/Makefile:34 + lib/ff_dpdk_kni.c implementation): - F-Stack's FF_KNI is a ring + virtio_user user-space exception path, NOT dependent on DPDK librte_kni or rte_kni.ko. lib/Makefile:34 says explicitly 'No DPDK KNI support on FreeBSD' / 'Enable KNI, via virtio only, no longer support rte_kni.ko'. grep rte_kni in lib/ff_dpdk_kni.c yields 0 hits. nm libfstack.a yields 0 rte_kni symbols. - Consequence: keep FF_KNI=1; dpdk/ ends up with only igb_uio as the single kernel module (24.11.6 upstream lacks lib/kni and kernel/linux/kni anyway, plus 29c7d58 deletion patch keeps it that way). - v0.1's R-D2 'KNI removed in 24.11 P1 risk' downgraded to N/A. - v0.1's Must-Fix-1 'KNI A/B decision' cancelled. (2) patch-scout v1 missed identification of 29c7d58: Originally reported 'F-Stack local DPDK patches = 3 commits, no omissions, empty differential set' was based on 'diff -rq | head -25' truncated output. Full re-measurement (no head, plus 'git log --diff-filter=D') uncovers a fourth commit: - 29c7d58 (2025-01-10) 'Remove redundant dpdk files' — DELETE 310 files / -43195 lines (KNI subtree + old igb_uio + liquidio + acc200 + nfp + idpf + flow_classify + Windows EAL log + ...). Patch list updated 3 -> 4 across all spec docs. Per plan.md §4.4 + DP-A8, the 4 patches still merge into a single 'port:' commit during M3. Files modified (v0.1 -> v0.2): 00-overview-and-glossary.md (142 -> 143 lines) §5.1 patch table: 3 rows -> 4 rows; added 29c7d58 row at top 01-requirements-spec.md (154 -> 154 lines) §6 R-D2 row rewritten as N/A §7.2 DP-B2 row rewritten as N/A with KNI truth note 02-current-and-target.md (290 -> 358 lines) §2 added '4 patches' framing + scout-missed-identification note §2.4 NEW: full 29c7d58 description + 310 file delete classification §2.5 NEW: 4-patch overview table §2.6 (was §2.4) F-Stack 0-ref new lib note §3.6 KNI status section completely rewritten with three evidence chains (Makefile comment, grep rte_kni 0 hits, libfstack.a nm) 04-port-and-impl.md (490 -> 527 lines) §3.2 M2 step: format-patch list 3 -> 4 (29c7d58 added as 0001) §3.3 M2-AC4 'patches落档' threshold 3 -> 4 §3.4 M2-R2 KNI risk row marked closed (struck through) §M2 commit message template: patch list 3 -> 4 §4 M3 title '3 patch -> 4 patch' §4.2.0 NEW: 29c7d58 re-application step §4.2.5 commit message template rewritten with 4-patch list + KNI clarification §4.3 ACs added M3-AC4 (KNI subtree absent verification) + M3-AC5 (igb_uio subtree present verification) §4.4 risks updated (M3-R2/R3 split for 29c7d58 N/A and rename) §8.2 commit form summary: '3 patch' -> '4 patch' 99-review-report.md (238 -> 392 lines) Bumped to v0.2; added v0.2 revision-record block at top §0 conclusion: PASS still; revisions noted §1 KNI truth + 29c7d58 mis-identification + igb_uio timeline paradox §6.1 Must-Fix-1 cancelled (struck through) §6.2 added Nice-4, Nice-5 Backed up to dpdk-stable-24.11.6/f-stack-lib/test-configs/dpdk-23-24-upgrade/. Total spec lines: 2169 (v0.1) -> 2420 (v0.2; plan.md included as .gitignored local-only artifact at 461 lines). Workspace mandate: 0 direct rm/kill/chmod throughout. Local commit only; no push (per project standing convention).
1 parent d25ba1e commit 72a255d

5 files changed

Lines changed: 311 additions & 60 deletions

File tree

docs/dpdk_23_24_upgrade_spec/zh_cn/00-overview-and-glossary.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,14 @@ F-Stack 是把 FreeBSD 内核协议栈剥离出来跑在 DPDK 用户态的工程
7272

7373
## 5. F-Stack 当前 DPDK 修改清单(实测)
7474

75-
### 5.1 3 个历史 patch 完整覆盖
75+
### 5.1 4 个历史 patch 完整覆盖**user 2026-06-09 14:50 反馈后修订:3→4**
7676

77-
经 dpdk-23-patch-scout 实测:F-Stack 在 `dpdk/` 内的本地修改 = 3 个 commit 完全覆盖(差集空集,无遗漏)。
77+
经 dpdk-23-patch-scout 实测 + user 反馈补识别:F-Stack 在 `dpdk/` 内的本地修改 = 4 个 commit 完全覆盖(patch-scout 第一次报告漏识别 `29c7d5835`,因 `diff -rq | head -25` 截断未捕获 redundant files 删除清单)。
7878

7979
| commit | 时间 | 内容分类 | 文件 | 升级时是否需迁移 |
8080
|---|---|---|---|---|
81-
| `5f3768c63` | 2025-10-31 | igb_uio 内核模块 + FreeBSD 13.1+ 适配 | `dpdk/kernel/linux/{igb_uio/{igb_uio.c, compat.h, Kbuild, Makefile, meson.build}, meson.build}` + `dpdk/lib/eal/freebsd/include/rte_os.h` | **必须重打** — 24.11.6 上游不会自带 igb_uio(DPDK 在 ≥21.05 已移除),且 FreeBSD 13.1+ CPU_AND/CPU_OR 适配是 F-Stack 独有 |
81+
| `29c7d5835` | 2025-01-10 | **Remove redundant dpdk files**(user 反馈后补识别)| 310 文件 / -43195 行(KNI / 旧 igb_uio / liquidio / acc200 / nfp / idpf / flow_classify / Windows EAL log / 等冗余清理)| **必须重打** — 24.11.6 中 KNI / 旧 igb_uio 自动 N/A(上游已无),其他 redundant 按需删除以保持 lean dpdk/ 镜像 |
82+
| `5f3768c63` | 2025-10-31 | igb_uio 内核模块 + FreeBSD 13.1+ 适配 | `dpdk/kernel/linux/{igb_uio/{igb_uio.c, compat.h, Kbuild, Makefile, meson.build}, meson.build}` + `dpdk/lib/eal/freebsd/include/rte_os.h` | **必须重打** — 24.11.6 上游无 igb_uio(DPDK 21.05 移除),且 FreeBSD 13.1+ CPU_AND/CPU_OR 适配是 F-Stack 独有 |
8283
| `62f1c34df` | 2026-01-16 | secondary 进程 restart 死循环 fix | `dpdk/lib/timer/rte_timer.c` + `rte_timer.h`(新增 `rte_timer_meta_init()`)+ `f-stack/lib/ff_dpdk_if.c:910`(调用点)| **必须重打** — lib/timer 在 24.11.6 上游零行变化;F-Stack 独有需求 |
8384
| `92718178b` | 2026-03-18 | secondary 进程调用 eal_bus_cleanup() 守护 | `dpdk/lib/eal/linux/eal.c`(rte_eal_cleanup 内 `eal_bus_cleanup()` 调用前加 `if (rte_eal_process_type() == RTE_PROC_PRIMARY)` 守护)| **必须重打** — 24.11.6 stable 未含等效 fix;上游真正 fix 在 25.07 commit `4bc53f8f0d64`,未 backport 到 24.11.6 |
8485

docs/dpdk_23_24_upgrade_spec/zh_cn/01-requirements-spec.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
| ID | 风险 | 检测 | 缓解 | Owner |
9191
|---|---|---|---|---|
9292
| **R-D1** | rte_eth_dev_info_get / rte_flow_create / rte_eth_rx_queue_setup 等 24.11 ABI break | 编译期 unresolved reference / signature mismatch | diff-comparator 已实测:F-Stack 调用的所有 rte_* API 在 24.11.6 仍存在且位置相同(**0 改名 / 0 废弃**),仅行级签名变化由阶段二修复 | coder |
93-
| **R-D2** | KNI 子系统在 24.11 完全移除(DPDK 22.11+ 已 deprecated)| 24.11.6 `lib/kni/` + `kernel/linux/kni/` 是否存在 + release_24_11.rst 关于 KNI 删除时间表 | 02-current-and-target.md §3.6 实测核实;如已移除则 lib/Makefile FF_KNI 默认值需调整 | dpdk-24-analyzer |
93+
| **R-D2** | ~~KNI 子系统在 24.11 完全移除(DPDK 22.11+ 已 deprecated)~~**N/A**(user 2026-06-09 14:50 反馈后闭环) | F-Stack 的 FF_KNI 是 ring + virtio_user 自实现(lib/Makefile:34 注释 + ff_dpdk_kni.c 0 rte_kni 引用),与 DPDK librte_kni 无关;upstream 23.11.5 / 24.11.6 / F-Stack 当前 dpdk/ 三方 lib/kni 均不存在 | **风险消除**`FF_KNI=1` 维持,dpdk/ 仅含 igb_uio 一个内核模块(详 02 §3.6) | leader |
9494
| **R-D3** | igb_uio 在 24.11 上游已移除 | 实测 `ls dpdk-stable-24.11.6/kernel/linux/igb_uio/` | 不影响升级 — F-Stack 自带 igb_uio (Copyright 2010-2017 Intel),整树替换后 `dpdk/kernel/linux/` 子树由 5f3768c63 重打恢复 | patch-scout 已确认 |
9595
| **R-D4** | secondary process eal_bus_cleanup 行为变化 | 24.11.6 `lib/eal/linux/eal.c``rte_eal_cleanup``eal_bus_cleanup()` 是否仍无条件调用 | dpdk-24-analyzer 已实测:**仍无条件调用**,stable 未合 25.07 真正 fix → `92718178b` patch **必须 rebase 重打** | coder |
9696
| **R-D5** | priv_timer.is_running 在 lib/timer 24.11 上游零变化但 cache_align 宏迁移可能影响 ABI 偏移 | diff-comparator 已实测:lib/timer 文件大小完全一致(27.46/27.61 KB);仅 `__rte_cache_aligned` 宏位置调整(`struct __rte_cache_aligned priv_timer { ... }` 替代 `struct priv_timer { ... } __rte_cache_aligned;`);ABI 偏移**不变** | 阶段二编译验证通过即可(无需源码改动)| coder |
@@ -117,7 +117,7 @@
117117
| DP | 决策内容 | 实测结论 | 闭环依据 |
118118
|---|---|---|---|
119119
| **DP-B1** | `92718178b` patch 是否已被 24.11.6 上游合入 | **未合入** — 24.11.6 stable 内 `eal_bus_cleanup()` 仍是无条件调用;上游真正 fix 在 DPDK 25.07 commit `4bc53f8f0d64` | dpdk-24-analyzer Q3.b |
120-
| **DP-B2** | 24.11.6 KNI 子系统状态 | 待 02-current-and-target.md §3.6 最终核实(如仍存在,FF_KNI=1 维持现状)| dpdk-24-analyzer Q6 |
120+
| **DP-B2** | 24.11.6 KNI 子系统状态 | **N/A** — KNI 真相:F-Stack 早在 `29c7d5835` 已主动从 dpdk/ 删除 KNI;F-Stack ff_dpdk_kni.c 是 ring + virtio_user 自实现不依赖 librte_kni;24.11.6 上游本就无 KNI lib/kernel module;FF_KNI=1 维持 | user 2026-06-09 14:50 反馈 + 02 §3.6 实测 |
121121
| **DP-B3** | igb_uio 在 24.11.6 上游状态 | 上游已无 igb_uio(21.05 移除);F-Stack 自带版本由 `5f3768c63` 重打恢复 | patch-scout Q4.1 + dpdk-24-analyzer Q7 |
122122
| **DP-B4** | argparse / ptr_compress 是否需启用 | **不启用** — F-Stack 0 引用 | diff-comparator Q5 |
123123
| **DP-B5** | meson / gcc 最低版本 | 02 §3.8 实测填充 | dpdk-24-analyzer Q8 |

docs/dpdk_23_24_upgrade_spec/zh_cn/02-current-and-target.md

Lines changed: 73 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818

1919
---
2020

21-
## 2. F-Stack 当前对 DPDK 23.11.5 的本地修改清单(patch-scout 实测)
21+
## 2. F-Stack 当前对 DPDK 23.11.5 的本地修改清单(patch-scout 实测 + 2026-06-09 14:50 user 反馈修正
2222

23-
`diff -rq /data/workspace/dpdk-stable-23.11.5 /data/workspace/f-stack/dpdk/` 实测确认:F-Stack 在 `dpdk/` 内的所有改动 = 已识别的 3 个 commit 完全覆盖(**差集空集**,无遗漏)。
23+
`diff -rq /data/workspace/dpdk-stable-23.11.5 /data/workspace/f-stack/dpdk/` + `git log --diff-filter=D` 实测确认:F-Stack 在 `dpdk/` 内的所有改动 = **4 个 commit** 完全覆盖(patch-scout 第一次报告漏识别 `29c7d5835`,因 `diff -rq | head -25` 截断未捕获 redundant files 删除清单;本节由 user 提示后实测补全)。
2424

2525
### 2.1 5f3768c63 — Sync DPDK's modifies (2025-10-31)
2626

@@ -111,9 +111,49 @@ rte_mp_channel_cleanup() → rte_eal_alarm_cleanup() → ...
111111

112112
**结论**:必须在 24.11.6 树上 rebase 重打 `92718178b`(保留 PRIMARY 守护逻辑,配合 24.11.6 新增的 `rte_service_finalize()` / `eal_lcore_var_cleanup()` 调用顺序)。
113113

114-
### 2.4 F-Stack 不引用的 DPDK 新 lib
114+
### 2.4 29c7d5835 — Remove redundant dpdk files (2025-01-10) **[user 反馈后补识别]**
115115

116-
`lib/argparse/` + `lib/ptr_compress/` 在 F-Stack 0 引用(实测 grep `rte_argparse|rte_ptr_compress|argparse\.h|ptr_compress\.h``f-stack/lib/``f-stack/example/` 下均 0 命中)。**升级零成本**
116+
#### 涉及文件(**310 文件 / 43195 行删除**
117+
118+
`git show 29c7d5835 --stat` 实测;以下按类别归纳:
119+
120+
| 类别 | 删除路径 | 数量 |
121+
|---|---|---|
122+
| **DPDK KNI 子系统**(user 关键关注点) | `dpdk/lib/kni/{meson.build, rte_kni.c, rte_kni.h, rte_kni_common.h, rte_kni_fifo.h, version.map}` + `dpdk/kernel/linux/kni/{Kbuild, compat.h, kni_dev.h, kni_fifo.h, kni_misc.c, kni_net.c, meson.build}` + `dpdk/drivers/net/kni/{meson.build, rte_eth_kni.c}` + `dpdk/lib/port/rte_port_kni.{c,h}` + `dpdk/examples/ip_pipeline/kni.{c,h,cli}` + `dpdk/app/test/test_kni.c` | ~17 文件 |
123+
| **DPDK igb_uio 子系统**(旧版)| `dpdk/kernel/linux/igb_uio/{Kbuild, Makefile, compat.h, igb_uio.c, meson.build}` + `dpdk/kernel/linux/meson.build` | 6 文件 |
124+
| 冗余驱动 acc200 / liquidio / nfp / idpf / ark / bnxt / cnxk / tap-bpf 等 | `dpdk/drivers/{baseband,net,regex}/...` | ~50 文件 |
125+
| 冗余 lib | `dpdk/lib/{flow_classify, eal trace, cryptodev_trace, mempool_trace, ethdev_trace, power_empty_poll, power_intel_uncore}/...` | ~30 文件 |
126+
| 冗余 examples | `dpdk/examples/{flow_classify, server_node_efd, ip_pipeline kni, multi_process hotplug_mp commands.h, bond main.h}` | ~20 文件 |
127+
| 冗余 docs / dts / buildtools | `dpdk/doc/guides/{nics/{kni,liquidio}.rst, prog_guide/{kernel_nic_interface,flow_classify_lib}.rst, bbdevs/acc200.rst, sample_app_ug/flow_classify.rst}` + `dpdk/dts/...` + `dpdk/buildtools/binutils-avx512-check.py` + `dpdk/devtools/...` | ~20 文件 |
128+
| 其他冗余 (Windows EAL log / fnmatch / ...) | 详见 `git show 29c7d5835` ||
129+
130+
> **注意 igb_uio 时间线悖论**`29c7d5835`(2025-01-10)删除了**旧版** igb_uio(5 文件 / -874 行);半年后 `5f3768c63`(2025-10-31)又重新添加**新版** igb_uio(含 kernel 6.x 兼容 + RHEL kernel < 3.18 fallback)以支持 FreeBSD 15.0 升级期的新主机内核。两版不同步、目的不同。
131+
132+
#### 24.11.6 上游状态
133+
134+
| 维度 | 状态 |
135+
|---|---|
136+
| 24.11.6 是否仍含 lib/kni / kernel/linux/kni | **0 个**(DPDK 22.11 deprecated → 23.11 lib/ 移除 → 24.11 完全清理)|
137+
| 24.11.6 是否仍含 drivers/net/kni | 待 patch 重打时实测 |
138+
| 24.11.6 是否仍含 liquidio / acc200 等其他冗余 | 大概率仍存在(DPDK upstream 不主动 prune)|
139+
140+
**结论**:必须在 24.11.6 树上重打 `29c7d5835`**仍然适用**的删除清单。其中:
141+
1. **KNI 类**:24.11.6 上游已无(**29c7d5835 KNI 部分自动 N/A,无需操作**),但需在 patch commit 中显式记录"上游已对齐 F-Stack 的 KNI 删除"
142+
2. **igb_uio 类**:24.11.6 上游本就无 igb_uio(21.05 移除)→ **29c7d5835 此部分自动 N/A**,由 5f3768c63 正向重打恢复 F-Stack 自带新版
143+
3. **其他 redundant**:24.11.6 上游可能仍有 liquidio/acc200/idpf/nfp/flow_classify/server_node_efd 等 — 需精确实测后**继续删除**(保留 F-Stack 一贯 lean dpdk/ 镜像策略)
144+
145+
### 2.5 4 个 patch 总览
146+
147+
| # | commit | 类型 | 24.11.6 上游对齐情况 | 是否需重打 |
148+
|---|---|---|---|---|
149+
| 1 | `5f3768c63` | ADD(igb_uio 子树 + freebsd rte_os.h)| upstream 无 igb_uio | **必须重打** |
150+
| 2 | `62f1c34df` | ADD(rte_timer_meta_init)| lib/timer 24 上游 0 行变化 | **必须重打** |
151+
| 3 | `92718178b` | MODIFY(eal.c PRIMARY 守护)| 24.11.6 仍无条件调用 eal_bus_cleanup | **必须重打**(rebase 配合新调用顺序)|
152+
| 4 | `29c7d5835` | DELETE(310 文件冗余清理)| 部分自动 N/A(KNI / igb_uio 上游已无),其余 redundant 仍需删除 | **必须重打**(仅删除 24.11.6 中仍存在的 redundant) |
153+
154+
### 2.6 F-Stack 不引用的 DPDK 新 lib
155+
156+
`lib/argparse/` + `lib/ptr_compress/` 在 F-Stack 0 引用(实测 grep `rte_argparse|rte_ptr_compress|argparse\.h|ptr_compress\.h``f-stack/lib/``f-stack/example/` 下均 0 命中)。**升级零成本**。但按 §2.4 一贯 lean 策略,可考虑通过 29c7d5835 等价删除清单**也删除这两个新 lib**(待 user/leader 在 M3 启动前决策;保守保留 = 不删除,激进 = 也删)。
117157

118158
---
119159

@@ -191,18 +231,37 @@ rte_mp_channel_cleanup() → rte_eal_alarm_cleanup() → ...
191231

192232
ABI 偏移 / 字段偏移 / 总大小 **完全不变**(attribute 应用方式调整不影响 layout)。F-Stack `rte_timer_meta_init()` patch trivially apply。
193233

194-
### 3.6 KNI 子系统状态(**实测闭环 DP-B2,2026-06-09 14:40**
234+
### 3.6 KNI 子系统真相(**user 反馈后修正,2026-06-09 14:50**
235+
236+
**关键事实链**(实测一一确认):
237+
238+
1. **F-Stack 的 "KNI" 是 ring + virtio_user 自实现,与 DPDK librte_kni 无关**
239+
- `lib/Makefile:33-34` 注释明确:"**No DPDK KNI support on FreeBSD**" + "**Enable KNI, via viritio only, no longer support rte_kni.ko**"
240+
- `lib/ff_dpdk_kni.c``rte_kni` 的 grep 命中数 = **0**
241+
- 实现使用 `struct rte_ring **kni_rp;`(line 89)+ `rte_ring_dequeue_burst(kni_rp[port_id], ...)`(line 142)
242+
- libfstack.a `nm` 不含任何 `rte_kni*` 符号
243+
244+
2. **F-Stack 早在 commit `29c7d5835` 已主动从 dpdk/ 删除 KNI 全部子树**(详 §2.4)
245+
- upstream 23.11.5:实测 `find /data/workspace/dpdk-stable-23.11.5 -name 'kni*' -o -name 'rte_kni*'` 0 命中(DPDK 23.11 lib/ 已无 KNI;驱动 drivers/net/kni 残留 — 已被 29c7d5835 删除)
246+
- F-Stack 当前 `f-stack/dpdk/lib/kni/` + `dpdk/kernel/linux/kni/` 不存在(被 29c7d5835 删)
247+
- 24.11.6 upstream:`lib/kni/` + `kernel/linux/kni/` 完全不存在(已实测)
248+
249+
3. **`FF_KNI=1` 必须保留**(见 lib/Makefile:36)— F-Stack 自实现的 KNI 路径继续生效;与 DPDK 上游 KNI 子系统**完全无关**
195250

196-
| 维度 | 23.11.5 | 24.11.6 | 影响 |
251+
| 维度 | 23.11.5 (现状) | 24.11.6 (升级目标) | 升级影响 |
197252
|---|---|---|---|
198-
| `lib/kni/` 是否存在 | ✅ 存在 |**不存在**(实测 `ls dpdk-stable-24.11.6/lib/kni/` → No such file or directory)| KNI 用户态 lib 已被上游移除 |
199-
| `kernel/linux/kni/` 是否存在 | ✅ 存在 |**不存在** | KNI 内核模块已被上游移除 |
200-
| F-Stack `lib/Makefile` FF_KNI 当前默认值 | =1(默认开启)|**必须调整** | M2/M4 启动前必须改 FF_KNI=0;如 F-Stack 自带 KNI 兼容层(待 patch-scout 复查 `f-stack/dpdk/kernel/linux/kni/` 是否在 23.11.5 镜像里),可考虑保留 KNI 子树 |
201-
202-
**结论****KNI 在 24.11.6 上游已完全移除**。R-D2 等级从 P2 升至 **P1**。M4 必须显式处理:
203-
1. **方案 A**(推荐):修改 `lib/Makefile``FF_KNI=1` 改为 `FF_KNI=0`,禁用 F-Stack 的 KNI 路径
204-
2. **方案 B**(保留兼容):F-Stack 把 23.11.5 的 `lib/kni/``kernel/linux/kni/` 整子树备份到 `dpdk/kernel/linux/kni/``dpdk/lib/kni/`(与现有自带 igb_uio 同款),保持 FF_KNI=1
205-
3. **决定**:阶段二实测后由 leader / coder 决策;保守倾向方案 A(KNI 已 deprecated 4 年),但若 F-Stack 现网部署强依赖 KNI 则方案 B
253+
| `f-stack/dpdk/lib/kni/` 存在 | ❌(被 29c7d5835 删)| ❌(24.11.6 上游本就无 + 29c7d5835 重打后保持删除)| 0 |
254+
| `f-stack/dpdk/kernel/linux/kni/` 存在 | ❌(被 29c7d5835 删)| ❌(同上)| 0 |
255+
| `f-stack/dpdk/kernel/linux/igb_uio/` 存在 | ✅(5f3768c63 添加)| ✅(5f3768c63 重打恢复)| 0 — 仅 igb_uio 一个内核模块 |
256+
| `lib/Makefile FF_KNI=1` | ✅ 默认开启 |**保留** | F-Stack ring + virtio_user KNI 路径继续工作 |
257+
| F-Stack `lib/ff_dpdk_kni.c` 链接 | 不依赖 librte_kni | 不依赖 | 0 |
258+
259+
**结论****KNI 在升级中是 0 风险事项**(与 user 提示完全一致):
260+
-**保留 `FF_KNI=1`**(F-Stack 自实现的 ring-based KNI 路径继续工作)
261+
-**dpdk/ 仅保留 igb_uio 一个内核模块**(5f3768c63 重打);dpdk/lib/kni / dpdk/kernel/linux/kni 自然不进入升级后的 dpdk/(24.11.6 上游本就无 + 29c7d5835 等价 patch 重打保持)
262+
-**不需要**:A 方案 (FF_KNI=0) 错误;B 方案 (备份 KNI 子树) 错误
263+
264+
**R-D2 等级**:从此前误判的"P1 阻塞"**降级为 N/A**(不存在风险)。Must-Fix-1 KNI 决策 → **取消**
206265

207266
### 3.7 lib/net `rte_ip.h` 重构陷阱(**实测闭环 R-D11,2026-06-09 14:40**
208267

0 commit comments

Comments
 (0)