Fuchsia.hardware.network

新增:7

协议

设备

在 fuchsia.hardware.network/device.fidl 中定义

网络设备。

Added: HEAD

克隆

建立与此设备的新连接。

  • 请求 device 服务器端建立新连接。

请求

名称类型
device server_end:Device

GetInfo

获取设备相关信息

  • 响应 info 设备信息。

请求

<EMPTY>

响应

名称类型
info DeviceInfo

GetPort

连接到给定 id 的端口。

  • 请求连接到 id 端口。
  • 请求 port 服务器端端口通道。

如果不存在具有 id 的端口,则 port 会关闭,并显示 ZX_ERR_NOT_FOUND 墓志铭。

请求

名称类型
id PortId
port server_end:Port

GetPortWatcher

将 PortWatcher 连接到此设备。

  • 请求 watcher 服务器端观察者通道。

请求

名称类型
watcher server_end:PortWatcher

OpenSession

打开与网络设备的新会话。

  • 请求 session_name 用作附加到此会话的调试标签。
  • 请求 session_info 包含设置会话数据交换所需的信息。
  • 响应 session 一个用于控制会话的句柄。
  • 响应 fifos 个附加到会话的数据平面 FIFO。
  • 如果 session_info 包含不受支持的帧类型或描述符设置,则会返回错误 ZX_ERR_NOT_SUPPORTED。
  • 如果 session_info 缺少字段或包含无效信息,则会返回错误 ZX_ERR_INVALID_ARGS。
  • 如果数据 VMO 被底层设备拒绝,则返回错误 ZX_ERR_INTERNAL。

请求

名称类型
session_name string:64
session_info SessionInfo

响应

名称类型
payload Device_OpenSession_Result

诊断

在 fuchsia.hardware.network/diagnostics.fidl 中定义

在设备和上层之间提供双向通信,以交换设备健康状况信息。

Added: HEAD

LogDebugInfoToSyslog

请求设备在系统日志中生成调试信息。

生成设备调试信息后,该调用会返回。

请求

<EMPTY>

响应

<EMPTY>

MacAddressing

在 fuchsia.hardware.network/mac.fidl 中定义

Added: HEAD

AddMulticastAddress

将多播地址添加到多播群组列表中。

对 SetMode 的调用不会影响保留的多播地址列表。 如果设备的模式不是 MULTICAST_FILTER,系统会忽略多播地址列表。

  • 请求将 address 多播地址添加到列表。
  • 如果 address 不是多播地址,则响应 status ZX_ERR_INVALID_ARGS。
  • 如果安装的地址超过 MAX_MAC_FILTER 个,则响应 status ZX_ERR_NO_RESOURCES。

请求

名称类型
address fuchsia.net/MacAddress

响应

名称类型
status zx/Result

GetUnicastAddress

获取设备的当前单播 MAC 地址。

此 API 的实现者无需返回可明确识别个人身份的 MAC;返回的单播地址是当前用于过滤单播帧的地址,或用于在设备当前所在的链路上标识设备的地址。此 API 的用户不得依赖返回值的稳定性或唯一性来识别设备实例或消除设备实例歧义。

  • 响应 address 设备的单播 MAC 地址。

请求

<EMPTY>

响应

名称类型
address fuchsia.net/MacAddress

RemoveMulticastAddress

从多播群组列表中移除多播地址。

  • 请求从列表中移除 address 多播地址。
  • 如果 address 不是多播地址,则响应 status ZX_ERR_INVALID_ARGS。

请求

名称类型
address fuchsia.net/MacAddress

响应

名称类型
status zx/Result

SetMode

将此设备的请求操作模式设置为 mode。

请求的模式会附加到当前与设备建立的客户端连接。由于多个客户端可以同时连接到同一设备,因此限制最少的模式是主动在底层设备实现中生效的模式。

如果设备不支持请求的模式,但支持比请求的模式更开放的模式,则无论如何 SetMode 都会成功。否则,如果设备仅支持比请求的模式更严格的模式,SetMode 会返回 ZX_ERR_NOT_SUPPORTED。

客户端必须知道,正在访问的资源是共享的,并且设备可能实际上在比请求的级别更开放的级别运行(但绝不会在更严格的级别运行)。

  • 请求 mode 请求模式。
  • 如果设备仅支持比请求的模式限制性更强的模式,则响应 status ZX_ERR_NOT_SUPPORTED。

