Fuchsia.hardware.network

添加数量:7

协议

设备

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

网络设备。

添加: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

DeviceInstance

fuchsia.hardware.network/instance.fidl 中定义

在 devfs 上公开的网络设备实例。

添加:HEAD

GetDevice

连接到设备实现。

  • 请求 device 设备句柄。

请求

名称类型
device server_end<Device>

诊断

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

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

添加:HEAD

LogDebugInfoToSyslog

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

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

请求

<EMPTY>

响应

<EMPTY>

MacAddressing

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

添加:HEAD

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 中定义

属于设备的逻辑端口。

添加:HEAD

克隆

与此端口建立新连接。

  • 针对新连接的服务器端请求 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 中定义

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

添加: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 发送无效的缓冲区描述符,则会话会关闭并显示错误 epita 。无效描述符包括: - 描述符索引大于 SessionInfo.descriptor_count。- 大于 MAX_DESCRIPTOR_CHAIN 的描述符链。 - 小于 Info.min_rx_buffer_length 的 rx 缓冲区。 - 小于 Info.min_tx_buffer_length 的 tx 缓冲区。 - 不遵循 Info.min_tx_buffer_headInfo.min_tx_buffer_tail 的 tx 缓冲区。

添加: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,并继续关闭会话通道。收到 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 中定义

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

添加:HEAD

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 中定义

添加:HEAD

<EMPTY>

Fifos 资源

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

数据平面 FIFO。

添加: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 位,以告知客户端允许使用所有帧功能。

添加:HEAD

字段类型说明默认
type FrameType

此支持条目引用的帧类型。

无默认值
features uint32

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

无默认值
supported_flags TxFlags

给定帧类型支持的标志。

无默认值

PortId

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

设备端口标识符。

添加:HEAD

字段类型说明默认
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
2
3
4
5

FrameType 严格

类型:uint8

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

帧类型。

添加:HEAD

名称说明
1
2
3

InfoType 严格

类型:uint32

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

附加到帧的元数据信息的类型。

添加:HEAD

名称说明
0

没有额外信息。

MacFilterMode 严格

类型:uint32

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

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

添加:HEAD

名称说明
0

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

1

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

2

设备接受所有帧。

RxAcceleration 严格

类型:uint8

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

可用的 rx 加速功能。

特征会由 Info.rx_accel 中报告的可用值映射到描述符中的 RXACCEL* 位。

添加:HEAD

名称说明
0

入站 rx 帧已验证以太网帧检查序列。

1

入站 rx 帧验证了 IPv4 校验和。

2

入站 rx 帧验证了 TCP 校验和。

3

入站 rx 帧验证了 UDP 校验和。

TxAcceleration 严格

类型:uint8

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

可用的 TX 加速功能。

特征会由 Info.tx_accel 中报告的可用值映射到描述符中的 TXACCEL* 位。

添加:HEAD

名称说明
0

请求设备计算以太网帧检查序列并将其写入到位。

1

请求设备计算 IPv4 校验和并将其写入原位。

2

请求设备计算 TCP 校验和并将其写入原位。

3

请求设备计算 UDP 校验和并将其写入原位。

表格

DeviceBaseInfo

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

网络设备基础信息。

添加: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

设备所需的最小 rx 缓冲区长度。必选。

min_tx_buffer_length uint32

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

此值仅考虑传输载荷长度,min_tx_buffer_headmin_tx_buffer_tail 不属于此值。

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

min_tx_buffer_head uint16

设备请求的可用空间(tx 缓冲区中的 head 空间)。必选。

min_tx_buffer_tail uint16

设备请求的可用空间(tx 缓冲区中的 tail 空间)。必选。

max_buffer_parts uint8

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

rx_accel vector<RxAcceleration>[16]

此设备的可用 rx 加速标志。

rx_accel 使用 RxAcceleration 描述的语义加速功能来映射帧描述符中的 RX_ACCEL_* 标志。rx_accel 的位置 n 表示 RX_ACCEL_n 标志的含义。

如果未提供,则解释为空。

tx_accel vector<TxAcceleration>[16]

此设备的可用 tx 加速标志。

tx_accel 使用 TxAcceleration 描述的语义加速特征来映射帧描述符中的 TX_ACCEL_* 标志。tx_accel 的位置 n 表示 TX_ACCEL_n 标志的含义。

如果未提供,则解释为空。

DeviceInfo

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

网络设备信息。

添加:HEAD

序数字段类型说明
min_descriptor_length uint8

描述符长度下限(64 位字)。必选。

