<link rel="stylesheet" href="../style.css" />

[TOC]
# fuchsia.hardware.network

<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div>

## **PROTOCOLS**

## Device {#Device}
*Defined in [fuchsia.hardware.network/device.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/device.fidl;l=95)*
<p>A Network Device.</p>

### Clone {#Device.Clone}

<p>Establishes a new connection to this device.</p>
<ul>
<li>request <code>device</code> the server end for the new connection.</li>
</ul>

#### Request {#Device.Clone_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>device</code></td>
            <td>
                <code>request&lt;<a class='link' href='#Device'>Device</a>&gt;</code>
            </td>
        </tr>
</table>


### GetInfo {#Device.GetInfo}

<p>Obtain information about device</p>
<ul>
<li>response <code>info</code> device information.</li>
</ul>

#### Request {#Device.GetInfo_Request}

&lt;EMPTY&gt;


#### Response {#Device.GetInfo_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>info</code></td>
            <td>
                <code><a class='link' href='#DeviceInfo'>DeviceInfo</a></code>
            </td>
        </tr>
</table>

### GetPort {#Device.GetPort}

<p>Connects to a port the given <code>id</code>.</p>
<ul>
<li>request <code>id</code> port to connect to.</li>
<li>request <code>port</code> server end of port channel.</li>
</ul>
<p><code>port</code> is closed with a <code>ZX_ERR_NOT_FOUND</code> epitaph if no port with <code>id</code>
exists.</p>

#### Request {#Device.GetPort_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>id</code></td>
            <td>
                <code><a class='link' href='#PortId'>PortId</a></code>
            </td>
        </tr>
        <tr>
            <td><code>port</code></td>
            <td>
                <code>request&lt;<a class='link' href='#Port'>Port</a>&gt;</code>
            </td>
        </tr>
</table>


### GetPortWatcher {#Device.GetPortWatcher}

<p>Connects a <a class='link' href='#PortWatcher'>PortWatcher</a> to this device.</p>
<ul>
<li>request <code>watcher</code> server end of watcher channel.</li>
</ul>

#### Request {#Device.GetPortWatcher_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>watcher</code></td>
            <td>
                <code>request&lt;<a class='link' href='#PortWatcher'>PortWatcher</a>&gt;</code>
            </td>
        </tr>
</table>


### OpenSession {#Device.OpenSession}

<p>Opens a new session with the network device.</p>
<ul>
<li>request <code>session_name</code> is used as a debugging label attached to this
session.</li>
<li>request <code>session_info</code> contains the necessary information to setup the
session's data exchange.</li>
</ul>
<ul>
<li>response <code>session</code> a handle to control the session.</li>
<li>response <code>fifos</code> data-plane FIFOs attached to the session.</li>
</ul>
<ul>
<li>error <code>ZX_ERR_NOT_SUPPORTED</code> if <code>session_info</code> contains not supported
frame types or descriptors set up.</li>
<li>error <code>ZX_ERR_INVALID_ARGS</code> if <code>session_info</code> is missing fields or
contains invalid information.</li>
<li>error <code>ZX_ERR_INTERNAL</code> if the data VMO is rejected by the underlying
device.</li>
</ul>

#### Request {#Device.OpenSession_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>session_name</code></td>
            <td>
                <code>string[64]</code>
            </td>
        </tr>
        <tr>
            <td><code>session_info</code></td>
            <td>
                <code><a class='link' href='#SessionInfo'>SessionInfo</a></code>
            </td>
        </tr>
</table>


#### Response {#Device.OpenSession_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#Device_OpenSession_Result'>Device_OpenSession_Result</a></code>
            </td>
        </tr>
</table>

## DeviceInstance {#DeviceInstance}
*Defined in [fuchsia.hardware.network/instance.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/instance.fidl;l=15)*
<p>An instance of a network device exposed on devfs.</p>

### GetDevice {#DeviceInstance.GetDevice}

<p>Connects to the <a class='link' href='#Device'>Device</a> implementation.</p>
<ul>
<li>request <code>device</code> device handle.</li>
</ul>

#### Request {#DeviceInstance.GetDevice_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>device</code></td>
            <td>
                <code>request&lt;<a class='link' href='#Device'>Device</a>&gt;</code>
            </td>
        </tr>
</table>


## MacAddressing {#MacAddressing}
*Defined in [fuchsia.hardware.network/mac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/mac.fidl;l=21)*

### AddMulticastAddress {#MacAddressing.AddMulticastAddress}

<p>Adds multicast address to the list of multicast groups.</p>
<p>The list of multicast addresses kept is untouched by calls to <code>SetMode</code>.
If the device's mode is not <code>MULTICAST_FILTER</code>, the list of multicast
addresses is ignored.</p>
<ul>
<li>request <code>address</code> multicast address to add to the list.</li>
</ul>
<ul>
<li>response <code>status</code> <code>ZX_ERR_INVALID_ARGS</code> if <code>address</code> is not a
multicast address.</li>
</ul>

#### Request {#MacAddressing.AddMulticastAddress_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>address</code></td>
            <td>
                <code><a class='link' href='../fuchsia.net/'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/#MacAddress'>MacAddress</a></code>
            </td>
        </tr>
</table>


#### Response {#MacAddressing.AddMulticastAddress_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>status</code></td>
            <td>
                <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
            </td>
        </tr>
</table>

### GetUnicastAddress {#MacAddressing.GetUnicastAddress}

<p>Gets the Device's current unicast MAC address.</p>
<p>Implementers of this API do not need to return a uniquely identifiable
MAC; the unicast address returned is the one that is <em>currently</em> in use
to filter unicast frames, or that identifies the device on a link it's
<em>currently</em> on. Users of this API must not rely on the stability or
uniqueness of the returned value to identify or disambiguate device
instances.</p>
<ul>
<li>response <code>address</code> device's unicast MAC address.</li>
</ul>

#### Request {#MacAddressing.GetUnicastAddress_Request}

&lt;EMPTY&gt;


#### Response {#MacAddressing.GetUnicastAddress_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>address</code></td>
            <td>
                <code><a class='link' href='../fuchsia.net/'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/#MacAddress'>MacAddress</a></code>
            </td>
        </tr>
</table>

### RemoveMulticastAddress {#MacAddressing.RemoveMulticastAddress}

<p>Removes multicast address from the list of multicast groups.</p>
<ul>
<li>request <code>address</code> multicast address to remove from the list.</li>
</ul>
<ul>
<li>response <code>status</code> <code>ZX_ERR_INVALID_ARGS</code> if <code>address</code> is not a
multicast address.</li>
</ul>

#### Request {#MacAddressing.RemoveMulticastAddress_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>address</code></td>
            <td>
                <code><a class='link' href='../fuchsia.net/'>fuchsia.net</a>/<a class='link' href='../fuchsia.net/#MacAddress'>MacAddress</a></code>
            </td>
        </tr>
</table>


#### Response {#MacAddressing.RemoveMulticastAddress_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>status</code></td>
            <td>
                <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
            </td>
        </tr>
</table>

### SetMode {#MacAddressing.SetMode}

<p>Sets requested operating mode of this device to <code>mode</code>.</p>
<p>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.</p>
<p>If the device does not support the requested mode, but supports a mode
that is more open than the requested one, <code>SetMode</code> succeeds regardless.
Otherwise, if the device only supports <em>more restrictive</em> modes than the
one requested, <code>SetMode</code> returns <code>ZX_ERR_NOT_SUPPORTED</code>.</p>
<p>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).</p>
<ul>
<li>request <code>mode</code> request mode to attach to.</li>
</ul>
<ul>
<li>response <code>status</code> <code>ZX_ERR_NOT_SUPPORTED</code> it the device only supports
mode more restrictive than the one requested.</li>
</ul>

#### Request {#MacAddressing.SetMode_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>mode</code></td>
            <td>
                <code><a class='link' href='#MacFilterMode'>MacFilterMode</a></code>
            </td>
        </tr>
</table>


#### Response {#MacAddressing.SetMode_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>status</code></td>
            <td>
                <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
            </td>
        </tr>
</table>

## Port {#Port}
*Defined in [fuchsia.hardware.network/port.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/port.fidl;l=115)*
<p>A logical port belonging to a <a class='link' href='#Device'>Device</a>.</p>

