PROTOCOLS
Device
Defined in fuchsia.hardware.network/device.fidl
A Network Device.
Clone
Establishes a new connection to this device.
- request
devicethe server end for the new connection.
Request
| Name | Type |
|---|---|
device |
server_end:Device
|
GetInfo
Obtain information about device
- response
infodevice information.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
info |
DeviceInfo
|
GetPort
Connects to a port the given id.
- request
idport to connect to. - request
portserver end of port channel.
port is closed with a ZX_ERR_NOT_FOUND epitaph if no port with id
exists.
Request
| Name | Type |
|---|---|
id |
PortId
|
port |
server_end:Port
|
GetPortWatcher
Connects a PortWatcher to this device.
- request
watcherserver end of watcher channel.
Request
| Name | Type |
|---|---|
watcher |
server_end:PortWatcher
|
OpenSession
Opens a new session with the network device.
- request
session_nameis used as a debugging label attached to this session. - request
session_infocontains the necessary information to setup the session's data exchange.
- response
sessiona handle to control the session. - response
fifosdata-plane FIFOs attached to the session.
- error
ZX_ERR_NOT_SUPPORTEDifsession_infocontains not supported frame types or descriptors set up. - error
ZX_ERR_INVALID_ARGSifsession_infois missing fields or contains invalid information. - error
ZX_ERR_INTERNALif the data VMO is rejected by the underlying device.
Request
| Name | Type |
|---|---|
session_name |
string:64
|
session_info |
SessionInfo
|
Response
| Name | Type |
|---|---|
payload |
Device_OpenSession_Result
|
DeviceInstance
Defined in fuchsia.hardware.network/instance.fidl
An instance of a network device exposed on devfs.
GetDevice
Connects to the Device implementation.
- request
devicedevice handle.
Request
| Name | Type |
|---|---|
device |
server_end:Device
|
Diagnostics
Defined in fuchsia.hardware.network/diagnostics.fidl
Provides two way communications between device and upper layers to exchange device health information.
LogDebugInfoToSyslog
Requests that the device produces debugging information in the system logs.
The call returns once device debug information has been produced.
Request
<EMPTY>
Response
<EMPTY>
MacAddressing
Defined in fuchsia.hardware.network/mac.fidl
AddMulticastAddress
Adds multicast address to the list of multicast groups.
The list of multicast addresses kept is untouched by calls to SetMode.
If the device's mode is not MULTICAST_FILTER, the list of multicast
addresses is ignored.
- request
addressmulticast address to add to the list.
- response
statusZX_ERR_INVALID_ARGSifaddressis not a multicast address. - response
statusZX_ERR_NO_RESOURCESif there are more thanMAX_MAC_FILTERaddresses installed.
Request
| Name | Type |
|---|---|
address |
fuchsia.net/MacAddress
|
Response
| Name | Type |
|---|---|
status |
zx/Status
|
GetUnicastAddress
Gets the Device's current unicast MAC address.
Implementers of this API do not need to return a uniquely identifiable MAC; the unicast address returned is the one that is currently in use to filter unicast frames, or that identifies the device on a link it's currently on. Users of this API must not rely on the stability or uniqueness of the returned value to identify or disambiguate device instances.
- response
addressdevice's unicast MAC address.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
address |
fuchsia.net/MacAddress
|
RemoveMulticastAddress
Removes multicast address from the list of multicast groups.
- request
addressmulticast address to remove from the list.
- response
statusZX_ERR_INVALID_ARGSifaddressis not a multicast address.
Request
| Name | Type |
|---|---|
address |
fuchsia.net/MacAddress
|
Response
| Name | Type |
|---|---|
status |
zx/Status
|
SetMode
Sets requested operating mode of this device to mode.
The requested mode is attached to the current client connection to the device. Because multiple clients can be attached to the same device at once, the mode with the least restrictions is the one actively put into effect into the underlying device implementation.
If the device does not support the requested mode, but supports a mode
that is more open than the requested one, SetMode succeeds regardless.
Otherwise, if the device only supports more restrictive modes than the
one requested, SetMode returns ZX_ERR_NOT_SUPPORTED.
Clients must be aware that the resource being accessed is shared, and that the device may be effectively operating at a more open level than the one that was requested (although never at one more restrictive).
- request
moderequest mode to attach to.
- response
statusZX_ERR_NOT_SUPPORTEDit the device only supports mode more restrictive than the one requested.
Request
| Name | Type |
|---|---|
mode |
MacFilterMode
|
Response
| Name | Type |
|---|---|
status |
zx/Status
|
Port
Defined in fuchsia.hardware.network/port.fidl
A logical port belonging to a Device.
Clone
Establishes a new connection to this port.
- request
portthe server end for the new connection.
Request
| Name | Type |
|---|---|
port |
server_end:Port
|
GetCounters
Retrieves a snapshot of traffic counters on this port.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
payload |
PortGetCountersResponse
|
GetDevice
Connects to the Device this port belongs to.
- request
devicegrants access to the parent device.
Request
| Name | Type |
|---|---|
device |
server_end:Device
|
GetDiagnostics
Grants access to Diagnostics for this port.
- request
diagnosticsgrants access to diagnostics information.
Request
| Name | Type |
|---|---|
diagnostics |
server_end:Diagnostics
|
GetInfo
Obtain information about port.
- response
infoport information.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
info |
PortInfo
|
GetMac
Connects to a MacAddressing associated with the port.
- request
macmac handle. Closed withZX_ERR_NOT_SUPPORTEDif this port does not support mac addressing.
Request
| Name | Type |
|---|---|
mac |
server_end:MacAddressing
|
GetStatus
Obtain the operating port status.
- response
statussnapshot of port's current status.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
status |
PortStatus
|
GetStatusWatcher
Connects to a StatusWatcher to observe port status changes.
- request
watcherhandle to the status watcher. - request
bufferthe number of status changes that the client requests to be stored byStatusWatcher. Values are capped at MAX_STATUS_BUFFER. A value of 0 or 1 causes theStatusWatcherto not keep any buffers on status changed. Clients that need to observe all changes to status (as opposed to only the current state) are encouraged to set a buffer value larger than 1, so that all edges can be observed. IfStatusWatcher's internal queue is filled and new status changes occur, the oldest samples will be dropped to make room for new ones.
Request
| Name | Type |
|---|---|
watcher |
server_end:StatusWatcher
|
buffer |
uint32
|
PortWatcher
Defined in fuchsia.hardware.network/device.fidl
Provides iteration over and updates for ports attached to a device.
Watch
Get the next port event.
The first N calls return DevicePortEvent.existing where N is the number of ports present on the device at the time of the watcher's creation. The next call returns DevicePortEvent.idle to indicate the end of existing ports. Subsequent calls block until a port is added (DevicePortEvent.added) or removed (DevicePortEvent.removed).
The server closes the PortWatcher channel with ZX_ERR_CANCELED if
the number of unread events reaches a server-selected limit that is at
least two times MAX_PORTS. Clients are encouraged to maintain a
hanging call to Watch at all times to avoid triggering this condition.
- response
eventnext port event.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
event |
DevicePortEvent
|
Session
Defined in fuchsia.hardware.network/session.fidl
Represents a session with a Network device.
A session has a data plane and a control plane. The Session protocol
represents the control plane of the session and the FIFOs and VMOs exchanged
during the Device.OpenSession call are the data plane. Lifetime of the
session is controlled by a Session protocol handle.
Sessions must attach to ports of interest to start receiving and sending data. Sessions are always created with no ports attached.
If a port is destroyed from the underlying device, it is automatically detached from the session.
Inbound traffic is dispatched to all open sessions. Devices typically operate with a single primary session, see SessionFlags.PRIMARY. Each additional open session to the same device causes data copy overhead on the device's data path.
The session is closed with an error epitaph if an invalid buffer descriptor is sent over either the tx or rx FIFOs. Invalid descriptors include: - Descriptor index larger than SessionInfo.descriptor_count. - Descriptor chains larger than MAX_DESCRIPTOR_CHAIN. - rx buffers smaller than Info.min_rx_buffer_length. - tx buffers smaller than Info.min_tx_buffer_length. - tx buffers not respecting Info.min_tx_buffer_head or Info.min_tx_buffer_tail.
Attach
Attaches the session to port.
Once attached, the session starts to receive the subscribed frames over
the data FIFOs and it may send frames destined to the specified port.
- request
portport to subscribe to. - request
rx_framesFrame types of interest on the port.
- error
ZX_ERR_NOT_FOUNDifportis not valid. - error
ZX_ERR_INVALID_ARGSifrx_framesis not a subset of the port's supported frames. - error
ZX_ERR_ALREADY_BOUNDifportis already attached.
Request
| Name | Type |
|---|---|
port |
PortId
|
rx_frames |
vector<FrameType>:4
|
Response
| Name | Type |
|---|---|
payload |
Session_Attach_Result
|
Close
Cleanly closes a session.
This will cause the session to send a ZX_ERR_CANCELLED epitaph and
proceed to close the Session channel. Clients may only assume that they
own all the buffers that are currently owned by the session (sent over
either the rx or tx FIFOs) once the epitaph is received. Closing the rx
or tx FIFO is equivalent to calling Close.
Request
<EMPTY>
Detach
Detaches the session from port.
Once detached, the session stops receiving frames from port. Frames
sent to a detached port may be returned with an error. It is not
necessary to call Detach on ports that are removed from the device,
doing so causes ZX_ERR_NOT_FOUND to be returned.
- request
portport to subscribe to.
- error
ZX_ERR_NOT_FOUNDif the session is not currently attached to the port.
Request
| Name | Type |
|---|---|
port |
PortId
|
Response
| Name | Type |
|---|---|
payload |
Session_Detach_Result
|
WatchDelegatedRxLease
Watchers for delegated receive wakeup leases.
Calls block until a lease is delegated by the device. If a call to
WatchDelegatedRxLease is made while a previous call is blocking, the
session is closed with ZX_ERR_BAD_STATE. Will never yield any values
for sessions created without SessionFlags.RECEIVE_RX_POWER_LEASES.
Given a single lease is assumed sufficient to keep the system awake, the
server only keeps a single lease in its buffer. If a new delegated lease
becomes available and the client hasn't popped the previous one with a
call to WatchDelegatedRxLease, the server drops the previously pending
lease.
See DelegatedRxLease for how to handle delegated leases.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
lease |
DelegatedRxLease
|
StatusWatcher
Defined in fuchsia.hardware.network/port.fidl
Provides a way to receive updates on port status changes.
WatchStatus
WatchStatus blocks until the port's status has changed.
The first call to WatchStatus returns immediately with the current
port status, subsequent calls complete when the port status differs from
the last one that was returned through this StatusWatcher.
If StatusWatcher was created with a buffer value larger than 1,
WatchStatus may return a queued status change, depending on how many
status changed happened since the last call to WatchStatus.
- response
device_statusthe most recent port status.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
port_status |
PortStatus
|
STRUCTS
Device_OpenSession_Response resource
Defined in fuchsia.hardware.network/device.fidl
| Field | Type | Description | Default |
|---|---|---|---|
session |
client_end:Session
|
No default | |
fifos |
Fifos
|
No default |
Empty
Defined in fuchsia.hardware.network/device.fidl
<EMPTY>
Fifos resource
Defined in fuchsia.hardware.network/session.fidl
Data-plane FIFOs.
| Field | Type | Description | Default |
|---|---|---|---|
rx |
handle<fifo>
|
Handle for the rx FIFO. Clients must write 16-bit descriptor indexes to this FIFO to be able to receive frames. |
No default |
tx |
handle<fifo>
|
Handle for the tx FIFO. Clients write 16-bit descriptor indexes to this FIFO to enqueue outgoing frames. |
No default |
FrameTypeSupport
Defined in fuchsia.hardware.network/frames.fidl
Specifies a frame type and features and supported flags associated with that type.
This is used by clients to read the supported frames on the tx path for a given Network Device.
Some Network Devices may parse outgoing frames to perform frame
transformation or specific hardware support. Each frame type has an
associated FrameTypeSupport.features bits enumeration that lists
FrameType-specific features that may or may not be supported. Devices that
do not perform parsing are encouraged to just use the FRAME_FEATURES_RAW
bit in features, which informs the client that all frame features are
allowed.
| Field | Type | Description | Default |
|---|---|---|---|
type |
FrameType
|
The frame type this support entry refers to. |
No default |
features |
uint32
|
The frame type-specific features supported. |
No default |
supported_flags |
TxFlags
|
The flags supported for the given frame type. |
No default |
PortId
Defined in fuchsia.hardware.network/port.fidl
A device port identifier.
| Field | Type | Description | Default |
|---|---|---|---|
base |
BasePortId
|
The base identifier for the port. Generally identifies a port instance in hardware. |
No default |
salt |
uint8
|
An implementation-defined identifier that is guaranteed to change on every instantiation of the identified port. |
No default |
Session_Attach_Response
Defined in fuchsia.hardware.network/session.fidl
<EMPTY>
Session_Detach_Response
Defined in fuchsia.hardware.network/session.fidl
<EMPTY>
ENUMS
FrameType flexible
Type: uint8
Defined in fuchsia.hardware.network/frames.fidl
Types of frames.
| Name | Value | Description |
|---|---|---|
ETHERNET |
1 |
|
IPV4 |
2 |
|
IPV6 |
3 |
InfoType strict
Type: uint32
Defined in fuchsia.hardware.network/frames.fidl
The type of metadata information appended to a frame.
| Name | Value | Description |
|---|---|---|
NO_INFO |
0 |
No extra information is available. |
MacFilterMode flexible
Type: uint32
Defined in fuchsia.hardware.network/mac.fidl
The address filtering mode supported by MAC devices.
| Name | Value | Description |
|---|---|---|
MULTICAST_FILTER |
0 |
Device accepts only unicast frames addressed to its own unicast address, or multicast frames that are part of the multicast address filter list. |
MULTICAST_PROMISCUOUS |
1 |
Device accepts unicast frames addressed to its own unicast address, or any multicast frames. |
PROMISCUOUS |
2 |
Device accepts all frames. |
PortClass flexible
Type: uint16
Defined in fuchsia.hardware.network/port.fidl
Network port class.
Note: Device implementers are encouraged to propose additions to this enumeration to avoid using ill-fitting variants if there's not a good match available.
| Name | Value | Description |
|---|---|---|
ETHERNET |
1 |
|
WLAN_CLIENT |
2 |
|
PPP |
3 |
|
BRIDGE |
4 |
|
WLAN_AP |
5 |
|
VIRTUAL |
6 |
|
LOWPAN |
7 |
RxAcceleration flexible
Type: uint8
Defined in fuchsia.hardware.network/frames.fidl
Available rx acceleration features.
Features are mapped to the RXACCEL* bits in descriptors by the available
values reported in Info.rx_accel.
| Name | Value | Description |
|---|---|---|
VALIDATED_ETHERNET_FCS |
0 |
Inbound rx frame validated the Ethernet Frame Check Sequence. |
VALIDATED_IPV4_CHECKSUM |
1 |
Inbound rx frame validated the IPv4 checksum. |
VALIDATED_TCP_CHECKSUM |
2 |
Inbound rx frame validated the TCP checksum. |
VALIDATED_UDP_CHECKSUM |
3 |
Inbound rx frame validated the UDP checksum. |
TxAcceleration flexible
Type: uint8
Defined in fuchsia.hardware.network/frames.fidl
Available tx acceleration features.
Features are mapped to the TXACCEL* bits in descriptors by the available
values reported in Info.tx_accel.
| Name | Value | Description |
|---|---|---|
COMPUTE_ETHERNET_FCS |
0 |
Request that device calculate the Ethernet Frame Check Sequence and write it in place. |
COMPUTE_IPV4_CHECKSUM |
1 |
Request that the device calculate the IPv4 checksum and write it in place. |
COMPUTE_TCP_CHECKSUM |
2 |
Request that the device calculate the TCP checksum and write it in place. |
COMPUTE_UDP_CHECKSUM |
3 |
Request that the device calculate the UDP checksum and write it in place. |
TABLES
DelegatedRxLease resource
Defined in fuchsia.hardware.network/session.fidl
An acquired lease that is propagated up to applications.
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
hold_until_frame |
uint64
|
The frame after which the lease in Agents observing leases must keep track of received frames with an
increasing counter to be able to properly relinquish leases after the
frame This value can be interpreted as either the 1-based index of a given frame or as the total number of exchanged frames so far, which are mathematically equivalent. This mechanism allows for wake lease handles from received frames to be passed up and keep the system from suspension until the frame is fully processed. Required. |
2 |
handle |
DelegatedRxLeaseHandle
|
A handle representing the held lease. Required. |
DeviceBaseInfo
Defined in fuchsia.hardware.network/device.fidl
Network device base info.
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
rx_depth |
uint16
|
Maximum number of items in rx FIFO (per session). Required.
|
2 |
tx_depth |
uint16
|
Maximum number of items in tx FIFO (per session). Required.
|
3 |
buffer_alignment |
uint32
|
Alignment requirement for buffers in the data VMO. All buffers in the data VMO must be aligned to |
4 |
max_buffer_length |
uint32
|
Maximum supported length of buffers in the data VMO, in bytes. Absent if no maximum buffer length is defined. Must be nonzero. |
5 |
min_rx_buffer_length |
uint32
|
The minimum rx buffer length required for device. Required. |
6 |
min_tx_buffer_length |
uint32
|
The minimum tx buffer length required for the device. Required. This value accounts only for tx payload length, Clients must zero pad outgoing frames to meet the required minimum length. |
7 |
min_tx_buffer_head |
uint16
|
The number of bytes the device requests be free as |
8 |
min_tx_buffer_tail |
uint16
|
The amount of bytes the device requests be free as |
9 |
max_buffer_parts |
uint8
|
Maximum descriptor chain length accepted by the device. Required. |
10 |
rx_accel |
vector<RxAcceleration>:16
|
Available rx acceleration flags for this device.
Interpreted as empty if not provided. |
11 |
tx_accel |
vector<TxAcceleration>:16
|
Available tx acceleration flags for this device.
Interpreted as empty if not provided. |
DeviceInfo
Defined in fuchsia.hardware.network/device.fidl
Network device information.
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
min_descriptor_length |
uint8
|
Minimum descriptor length, in 64-bit words. Required. The minimum length that each buffer descriptor must have for correct operation with this device. Devices that support extra frame metadata inform larger minimum descriptor lengths that reflect the minimum space needed to be able to store frame metadata. |
2 |
descriptor_version |
uint8
|
Accepted descriptor version. Required. |
3 |
base_info |
DeviceBaseInfo
|
Device base info. Required. |
PortBaseInfo
Defined in fuchsia.hardware.network/port.fidl
Port base info.
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
port_class |
PortClass
|
Port's class. Required. |
2 |
rx_types |
vector<FrameType>:4
|
Supported rx frame types on this port. Required. Clients may open sessions subscribing to a subset of |
3 |
tx_types |
vector<FrameTypeSupport>:4
|
Supported tx frame types on this port. Required. Frames destined to this port whose frame type is not in Some network devices may need to perform partial frame parsing and
serialization and, for that reason, |
PortGetCountersResponse
Defined in fuchsia.hardware.network/port.fidl
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
rx_frames |
uint64
|
The total number of ingress frames on this port. |
2 |
rx_bytes |
uint64
|
The total number of ingress bytes on this port. |
3 |
tx_frames |
uint64
|
The total number of egress frames on this port. |
4 |
tx_bytes |
uint64
|
The total number of egress bytes on this port. |
PortInfo
Defined in fuchsia.hardware.network/port.fidl
Logical port information.
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
id |
PortId
|
Port's identifier. Required. |
2 |
base_info |
PortBaseInfo
|
PortStatus
Defined in fuchsia.hardware.network/port.fidl
Dynamic port information.
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
flags |
StatusFlags
|
Port status flags. |
2 |
mtu |
uint32
|
Maximum transmit unit for this port, in bytes. The reported MTU is the size of an entire frame, including any header and trailer bytes for whatever protocols this port supports. |
SessionInfo resource
Defined in fuchsia.hardware.network/session.fidl
Session configuration.
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
descriptors |
handle<vmo>
|
VMO containing the descriptors. Required. 16-bit indices transmitted over the FIFOs index a descriptor in this VMO (byte offset = descriptor_length * 8 * index). |
2 |
data |
handle<vmo>
|
VMO containing frame data. Required. Descriptors contain byte-offsets that are used to index arbitrary
regions in |
3 |
descriptor_version |
uint8
|
Requested descriptor version. Required. If the network device does not support the requested descriptor version,
Device.OpenSession fails with |
4 |
descriptor_length |
uint8
|
Descriptor length, in 64-bit words. Required. The length of each descriptor in the |
5 |
descriptor_count |
uint16
|
Total number of descriptors that can be used by this session. Required. Descriptor indices transferred through either the rx or tx FIFO must be
in the range [0, |
6 |
options |
SessionFlags
|
Extra options. Interpreted as empty bitmask if absent. |
UNIONS
DelegatedRxLeaseHandle flexible resource
Defined in fuchsia.hardware.network/session.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
channel |
handle<channel>
|
An untyped channel representing a lease. Close the channel to release the lease. |
DevicePortEvent strict
Defined in fuchsia.hardware.network/device.fidl
Port creation and destruction events.
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
existing |
PortId
|
Port existed when watcher was created. |
2 |
added |
PortId
|
New port was added to device. |
3 |
removed |
PortId
|
Port was removed from the device. |
4 |
idle |
Empty
|
Exhausted list of existing ports. |
Device_OpenSession_Result strict resource
Defined in fuchsia.hardware.network/device.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
Device_OpenSession_Response
|
|
2 |
err |
zx/Status
|
Session_Attach_Result strict
Defined in fuchsia.hardware.network/session.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
Session_Attach_Response
|
|
2 |
err |
zx/Status
|
Session_Detach_Result strict
Defined in fuchsia.hardware.network/session.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
Session_Detach_Response
|
|
2 |
err |
zx/Status
|
BITS
EthernetFeatures strict
Type: uint32
Defined in fuchsia.hardware.network/frames.fidl
Ethernet frame sub-types and features.
| Name | Value | Description |
|---|---|---|
RAW |
1 | Device supports any type of ethernet frame. Same as specifying all other flags. Used by devices that do not inspect or parse outbound traffic. |
ETHERNET_II |
2 | Device supports EthernetII frames. |
E_802_1_Q |
4 | Device supports 802.1q VLAN additions. |
E_802_1_Q_IN_Q |
8 | Device supports 802.1 q-in-q Multiple VLAN tagging additions. Only meaningful if |
E_802_3_LLC_SNAP |
16 | Device supports 802.3 LLC + SNAP Ethernet frame format. |
RxFlags strict
Type: uint32
Defined in fuchsia.hardware.network/frames.fidl
Flags set by a Device when handing a buffer to a client on the rx path.
Set by devices on the inbound_flags field of an rx descriptor.
| Name | Value | Description |
|---|---|---|
RX_ACCEL_0 |
1 | Acceleration flag 0. Acceleration flags are mapped to the acceleration features reported by
the Device in Info.rx_accel. The n-th feature in |
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 | Device experienced a hardware rx overrun. Rx overruns are typically set by hardware controllers when a frame event was detected but the frame data couldn't be captured. Devices should clear the controller flag once this is set on an inbound frame, so future overruns can be detected and reported. |
RX_VALIDATION_ERROR |
1073741824 | This bit is set if frame validation is performed (such as by hardware acceleration features) and fails. It's important to note that some devices may simply discard frames for
which validation fails and never notify the client. Rx frames that
failed validation are only transmitted to the client if the
|
RX_ECHOED_TX |
2147483648 | This is an echoed tx frame, created by a tx request. Can only be set in sessions that have the |
SessionFlags strict
Type: uint16
Defined in fuchsia.hardware.network/session.fidl
Additional session options.
| Name | Value | Description |
|---|---|---|
PRIMARY |
1 | Attach as primary session. Sessions marked with the
|
LISTEN_TX |
2 | Listen for outgoing frames.
|
REPORT_INVALID_RX |
4 | Receive invalid rx frames. Sessions marked with |
RECEIVE_RX_POWER_LEASES |
8 | Receive rx power leases. Sessions marked with |
StatusFlags strict
Type: uint32
Defined in fuchsia.hardware.network/port.fidl
Port status bits, reported in PortStatus.flags.
| Name | Value | Description |
|---|---|---|
ONLINE |
1 | Port is online, i.e., data path is open and any ongoing sessions may send and receive frames. |
TxFlags flexible
Type: uint32
Defined in fuchsia.hardware.network/frames.fidl
Flags set by a Client when handing a buffer to a client on the tx path.
Set by Clients on the inbound_flags field of a tx descriptor.
| Name | Value | Description |
|---|---|---|
TX_ACCEL_0 |
1 | Acceleration flag 0. Acceleration flags are mapped to the acceleration features reported by
the Device in Info.tx_accel. The n-th feature in |
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 flexible
Type: uint32
Defined in fuchsia.hardware.network/frames.fidl
Flags set by a Device when returning a tx buffer back to a client.
Set by Devices on the return_flags field of a tx descriptor.
| Name | Value | Description |
|---|---|---|
TX_RET_NOT_SUPPORTED |
1 | Requested operation in Always set in conjunction with |
TX_RET_OUT_OF_RESOURCES |
2 | Could not allocate resources to send frame. Always set in conjunction with |
TX_RET_NOT_AVAILABLE |
4 | Device is not available (offline or disconnected); the frame was not sent. Always set in conjunction with |
TX_RET_ERROR |
2147483648 |
CONSTANTS
| Name | Value | Type | Description |
|---|---|---|---|
| FRAME_FEATURES_RAW |
1
|
uint32 |
Blanket definition for raw frames. Devices that do not perform any sort of parsing of outbound traffic should
define Added: HEAD
|
| MAX_ACCEL_FLAGS |
16
|
uint32 |
Maximum number of acceleration flags. Each descriptor has 16 bits of space for acceleration flags (RxFlags and
TxFlags) thus the maximum number of reported accelerations is 16. Each
descriptor reports which accelerations were applied ( Added: HEAD
|
| MAX_DESCRIPTOR_CHAIN |
4
|
uint8 |
Maximum number of chained descriptors that describe a single frame. Added: HEAD
|
| MAX_FRAME_TYPES |
4
|
uint32 |
Maximum numbers of supported frame types for rx or tx. Added: HEAD
|
| MAX_PORTS |
32
|
uint8 |
The maximum number of ports attached to a device at a given time. Added: HEAD
|
| MAX_SESSION_NAME |
64
|
uint32 |
Maximum length of session label. Added: HEAD
|
| MAX_STATUS_BUFFER |
50
|
uint32 |
The maximum number of status samples that can be buffered by a StatusWatcher. Added: HEAD
|
ALIASES
| Name | Value | Description |
|---|---|---|
| BasePortId |
uint8 |
The base identifier of a port within a device. Always less than MAX_PORTS. Added: HEAD
|