请求

名称类型
mode MacFilterMode

响应

名称类型
status zx/Result

端口

在 fuchsia.hardware.network/port.fidl 中定义

属于设备的逻辑端口。

Added: HEAD

克隆

建立与此端口的新连接。

  • 请求 port 服务器端建立新连接。

请求

名称类型
port server_end:Port

GetCounters

检索此端口上的流量计数器快照。

请求

<EMPTY>

响应

名称类型
payload PortGetCountersResponse

GetDevice

连接到此端口所属的设备。

  • 请求 device 授予对父级设备的访问权限。

请求

名称类型
device server_end:Device

GetDiagnostics

授予对此端口的诊断权限。

  • 请求 diagnostics 授予对诊断信息的访问权限。

请求

名称类型
diagnostics server_end:Diagnostics

GetIdentity

检索始终仅与此端口关联的唯一事件句柄。

此事件可用于在系统中的不同 API 之间唯一标识特定端口实例。

请求

<EMPTY>

响应

名称类型
event handle<event>

GetInfo

获取端口相关信息。

  • 响应 info 端口信息。

请求

<EMPTY>

响应

名称类型
info PortInfo

GetMac

连接到与端口关联的 MacAddressing。

  • 请求 mac MAC 句柄。如果此端口不支持 MAC 寻址,则关闭并显示 ZX_ERR_NOT_SUPPORTED。

请求

名称类型
mac server_end:MacAddressing

GetPowerDependencyToken

获取此端口电源元素的 Power Broker 依赖项令牌。

该令牌公开了两个级别:0(关闭)和 1(开启)。每当需要端口的数据路径时,客户端都会租用级别 1,并根据需要保留租约。驱动程序可以自由地对已租用但空闲的端口进行内部电源管理,只要上层看不到该端口即可。

该令牌在端口的生命周期内是固定的。

  • 如果此端口不参与电源管理,则响应 token 不存在。

请求

<EMPTY>

响应

名称类型
token fuchsia.power.broker/DependencyToken

GetStatus

获取操作端口状态。

  • 响应 status 充电桩当前状态的快照。

请求

<EMPTY>

响应

名称类型
status PortStatus

GetStatusWatcher

连接到 StatusWatcher 以观察端口状态变化。

  • 请求 watcher 句柄。
  • 请求 buffer 客户端请求由 StatusWatcher 存储的状态更改次数。值上限为 MAX_STATUS_BUFFER。值为 0 或 1 会导致 StatusWatcher 在状态更改时不保留任何缓冲区。如果客户端需要观察状态的所有变化(而不仅仅是当前状态),建议将缓冲区值设置为大于 1,以便观察所有边缘。如果 StatusWatcher 的内部队列已满,并且发生了新的状态更改,则系统会丢弃最旧的样本,以便为新样本腾出空间。

请求

名称类型
watcher server_end:StatusWatcher
buffer uint32

PortWatcher

在 fuchsia.hardware.network/device.fidl 中定义

提供对连接到设备的端口的迭代和更新。

Added: HEAD

观看

获取下一个端口事件。

前 N 次调用会返回 DevicePortEvent.existing,其中 N 是创建观察器时设备上存在的端口数。下一次调用会返回 DevicePortEvent.idle,以指示现有端口的结束。后续调用会阻塞,直到添加 (DevicePortEvent.added) 或移除 (DevicePortEvent.removed) 端口。

如果未读事件的数量达到服务器选择的限制(至少为 MAX_PORTS 的两倍),服务器会使用 ZX_ERR_CANCELED 关闭 PortWatcher 通道。我们建议客户端始终保持对 Watch 的挂起调用,以避免触发此条件。

  • 响应 event 下一个端口事件。

请求

<EMPTY>

响应

名称类型
event DevicePortEvent

会话

在 fuchsia.hardware.network/session.fidl 中定义

表示与网络设备的会话。

会话具有数据平面和控制平面。Session 协议表示会话的控制平面,在 Device.OpenSession 调用期间交换的 FIFO 和 VMO 是数据平面。会话的生命周期由 Session 协议句柄控制。

会话必须附加到相关端口才能开始接收和发送数据。创建会话时,始终不附加任何端口。

如果某个端口从底层设备中销毁,则会自动从会话中分离。

