libnvme(9)

๐Ÿ“ฆ version 3.2, in arch rolling

โœจ libnvme(9) โ€” the API manual, bestie edition โœจ

Okay so today we're looking at libnvme(9), and the little star of this page is struct nbft_hfi_info_tcp โ€” aka the HFI Transport Info Descriptor - NVMe/TCP (Figure 14). Yes it's a struct, yes it's giving "gigantic field list", but we're gonna get through it together, iykyk. ๐Ÿ’…


๐ŸŽ€ NAME ๐ŸŽ€

struct nbft_hfi_info_tcp โ€” the HFI Transport Info Descriptor - NVMe/TCP (Figure 14). That's it, that's the whole name, slay.


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

Here's the whole struct, copied exactly, no edits, no vibes-based renaming:

struct nbft_hfi_info_tcp {
    __u8 structure_id;
    __u8 version;
    __u8 trtype;
    __u8 trinfo_version;
    __le16 hfi_index;
    __u8 flags;
    __le32 pci_sbdf;
    __u8 mac_addr[6];
    __le16 vlan;
    __u8 ip_origin;
    __u8 ip_address[16];
    __u8 subnet_mask_prefix;
    __u8 ip_gateway[16];
    __u8 reserved1;
    __le16 route_metric;
    __u8 primary_dns[16];
    __u8 secondary_dns[16];
    __u8 dhcp_server[16];
    struct nbft_heap_obj host_name_obj;
    struct nbft_heap_obj hfi_ext_info_obj;
    __u8 pcie_seg_num;
    __u8 reserved2[11];
 };

๐Ÿ’– Members ๐Ÿ’–

Bestie, grab a snack, we're going field by field. Every single one. No skipping. ๐Ÿ“

  • structure_id โ€” the Structure ID ๐Ÿชช. This field shall be set to 7h (i.e., HFI Transport Info; #NBFT_DESC_HFI_TRINFO). It's literally the ID card for this descriptor.
  • version โ€” the Version ๐Ÿ“Œ. This field shall be set to 1h.
  • trtype โ€” the HFI Transport Type, see enum nbft_trtype. This field shall be set to 03h (i.e., NVMe/TCP; #NBFT_TRTYPE_TCP). Obviously it's TCP, we been knew.
  • trinfo_version โ€” the Transport Info Version ๐Ÿท๏ธ. This field shall be set to 2h, and the supported values include 1h (Boot Spec rev. 1.0).
  • hfi_index โ€” the HFI Descriptor Index ๐Ÿ”—. This is the value of the HFI Descriptor Index field of the HFI Descriptor (see struct nbft_hfi.index) whose HFI Transport Info Descriptor Heap Object Reference field indicates this HFI Transport Info Descriptor. It's like a mutuals situation โ€” they point at each other.
  • flags โ€” the HFI Transport Flags, see enum nbft_hfi_info_tcp_flags. That's where the flag lore lives.
  • pci_sbdf โ€” the PCI Express Routing ID for the HFI Transport Function ๐ŸšŒ. This field indicates the PCI Express Routing ID as specified in the PCI Express Base Specification.
  • mac_addr โ€” the MAC Address ๐Ÿพ. The MAC address of this HFI, in EUI-48TM format, as defined in the IEEE Guidelines for Use of Extended Unique Identifiers. This field shall be set to a non-zero value โ€” so no zero MAC, okay? Not allowed.
  • vlan โ€” the VLAN ๐Ÿท๏ธ. If this field is set to a non-zero value, then this field contains the VLAN identifier if the VLAN associated with this HFI, as defined in IEEE 802.1q-2018. If no VLAN is associated with this HFI, then this field shall be cleared to 0h.
  • ip_origin โ€” the IP Origin ๐Ÿงญ. If this field is set to a non-zero value, then this field indicates the source of Ethernet L3 configuration information used by the driver for this interface. Valid values are defined in the Win 32 API: NL_PREFIX_ORIGIN enumeration specification. This field should be cleared to 0h if the IP Origin field is unused by driver.
  • ip_address โ€” the IP Address ๐Ÿ“ฎ. This field indicates the IPv4 or IPv6 address of this HFI. This field shall be set to a non-zero value.
  • subnet_mask_prefix โ€” the Subnet Mask Prefix ๐ŸŽญ. This field indicates the IPv4 or IPv6 subnet mask in CIDR routing prefix notation. CIDR notation, we love to see it.
  • ip_gateway โ€” the IP Gateway ๐Ÿšช. If this field is set to a non-zero value, this field indicates the IPv4 or IPv6 address of the IP gateway for this HFI. If this field is cleared to 0h, then no IP gateway is specified.
  • reserved1 โ€” Reserved. Not for us, back off. ๐Ÿ™ˆ
  • route_metric โ€” the Route Metric ๐Ÿ“Š. If this field is set to a non-zero value, this field indicates the cost value for the route indicated by this HF [sic, that's what it says โ€” "this HF"]. This field contains the value utilized by the pre-OS driver when chosing [sic] among all available routes. Lower values relate to higher priority. Refer to IETF RFC 4249. If the pre-OS driver supports routing and did not configure a specific route metric for this interface, then the pre-OS driver should set this value to 500. If the pre-OS driver does not support routing, then this field should be cleared to 0h.
  • primary_dns โ€” the Primary DNS ๐ŸŒ. If this field is set to a non-zero value, this field indicates the IPv4 or IPv6 address of the Primary DNS server for this HFI, if any, from byte offset 0h of the NBFT Table Header. If this field is cleared to 0h, then no Primary DNS is specified.
  • secondary_dns โ€” the Secondary DNS ๐ŸŒ. If this field is set to a non-zero value, this field indicates the IPv4 or IPv6 address of the Secondary DNS server for this HFI, if any, from byte offset 0h of the NBFT Table Header. If this field is cleared to 0h, then no Secondary DNS is specified.
  • dhcp_server โ€” the DHCP Server ๐Ÿฌ. If the DHCP Override bit is set to 1h, then this field indicates the IPv4 or IPv6 address of the DHCP server used to assign this HFI address. If that bit is cleared to 0h, then this field is reserved.
  • host_name_obj โ€” the Host Name Heap Object Reference ๐Ÿ . If this field is set to a non-zero value, then this field indicates the location and size of a heap object containing a Host Name string.
  • hfi_ext_info_obj โ€” the HFI Transport Info Extended Information Descriptor Object Reference (since rev. 1.1) ๐Ÿงฉ. If this field is set to a non-zero value, then this field indicates the location and size of a heap object containing a HFI Transport Info Extended Information Descriptor (see struct nbft_hfi_info_ext). Extended info, extended vibes.
  • pcie_seg_num โ€” the PCIe Segment Number (since rev. 1.1) ๐Ÿ”ข. The Segment Number for the specified Controller when the PCI Express Link is in Flit mode. If the PCI Express interface is not in Flit mode, or if the pre-OS driver does not support Flit mode, then this field should be cleared to 0h.
  • reserved2 โ€” Reserved. Again. Leave it alone. ๐Ÿ’€
Reminder bestie: reserved1 and reserved2 are reserved. Do not go putting your own little data in there. That's not your space. ๐Ÿซถ

๐ŸŒˆ Sign-off ๐ŸŒˆ

That's the whole page, no cap โ€” every field, every 0h, every "shall be set to", all of it. This was the struct nbft_hfi_info_tcp page from the libnvme(9) API Manual, dated October 2026. Go forth and parse your NBFT tables, main character. ๐Ÿ‘‘๐Ÿ’œ

๐Ÿ“ฆ where this page comes from