协议
设备
在 fuchsia.hardware.network/device.fidl 中定义
网络设备。
克隆
建立与此设备的新连接。
- 请求
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 中定义
在设备和上层之间提供双向通信,以交换设备健康状况信息。
LogDebugInfoToSyslog
请求设备在系统日志中生成调试信息。
生成设备调试信息后,该调用会返回。
请求
<EMPTY>
响应
<EMPTY>
MacAddressing
在 fuchsia.hardware.network/mac.fidl 中定义
AddMulticastAddress
将多播地址添加到多播群组列表中。
对 SetMode 的调用不会影响保留的多播地址列表。
如果设备的模式不是 MULTICAST_FILTER,系统会忽略多播地址列表。
- 请求将
address多播地址添加到列表。
- 如果
address不是多播地址,则响应statusZX_ERR_INVALID_ARGS。 - 如果安装的地址超过
MAX_MAC_FILTER个,则响应statusZX_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不是多播地址,则响应statusZX_ERR_INVALID_ARGS。
请求
| 名称 | 类型 |
|---|---|
address |
fuchsia.net/MacAddress
|
响应
| 名称 | 类型 |
|---|---|
status |
zx/Result
|
SetMode
将此设备的请求操作模式设置为 mode。
请求的模式会附加到当前与设备建立的客户端连接。由于多个客户端可以同时连接到同一设备,因此限制最少的模式是主动在底层设备实现中生效的模式。
如果设备不支持请求的模式,但支持比请求的模式更开放的模式,则无论如何 SetMode 都会成功。否则,如果设备仅支持比请求的模式更严格的模式,SetMode 会返回 ZX_ERR_NOT_SUPPORTED。
客户端必须知道,正在访问的资源是共享的,并且设备可能实际上在比请求的级别更开放的级别运行(但绝不会在更严格的级别运行)。
- 请求
mode请求模式。
- 如果设备仅支持比请求的模式限制性更强的模式,则响应
statusZX_ERR_NOT_SUPPORTED。
请求
| 名称 | 类型 |
|---|---|
mode |
MacFilterMode
|
响应
| 名称 | 类型 |
|---|---|
status |
zx/Result
|
端口
在 fuchsia.hardware.network/port.fidl 中定义
属于设备的逻辑端口。
克隆
建立与此端口的新连接。
- 请求
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。
- 请求
macMAC 句柄。如果此端口不支持 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 中定义
提供对连接到设备的端口的迭代和更新。
观看
获取下一个端口事件。
前 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。
附加
将该会话附加到 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 中定义
提供一种接收端口状态变化更新的方法。
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 中定义
<EMPTY>
Fifos 资源
在 fuchsia.hardware.network/session.fidl 中定义
数据平面 FIFO。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
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 位,以告知客户端允许所有帧特征。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
type |
FrameType
|
此支持条目所指的帧类型。 |
无默认应用 |
features |
uint32
|
支持的特定于帧类型的功能。 |
无默认应用 |
supported_flags |
TxFlags
|
给定帧类型支持的标志。 |
无默认应用 |
PortId
在 fuchsia.hardware.network/port.fidl 中定义
设备端口标识符。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
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 中定义
帧类型。
| 名称 | 值 | 说明 |
|---|---|---|
ETHERNET |
1 |
|
IPV4 |
2 |
|
IPV6 |
3 |
MacFilterMode flexible
类型:uint32
在 fuchsia.hardware.network/mac.fidl 中定义
MAC 设备支持的地址过滤模式。
| 名称 | 值 | 说明 |
|---|---|---|
MULTICAST_FILTER |
0 |
设备仅接受发送到其自身单播地址的单播帧,或属于多播地址过滤条件列表的多播帧。 |
MULTICAST_PROMISCUOUS |
1 |
设备接受发送到其自身单播地址的单播帧或任何多播帧。 |
PROMISCUOUS |
2 |
设备接受所有帧。 |
灵活的 PortClass
类型:uint16
在 fuchsia.hardware.network/port.fidl 中定义
网络端口类。
注意:我们鼓励设备实现者提议向此枚举添加内容,以避免在没有合适匹配项的情况下使用不合适的变体。
| 名称 | 值 | 说明 |
|---|---|---|
ETHERNET |
1 |
|
WLAN_CLIENT |
2 |
|
PPP |
3 |
|
桥接 |
4 |
|
WLAN_AP |
5 |
|
VIRTUAL |
6 |
|
LOWPAN |
7 |
TABLES
DataVmo 资源
在 fuchsia.hardware.network/session.fidl 中定义
可用于数据平面操作的 VMO。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
id |
VmoId
|
|
2 |
vmo |
handle<vmo>
|
|
3 |
num_rx_buffers |
uint16
|
Netdevice 需要这些信息来决定何时可以安全地取消注册和取消提交。 |
DelegatedRxLease 资源
在 fuchsia.hardware.network/session.fidl 中定义
传播到应用的已获取租约。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
hold_until_frame |
uint64
|
观察租约的代理必须使用递增计数器跟踪收到的帧,以便在帧 此值可以解释为给定帧的基于 1 的索引,也可以解释为到目前为止交换的帧总数,两者在数学上是等效的。 此机制允许将接收到的帧中的唤醒租约句柄向上传递,并防止系统在帧完全处理之前暂停。 必填。 |
2 |
handle |
DelegatedRxLeaseHandle
|
表示所持租约的句柄。 必填。 |
DeviceBaseInfo
在 fuchsia.hardware.network/device.fidl 中定义
网络设备基本信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
rx_depth |
uint16
|
rx FIFO 中的项数上限(每个会话)。必填。
|
2 |
tx_depth |
uint16
|
tx FIFO 中的项数上限(每个会话)。必填。
|
3 |
buffer_alignment |
uint32
|
数据 VMO 中缓冲区的对齐要求。 数据 VMO 中的所有缓冲区都必须相对于 VMO 的开头与 |
4 |
max_buffer_length |
uint32
|
数据 VMO 中缓冲区的最大支持长度(以字节为单位)。 如果未定义缓冲区长度上限,则不存在。必须为非零值。 |
5 |
min_rx_buffer_length |
uint32
|
设备所需的最小接收缓冲区长度。必填。 |
6 |
min_tx_buffer_length |
uint32
|
设备所需的最小 tx 缓冲区长度。必填。 此值仅考虑 tx 载荷长度, 客户端必须对传出帧进行零填充,以满足所需的最小长度。 |
7 |
min_tx_buffer_head |
uint16
|
设备请求在 tx 缓冲区中作为 |
8 |
min_tx_buffer_tail |
uint16
|
设备请求在 tx 缓冲区中作为 |
9 |
max_buffer_parts |
uint8
|
设备接受的最大描述符链长度。必填。 |
12 |
min_rx_buffers |
uint16
|
客户端需要为网络设备准备的 Rx 缓冲区数量下限。如果使用多 VMO 支持,客户端应使用此信息来选择其 VMO 大小。 |
DeviceInfo
在 fuchsia.hardware.network/device.fidl 中定义
网络设备信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
min_descriptor_length |
uint8
|
描述符长度下限(以 64 位字为单位)。必填。 每个缓冲区描述符必须具有的最小长度,以便与此设备正确运行。支持额外帧元数据的设备会告知更大的最小描述符长度,以反映存储帧元数据所需的最小空间。 |
2 |
descriptor_version |
uint8
|
接受的描述符版本。必填。 |
3 |
base_info |
DeviceBaseInfo
|
设备基本信息。必填。 |
PortBaseInfo
在 fuchsia.hardware.network/port.fidl 中定义
端口基本信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
port_class |
PortClass
|
Port 的课程。必填。 |
2 |
rx_types |
vector<FrameType>:4
|
此端口上支持的 rx 帧类型。必填。 客户端可以打开会话,以在此端口上订阅 |
3 |
tx_types |
vector<FrameTypeSupport>:4
|
此端口上支持的 tx 帧类型。必填。 如果帧类型不在 某些网络设备可能需要执行部分帧解析和序列化,因此 |
PortGetCountersResponse
在 fuchsia.hardware.network/port.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
rx_frames |
uint64
|
此端口上的入站流量帧总数。 |
2 |
rx_bytes |
uint64
|
此端口上的入站流量字节总数。 |
3 |
tx_frames |
uint64
|
此端口上的出站帧总数。 |
4 |
tx_bytes |
uint64
|
此端口上的出站流量总字节数。 |
PortInfo
在 fuchsia.hardware.network/port.fidl 中定义
逻辑端口信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
id |
PortId
|
充电桩的标识符。必填。 |
2 |
base_info |
PortBaseInfo
|
PortStatus
在 fuchsia.hardware.network/port.fidl 中定义
动态端口信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
flags |
StatusFlags
|
端口状态标志。 |
2 |
mtu |
uint32
|
此端口的最大传输单元(以字节为单位)。 报告的 MTU 是整个帧的大小,包括此端口支持的任何协议的所有标头和尾部字节。 |
SessionInfo 资源
在 fuchsia.hardware.network/session.fidl 中定义
会话配置。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
descriptors |
handle<vmo>
|
包含描述符的 VMO。必填。 通过 FIFO 传输的 16 位索引会为此 VMO 中的描述符编制索引(字节偏移量 = 描述符长度 * 8 * 索引)。 |
2 |
data |
vector<DataVmo>:32
|
包含帧数据的 VMO。必填。 描述符包含字节偏移量和 VMO ID,用于为数据 VMO 中的区域编制索引。 对于由设备接口管理的 Rx VMO,VMO 会按 ID 顺序提交。 |
3 |
descriptor_version |
uint8
|
请求的描述符版本。必填。 如果网络设备不支持请求的描述符版本,Device.OpenSession 会失败并显示 |
4 |
descriptor_length |
uint8
|
描述符长度(以 64 位字为单位)。必填。
|
5 |
descriptor_count |
uint16
|
此会话可以使用的描述符总数。必填。 通过 rx 或 tx FIFO 传输的描述符索引必须在 [0, |
6 |
options |
SessionFlags
|
额外选项。如果不存在,则解释为空位掩码。 |
UNIONS
DelegatedRxLeaseHandle 灵活 资源
在 fuchsia.hardware.network/session.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
channel |
handle<channel>
|
表示租约的无类型通道。 关闭通道以释放租约。 |
2 |
eventpair |
handle<eventpair>
|
表示租用的事件对。 关闭 eventpair 以释放租用。 |
DevicePortEvent strict
在 fuchsia.hardware.network/device.fidl 中定义
端口创建和销毁事件。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
existing |
PortId
|
创建观察器时,端口已存在。 |
2 |
added |
PortId
|
已向设备添加新端口。 |
3 |
removed |
PortId
|
已从设备中移除端口。 |
4 |
idle |
Empty
|
现有端口的详尽列表。 |
Device_OpenSession_Result strict resource
在 fuchsia.hardware.network/device.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Device_OpenSession_Response
|
|
2 |
err |
zx/Status
|
Session_Attach_Result strict
在 fuchsia.hardware.network/session.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Session_Attach_Response
|
|
2 |
err |
zx/Status
|
Session_Detach_Result strict
在 fuchsia.hardware.network/session.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Session_Detach_Response
|
|
2 |
err |
zx/Status
|
BITS
EthernetFeatures strict
类型:uint32
在 fuchsia.hardware.network/frames.fidl 中定义
以太网帧子类型和功能。
| 名称 | 值 | 说明 |
|---|---|---|
RAW |
1 | 设备支持任何类型的以太网帧。 与指定所有其他标志相同。由不检查或解析出站流量的设备使用。 |
ETHERNET_II |
2 | 设备支持 EthernetII 帧。 |
E_802_1_Q |
4 | 设备支持 802.1q VLAN 附加。 |
E_802_1_Q_IN_Q |
8 | 设备支持 802.1 q-in-q 多 VLAN 标记添加。 仅在 |
E_802_3_LLC_SNAP |
16 | 设备支持 802.3 LLC + SNAP 以太网帧格式。 |
RxFlags strict
类型:uint32
在 fuchsia.hardware.network/frames.fidl 中定义
设备在 rx 路径上将缓冲区移交给客户端时设置的标志。
由设备在 rx 描述符的 inbound_flags 字段中设置。
| 名称 | 值 | 说明 |
|---|---|---|
FULL_CHECKSUMS_VERIFIED |
1 | 设备验证了一个或多个“完整”校验和(即通过 UDP 或 TCP 数据包等完整内容计算出的互联网校验和)。 已验证校验和的数量减 1 由 rx 描述符的 |
RX_OVERRUN |
536870912 | 设备发生了硬件 rx 超限。 Rx 超限通常由硬件控制器在检测到帧事件但无法捕获帧数据时设置。一旦在入站帧上设置了此标志,设备应清除控制器标志,以便检测和报告未来的溢出。 |
RX_VALIDATION_ERROR |
1073741824 | 如果执行了帧验证(例如通过硬件加速功能)且验证失败,则会设置此位。 请务必注意,某些设备可能只是丢弃验证失败的帧,而不会通知客户端。只有在创建会话时选择了 |
SessionFlags strict
类型:uint16
在 fuchsia.hardware.network/session.fidl 中定义
其他会话选项。
| 名称 | 值 | 说明 |
|---|---|---|
REPORT_INVALID_RX |
1 | 接收无效的 rx 帧。 标记为 |
RECEIVE_RX_POWER_LEASES |
2 | 接收 rx 功率租约。 标有 |
StatusFlags strict
类型:uint32
在 fuchsia.hardware.network/port.fidl 中定义
端口状态位,在 PortStatus.flags 中报告。
| 名称 | 值 | 说明 |
|---|---|---|
线上 |
1 | 端口处于在线状态,即数据路径处于打开状态,任何正在进行的会话都可以发送和接收帧。 |
TxFlags flexible
类型:uint32
在 fuchsia.hardware.network/frames.fidl 中定义
客户端在 tx 路径上将缓冲区交给设备时设置的标志。
由客户端在 tx 描述符的 inbound_flags 字段中设置。
| 名称 | 值 | 说明 |
|---|---|---|
COMPUTE_GENERIC_CHECKSUM |
1 | 请求设备根据相对于帧开头的起始字节索引和指示从起始索引到必须放置结果的校验和字段的偏移量的字节偏移量来计算通用互联网校验和。 起始偏移量和校验和字段的偏移量由 tx 描述符的 |
TxReturnFlags flexible
类型:uint32
在 fuchsia.hardware.network/frames.fidl 中定义
设备在将 tx 缓冲区返回给客户端时设置的标志。
由设备在 tx 描述符的 return_flags 字段中设置。
| 名称 | 值 | 说明 |
|---|---|---|
TX_RET_NOT_SUPPORTED |
1 |
始终与 |
TX_RET_OUT_OF_RESOURCES |
2 | 无法分配资源来发送帧。 始终与 |
TX_RET_NOT_AVAILABLE |
4 | 设备不可用(离线或断开连接);帧未发送。 始终与 |
TX_RET_ERROR |
2147483648 | 发送此帧时出错。 |
常量
| 名称 | 值 | 类型 | 说明 |
|---|---|---|---|
| FRAME_FEATURES_RAW |
1
|
uint32 |
原始帧的统一定义。 不执行任何出站流量解析的设备应在 FrameTypeSupport 条目中定义 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
|
渠道 |