### Clone {#Port.Clone}

<p>Establishes a new connection to this port.</p>
<ul>
<li>request <code>port</code> the server end for the new connection.</li>
</ul>

#### Request {#Port.Clone_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>port</code></td>
            <td>
                <code>request&lt;<a class='link' href='#Port'>Port</a>&gt;</code>
            </td>
        </tr>
</table>


### GetDevice {#Port.GetDevice}

<p>Connects to the <a class='link' href='#Device'>Device</a> this port belongs to.</p>
<ul>
<li>request <code>device</code> grants access to the parent device.</li>
</ul>

#### Request {#Port.GetDevice_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>device</code></td>
            <td>
                <code>request&lt;<a class='link' href='#Device'>Device</a>&gt;</code>
            </td>
        </tr>
</table>


### GetInfo {#Port.GetInfo}

<p>Obtain information about port.</p>
<ul>
<li>response <code>info</code> port information.</li>
</ul>

#### Request {#Port.GetInfo_Request}

&lt;EMPTY&gt;


#### Response {#Port.GetInfo_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>info</code></td>
            <td>
                <code><a class='link' href='#PortInfo'>PortInfo</a></code>
            </td>
        </tr>
</table>

### GetMac {#Port.GetMac}

<p>Connects to a <a class='link' href='#MacAddressing'>MacAddressing</a> associated with the port.</p>
<ul>
<li>request <code>mac</code> mac handle. Closed with <code>ZX_ERR_NOT_SUPPORTED</code> if this
port does not support mac addressing.</li>
</ul>

#### Request {#Port.GetMac_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>mac</code></td>
            <td>
                <code>request&lt;<a class='link' href='#MacAddressing'>MacAddressing</a>&gt;</code>
            </td>
        </tr>
</table>


### GetStatus {#Port.GetStatus}

<p>Obtain the operating port status.</p>
<ul>
<li>response <code>status</code> snapshot of port's current status.</li>
</ul>

#### Request {#Port.GetStatus_Request}

&lt;EMPTY&gt;


#### Response {#Port.GetStatus_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>status</code></td>
            <td>
                <code><a class='link' href='#PortStatus'>PortStatus</a></code>
            </td>
        </tr>
</table>

### GetStatusWatcher {#Port.GetStatusWatcher}

<p>Connects to a <a class='link' href='#StatusWatcher'>StatusWatcher</a> to observe port status changes.</p>
<ul>
<li>request <code>watcher</code> handle to the status watcher.</li>
<li>request <code>buffer</code> the number of status changes that the client requests
to be stored by <code>StatusWatcher</code>. Values are capped at
<a class='link' href='#MAX_STATUS_BUFFER'>MAX_STATUS_BUFFER</a>. A value of 0 or 1 causes the <code>StatusWatcher</code> to
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.
If <code>StatusWatcher</code>'s internal queue is filled and new status changes
occur, the oldest samples will be dropped to make room for new ones.</li>
</ul>

#### Request {#Port.GetStatusWatcher_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>watcher</code></td>
            <td>
                <code>request&lt;<a class='link' href='#StatusWatcher'>StatusWatcher</a>&gt;</code>
            </td>
        </tr>
        <tr>
            <td><code>buffer</code></td>
            <td>
                <code>uint32</code>
            </td>
        </tr>
</table>


## PortWatcher {#PortWatcher}
*Defined in [fuchsia.hardware.network/device.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/device.fidl;l=149)*
<p>Provides iteration over and updates for ports attached to a device.</p>

### Watch {#PortWatcher.Watch}

<p>Get the next port event.</p>
<p>The first N calls return <a class='link' href='#DevicePortEvent.existing'>DevicePortEvent.existing</a> where N is the
number of ports present on the device at the time of the watcher's
creation. The next call returns <a class='link' href='#DevicePortEvent.idle'>DevicePortEvent.idle</a> to indicate the
end of existing ports. Subsequent calls block until a port is added
(<a class='link' href='#DevicePortEvent.added'>DevicePortEvent.added</a>) or removed (<a class='link' href='#DevicePortEvent.removed'>DevicePortEvent.removed</a>).</p>
<p>The server closes the <code>PortWatcher</code> channel with <code>ZX_ERR_CANCELED</code> if
the number of unread events reaches a server-selected limit that is at
least two times <a class='link' href='#MAX_PORTS'>MAX_PORTS</a>. Clients are encouraged to maintain a
hanging call to <code>Watch</code> at all times to avoid triggering this condition.</p>
<ul>
<li>response <code>event</code> next port event.</li>
</ul>

#### Request {#PortWatcher.Watch_Request}

&lt;EMPTY&gt;


#### Response {#PortWatcher.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>event</code></td>
            <td>
                <code><a class='link' href='#DevicePortEvent'>DevicePortEvent</a></code>
            </td>
        </tr>
</table>

## Session {#Session}
*Defined in [fuchsia.hardware.network/session.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/session.fidl;l=34)*
<p>Represents a session with a Network device.</p>
<p>A session has a data plane and a control plane. The <code>Session</code> protocol
represents the control plane of the session and the FIFOs and VMOs exchanged
during the <a class='link' href='#Device.OpenSession'>Device.OpenSession</a> call are the data plane. Lifetime of the
session is controlled by a <code>Session</code> protocol handle.</p>
<p>Sessions must attach to ports of interest to start receiving and sending
data. Sessions are always created with no ports attached.</p>
<p>If a port is destroyed from the underlying device, it is automatically
detached from the session.</p>
<p>Inbound traffic is dispatched to all open sessions. Devices typically
operate with a single primary session, see <a class='link' href='#SessionFlags.PRIMARY'>SessionFlags.PRIMARY</a>. Each
additional open session to the same device causes data copy overhead on the
device's data path.</p>
<p>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 <a class='link' href='#SessionInfo.descriptor_count'>SessionInfo.descriptor_count</a>.
- Descriptor chains larger than <a class='link' href='#MAX_DESCRIPTOR_CHAIN'>MAX_DESCRIPTOR_CHAIN</a>.
- rx buffers smaller than <a class='link' href='#Info.min_rx_buffer_length'>Info.min_rx_buffer_length</a>.
- tx buffers smaller than <a class='link' href='#Info.min_tx_buffer_length'>Info.min_tx_buffer_length</a>.
- tx buffers not respecting <a class='link' href='#Info.min_tx_buffer_head'>Info.min_tx_buffer_head</a> or
<a class='link' href='#Info.min_tx_buffer_tail'>Info.min_tx_buffer_tail</a>.</p>

### Attach {#Session.Attach}

<p>Attaches the session to <code>port</code>.</p>
<p>Once attached, the session starts to receive the subscribed frames over
the data FIFOs and it may send frames destined to the specified <code>port</code>.</p>
<ul>
<li>request <code>port</code> port to subscribe to.</li>
<li>request <code>rx_frames</code> Frame types of interest on the port.</li>
</ul>
<ul>
<li>error <code>ZX_ERR_NOT_FOUND</code> if <code>port</code> is not valid.</li>
<li>error <code>ZX_ERR_INVALID_ARGS</code> if <code>rx_frames</code> is not a subset of the
port's supported frames.</li>
<li>error <code>ZX_ERR_ALREADY_BOUND</code> if <code>port</code> is already attached.</li>
</ul>

#### Request {#Session.Attach_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>port</code></td>
            <td>
                <code><a class='link' href='#PortId'>PortId</a></code>
            </td>
        </tr>
        <tr>
            <td><code>rx_frames</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#FrameType'>FrameType</a>&gt;[4]</code>
            </td>
        </tr>
</table>


#### Response {#Session.Attach_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#Session_Attach_Result'>Session_Attach_Result</a></code>
            </td>
        </tr>
</table>

### Close {#Session.Close}

<p>Cleanly closes a session.</p>
<p>This will cause the session to send a <code>ZX_ERR_CANCELLED</code> 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 <code>Close</code>.</p>

#### Request {#Session.Close_Request}

&lt;EMPTY&gt;


### Detach {#Session.Detach}

