如同https://askubuntu.com/questions/760196/why-is-enps-in-stead-of-eth-whats-the-meaning-of-enps
但什么f#
代表采用enp#s#f#
接口名称格式?
维基百科仅说明这一点,未提及f
:
Adapters in the specified PCI slot, with slot index number on the adapter enp<PCI slot>s<card index no>
,此处类似https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
答案1
f 代表“功能索引”。
en = ethernet
p# = PCI bus number
s# = slot number
f# = function index
添加了一些资源:libvirt.org有很好的解释
废物管理网站关于“f”的说法如下:
所有设备至少有 1 个功能,即功能 #0。每个设备有 8 个可能的功能,编号为 0-7。任何具有多于 1 个功能的设备都称为多功能设备。多功能设备(例如调制解调器+声卡组合)通常具有 2 个唯一可寻址的功能,编号为 0 和 1。
该函数获取供应商和设备 ID:
设备的每个功能都有 256 个 8 位寄存器。寄存器 0-3F 由 PCI 规范定义,提供有关特定功能的大量信息。寄存器 40-FF 由供应商定义,控制功能本身的属性。如果没有供应商特定的文档,这些寄存器可能应该保持不变。
- 寄存器 0 和 1 由 PCI 规范定义为供应商 ID。供应商 ID 是一个 16 位值。
- 寄存器 2 和 3 是设备 ID
从评论中 pbhj 的链接可以得出源代码:
264 行及以上:
if (sscanf(sysname, "%x:%x:%x.%u", &domain, &bus, &slot, &func) != 4)
return -ENOENT;
if (naming_scheme_has(NAMING_NPAR_ARI) &&
is_pci_ari_enabled(names->pcidev))
/* ARI devices support up to 256 functions on a single device ("slot"), and interpret the
* traditional 5-bit slot and 3-bit function number as a single 8-bit function number,
* where the slot makes up the upper 5 bits. */
func += slot * 8;