入站流量会分派到所有打开的会话。设备通常使用单个主要会话运行,请参阅 SessionFlags.PRIMARY。每个额外打开的会话都会在设备的数据路径上产生数据复制开销。

如果通过 tx 或 rx FIFO 发送了无效的缓冲区描述符,则会话将关闭并显示错误 epitaph。无效描述符包括: - 描述符索引大于 SessionInfo.descriptor_count。 - 描述符链大于 MAX_DESCRIPTOR_CHAIN。 - rx 缓冲区小于 Info.min_rx_buffer_length。 - tx 缓冲区小于 Info.min_tx_buffer_length。 - tx 缓冲区不遵循 Info.min_tx_buffer_head 或 Info.min_tx_buffer_tail。

Added: HEAD

附加

将该会话附加到 port。

连接后,会话开始通过数据 FIFO 接收订阅的帧,并且可能会发送发往指定 port 的帧。

  • 请求订阅 port 端口。
  • 请求端口上感兴趣的 rx_frames 帧类型。
  • 如果 port 无效,则会返回错误 ZX_ERR_NOT_FOUND。
  • 如果 rx_frames 不是端口支持的帧的子集,则返回错误 ZX_ERR_INVALID_ARGS。
  • 如果 port 已附加,则会返回错误 ZX_ERR_ALREADY_BOUND。

请求

名称类型
port PortId
rx_frames vector<FrameType>:4

响应

名称类型
payload Session_Attach_Result

关闭

彻底关闭会话。

这会导致会话发送 ZX_ERR_CANCELLED 墓志铭,并继续关闭会话通道。客户端只能在收到 epitaph 后,假定它们拥有当前由会话拥有的所有缓冲区(通过 rx 或 tx FIFO 发送)。关闭 rx 或 tx FIFO 相当于调用 Close。

请求

<EMPTY>

分离

将该会话与 port 分离。

分离后,会话将停止从 port 接收帧。发送到已分离端口的帧可能会返回错误。无需在从设备中移除的端口上调用 Detach,否则会导致返回 ZX_ERR_NOT_FOUND。

  • 请求订阅 port 端口。
  • 如果会话当前未连接到端口,则会返回错误 ZX_ERR_NOT_FOUND。

请求

名称类型
port PortId

响应

名称类型
payload Session_Detach_Result

RegisterForTx

请求网络设备为 Tx 注册 VMO。

网络设备会按顺序准备 VMO,并在出现第一个错误(如有)时停止。它会返回已准备好的 VMO 数量以及遇到的第一个错误。请注意,network-device 本身不会尝试针对后续错误释放先前的 VMO。如何从错误中恢复取决于客户端。

  • 如果任何 VmoId 未知,则返回错误 ZX_ERR_NOT_FOUND。
  • error:驱动程序可以报告的其他 zx 状态。

请求

名称类型
vmos vector<VmoId>:32

响应

名称类型
successful uint8
status zx/Result

UnregisterForTx

告知设备客户端将不再使用 VMO 进行 Tx,如果 VMO 也不用于 Rx,则设备可以随意在实现驱动程序中释放它。

网络设备会按顺序处理 VMO,并在遇到第一个错误(如果有)时停止。它会返回已标记为未用于 Tx 的 VMO 数量,以及遇到的第一个错误。请注意,network-device 本身不会尝试为后续错误重新注册先前的 VMO。如何从错误中恢复取决于客户端。

  • 如果任何 VmoId 未知,则返回错误 ZX_ERR_NOT_FOUND。
  • error:驱动程序可以报告的其他 zx 状态。

请求

名称类型
vmos vector<VmoId>:32

响应

名称类型
successful uint8
status zx/Result

WatchDelegatedRxLease

委托的观察器会收到唤醒租约。

调用会一直处于阻塞状态,直到设备委托租约。如果在上一次调用处于阻塞状态时调用 WatchDelegatedRxLease,则会话将以 ZX_ERR_BAD_STATE 状态关闭。对于在未设置 SessionFlags.RECEIVE_RX_POWER_LEASES 的情况下创建的会话,绝不会产生任何值。

假设单个租约足以让系统保持唤醒状态,服务器仅在其缓冲区中保留单个租约。如果有新的委托租约可用,并且客户端尚未通过调用 WatchDelegatedRxLease 弹出上一个租约,则服务器会丢弃之前待处理的租约。