<p>Detaches the session from <code>port</code>.</p>
<p>Once detached, the session stops receiving frames from <code>port</code>. Frames
sent to a detached port may be returned with an error. It is not
necessary to call <code>Detach</code> on ports that are removed from the device,
doing so causes <code>ZX_ERR_NOT_FOUND</code> to be returned.</p>
<ul>
<li>request <code>port</code> port to subscribe to.</li>
</ul>
<ul>
<li>error <code>ZX_ERR_NOT_FOUND</code> if the session is not currently attached to
the port.</li>
</ul>

#### Request {#Session.Detach_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>port</code></td>
            <td>
                <code><a class='link' href='#PortId'>PortId</a></code>
            </td>
        </tr>
</table>


#### Response {#Session.Detach_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#Session_Detach_Result'>Session_Detach_Result</a></code>
            </td>
        </tr>
</table>

## StatusWatcher {#StatusWatcher}
*Defined in [fuchsia.hardware.network/port.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/port.fidl;l=72)*
<p>Provides a way to receive updates on port status changes.</p>

### WatchStatus {#StatusWatcher.WatchStatus}

<p><code>WatchStatus</code> blocks until the port's status has changed.</p>
<p>The first call to <code>WatchStatus</code> returns immediately with the current
port status, subsequent calls complete when the port status differs from
the last one that was returned through this <code>StatusWatcher</code>.</p>
<p>If <code>StatusWatcher</code> was created with a buffer value larger than 1,
<code>WatchStatus</code> may return a queued status change, depending on how many
status changed happened since the last call to <code>WatchStatus</code>.</p>
<ul>
<li>response <code>device_status</code> the most recent port status.</li>
</ul>

#### Request {#StatusWatcher.WatchStatus_Request}

&lt;EMPTY&gt;


#### Response {#StatusWatcher.WatchStatus_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>port_status</code></td>
            <td>
                <code><a class='link' href='#PortStatus'>PortStatus</a></code>
            </td>
        </tr>
</table>


## **STRUCTS**

### Device_OpenSession_Response [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#Device_OpenSession_Response data-text="Device_OpenSession_Response"}
*Defined in [fuchsia.hardware.network/device.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/device.fidl;l=119)*

<table>
    <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
        <tr id="Device_OpenSession_Response.session">
            <td><code>session</code></td>
            <td>
                <code><a class='link' href='#Session'>Session</a></code>
            </td>
            <td></td>
            <td>No default</td>
        </tr>
        <tr id="Device_OpenSession_Response.fifos">
            <td><code>fifos</code></td>
            <td>
                <code><a class='link' href='#Fifos'>Fifos</a></code>
            </td>
            <td></td>
            <td>No default</td>
        </tr>
</table>

### Empty  {#Empty data-text="Empty"}
*Defined in [fuchsia.hardware.network/device.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/device.fidl;l=170)*

&lt;EMPTY&gt;

### Fifos [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#Fifos data-text="Fifos"}
*Defined in [fuchsia.hardware.network/session.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/session.fidl;l=107)*
<p>Data-plane FIFOs.</p>

<table>
    <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
        <tr id="Fifos.rx">
            <td><code>rx</code></td>
            <td>
                <code>handle&lt;fifo&gt;</code>
            </td>
            <td><p>Handle for the rx FIFO.</p>
<p>Clients must write 16-bit descriptor indexes to this FIFO to be able to
receive frames.</p>
</td>
            <td>No default</td>
        </tr>
        <tr id="Fifos.tx">
            <td><code>tx</code></td>
            <td>
                <code>handle&lt;fifo&gt;</code>
            </td>
            <td><p>Handle for the tx FIFO.</p>
<p>Clients write 16-bit descriptor indexes to this FIFO to enqueue outgoing
frames.</p>
</td>
            <td>No default</td>
        </tr>
</table>

### FrameTypeSupport  {#FrameTypeSupport data-text="FrameTypeSupport"}
*Defined in [fuchsia.hardware.network/frames.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/frames.fidl;l=51)*
<p>Specifies a frame type and features and supported flags associated with that
type.</p>
<p>This is used by clients to read the supported frames on the tx path for a
given Network Device.</p>
<p>Some Network Devices may parse outgoing frames to perform frame
transformation or specific hardware support. Each frame type has an
associated <a class='link' href='#FrameTypeSupport.features'>FrameTypeSupport.features</a> 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 <a class='link' href='#FRAME_FEATURES_RAW'>FRAME_FEATURES_RAW</a>
bit in <code>features</code>, which informs the client that all frame features are
allowed.</p>

<table>
    <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
        <tr id="FrameTypeSupport.type">
            <td><code>type</code></td>
            <td>
                <code><a class='link' href='#FrameType'>FrameType</a></code>
            </td>
            <td><p>The frame type this support entry refers to.</p>
</td>
            <td>No default</td>
        </tr>
        <tr id="FrameTypeSupport.features">
            <td><code>features</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td><p>The frame type-specific features supported.</p>
</td>
            <td>No default</td>
        </tr>
        <tr id="FrameTypeSupport.supported_flags">
            <td><code>supported_flags</code></td>
            <td>
                <code><a class='link' href='#TxFlags'>TxFlags</a></code>
            </td>
            <td><p>The flags supported for the given frame type.</p>
</td>
            <td>No default</td>
        </tr>
</table>

### PortId  {#PortId data-text="PortId"}
*Defined in [fuchsia.hardware.network/port.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/port.fidl;l=18)*
<p>A device port identifier.</p>

<table>
    <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
        <tr id="PortId.base">
            <td><code>base</code></td>
            <td>
                <code><a class='link' href='#base_port_id'>base_port_id</a></code>
            </td>
            <td><p>The base identifier for the port.</p>
<p>Generally identifies a port instance in hardware.</p>
</td>
            <td>No default</td>
        </tr>
        <tr id="PortId.salt">
            <td><code>salt</code></td>
            <td>
                <code>uint8</code>
            </td>
            <td><p>An implementation-defined identifier that is guaranteed to change on
every instantiation of the identified port.</p>
</td>
            <td>No default</td>
        </tr>
</table>

### Session_Attach_Response  {#Session_Attach_Response data-text="Session_Attach_Response"}
*Defined in [fuchsia.hardware.network/session.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/session.fidl;l=49)*

&lt;EMPTY&gt;

### Session_Detach_Response  {#Session_Detach_Response data-text="Session_Detach_Response"}
*Defined in [fuchsia.hardware.network/session.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/session.fidl;l=62)*

&lt;EMPTY&gt;


## **ENUMS**

### DeviceClass [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#DeviceClass data-text="DeviceClass"}
Type: <code>uint16</code>

*Defined in [fuchsia.hardware.network/port.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/port.fidl;l=37)*
<p>Network device class.</p>
<p><em>Note</em>: Device implementers are encouraged to propose additions to this
enumeration to avoid using ill-fitting variants if there's not a good match
available.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="DeviceClass.VIRTUAL">
<td><h3 id="DeviceClass.VIRTUAL" class="add-link hide-from-toc">VIRTUAL</h3></td>
            <td><code>0</code></td>
            <td></td>
        </tr>
        <tr id="DeviceClass.ETHERNET">
<td><h3 id="DeviceClass.ETHERNET" class="add-link hide-from-toc">ETHERNET</h3></td>
            <td><code>1</code></td>
            <td></td>
        </tr>
        <tr id="DeviceClass.WLAN">
<td><h3 id="DeviceClass.WLAN" class="add-link hide-from-toc">WLAN</h3></td>
            <td><code>2</code></td>
            <td></td>
        </tr>
        <tr id="DeviceClass.PPP">
<td><h3 id="DeviceClass.PPP" class="add-link hide-from-toc">PPP</h3></td>
            <td><code>3</code></td>
            <td></td>
        </tr>
        <tr id="DeviceClass.BRIDGE">
<td><h3 id="DeviceClass.BRIDGE" class="add-link hide-from-toc">BRIDGE</h3></td>
            <td><code>4</code></td>
            <td></td>
        </tr>
        <tr id="DeviceClass.WLAN_AP">
<td><h3 id="DeviceClass.WLAN_AP" class="add-link hide-from-toc">WLAN_AP</h3></td>
            <td><code>5</code></td>
            <td></td>
        </tr>
</table>

