协议
设备
在 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
|
DeviceInstance
在 fuchsia.hardware.network/instance.fidl 中定义
在 devfs 上公开的网络设备实例。
GetDevice
连接到设备实现。
- 请求
device
设备句柄。
请求
名称 | 类型 |
---|---|
device |
server_end<Device>
|
诊断
在 fuchsia.hardware.network/diagnostics.fidl 中定义
在设备和上层之间提供双向通信,以交换设备运行状况信息。
LogDebugInfoToSyslog
要求设备在系统日志中生成调试信息的请求。
生成设备调试信息后,调用会返回。
请求
<EMPTY>
响应
<EMPTY>
MacAddressing
在 fuchsia.hardware.network/mac.fidl 中定义
AddMulticastAddress
向多播组列表中添加多播地址。
对 SetMode
的调用不会影响所保留的多播地址列表。如果设备模式不是 MULTICAST_FILTER
,系统会忽略多播地址列表。
- 请求
address
多播地址以添加到列表中。
- 如果
address
不是多播地址,则响应status
ZX_ERR_INVALID_ARGS
。
请求
名称 | 类型 |
---|---|
address |
fuchsia.net/MacAddress
|
响应
名称 | 类型 |
---|---|
status |
zx/Status
|
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/Status
|
SetMode
将此设备的请求操作模式设置为 mode
。
请求的模式附加到与设备的当前客户端连接。由于多个客户端可同时连接到同一设备,因此限制最少的模式是主动对底层设备实现生效的模式。
如果设备不支持请求的模式,但支持比请求的模式更开放的模式,则无论 SetMode
为何都会成功。否则,如果设备仅支持比请求的模式更为严格的模式,SetMode
会返回 ZX_ERR_NOT_SUPPORTED
。
客户端必须知道,要访问的资源是共享的,并且设备可以在比所请求资源更开放的级别有效运行(尽管绝不会限制更多资源)。
- 请求附加
mode
请求模式。
- 响应
status
ZX_ERR_NOT_SUPPORTED
表示设备仅支持比请求的模式更严格的模式。
请求
名称 | 类型 |
---|---|
mode |
MacFilterMode
|
响应
名称 | 类型 |
---|---|
status |
zx/Status
|
端口
在 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>
|
GetInfo
获取有关端口的信息。
- 响应
info
端口信息。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
info |
PortInfo
|
GetMac
连接到与该端口关联的 MacAddressing。
- 请求
mac
MAC 句柄。如果此端口不支持 MAC 寻址,则通过ZX_ERR_NOT_SUPPORTED
关闭。
请求
名称 | 类型 |
---|---|
mac |
server_end<MacAddressing>
|
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 发送无效的缓冲区描述符,则会话会关闭并显示错误 epita 。无效描述符包括: - 描述符索引大于 SessionInfo.descriptor_count。- 大于 MAX_DESCRIPTOR_CHAIN 的描述符链。 - 小于 Info.min_rx_buffer_length 的 rx 缓冲区。 - 小于 Info.min_tx_buffer_length 的 tx 缓冲区。 - 不遵循 Info.min_tx_buffer_head 或 Info.min_tx_buffer_tail 的 tx 缓冲区。
附加到信息
将会话附加到 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,并继续关闭会话通道。收到 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
|
StatusWatcher
在 fuchsia.hardware.network/port.fidl 中定义
提供一种接收端口状态更改更新的方法。
WatchStatus
在端口的状态发生变化之前,WatchStatus
会阻塞。
对 WatchStatus
的第一次调用会立即返回并显示当前端口状态,后续调用在端口状态与此 StatusWatcher
返回的最后一个状态不同时完成后续调用。
如果创建 StatusWatcher
时使用了大于 1 的缓冲区值,则 WatchStatus
可能会返回队列状态更改,具体取决于自上次调用 WatchStatus
以来发生了多少次状态更改。
- 响应
device_status
最近的端口状态。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
port_status |
PortStatus
|
结构
Device_OpenSession_Response 资源
在 fuchsia.hardware.network/device.fidl 中定义
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
session |
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>
枚举
DeviceClass 严格
类型:uint16
在 fuchsia.hardware.network/port.fidl 中定义
网络设备类别。
注意:建议设备实现者建议对此枚举进行补充,以避免在没有合适的匹配项时使用不适配变体。
名称 | 值 | 说明 |
---|---|---|
虚拟 |
0 |
|
以太网 |
1 |
|
WLAN |
2 |
|
PPP |
3 |
|
BRIDGE |
4 |
|
WLAN_AP |
5 |
FrameType 严格
类型:uint8
在 fuchsia.hardware.network/frames.fidl 中定义
帧类型。
名称 | 值 | 说明 |
---|---|---|
以太网 |
1 |
|
IPV4 |
2 |
|
IPV6 |
3 |
InfoType 严格
类型:uint32
在 fuchsia.hardware.network/frames.fidl 中定义
附加到帧的元数据信息的类型。
名称 | 值 | 说明 |
---|---|---|
NO_INFO |
0 |
没有额外信息。 |
MacFilterMode 严格
类型:uint32
在 fuchsia.hardware.network/mac.fidl 中定义
MAC 设备支持的地址过滤模式。
名称 | 值 | 说明 |
---|---|---|
MULTICAST_FILTER |
0 |
设备仅接受发送到其自己的单播地址的单播帧,或属于多播地址过滤器列表中的多播帧。 |
MULTICAST_PROMISCUOUS |
1 |
设备接受发送到其自己的单播地址或任何多播帧的单播帧。 |
承诺 |
2 |
设备接受所有帧。 |
RxAcceleration 严格
类型:uint8
在 fuchsia.hardware.network/frames.fidl 中定义
可用的 rx 加速功能。
特征会由 Info.rx_accel 中报告的可用值映射到描述符中的 RXACCEL*
位。
名称 | 值 | 说明 |
---|---|---|
VALIDATED_ETHERNET_FCS |
0 |
入站 rx 帧已验证以太网帧检查序列。 |
VALIDATED_IPV4_CHECKSUM |
1 |
入站 rx 帧验证了 IPv4 校验和。 |
VALIDATED_TCP_CHECKSUM |
2 |
入站 rx 帧验证了 TCP 校验和。 |
VALIDATED_UDP_CHECKSUM |
3 |
入站 rx 帧验证了 UDP 校验和。 |
TxAcceleration 严格
类型:uint8
在 fuchsia.hardware.network/frames.fidl 中定义
可用的 TX 加速功能。
特征会由 Info.tx_accel 中报告的可用值映射到描述符中的 TXACCEL*
位。
名称 | 值 | 说明 |
---|---|---|
COMPUTE_ETHERNET_FCS |
0 |
请求设备计算以太网帧检查序列并将其写入到位。 |
COMPUTE_IPV4_CHECKSUM |
1 |
请求设备计算 IPv4 校验和并将其写入原位。 |
COMPUTE_TCP_CHECKSUM |
2 |
请求设备计算 TCP 校验和并将其写入原位。 |
COMPUTE_UDP_CHECKSUM |
3 |
请求设备计算 UDP 校验和并将其写入原位。 |
表格
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
|
设备所需的最小 rx 缓冲区长度。必选。 |
6 |
min_tx_buffer_length |
uint32
|
设备所需的最小 tx 缓冲区长度。必选。 此值仅考虑传输载荷长度, 客户端必须对传出帧进行零填充,才能满足所需的最小长度。 |
7 |
min_tx_buffer_head |
uint16
|
设备请求的可用空间(tx 缓冲区中的 |
8 |
min_tx_buffer_tail |
uint16
|
设备请求的可用空间(tx 缓冲区中的 |
9 |
max_buffer_parts |
uint8
|
设备接受的最大描述符链长度。必选。 |
10 |
rx_accel |
vector<RxAcceleration>[16]
|
此设备的可用 rx 加速标志。
如果未提供,则解释为空。 |
11 |
tx_accel |
vector<TxAcceleration>[16]
|
此设备的可用 tx 加速标志。
如果未提供,则解释为空。 |
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 中的描述符建立索引(字节偏移量 = descriptor_length * 8 * 索引)。 |
2 |
data |
handle<vmo>
|
包含帧数据的 VMO。必选。 描述符包含用于为 |
3 |
descriptor_version |
uint8
|
请求的描述符版本。必选。 如果网络设备不支持请求的描述符版本,Device.OpenSession 会失败并显示 |
4 |
descriptor_length |
uint8
|
描述符长度(64 位字词)。必选。
|
5 |
descriptor_count |
uint16
|
此会话可以使用的描述符总数。必选。 通过 rx 或 tx FIFO 传输的描述符索引必须在 [0, |
6 |
options |
SessionFlags
|
额外选项。如果不存在,则解释为空位掩码。 |
联合
DevicePortEvent 严格
在 fuchsia.hardware.network/device.fidl 中定义
端口创建和销毁事件。
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
existing |
PortId
|
创建观察器时就存在端口。 |
2 |
added |
PortId
|
已向设备添加新端口。 |
3 |
removed |
PortId
|
端口已从设备中移除。 |
4 |
idle |
Empty
|
现有端口的列表已用尽。 |
Device_OpenSession_Result 严格资源
在 fuchsia.hardware.network/device.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Device_OpenSession_Response
|
|
2 |
err |
zx/Status
|
Session_Attach_Result 严格
在 fuchsia.hardware.network/session.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Session_Attach_Response
|
|
2 |
err |
zx/Status
|
Session_Detach_Result 严格
在 fuchsia.hardware.network/session.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Session_Detach_Response
|
|
2 |
err |
zx/Status
|
BITS
以太网功能严格
类型: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 严格
类型:uint32
在 fuchsia.hardware.network/frames.fidl 中定义
设备在将缓冲区移交给 rx 路径上的客户端时设置的标志。
由设备在 rx 描述符的 inbound_flags
字段中设置。
名称 | 值 | 说明 |
---|---|---|
RX_ACCEL_0 |
1 | 加速标志 0。 加速标志会映射到 Info.rx_accel 中设备报告的加速功能。 |
RX_ACCEL_1 |
2 | |
RX_ACCEL_2 |
4 | |
RX_ACCEL_3 |
8 | |
RX_ACCEL_4 |
16 | |
RX_ACCEL_5 |
32 | |
RX_ACCEL_6 |
64 | |
RX_ACCEL_7 |
128 | |
RX_ACCEL_8 |
256 | |
RX_ACCEL_9 |
512 | |
RX_ACCEL_10 |
1024 | |
RX_ACCEL_11 |
2048 | |
RX_ACCEL_12 |
4096 | |
RX_ACCEL_13 |
8192 | |
RX_ACCEL_14 |
16384 | |
RX_ACCEL_15 |
32768 | |
RX_OVERRUN |
536870912 | 设备遇到硬件 rx 溢出。 当检测到帧事件但无法捕获帧数据时,硬件控制器通常会设置 Rx 溢出。对入站帧进行设置后,设备应清除控制器标志,以便可以检测和报告未来的超载。 |
RX_VALIDATION_ERROR |
1073741824 | 如果执行帧验证(例如通过硬件加速功能)但失败,则设置此位。 请务必注意,有些设备可能只是舍弃验证失败的帧,且永远不会通知客户端。只有在创建会话时选择了 |
RX_ECHOED_TX |
2147483648 | 这是由 tx 请求创建的回显 tx 帧。 只能在具有 |
SessionFlags 严格
类型:uint16
在 fuchsia.hardware.network/session.fidl 中定义
其他会话选项。
名称 | 值 | 说明 |
---|---|---|
主电子邮件 |
1 | 作为主会话附加。 标有
|
LISTEN_TX |
2 | 监听传出帧。
|
REPORT_INVALID_RX |
4 | 接收了无效的 rx 帧。 标有 |
StatusFlags 严格
类型:uint32
在 fuchsia.hardware.network/port.fidl 中定义
端口状态位,在 PortStatus.flags 中报告。
名称 | 值 | 说明 |
---|---|---|
ONLINE |
1 | 端口在线,即数据路径处于开放状态,任何正在进行的会话都可以发送和接收帧。 |
TxFlags 严格
类型:uint32
在 fuchsia.hardware.network/frames.fidl 中定义
客户端在将缓冲区移交给 tx 路径上的客户端时设置的标记。
由客户端在 tx 描述符的 inbound_flags
字段上设置。
名称 | 值 | 说明 |
---|---|---|
TX_ACCEL_0 |
1 | 加速标志 0。 加速标志会映射到 Info.tx_accel 中 Device 报告的加速功能。 |
TX_ACCEL_1 |
2 | |
TX_ACCEL_2 |
4 | |
TX_ACCEL_3 |
8 | |
TX_ACCEL_4 |
16 | |
TX_ACCEL_5 |
32 | |
TX_ACCEL_6 |
64 | |
TX_ACCEL_7 |
128 | |
TX_ACCEL_8 |
256 | |
TX_ACCEL_9 |
512 | |
TX_ACCEL_10 |
1024 | |
TX_ACCEL_11 |
2048 | |
TX_ACCEL_12 |
4096 | |
TX_ACCEL_13 |
8192 | |
TX_ACCEL_14 |
16384 | |
TX_ACCEL_15 |
32768 |
TxReturnFlags 严格
类型: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 条目中定义 添加:HEAD
|
MAX_ACCEL_FLAGS |
16
|
uint32 |
加速标志的数量上限。 每个描述符都有 16 位用于放置加速标记(RxFlags 和 TxFlags)的空间,因此报告的加速度数上限为 16。每个描述符都会通过将支持的加速度 (Info.rx_accel 和 (Info.tx_accel) 矢量中的索引映射到相应加速标志位字段中的位来报告已应用 ( 添加:HEAD
|
MAX_DESCRIPTOR_CHAIN |
4
|
uint8 |
描述单个帧的链式描述符的数量上限。 添加:HEAD
|
MAX_FRAME_TYPES |
4
|
uint32 |
rx 或 tx 支持的帧类型的数量上限。 添加:HEAD
|
MAX_PORTS |
32
|
uint8 |
在给定时间连接到一台设备的端口数上限。 添加:HEAD
|
MAX_SESSION_NAME |
64
|
uint32 |
会话标签的长度上限。 添加:HEAD
|
MAX_STATUS_BUFFER |
50
|
uint32 |
可由 StatusWatcher 缓冲的状态样本的数量上限。 添加:HEAD
|
别名
名称 | 值 | 说明 |
---|---|---|
BasePortId |
uint8 |
设备内端口的基本标识符。始终小于 MAX_PORTS。 添加:HEAD
|
PortClass |
fuchsia.hardware.network/DeviceClass |
网络端口类。 添加:HEAD
|