如需了解如何处理委托租约,请参阅 DelegatedRxLease。

请求

<EMPTY>

响应

名称类型
lease DelegatedRxLease

StatusWatcher

在 fuchsia.hardware.network/port.fidl 中定义

提供一种接收端口状态变化更新的方法。

Added: HEAD

WatchStatus

WatchStatus 会一直阻塞,直到端口的状态发生变化。

首次调用 WatchStatus 会立即返回当前端口状态,后续调用会在端口状态与通过此 StatusWatcher 返回的上一个状态不同时完成。

如果 StatusWatcher 是使用大于 1 的缓冲区值创建的,则 WatchStatus 可能会返回已加入队列的状态更改,具体取决于自上次调用 WatchStatus 以来发生了多少次状态更改。

  • 响应 device_status 最新端口状态。

请求

<EMPTY>

响应

名称类型
port_status PortStatus

STRUCTS

Device_OpenSession_Response 资源

在 fuchsia.hardware.network/device.fidl 中定义

字段类型说明默认
session client_end:Session 无默认应用
fifos Fifos 无默认应用

空白

在 fuchsia.hardware.network/device.fidl 中定义

Added: HEAD

<EMPTY>

Fifos 资源

在 fuchsia.hardware.network/session.fidl 中定义

数据平面 FIFO。

Added: HEAD

字段类型说明默认
rx handle<fifo>

rx FIFO 的句柄。

客户端必须将 16 位描述符索引写入此 FIFO,才能接收帧。

无默认应用
tx handle<fifo>

tx FIFO 的句柄。

客户端将 16 位描述符索引写入此 FIFO,以便将传出帧加入队列。

无默认应用

FrameTypeSupport

在 fuchsia.hardware.network/frames.fidl 中定义

指定帧类型以及与该类型关联的功能和支持的标志。

客户端使用此功能读取给定网络设备的 tx 路径上支持的帧。

某些网络设备可能会解析传出帧,以执行帧转换或特定硬件支持。每种帧类型都有一个关联的 FrameTypeSupport.features 位枚举,其中列出了可能受支持或不受支持的 FrameType 专属功能。对于不执行解析的设备,建议仅使用 features 中的 FRAME_FEATURES_RAW 位,以告知客户端允许所有帧特征。

Added: HEAD

字段类型说明默认
type FrameType

此支持条目所指的帧类型。

无默认应用
features uint32

支持的特定于帧类型的功能。

无默认应用
supported_flags TxFlags

给定帧类型支持的标志。

无默认应用

PortId

在 fuchsia.hardware.network/port.fidl 中定义

设备端口标识符。

Added: HEAD

字段类型说明默认
base BasePortId

相应充电桩的基本标识符。

通常用于标识硬件中的端口实例。

无默认应用
salt uint8

由实现定义的标识符,可保证在所标识端口的每次实例化时发生更改。

无默认应用

Session_Attach_Response

在 fuchsia.hardware.network/session.fidl 中定义

<EMPTY>

Session_Detach_Response

在 fuchsia.hardware.network/session.fidl 中定义

<EMPTY>

枚举

FrameType flexible

类型:uint8

在 fuchsia.hardware.network/frames.fidl 中定义

帧类型。

Added: HEAD

名称值说明
1
2
3

MacFilterMode flexible

类型:uint32

在 fuchsia.hardware.network/mac.fidl 中定义

MAC 设备支持的地址过滤模式。

Added: HEAD

名称值说明
0

设备仅接受发送到其自身单播地址的单播帧,或属于多播地址过滤条件列表的多播帧。

1

设备接受发送到其自身单播地址的单播帧或任何多播帧。

2

设备接受所有帧。

灵活的 PortClass

类型:uint16

在 fuchsia.hardware.network/port.fidl 中定义

网络端口类。

注意:我们鼓励设备实现者提议向此枚举添加内容,以避免在没有合适匹配项的情况下使用不合适的变体。

新增:22

名称值说明
1
2
3
4
5
6
7

TABLES

DataVmo 资源

在 fuchsia.hardware.network/session.fidl 中定义

可用于数据平面操作的 VMO。

Added: HEAD

序数字段类型说明
id VmoId
vmo handle<vmo>
num_rx_buffers uint16

Netdevice 需要这些信息来决定何时可以安全地取消注册和取消提交。