### FrameType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#FrameType data-text="FrameType"}
Type: <code>uint8</code>

*Defined in [fuchsia.hardware.network/frames.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/frames.fidl;l=7)*
<p>Types of frames.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="FrameType.ETHERNET">
<td><h3 id="FrameType.ETHERNET" class="add-link hide-from-toc">ETHERNET</h3></td>
            <td><code>1</code></td>
            <td></td>
        </tr>
        <tr id="FrameType.IPV4">
<td><h3 id="FrameType.IPV4" class="add-link hide-from-toc">IPV4</h3></td>
            <td><code>2</code></td>
            <td></td>
        </tr>
        <tr id="FrameType.IPV6">
<td><h3 id="FrameType.IPV6" class="add-link hide-from-toc">IPV6</h3></td>
            <td><code>3</code></td>
            <td></td>
        </tr>
</table>

### InfoType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#InfoType data-text="InfoType"}
Type: <code>uint32</code>

*Defined in [fuchsia.hardware.network/frames.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/frames.fidl;l=64)*
<p>The type of metadata information appended to a frame.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="InfoType.NO_INFO">
<td><h3 id="InfoType.NO_INFO" class="add-link hide-from-toc">NO_INFO</h3></td>
            <td><code>0</code></td>
            <td><p>No extra information is available.</p>
</td>
        </tr>
</table>

### MacFilterMode [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#MacFilterMode data-text="MacFilterMode"}
Type: <code>uint32</code>

*Defined in [fuchsia.hardware.network/mac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/mac.fidl;l=10)*
<p>The address filtering mode supported by MAC devices.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="MacFilterMode.MULTICAST_FILTER">
<td><h3 id="MacFilterMode.MULTICAST_FILTER" class="add-link hide-from-toc">MULTICAST_FILTER</h3></td>
            <td><code>0</code></td>
            <td><p>Device accepts only unicast frames addressed to its own unicast address,
or multicast frames that are part of the multicast address filter list.</p>
</td>
        </tr>
        <tr id="MacFilterMode.MULTICAST_PROMISCUOUS">
<td><h3 id="MacFilterMode.MULTICAST_PROMISCUOUS" class="add-link hide-from-toc">MULTICAST_PROMISCUOUS</h3></td>
            <td><code>1</code></td>
            <td><p>Device accepts unicast frames addressed to its own unicast address, or
any multicast frames.</p>
</td>
        </tr>
        <tr id="MacFilterMode.PROMISCUOUS">
<td><h3 id="MacFilterMode.PROMISCUOUS" class="add-link hide-from-toc">PROMISCUOUS</h3></td>
            <td><code>2</code></td>
            <td><p>Device accepts all frames.</p>
</td>
        </tr>
</table>

### RxAcceleration [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#RxAcceleration data-text="RxAcceleration"}
Type: <code>uint8</code>

*Defined in [fuchsia.hardware.network/frames.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/frames.fidl;l=73)*
<p>Available rx acceleration features.</p>
<p>Features are mapped to the <code>RX_ACCEL_*</code> bits in descriptors by the available
values reported in <a class='link' href='#Info.rx_accel'>Info.rx_accel</a>.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="RxAcceleration.VALIDATED_ETHERNET_FCS">
<td><h3 id="RxAcceleration.VALIDATED_ETHERNET_FCS" class="add-link hide-from-toc">VALIDATED_ETHERNET_FCS</h3></td>
            <td><code>0</code></td>
            <td><p>Inbound rx frame validated the Ethernet Frame Check Sequence.</p>
</td>
        </tr>
        <tr id="RxAcceleration.VALIDATED_IPV4_CHECKSUM">
<td><h3 id="RxAcceleration.VALIDATED_IPV4_CHECKSUM" class="add-link hide-from-toc">VALIDATED_IPV4_CHECKSUM</h3></td>
            <td><code>1</code></td>
            <td><p>Inbound rx frame validated the IPv4 checksum.</p>
</td>
        </tr>
        <tr id="RxAcceleration.VALIDATED_TCP_CHECKSUM">
<td><h3 id="RxAcceleration.VALIDATED_TCP_CHECKSUM" class="add-link hide-from-toc">VALIDATED_TCP_CHECKSUM</h3></td>
            <td><code>2</code></td>
            <td><p>Inbound rx frame validated the TCP checksum.</p>
</td>
        </tr>
        <tr id="RxAcceleration.VALIDATED_UDP_CHECKSUM">
<td><h3 id="RxAcceleration.VALIDATED_UDP_CHECKSUM" class="add-link hide-from-toc">VALIDATED_UDP_CHECKSUM</h3></td>
            <td><code>3</code></td>
            <td><p>Inbound rx frame validated the UDP checksum.</p>
</td>
        </tr>
</table>

### TxAcceleration [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#TxAcceleration data-text="TxAcceleration"}
Type: <code>uint8</code>

*Defined in [fuchsia.hardware.network/frames.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/frames.fidl;l=88)*
<p>Available tx acceleration features.</p>
<p>Features are mapped to the <code>TX_ACCEL_*</code> bits in descriptors by the available
values reported in <a class='link' href='#Info.tx_accel'>Info.tx_accel</a>.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="TxAcceleration.COMPUTE_ETHERNET_FCS">
<td><h3 id="TxAcceleration.COMPUTE_ETHERNET_FCS" class="add-link hide-from-toc">COMPUTE_ETHERNET_FCS</h3></td>
            <td><code>0</code></td>
            <td><p>Request that device calculate the Ethernet Frame Check Sequence and
write it in place.</p>
</td>
        </tr>
        <tr id="TxAcceleration.COMPUTE_IPV4_CHECKSUM">
<td><h3 id="TxAcceleration.COMPUTE_IPV4_CHECKSUM" class="add-link hide-from-toc">COMPUTE_IPV4_CHECKSUM</h3></td>
            <td><code>1</code></td>
            <td><p>Request that the device calculate the IPv4 checksum and write it in
place.</p>
</td>
        </tr>
        <tr id="TxAcceleration.COMPUTE_TCP_CHECKSUM">
<td><h3 id="TxAcceleration.COMPUTE_TCP_CHECKSUM" class="add-link hide-from-toc">COMPUTE_TCP_CHECKSUM</h3></td>
            <td><code>2</code></td>
            <td><p>Request that the device calculate the TCP checksum and write it in
place.</p>
</td>
        </tr>
        <tr id="TxAcceleration.COMPUTE_UDP_CHECKSUM">
<td><h3 id="TxAcceleration.COMPUTE_UDP_CHECKSUM" class="add-link hide-from-toc">COMPUTE_UDP_CHECKSUM</h3></td>
            <td><code>3</code></td>
            <td><p>Request that the device calculate the UDP checksum and write it in
place.</p>
</td>
        </tr>
</table>


## **TABLES**

### DeviceInfo  {#DeviceInfo data-text="DeviceInfo"}


*Defined in [fuchsia.hardware.network/device.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/device.fidl;l=28)*
<p>Network device information.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="DeviceInfo.min_descriptor_length">
<td><h3 id="DeviceInfo.min_descriptor_length" class="add-link hide-from-toc">1</h3></td>
            <td><code>min_descriptor_length</code></td>
            <td>
                <code>uint8</code>
            </td>
            <td><p>Minimum descriptor length, in 64-bit words. Required.</p>
<p>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.</p>
</td>
        </tr>
        <tr id="DeviceInfo.descriptor_version">
<td><h3 id="DeviceInfo.descriptor_version" class="add-link hide-from-toc">2</h3></td>
            <td><code>descriptor_version</code></td>
            <td>
                <code>uint8</code>
            </td>
            <td><p>Accepted descriptor version. Required.</p>
</td>
        </tr>
        <tr id="DeviceInfo.rx_depth">
<td><h3 id="DeviceInfo.rx_depth" class="add-link hide-from-toc">3</h3></td>
            <td><code>rx_depth</code></td>
            <td>
                <code>uint16</code>
            </td>
            <td><p>Maximum number of items in rx FIFO (per session). Required.</p>
<p><code>rx_depth</code> is calculated based on the size of the actual backing
hardware rx queue.</p>
</td>
        </tr>
        <tr id="DeviceInfo.tx_depth">