每个缓冲区描述符为使此设备正常运行而必须具备的最小长度。支持额外帧元数据的设备会通知较长的最小描述符长度,以反映能够存储帧元数据所需的最小空间。

descriptor_version uint8

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

base_info DeviceBaseInfo

设备基础信息。必填。

PortBaseInfo

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

端口基础信息。

添加:HEAD

序数字段类型说明
port_class PortClass

Port 的类。必选。

rx_types vector<FrameType>[4]

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

客户端可在此端口上打开订阅部分 rx_types 帧类型的会话。

tx_types vector<FrameTypeSupport>[4]

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

对于发送到此端口的帧,如果帧类型不在 tx_types 中,则返回错误。

某些网络设备可能需要执行部分帧解析和序列化,因此,tx_typesFrameTypeSupport 的矢量,其中包含每个帧类型的特定功能。例如,如果设备支持以太网帧但需要转换以太网标头,则可能仅支持标准以太网 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 中定义

逻辑端口信息。

添加:HEAD

序数字段类型说明
id PortId

端口的标识符。必选。

base_info PortBaseInfo

PortStatus

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

动态端口信息。

添加:HEAD

序数字段类型说明
flags StatusFlags

端口状态标志。

mtu uint32

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

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

SessionInfo 资源

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

会话配置。

添加:HEAD

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

包含描述符的 VMO。必选。

通过 FIFO 传输的 16 位索引,用于对此 VMO 中的描述符建立索引(字节偏移量 = descriptor_length * 8 * 索引)。

data handle<vmo>

包含帧数据的 VMO。必选。

描述符包含用于为 data 中的任意区域编制索引的字节偏移量。

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

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

联合

DevicePortEvent 严格

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

端口创建和销毁事件。

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

创建观察器时就存在端口。

added PortId

已向设备添加新端口。

removed PortId

端口已从设备中移除。

idle Empty

现有端口的列表已用尽。

Device_OpenSession_Result 严格资源

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

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

Session_Attach_Result 严格

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

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

Session_Detach_Result 严格

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

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

BITS

以太网功能严格

类型:uint32

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

以太网帧子类型和功能。

添加: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 严格

类型:uint32

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

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

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

添加:HEAD

名称说明
1

加速标志 0。

加速标志会映射到 Info.rx_accel设备报告的加速功能。rx_accel 中的第 n 个特征映射到 RX_ACCEL_n RxFlag

2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
536870912

设备遇到硬件 rx 溢出。

当检测到帧事件但无法捕获帧数据时,硬件控制器通常会设置 Rx 溢出。对入站帧进行设置后,设备应清除控制器标志,以便可以检测和报告未来的超载。

1073741824

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

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

2147483648

这是由 tx 请求创建的回显 tx 帧。

只能在具有 LISTEN_TX 标志的会话中设置。

SessionFlags 严格

类型:uint16

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

其他会话选项。

添加:HEAD

名称说明
1

作为主会话附加。

标有 PRIMARY 位的会话会获得以下不同的处理方式:

  • 如果未连接任何主要会话,设备将不会向非主要会话提供 rx 帧。
  • 如果只有一个主会话处于活动状态,它可能会从后备硬件获取零复制数据路径(如果底层实现支持)。
2

监听传出帧。

LISTEN_TX 会话会在其 rx 路径上接收(来自所有会话)的所有传出帧。可用于窥探流量。标有 LISTEN_TX 的会话也可以发送帧,但应注意的是,它们始终会在其 rx 路径上收到这些帧(不执行源会话过滤)。

4

接收了无效的 rx 帧。

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

StatusFlags 严格

类型:uint32

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

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

添加:HEAD

名称说明
1

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

TxFlags 严格

类型:uint32

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

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

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

添加:HEAD

名称说明
1

加速标志 0。

加速标志会映射到 Info.tx_accelDevice 报告的加速功能。tx_accel 中的第 n 个特征映射到 TX_ACCEL_n TxFlag

2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768

TxReturnFlags 严格

类型:uint32

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

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

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

添加: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

添加:HEAD
MAX_ACCEL_FLAGS 16 uint32

加速标志的数量上限。

每个描述符都有 16 位用于放置加速标记(RxFlagsTxFlags)的空间,因此报告的加速度数上限为 16。每个描述符都会通过将支持的加速度 (Info.rx_accel 和 (Info.tx_accel) 矢量中的索引映射到相应加速标志位字段中的位来报告已应用 (RxFlags) 或请求的加速度 (TxFlags)。

添加: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