DelegatedRxLease 资源

在 fuchsia.hardware.network/session.fidl 中定义

传播到应用的已获取租约。

Added: HEAD

序数字段类型说明
hold_until_frame uint64

handle 中的租约可在该帧之后释放。

观察租约的代理必须使用递增计数器跟踪收到的帧,以便在帧 hold_until_frame 处理完毕后正确放弃租约。

此值可以解释为给定帧的基于 1 的索引,也可以解释为到目前为止交换的帧总数,两者在数学上是等效的。

此机制允许将接收到的帧中的唤醒租约句柄向上传递,并防止系统在帧完全处理之前暂停。

必填。

handle DelegatedRxLeaseHandle

表示所持租约的句柄。

必填。

DeviceBaseInfo

在 fuchsia.hardware.network/device.fidl 中定义

网络设备基本信息。

Added: HEAD

序数字段类型说明
rx_depth uint16

rx FIFO 中的项数上限(每个会话)。必填。

rx_depth 是根据实际后备硬件 rx 队列的大小计算得出的。

tx_depth uint16

tx FIFO 中的项数上限(每个会话)。必填。

tx_depth 是根据实际后备硬件 tx 队列的大小计算得出的。

buffer_alignment uint32

数据 VMO 中缓冲区的对齐要求。

数据 VMO 中的所有缓冲区都必须相对于 VMO 的开头与 buffer_alignment 对齐。buffer_alignment == 0 永远不会报告。必填。

max_buffer_length uint32

数据 VMO 中缓冲区的最大支持长度(以字节为单位)。

如果未定义缓冲区长度上限,则不存在。必须为非零值。

min_rx_buffer_length uint32

设备所需的最小接收缓冲区长度。必填。

min_tx_buffer_length uint32

设备所需的最小 tx 缓冲区长度。必填。

此值仅考虑 tx 载荷长度,min_tx_buffer_head 和 min_tx_buffer_tail 不属于此值。

客户端必须对传出帧进行零填充,以满足所需的最小长度。

min_tx_buffer_head uint16

设备请求在 tx 缓冲区中作为 head 空间释放的字节数。必填。

min_tx_buffer_tail uint16

设备请求在 tx 缓冲区中作为 tail 空间释放的字节数。必填。

max_buffer_parts uint8

设备接受的最大描述符链长度。必填。

min_rx_buffers uint16

客户端需要为网络设备准备的 Rx 缓冲区数量下限。如果使用多 VMO 支持,客户端应使用此信息来选择其 VMO 大小。

DeviceInfo

在 fuchsia.hardware.network/device.fidl 中定义

网络设备信息。

Added: HEAD

序数字段类型说明
min_descriptor_length uint8

描述符长度下限(以 64 位字为单位)。必填。

每个缓冲区描述符必须具有的最小长度,以便与此设备正确运行。支持额外帧元数据的设备会告知更大的最小描述符长度,以反映存储帧元数据所需的最小空间。

descriptor_version uint8

接受的描述符版本。必填。

base_info DeviceBaseInfo

设备基本信息。必填。

PortBaseInfo

在 fuchsia.hardware.network/port.fidl 中定义

端口基本信息。

Added: HEAD

序数字段类型说明
port_class PortClass

Port 的课程。必填。

rx_types vector<FrameType>:4

此端口上支持的 rx 帧类型。必填。

客户端可以打开会话,以在此端口上订阅 rx_types 帧类型的子集。

tx_types vector<FrameTypeSupport>:4

此端口上支持的 tx 帧类型。必填。

如果帧类型不在 tx_types 中,则发往此端口的帧会返回错误。

某些网络设备可能需要执行部分帧解析和序列化,因此 tx_types 是 FrameTypeSupport 的矢量,其中包含每种帧类型的特定功能。例如,支持以太网帧但需要转换以太网标头的设备可能仅支持标准以太网 II 帧,而不支持任何“原始”以太网帧。

PortGetCountersResponse

在 fuchsia.hardware.network/port.fidl 中定义

序数字段类型说明
rx_frames uint64

此端口上的入站流量帧总数。

rx_bytes uint64

此端口上的入站流量字节总数。

tx_frames uint64

此端口上的出站帧总数。

tx_bytes uint64

此端口上的出站流量总字节数。

PortInfo

在 fuchsia.hardware.network/port.fidl 中定义