<td><h3 id="DeviceInfo.tx_depth" class="add-link hide-from-toc">4</h3></td>
            <td><code>tx_depth</code></td>
            <td>
                <code>uint16</code>
            </td>
            <td><p>Maximum number of items in tx FIFO (per session). Required.</p>
<p><code>tx_depth</code> is calculated based on the size of the actual backing
hardware tx queue.</p>
</td>
        </tr>
        <tr id="DeviceInfo.buffer_alignment">
<td><h3 id="DeviceInfo.buffer_alignment" class="add-link hide-from-toc">5</h3></td>
            <td><code>buffer_alignment</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td><p>Alignment requirement for buffers in the data VMO.</p>
<p>All buffers in the data VMO <em>must</em> be aligned to <code>buffer_alignment</code>
relative to the start of the VMO. <code>buffer_alignment == 0</code> is never
reported. Required.</p>
</td>
        </tr>
        <tr id="DeviceInfo.max_buffer_length">
<td><h3 id="DeviceInfo.max_buffer_length" class="add-link hide-from-toc">6</h3></td>
            <td><code>max_buffer_length</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td><p>Maximum supported length of buffers in the data VMO, in bytes.</p>
<p>Absent if no maximum buffer length is defined. Must be nonzero.</p>
</td>
        </tr>
        <tr id="DeviceInfo.min_rx_buffer_length">
<td><h3 id="DeviceInfo.min_rx_buffer_length" class="add-link hide-from-toc">7</h3></td>
            <td><code>min_rx_buffer_length</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td><p>The minimum rx buffer length required for device. Required.</p>
</td>
        </tr>
        <tr id="DeviceInfo.min_tx_buffer_length">
<td><h3 id="DeviceInfo.min_tx_buffer_length" class="add-link hide-from-toc">8</h3></td>
            <td><code>min_tx_buffer_length</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td><p>The minimum tx buffer length required for the device. Required.</p>
<p>This value accounts only for tx payload length, <code>min_tx_buffer_head</code> and
<code>min_tx_buffer_tail</code> are not part of this value.</p>
<p>Clients must zero pad outgoing frames to meet the required minimum
length.</p>
</td>
        </tr>
        <tr id="DeviceInfo.min_tx_buffer_head">
<td><h3 id="DeviceInfo.min_tx_buffer_head" class="add-link hide-from-toc">9</h3></td>
            <td><code>min_tx_buffer_head</code></td>
            <td>
                <code>uint16</code>
            </td>
            <td><p>The number of bytes the device requests be free as <code>head</code> space in a tx
buffer. Required.</p>
</td>
        </tr>
        <tr id="DeviceInfo.min_tx_buffer_tail">
<td><h3 id="DeviceInfo.min_tx_buffer_tail" class="add-link hide-from-toc">10</h3></td>
            <td><code>min_tx_buffer_tail</code></td>
            <td>
                <code>uint16</code>
            </td>
            <td><p>The amount of bytes the device requests be free as <code>tail</code> space in a tx
buffer. Required.</p>
</td>
        </tr>
        <tr id="DeviceInfo.max_buffer_parts">
<td><h3 id="DeviceInfo.max_buffer_parts" class="add-link hide-from-toc">11</h3></td>
            <td><code>max_buffer_parts</code></td>
            <td>
                <code>uint8</code>
            </td>
            <td><p>Maximum descriptor chain length accepted by the device. Required.</p>
</td>
        </tr>
        <tr id="DeviceInfo.rx_accel">
<td><h3 id="DeviceInfo.rx_accel" class="add-link hide-from-toc">12</h3></td>
            <td><code>rx_accel</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#RxAcceleration'>RxAcceleration</a>&gt;[16]</code>
            </td>
            <td><p>Available rx acceleration flags for this device.</p>
<p><code>rx_accel</code> maps the <code>RX_ACCEL_*</code> flags in the frame descriptors with
semantic acceleration features described by <a class='link' href='#RxAcceleration'>RxAcceleration</a>. Position
<code>n</code> of <code>rx_accel</code> conveys the meaning of the <code>RX_ACCEL_n</code> flag.</p>
<p>Interpreted as empty if not provided.</p>
</td>
        </tr>
        <tr id="DeviceInfo.tx_accel">
<td><h3 id="DeviceInfo.tx_accel" class="add-link hide-from-toc">13</h3></td>
            <td><code>tx_accel</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#TxAcceleration'>TxAcceleration</a>&gt;[16]</code>
            </td>
            <td><p>Available tx acceleration flags for this device.</p>
<p><code>tx_accel</code> maps the <code>TX_ACCEL_*</code> flags in the frame descriptors with
semantic acceleration features described by <a class='link' href='#TxAcceleration'>TxAcceleration</a>. Position
<code>n</code> of <code>tx_accel</code> conveys the meaning of the <code>TX_ACCEL_n</code> flag.</p>
<p>Interpreted as empty if not provided.</p>
</td>
        </tr>
</table>

### PortInfo  {#PortInfo data-text="PortInfo"}


*Defined in [fuchsia.hardware.network/port.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/port.fidl;l=90)*
<p>Logical port information.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="PortInfo.id">
<td><h3 id="PortInfo.id" class="add-link hide-from-toc">1</h3></td>
            <td><code>id</code></td>
            <td>
                <code><a class='link' href='#PortId'>PortId</a></code>
            </td>
            <td><p>Port's identifier. Required.</p>
</td>
        </tr>
        <tr id="PortInfo.class">
<td><h3 id="PortInfo.class" class="add-link hide-from-toc">2</h3></td>
            <td><code>class</code></td>
            <td>
                <code><a class='link' href='#PortClass'>PortClass</a></code>
            </td>
            <td><p>Port's class. Required.</p>
</td>
        </tr>
        <tr id="PortInfo.rx_types">
<td><h3 id="PortInfo.rx_types" class="add-link hide-from-toc">3</h3></td>
            <td><code>rx_types</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#FrameType'>FrameType</a>&gt;[4]</code>
            </td>
            <td><p>Supported rx frame types on this port. Required.</p>
<p>Clients may open sessions subscribing to a subset of <code>rx_types</code> frame
types on this port.</p>
</td>
        </tr>
        <tr id="PortInfo.tx_types">
<td><h3 id="PortInfo.tx_types" class="add-link hide-from-toc">4</h3></td>
            <td><code>tx_types</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#FrameTypeSupport'>FrameTypeSupport</a>&gt;[4]</code>
            </td>
            <td><p>Supported tx frame types on this port. Required.</p>
<p>Frames destined to this port whose frame type is not in <code>tx_types</code> are
returned with an error.</p>
<p>Some network devices may need to perform partial frame parsing and
serialization and, for that reason, <code>tx_types</code> is a vector of
<a class='link' href='#FrameTypeSupport'>FrameTypeSupport</a> which includes specific features per frame type.
For example, a device that supports Ethernet frames but needs to convert
the Ethernet header may only support standard Ethernet II frames, and
not any &quot;raw&quot; Ethernet frame.</p>
</td>
        </tr>
</table>

### PortStatus  {#PortStatus data-text="PortStatus"}


*Defined in [fuchsia.hardware.network/port.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/port.fidl;l=61)*
<p>Dynamic port information.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="PortStatus.flags">
<td><h3 id="PortStatus.flags" class="add-link hide-from-toc">1</h3></td>
            <td><code>flags</code></td>
            <td>
                <code><a class='link' href='#StatusFlags'>StatusFlags</a></code>
            </td>
            <td><p>Port status flags.</p>
</td>
        </tr>
        <tr id="PortStatus.mtu">
<td><h3 id="PortStatus.mtu" class="add-link hide-from-toc">2</h3></td>
            <td><code>mtu</code></td>
            <td>
                <code>uint32</code>
            </td>
            <td><p>Maximum transmit unit for this port, in bytes.</p>
<p>The reported MTU is the size of an entire frame, including any header
and trailer bytes for whatever protocols this port supports.</p>
</td>
        </tr>
</table>

### SessionInfo [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#SessionInfo data-text="SessionInfo"}


*Defined in [fuchsia.hardware.network/session.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/session.fidl;l=121)*
<p>Session configuration.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="SessionInfo.descriptors">
<td><h3 id="SessionInfo.descriptors" class="add-link hide-from-toc">1</h3></td>
            <td><code>descriptors</code></td>
            <td>
                <code>handle&lt;vmo&gt;</code>
            </td>
            <td><p>VMO containing the descriptors. Required.</p>
<p>16-bit indices transmitted over the FIFOs index a descriptor in this VMO
(byte offset = descriptor_length * 8 * index).</p>
</td>
        </tr>
        <tr id="SessionInfo.data">
<td><h3 id="SessionInfo.data" class="add-link hide-from-toc">2</h3></td>
            <td><code>data</code></td>
            <td>
                <code>handle&lt;vmo&gt;</code>
            </td>
            <td><p>VMO containing frame data. Required.</p>
<p>Descriptors contain byte-offsets that are used to index arbitrary
regions in <code>data</code>.</p>
</td>
        </tr>
        <tr id="SessionInfo.descriptor_version">
<td><h3 id="SessionInfo.descriptor_version" class="add-link hide-from-toc">3</h3></td>
            <td><code>descriptor_version</code></td>
            <td>
                <code>uint8</code>
            </td>
            <td><p>Requested descriptor version. Required.</p>
<p>If the network device does not support the requested descriptor version,
<a class='link' href='#Device.OpenSession'>Device.OpenSession</a> fails with <code>ZX_ERR_NOT_SUPPORTED</code>.</p>
</td>
        </tr>
        <tr id="SessionInfo.descriptor_length">
<td><h3 id="SessionInfo.descriptor_length" class="add-link hide-from-toc">4</h3></td>
            <td><code>descriptor_length</code></td>
            <td>
                <code>uint8</code>
            </td>
            <td><p>Descriptor length, in 64-bit words. Required.</p>
<p>The length of each descriptor in the <code>descriptors</code> VMO. This is used as
a multiplier to find byte offsets in <code>descriptors</code> given a descriptor
index passed through the rx or tx FIFOs.</p>
</td>
        </tr>
        <tr id="SessionInfo.descriptor_count">
<td><h3 id="SessionInfo.descriptor_count" class="add-link hide-from-toc">5</h3></td>
            <td><code>descriptor_count</code></td>
            <td>
                <code>uint16</code>
            </td>
            <td><p>Total number of descriptors that can be used by this session. Required.</p>
<p>Descriptor indices transferred through either the rx or tx FIFO must be
in the range [0, <code>descriptor_count</code>).</p>
</td>
        </tr>
        <tr id="SessionInfo.options">
<td><h3 id="SessionInfo.options" class="add-link hide-from-toc">6</h3></td>
            <td><code>options</code></td>
            <td>
                <code><a class='link' href='#SessionFlags'>SessionFlags</a></code>
            </td>
            <td><p>Extra options. Interpreted as empty bitmask if absent.</p>
</td>
        </tr>
</table>


## **UNIONS**

### DevicePortEvent [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#DevicePortEvent data-text="DevicePortEvent"}
*Defined in [fuchsia.hardware.network/device.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/device.fidl;l=175)*
<p>Port creation and destruction events.</p>
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="DevicePortEvent.existing">
<td><h3 id="DevicePortEvent.existing" class="add-link hide-from-toc">1</h3></td>
            <td><code>existing</code></td>
            <td>
                <code><a class='link' href='#PortId'>PortId</a></code>
            </td>
            <td><p>Port existed when watcher was created.</p>
</td>
        </tr>
        <tr id="DevicePortEvent.added">
<td><h3 id="DevicePortEvent.added" class="add-link hide-from-toc">2</h3></td>
            <td><code>added</code></td>
            <td>
                <code><a class='link' href='#PortId'>PortId</a></code>
            </td>
            <td><p>New port was added to device.</p>
</td>
        </tr>
        <tr id="DevicePortEvent.removed">
<td><h3 id="DevicePortEvent.removed" class="add-link hide-from-toc">3</h3></td>
            <td><code>removed</code></td>
            <td>
                <code><a class='link' href='#PortId'>PortId</a></code>
            </td>
            <td><p>Port was removed from the device.</p>
</td>
        </tr>
        <tr id="DevicePortEvent.idle">
<td><h3 id="DevicePortEvent.idle" class="add-link hide-from-toc">4</h3></td>
            <td><code>idle</code></td>
            <td>
                <code><a class='link' href='#Empty'>Empty</a></code>
            </td>
            <td><p>Exhausted list of existing ports.</p>
</td>
        </tr>
</table>

### Device_OpenSession_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#Device_OpenSession_Result data-text="Device_OpenSession_Result"}
*Defined in [fuchsia.hardware.network/device.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/device.fidl;l=119)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Device_OpenSession_Result.response">
<td><h3 id="Device_OpenSession_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#Device_OpenSession_Response'>Device_OpenSession_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Device_OpenSession_Result.err">
<td><h3 id="Device_OpenSession_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
            </td>
            <td></td>
        </tr>
</table>

### Session_Attach_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#Session_Attach_Result data-text="Session_Attach_Result"}
*Defined in [fuchsia.hardware.network/session.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/session.fidl;l=49)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Session_Attach_Result.response">
<td><h3 id="Session_Attach_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#Session_Attach_Response'>Session_Attach_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Session_Attach_Result.err">
<td><h3 id="Session_Attach_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
            </td>
            <td></td>
        </tr>
</table>

### Session_Detach_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#Session_Detach_Result data-text="Session_Detach_Result"}
*Defined in [fuchsia.hardware.network/session.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/session.fidl;l=62)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Session_Detach_Result.response">
<td><h3 id="Session_Detach_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#Session_Detach_Response'>Session_Detach_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Session_Detach_Result.err">
<td><h3 id="Session_Detach_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#status'>status</a></code>
            </td>
            <td></td>
        </tr>
</table>


## **BITS**

### EthernetFeatures [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#EthernetFeatures}
Type: <code>uint32</code>

*Defined in [fuchsia.hardware.network/frames.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/frames.fidl;l=20)*
<p>Ethernet frame sub-types and features.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="EthernetFeatures.RAW">
<td><h3 id="EthernetFeatures.RAW" class="add-link hide-from-toc">RAW</h3></td>
            <td>1</td>
            <td><p>Device supports any type of ethernet frame.</p>
<p>Same as specifying all other flags. Used by devices that do not inspect
or parse outbound traffic.</p>
</td>
        </tr>
        <tr id="EthernetFeatures.ETHERNET_II">
<td><h3 id="EthernetFeatures.ETHERNET_II" class="add-link hide-from-toc">ETHERNET_II</h3></td>
            <td>2</td>
            <td><p>Device supports EthernetII frames.</p>
</td>
        </tr>
        <tr id="EthernetFeatures.E_802_1_Q">
<td><h3 id="EthernetFeatures.E_802_1_Q" class="add-link hide-from-toc">E_802_1_Q</h3></td>
            <td>4</td>
            <td><p>Device supports 802.1q VLAN additions.</p>
</td>
        </tr>
        <tr id="EthernetFeatures.E_802_1_Q_IN_Q">
<td><h3 id="EthernetFeatures.E_802_1_Q_IN_Q" class="add-link hide-from-toc">E_802_1_Q_IN_Q</h3></td>
            <td>8</td>
            <td><p>Device supports 802.1 q-in-q Multiple VLAN tagging additions.</p>
<p>Only meaningful if <code>E_802_1_Q</code> is also present.</p>
</td>
        </tr>
        <tr id="EthernetFeatures.E_802_3_LLC_SNAP">
<td><h3 id="EthernetFeatures.E_802_3_LLC_SNAP" class="add-link hide-from-toc">E_802_3_LLC_SNAP</h3></td>
            <td>16</td>
            <td><p>Device supports 802.3 LLC + SNAP Ethernet frame format.</p>
</td>
        </tr>
</table>

### RxFlags [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#RxFlags}
Type: <code>uint32</code>

*Defined in [fuchsia.hardware.network/frames.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/frames.fidl;l=107)*
<p>Flags set by a Device when handing a buffer to a client on the rx path.</p>
<p>Set by devices on the <code>inbound_flags</code> field of an rx descriptor.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="RxFlags.RX_ACCEL_0">
<td><h3 id="RxFlags.RX_ACCEL_0" class="add-link hide-from-toc">RX_ACCEL_0</h3></td>
            <td>1</td>
            <td><p>Acceleration flag 0.</p>