逻辑端口信息。

Added: HEAD

序数字段类型说明
id PortId

充电桩的标识符。必填。

base_info PortBaseInfo

PortStatus

在 fuchsia.hardware.network/port.fidl 中定义

动态端口信息。

Added: HEAD

序数字段类型说明
flags StatusFlags

端口状态标志。

mtu uint32

此端口的最大传输单元(以字节为单位)。

报告的 MTU 是整个帧的大小,包括此端口支持的任何协议的所有标头和尾部字节。

SessionInfo 资源

在 fuchsia.hardware.network/session.fidl 中定义

会话配置。

Added: HEAD

序数字段类型说明
descriptors handle<vmo>

包含描述符的 VMO。必填。

通过 FIFO 传输的 16 位索引会为此 VMO 中的描述符编制索引(字节偏移量 = 描述符长度 * 8 * 索引)。

data vector<DataVmo>:32

包含帧数据的 VMO。必填。

描述符包含字节偏移量和 VMO ID,用于为数据 VMO 中的区域编制索引。

对于由设备接口管理的 Rx VMO,VMO 会按 ID 顺序提交。

descriptor_version uint8

请求的描述符版本。必填。

如果网络设备不支持请求的描述符版本,Device.OpenSession 会失败并显示 ZX_ERR_NOT_SUPPORTED。

descriptor_length uint8

描述符长度(以 64 位字为单位)。必填。

descriptors VMO 中每个描述符的长度。在给定通过 rx 或 tx FIFO 传递的描述符索引的情况下,此值用作乘数,以在 descriptors 中查找字节偏移量。

descriptor_count uint16

此会话可以使用的描述符总数。必填。

通过 rx 或 tx FIFO 传输的描述符索引必须在 [0, descriptor_count) 范围内。

options SessionFlags

额外选项。如果不存在,则解释为空位掩码。

UNIONS

DelegatedRxLeaseHandle 灵活 资源

在 fuchsia.hardware.network/session.fidl 中定义

序数变体类型说明
channel handle<channel>

表示租约的无类型通道。

关闭通道以释放租约。

eventpair handle<eventpair>

表示租用的事件对。

关闭 eventpair 以释放租用。

DevicePortEvent strict

在 fuchsia.hardware.network/device.fidl 中定义

端口创建和销毁事件。

Added: HEAD
序数变体类型说明
existing PortId

创建观察器时,端口已存在。

added PortId

已向设备添加新端口。

removed PortId

已从设备中移除端口。

idle Empty

现有端口的详尽列表。

Device_OpenSession_Result strict resource

在 fuchsia.hardware.network/device.fidl 中定义

序数变体类型说明
response Device_OpenSession_Response
err zx/Status

Session_Attach_Result strict

在 fuchsia.hardware.network/session.fidl 中定义

序数变体类型说明
response Session_Attach_Response
err zx/Status

Session_Detach_Result strict

在 fuchsia.hardware.network/session.fidl 中定义

序数变体类型说明
response Session_Detach_Response
err zx/Status

BITS

EthernetFeatures strict

类型:uint32

在 fuchsia.hardware.network/frames.fidl 中定义

以太网帧子类型和功能。

Added: HEAD

名称值说明
1

设备支持任何类型的以太网帧。

与指定所有其他标志相同。由不检查或解析出站流量的设备使用。

2

设备支持 EthernetII 帧。

4

设备支持 802.1q VLAN 附加。

8

设备支持 802.1 q-in-q 多 VLAN 标记添加。

仅在 E_802_1_Q 也存在时才有意义。

16

设备支持 802.3 LLC + SNAP 以太网帧格式。

RxFlags strict

类型:uint32

在 fuchsia.hardware.network/frames.fidl 中定义

设备在 rx 路径上将缓冲区移交给客户端时设置的标志。

由设备在 rx 描述符的 inbound_flags 字段中设置。

Added: HEAD

名称值说明
1

设备验证了一个或多个“完整”校验和(即通过 UDP 或 TCP 数据包等完整内容计算出的互联网校验和)。

已验证校验和的数量减 1 由 rx 描述符的 accel_metadata 字段的 rx_full_csums_verified 字段指示。

536870912

设备发生了硬件 rx 超限。

Rx 超限通常由硬件控制器在检测到帧事件但无法捕获帧数据时设置。一旦在入站帧上设置了此标志,设备应清除控制器标志,以便检测和报告未来的溢出。

1073741824

如果执行了帧验证(例如通过硬件加速功能)且验证失败,则会设置此位。

请务必注意,某些设备可能只是丢弃验证失败的帧,而不会通知客户端。只有在创建会话时选择了 SessionFlags::REPORT_INVALID_RX 选项,验证失败的 Rx 帧才会传输到客户端。

SessionFlags strict

类型:uint16

在 fuchsia.hardware.network/session.fidl 中定义

其他会话选项。

Added: HEAD

名称值说明
1

接收无效的 rx 帧。

标记为 REPORT_INVALID_RX 的会话有兴趣接收被内部设备检查或硬件执行的载荷验证拒绝的帧。由于某些硬件平台的性质,如果硬件实现只是丢弃帧而不将其公开给软件堆栈,则标记为 REPORT_INVALID_RX 的会话可能仍无法接收未通过验证的帧。 相反,未标记为 REPORT_INVALID_RX 的会话绝不会收到设置了 RX_VALIDATION_ERROR 标志的 rx 帧。

2

接收 rx 功率租约。

标有 RECEIVE_RX_POWER_LEASES 的会话通过 Session.WatchDelegatedRxLease 调用接收 DelegatedRxLease。

StatusFlags strict

类型:uint32

在 fuchsia.hardware.network/port.fidl 中定义

端口状态位,在 PortStatus.flags 中报告。

Added: HEAD

名称值说明
1

端口处于在线状态,即数据路径处于打开状态,任何正在进行的会话都可以发送和接收帧。

TxFlags flexible

类型:uint32

在 fuchsia.hardware.network/frames.fidl 中定义

客户端在 tx 路径上将缓冲区交给设备时设置的标志。

由客户端在 tx 描述符的 inbound_flags 字段中设置。

Added: HEAD

名称值说明
1

请求设备根据相对于帧开头的起始字节索引和指示从起始索引到必须放置结果的校验和字段的偏移量的字节偏移量来计算通用互联网校验和。

起始偏移量和校验和字段的偏移量由 tx 描述符的 accel_metadata 字段的 tx_partial_csum 字段指示。

TxReturnFlags flexible

类型:uint32

在 fuchsia.hardware.network/frames.fidl 中定义

设备在将 tx 缓冲区返回给客户端时设置的标志。

由设备在 tx 描述符的 return_flags 字段中设置。

Added: HEAD

名称值说明
1

inbound_flags 中请求的操作不受支持;帧未发送。

始终与 TX_RET_ERROR 一起设置。

2

无法分配资源来发送帧。

始终与 TX_RET_ERROR 一起设置。

4

设备不可用(离线或断开连接);帧未发送。

始终与 TX_RET_ERROR 一起设置。

2147483648

发送此帧时出错。

常量

名称值类型说明
FRAME_FEATURES_RAW 1 uint32

原始帧的统一定义。

不执行任何出站流量解析的设备应在 FrameTypeSupport 条目中定义 FRAME_FEATURES_RAW。

Added: HEAD
MAX_DATA_VMOS 32 uint8

可能存在的数据 VMO 的数量上限。

Added: HEAD
MAX_DESCRIPTOR_CHAIN 4 uint8

描述单个帧的链式描述符数量上限。

Added: HEAD
MAX_FRAME_TYPES 4 uint32

rx 或 tx 支持的帧类型数量上限。

Added: HEAD
MAX_PORTS 32 uint8

在给定时间连接到设备的最大端口数。

Added: HEAD
MAX_SESSION_NAME 64 uint32

会话标签的长度上限。

Added: HEAD
MAX_STATUS_BUFFER 50 uint32

StatusWatcher 可缓冲的状态样本数上限。

Added: HEAD

别名

名称值说明
BasePortId uint8

设备内端口的基本标识符。始终小于 MAX_PORTS。

Added: HEAD
VmoId uint8

VMO 标识符。

VMO 标识符始终在 [0, MAX_DATA_VMOS) 范围内。

VMO 标识符会报告给设备实现,并用于定位缓冲区。

Added: HEAD

服务

服务

在 fuchsia.hardware.network/device.fidl 中定义

名称类型传输
设备 fuchsia.hardware.network/Device 渠道
device_topology fuchsia.device.fs/TopologicalPath 渠道