<p>Acceleration flags are mapped to the acceleration features reported by
the <a class='link' href='#Device'>Device</a> in <a class='link' href='#Info.rx_accel'>Info.rx_accel</a>. The n-th feature in <code>rx_accel</code> maps
to the <code>RX_ACCEL_n</code> <code>RxFlag</code>.</p>
</td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_1">
<td><h3 id="RxFlags.RX_ACCEL_1" class="add-link hide-from-toc">RX_ACCEL_1</h3></td>
            <td>2</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_2">
<td><h3 id="RxFlags.RX_ACCEL_2" class="add-link hide-from-toc">RX_ACCEL_2</h3></td>
            <td>4</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_3">
<td><h3 id="RxFlags.RX_ACCEL_3" class="add-link hide-from-toc">RX_ACCEL_3</h3></td>
            <td>8</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_4">
<td><h3 id="RxFlags.RX_ACCEL_4" class="add-link hide-from-toc">RX_ACCEL_4</h3></td>
            <td>16</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_5">
<td><h3 id="RxFlags.RX_ACCEL_5" class="add-link hide-from-toc">RX_ACCEL_5</h3></td>
            <td>32</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_6">
<td><h3 id="RxFlags.RX_ACCEL_6" class="add-link hide-from-toc">RX_ACCEL_6</h3></td>
            <td>64</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_7">
<td><h3 id="RxFlags.RX_ACCEL_7" class="add-link hide-from-toc">RX_ACCEL_7</h3></td>
            <td>128</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_8">
<td><h3 id="RxFlags.RX_ACCEL_8" class="add-link hide-from-toc">RX_ACCEL_8</h3></td>
            <td>256</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_9">
<td><h3 id="RxFlags.RX_ACCEL_9" class="add-link hide-from-toc">RX_ACCEL_9</h3></td>
            <td>512</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_10">
<td><h3 id="RxFlags.RX_ACCEL_10" class="add-link hide-from-toc">RX_ACCEL_10</h3></td>
            <td>1024</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_11">
<td><h3 id="RxFlags.RX_ACCEL_11" class="add-link hide-from-toc">RX_ACCEL_11</h3></td>
            <td>2048</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_12">
<td><h3 id="RxFlags.RX_ACCEL_12" class="add-link hide-from-toc">RX_ACCEL_12</h3></td>
            <td>4096</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_13">
<td><h3 id="RxFlags.RX_ACCEL_13" class="add-link hide-from-toc">RX_ACCEL_13</h3></td>
            <td>8192</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_14">
<td><h3 id="RxFlags.RX_ACCEL_14" class="add-link hide-from-toc">RX_ACCEL_14</h3></td>
            <td>16384</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_ACCEL_15">
<td><h3 id="RxFlags.RX_ACCEL_15" class="add-link hide-from-toc">RX_ACCEL_15</h3></td>
            <td>32768</td>
            <td></td>
        </tr>
        <tr id="RxFlags.RX_OVERRUN">
<td><h3 id="RxFlags.RX_OVERRUN" class="add-link hide-from-toc">RX_OVERRUN</h3></td>
            <td>536870912</td>
            <td><p>Device experienced a hardware rx overrun.</p>
<p>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.</p>
</td>
        </tr>
        <tr id="RxFlags.RX_VALIDATION_ERROR">
<td><h3 id="RxFlags.RX_VALIDATION_ERROR" class="add-link hide-from-toc">RX_VALIDATION_ERROR</h3></td>
            <td>1073741824</td>
            <td><p>This bit is set if frame validation is performed (such as by hardware
acceleration features) and fails.</p>
<p>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
<code>SessionFlags::REPORT_INVALID_RX</code> option is selected when creating a
session.</p>
</td>
        </tr>
        <tr id="RxFlags.RX_ECHOED_TX">
<td><h3 id="RxFlags.RX_ECHOED_TX" class="add-link hide-from-toc">RX_ECHOED_TX</h3></td>
            <td>2147483648</td>
            <td><p>This is an echoed tx frame, created by a tx request.</p>
<p>Can only be set in sessions that have the <code>LISTEN_TX</code> flag.</p>
</td>
        </tr>
</table>

### SessionFlags [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#SessionFlags}
Type: <code>uint16</code>

*Defined in [fuchsia.hardware.network/session.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/session.fidl;l=74)*
<p>Additional session options.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="SessionFlags.PRIMARY">
<td><h3 id="SessionFlags.PRIMARY" class="add-link hide-from-toc">PRIMARY</h3></td>
            <td>1</td>
            <td><p>Attach as primary session.</p>
<p>Sessions marked with the <code>PRIMARY</code> bit get the following different
treatment:</p>
<ul>
<li>If no PRIMARY sessions are attached, the device will <em>not</em> serve rx
frames to non-PRIMARY sessions.</li>
<li>If there's only one PRIMARY session active, it may get a zero-copy
data path from the the backing hardware, if the underlying
implementation supports it.</li>
</ul>
</td>
        </tr>
        <tr id="SessionFlags.LISTEN_TX">
<td><h3 id="SessionFlags.LISTEN_TX" class="add-link hide-from-toc">LISTEN_TX</h3></td>
            <td>2</td>
            <td><p>Listen for outgoing frames.</p>
<p><code>LISTEN_TX</code> sessions receive any outgoing frames (from all sessions) on
its rx path. Can be used for snooping traffic. Sessions marked with
<code>LISTEN_TX</code> may also send frames, but they should keep in mind that
they'll ALWAYS receive those frames back on their rx path (no origin
session filtering is performed).</p>
</td>
        </tr>
        <tr id="SessionFlags.REPORT_INVALID_RX">
<td><h3 id="SessionFlags.REPORT_INVALID_RX" class="add-link hide-from-toc">REPORT_INVALID_RX</h3></td>
            <td>4</td>
            <td><p>Receive invalid rx frames.</p>
<p>Sessions marked with <code>REPORT_INVALID_RX</code> are interested in receiving
frames that were rejected by internal device checks or payload
validation performed by hardware. Due to the nature of some hardware
platforms, sessions marked with <code>REPORT_INVALID_RX</code> may still not
receive frames that fail validation if the hardware implementation
simply drops the frame and doesn't expose it to the software stack.
Sessions NOT marked with <code>REPORT_INVALID_RX</code>, in contrast, will NEVER
receive an rx frame with the <code>RX_VALIDATION_ERROR</code> flag set.</p>
</td>
        </tr>
</table>

### StatusFlags [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#StatusFlags}
Type: <code>uint32</code>

*Defined in [fuchsia.hardware.network/port.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/port.fidl;l=54)*
<p>Port status bits, reported in <a class='link' href='#PortStatus.flags'>PortStatus.flags</a>.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="StatusFlags.ONLINE">
<td><h3 id="StatusFlags.ONLINE" class="add-link hide-from-toc">ONLINE</h3></td>
            <td>1</td>
            <td><p>Port is online, i.e., data path is open and any ongoing sessions may
send and receive frames.</p>
</td>
        </tr>
</table>

### TxFlags [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#TxFlags}
Type: <code>uint32</code>

*Defined in [fuchsia.hardware.network/frames.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/frames.fidl;l=157)*
<p>Flags set by a Client when handing a buffer to a client on the tx path.</p>
<p>Set by Clients on the <code>inbound_flags</code> field of a tx descriptor.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="TxFlags.TX_ACCEL_0">
<td><h3 id="TxFlags.TX_ACCEL_0" class="add-link hide-from-toc">TX_ACCEL_0</h3></td>
            <td>1</td>
            <td><p>Acceleration flag 0.</p>
<p>Acceleration flags are mapped to the acceleration features reported by
the <a class='link' href='#Device'>Device</a> in <a class='link' href='#Info.tx_accel'>Info.tx_accel</a>. The n-th feature in <code>tx_accel</code> maps
to the <code>TX_ACCEL_n</code> <code>TxFlag</code>.</p>
</td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_1">
<td><h3 id="TxFlags.TX_ACCEL_1" class="add-link hide-from-toc">TX_ACCEL_1</h3></td>
            <td>2</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_2">
<td><h3 id="TxFlags.TX_ACCEL_2" class="add-link hide-from-toc">TX_ACCEL_2</h3></td>
            <td>4</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_3">
<td><h3 id="TxFlags.TX_ACCEL_3" class="add-link hide-from-toc">TX_ACCEL_3</h3></td>
            <td>8</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_4">
<td><h3 id="TxFlags.TX_ACCEL_4" class="add-link hide-from-toc">TX_ACCEL_4</h3></td>
            <td>16</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_5">
<td><h3 id="TxFlags.TX_ACCEL_5" class="add-link hide-from-toc">TX_ACCEL_5</h3></td>
            <td>32</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_6">
<td><h3 id="TxFlags.TX_ACCEL_6" class="add-link hide-from-toc">TX_ACCEL_6</h3></td>
            <td>64</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_7">
<td><h3 id="TxFlags.TX_ACCEL_7" class="add-link hide-from-toc">TX_ACCEL_7</h3></td>
            <td>128</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_8">
<td><h3 id="TxFlags.TX_ACCEL_8" class="add-link hide-from-toc">TX_ACCEL_8</h3></td>
            <td>256</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_9">
<td><h3 id="TxFlags.TX_ACCEL_9" class="add-link hide-from-toc">TX_ACCEL_9</h3></td>
            <td>512</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_10">
<td><h3 id="TxFlags.TX_ACCEL_10" class="add-link hide-from-toc">TX_ACCEL_10</h3></td>
            <td>1024</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_11">
<td><h3 id="TxFlags.TX_ACCEL_11" class="add-link hide-from-toc">TX_ACCEL_11</h3></td>
            <td>2048</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_12">
<td><h3 id="TxFlags.TX_ACCEL_12" class="add-link hide-from-toc">TX_ACCEL_12</h3></td>
            <td>4096</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_13">
<td><h3 id="TxFlags.TX_ACCEL_13" class="add-link hide-from-toc">TX_ACCEL_13</h3></td>
            <td>8192</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_14">
<td><h3 id="TxFlags.TX_ACCEL_14" class="add-link hide-from-toc">TX_ACCEL_14</h3></td>
            <td>16384</td>
            <td></td>
        </tr>
        <tr id="TxFlags.TX_ACCEL_15">
<td><h3 id="TxFlags.TX_ACCEL_15" class="add-link hide-from-toc">TX_ACCEL_15</h3></td>
            <td>32768</td>
            <td></td>
        </tr>
</table>

### TxReturnFlags [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#TxReturnFlags}
Type: <code>uint32</code>

*Defined in [fuchsia.hardware.network/frames.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/frames.fidl;l=184)*
<p>Flags set by a Device when returning a tx buffer back to a client.</p>
<p>Set by Devices on the <code>return_flags</code> field of a tx descriptor.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="TxReturnFlags.TX_RET_NOT_SUPPORTED">
<td><h3 id="TxReturnFlags.TX_RET_NOT_SUPPORTED" class="add-link hide-from-toc">TX_RET_NOT_SUPPORTED</h3></td>
            <td>1</td>
            <td><p>Requested operation in <code>inbound_flags</code> is not supported; the frame was
not sent.</p>
<p>Always set in conjunction with <code>TX_RET_ERROR</code>.</p>
</td>
        </tr>
        <tr id="TxReturnFlags.TX_RET_OUT_OF_RESOURCES">
<td><h3 id="TxReturnFlags.TX_RET_OUT_OF_RESOURCES" class="add-link hide-from-toc">TX_RET_OUT_OF_RESOURCES</h3></td>
            <td>2</td>
            <td><p>Could not allocate resources to send frame.</p>
<p>Always set in conjunction with <code>TX_RET_ERROR</code>.</p>
</td>
        </tr>
        <tr id="TxReturnFlags.TX_RET_NOT_AVAILABLE">
<td><h3 id="TxReturnFlags.TX_RET_NOT_AVAILABLE" class="add-link hide-from-toc">TX_RET_NOT_AVAILABLE</h3></td>
            <td>4</td>
            <td><p>Device is not available (offline or disconnected); the frame was not
sent.</p>
<p>Always set in conjunction with <code>TX_RET_ERROR</code>.</p>
</td>
        </tr>
        <tr id="TxReturnFlags.TX_RET_ERROR">
<td><h3 id="TxReturnFlags.TX_RET_ERROR" class="add-link hide-from-toc">TX_RET_ERROR</h3></td>
            <td>2147483648</td>
            <td></td>
        </tr>
</table>


## **CONSTANTS**

<table>
    <tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr>
        <tr id="FRAME_FEATURES_RAW">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/frames.fidl;l=17">FRAME_FEATURES_RAW</a></td>
                <td>
                    <code>1</code>
                </td>
                <td><code>uint32</code></td>
            <td><p>Blanket definition for raw frames.</p>
<p>Devices that do not perform any sort of parsing of outbound traffic should
define <code>FRAME_FEATURES_RAW</code> in the <a class='link' href='#FrameTypeSupport'>FrameTypeSupport</a> entry.</p>
</td>
        </tr>
        <tr id="MAX_ACCEL_FLAGS">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/device.fidl;l=25">MAX_ACCEL_FLAGS</a></td>
                <td>
                    <code>16</code>
                </td>
                <td><code>uint32</code></td>
            <td><p>Maximum number of acceleration flags.</p>
<p>Each descriptor has 16 bits of space for acceleration flags (<a class='link' href='#RxFlags'>RxFlags</a> and
<a class='link' href='#TxFlags'>TxFlags</a>) thus the maximum number of reported accelerations is 16. Each
descriptor reports which accelerations were applied (<code>RxFlags</code>) or are
requested (<code>TxFlags</code>) by mapping indexes in the vector of supported
accelerations (<a class='link' href='#Info.rx_accel'>Info.rx_accel</a> and (<a class='link' href='#Info.tx_accel'>Info.tx_accel</a>) to bits in the
respective acceleration flags bitfield.</p>
</td>
        </tr>
        <tr id="MAX_DESCRIPTOR_CHAIN">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/frames.fidl;l=61">MAX_DESCRIPTOR_CHAIN</a></td>
                <td>
                    <code>4</code>
                </td>
                <td><code>uint8</code></td>
            <td><p>Maximum number of chained descriptors that describe a single frame.</p>
</td>
        </tr>
        <tr id="MAX_FRAME_TYPES">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/device.fidl;l=12">MAX_FRAME_TYPES</a></td>
                <td>
                    <code>4</code>
                </td>
                <td><code>uint32</code></td>
            <td><p>Maximum numbers of supported frame types for rx or tx.</p>
</td>
        </tr>
        <tr id="MAX_PORTS">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/port.fidl;l=11">MAX_PORTS</a></td>
                <td>
                    <code>32</code>
                </td>
                <td><code>uint8</code></td>
            <td><p>The maximum number of ports attached to a device at a given time.</p>
</td>
        </tr>
        <tr id="MAX_SESSION_NAME">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/device.fidl;l=15">MAX_SESSION_NAME</a></td>
                <td>
                    <code>64</code>
                </td>
                <td><code>uint32</code></td>
            <td><p>Maximum length of session label.</p>
</td>
        </tr>
        <tr id="MAX_STATUS_BUFFER">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/port.fidl;l=8">MAX_STATUS_BUFFER</a></td>
                <td>
                    <code>50</code>
                </td>
                <td><code>uint32</code></td>
            <td><p>The maximum number of status samples that can be buffered by a
<a class='link' href='#StatusWatcher'>StatusWatcher</a>.</p>
</td>
        </tr>
</table>

## **TYPE ALIASES**

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="PortClass">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/port.fidl;l=51">PortClass</a></td>
            <td>
                <code>fuchsia.hardware.network/DeviceClass</code></td>
            <td><p>Network port class.</p>
</td>
        </tr>
        <tr id="base_port_id">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.network/port.fidl;l=15">base_port_id</a></td>
            <td>
                <code>uint8</code></td>
            <td><p>The base identifier of a port within a device. Always less than
<a class='link' href='#MAX_PORTS'>MAX_PORTS</a>.</p>
</td>
        </tr>
</table>