<br />

Added: HEAD

## **PROTOCOLS**

## EthernetRx

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=265)*

Protocol for sending an Ethernet frame from the bridged wlansoftmac
driver to the wlansoftmac driver.

# Experimental

This protocol is implemented as a foreign function interface (FFI)
between the wlansoftmac driver and the bridged driver solely to improve
the performance of processing data frames through the wlan-mlme library.

<br />

### Transfer

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#EthernetRxTransferRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#EthernetRx_Transfer_Result` |

## EthernetTx

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=291)*

Protocol for sending an Ethernet frame from the wlansoftmac driver to the bridged
wlansoftmac driver.

# Experimental

This protocol is implemented as a foreign function interface (FFI)
between the wlansoftmac driver and the bridged driver solely to improve
the performance of processing data frames through the wlan-mlme library.

# Safety

The `complete_borrowed_operation` field must be a function pointer of the type
void (*)(eth::BorrowedOperation\<\>* , zx_status_t) where the first argument
is the value of `borrowed_operation` field.

Calling `complete_borrowed_operation` will result in calling
`eth::BorrowedOperation<>::Complete()` to release ownership of the packet. This
must be called exactly once. Failing to call `complete_borrowed_operation`
will leak memory, and calling more than once will result in use-after-free.

<br />

### Transfer

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#EthernetTxTransferRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#EthernetTx_Transfer_Result` |

## WlanRx

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=309)*

Protocol for sending a WLAN frame from the wlansoftmac driver to the bridged
wlansoftmac driver.

# Experimental

This protocol is implemented as a foreign function interface (FFI)
between the wlansoftmac driver and the bridged driver solely to improve
the performance of processing data frames through the wlan-mlme library.

<br />

### Transfer

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanRxTransferRequest` |

#### Response

\<EMPTY\>

## WlanSoftmac

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=766)*

`WlanSoftmac` is an SDK versioned protocol implemented by third-party drivers.

<br />

### CancelScan

Cancels the ongoing scan corresponding to `scan_id`,
where `scan_id` is an identifier returned by
`StartPassiveScan()` or `StartActiveScan()`. If cancellation succeeds,
the server will soon call WlanSoftmacIfc.ScanComplete() with the same
`scan_id`.

A device driver indicates support for `CancelScan()` using
`fuchsia.wlan.common/ScanOffloadExtension.scan_cancel_supported`.

Common errors include:

- `ZX_ERR_NOT_FOUND`: `scan_id` does not match an ongoing scan.
- `ZX_ERR_NOT_SUPPORTED`: Server does not support scan cancellation.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseCancelScanRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_CancelScan_Result` |

### ClearAssociation

Notifies MAC and PHY that the peer has been de-associated.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseClearAssociationRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_ClearAssociation_Result` |

### DisableBeaconing

Disables hardware beaconing.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_DisableBeaconing_Result` |

### EnableBeaconing

Enables hardware Beaconing.

This method cannot be called while beaconing is enabled and so
`DisableBeaconing` must be called prior to this method if beaconing is
enabled.

All request fields are required.

Common errors include:

- `ZX_ERR_NOT_SUPPORTED`: The device does not support hardware beacons.
- `ZX_ERR_INVALID_ARGS`: The device cannot transmit the requested beacon.
- `ZX_ERR_BAD_STATE`: The device is already beaconing.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseEnableBeaconingRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_EnableBeaconing_Result` |

### InstallKey

Install a key for encryption when transmitting or receiving protected
frames.

Common errors include:
ZX_ERR_INVALID_ARGS: The given config does not specify a valid key.
ZX_ERR_NOT_SUPPORTED: The device does not support the given cipher.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanKeyConfiguration` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_InstallKey_Result` |

### JoinBss

Join a specific BSS in which we will participate.
This applies regardless of if we are hosting the BSS or joining it
(indicated by the `remote` flag in `JoinBssRequest`).
If successful, the device will switch to the correct channel and perform
any internal filtering/timing operations required to join the BSS.
For client STAs, this is the first step before authenticating.

Common errors include:   

ZX_ERR_NOT_SUPPORTED: The device does not support the given bss config.

#### Request

| Name | Type |
|---|---|
| `join_request` | `https://fuchsia.dev/reference/fuchsia.wlan.driver//https://fuchsia.dev/reference/fuchsia.wlan.driver#JoinBssRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_JoinBss_Result` |

### NotifyAssociationComplete

Notifies the device of a successful association and configures
additional parameters necessary to participate in that association.

# Errors

Common errors include:

- `ZX_ERR_BAD_STATE`: The device was not previously informed of this BSS via `WlanSoftmac.JoinBss`.

#### Request

| Name | Type |
|---|---|
| `assoc_cfg` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanAssociationConfig` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_NotifyAssociationComplete_Result` |

### Query

Gets general information about the device and its supported features.
This method is safe to call even when the SoftMAC has not yet started.

Note: The implementation of this method must not depend on a response
from an ethernet driver, otherwise there is a risk of deadlock.
The wlansoftmac driver calls this method synchronously while
serving the fuchsia.hardware.ethernet/EthernetImpl.Query method.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_Query_Result` |

### QueryDiscoverySupport

Gets information about the station discovery (e.g., scanning and
probing) features supported by the device. This method is safe to call
even when the SoftMAC has not yet started.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QueryDiscoverySupport_Result` |

### QueryMacSublayerSupport

Gets information about the MAC features supported by the device. This
method is safe to call even when the SoftMAC has not yet started.

Note: The implementation of this method must not depend on a response
from an ethernet driver, otherwise there is a risk of deadlock.
The wlansoftmac driver calls this method synchronously while
serving the fuchsia.hardware.ethernet/EthernetImpl.Query method.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QueryMacSublayerSupport_Result` |

### QuerySecuritySupport

Gets information about the security features supported by the device.
This method is safe to call even when the SoftMAC has not yet started.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QuerySecuritySupport_Result` |

### QuerySpectrumManagementSupport

Gets information about the spectrum usage (e.g., DFS) features supported
by the device. This method is safe to call even when the SoftMAC has not
yet started.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QuerySpectrumManagementSupport_Result` |

### QueueTx

Queue a packet for transmission. May return before a packet has actually
been transmitted. This call does not take ownership of the buffer passed in
the WlanTxPacket.

Errors result from a failure to queue the packet for transmission.
An OK result thus only indicates that the packet was queued, *not* that
it was successfully transmitted.

#### Request

| Name | Type |
|---|---|
| `packet` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanTxPacket` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmac_QueueTx_Result` |

### SetChannel

Set the primary radio channel, e.g. in response to a channel switch event.
If successful, this will trigger the channel switch immediately. This may
impact the transmission of any frames that are in-flight, and might also
interfere with an ongoing scan request.

Common errors include:   

ZX_ERR_NOT_SUPPORTED: The device cannot switch to the requested channel.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseSetChannelRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_SetChannel_Result` |

### Start

Signal to the server that the MLME for the iface is ready to send and receive
frames.

The client provides the following arguments:

- `ifc`: The client end of a `WlanSoftmaIfc` server which the server will use to send events to the client.

The server returns a server end of a `fuchsia.wlan.mlme/MLME` protocol. The SME
for the iface owns the client end. Thus, this channel is used for SME \<-\> MLME
communication.

Except where noted, `WlanSoftmac` methods must only be called after
a successful call to `WlanSoftmac.Start`.

Common errors include:

- `ZX_ERR_ALREADY_BOUND`: `Start` was already called on this softmac.

#### Request

| Name | Type |
|---|---|
| `ifc` | `client_end:https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacIfc` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmac_Start_Result` |

### StartActiveScan

Starts an active scan. The server will deliver scan results
as Beacon or Probe Response frames using WlanSoftmacIfc.Recv().
When complete, the server will call WlanSoftmacIfc.ScanComplete()
with the same `scan_id` returned by StartActiveScan().

A device driver indicates support for `StartActiveScan()` using
`fuchsia.wlan.common/ProbeRequestOffloadExtension.supported`.

Common errors include:
ZX_ERR_INVALID_ARGS: The device is not capable of performing the
requested scan, e.g. because an incompatible channel was requested.
ZX_ERR_UNAVAILABLE: The device cannot currently perform scans.
ZX_ERR_SHOULD_WAIT: Another scan is already in-progress.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacStartActiveScanRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_StartActiveScan_Result` |

### StartPassiveScan

Starts a passive scan. The server will deliver scan results
as Beacon frames using WlanSoftmacIfc.Recv(). When complete,
the server will call WlanSoftmacIfc.ScanComplete() with the
same `scan_id` returned by StartPassiveScan().

The server indicates support for `StartPassiveScan()` using
`fuchsia.wlan.common/ScanOffloadExtension.supported`.

Common errors include:
ZX_ERR_INVALID_ARGS: The device is not capable of performing the
requested scan, e.g. because an incompatible channel was requested.
ZX_ERR_UNAVAILABLE: The device cannot currently perform scans.
ZX_ERR_SHOULD_WAIT: Another scan is already in-progress.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseStartPassiveScanRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_StartPassiveScan_Result` |

### Stop

Shut down the softmac if it is running.
Safe to call when the softmac is not running.

#### Request

\<EMPTY\>

#### Response

\<EMPTY\>

### UpdateWmmParameters

Indicate the device of modified WiFi Multimedia (WMM) parameters for a
particular access category (AC).

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseUpdateWmmParametersRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_UpdateWmmParameters_Result` |

## WlanSoftmacBase

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=461)*

`WlanSoftmacBase` is a template protocol intended to be composed into
`WlanSoftmacBridge` and `WlanSoftmac`. `WlanSoftmacBase` contains all method
that both `WlanSoftmacBridge` and `WlanSoftmac` have in common.
`WlanSoftmacBase` should not be implemented directly.

NOTE: All methods use a `selector` attribute to maintain their ordinal
following migration from `WlanSoftmac` into this protocol. This is necessary
to preserve API compatibility.

<br />

### CancelScan

Cancels the ongoing scan corresponding to `scan_id`,
where `scan_id` is an identifier returned by
`StartPassiveScan()` or `StartActiveScan()`. If cancellation succeeds,
the server will soon call WlanSoftmacIfc.ScanComplete() with the same
`scan_id`.

A device driver indicates support for `CancelScan()` using
`fuchsia.wlan.common/ScanOffloadExtension.scan_cancel_supported`.

Common errors include:

- `ZX_ERR_NOT_FOUND`: `scan_id` does not match an ongoing scan.
- `ZX_ERR_NOT_SUPPORTED`: Server does not support scan cancellation.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseCancelScanRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_CancelScan_Result` |

### ClearAssociation

Notifies MAC and PHY that the peer has been de-associated.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseClearAssociationRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_ClearAssociation_Result` |

### DisableBeaconing

Disables hardware beaconing.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_DisableBeaconing_Result` |

### EnableBeaconing

Enables hardware Beaconing.

This method cannot be called while beaconing is enabled and so
`DisableBeaconing` must be called prior to this method if beaconing is
enabled.

All request fields are required.

Common errors include:

- `ZX_ERR_NOT_SUPPORTED`: The device does not support hardware beacons.
- `ZX_ERR_INVALID_ARGS`: The device cannot transmit the requested beacon.
- `ZX_ERR_BAD_STATE`: The device is already beaconing.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseEnableBeaconingRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_EnableBeaconing_Result` |

### InstallKey

Install a key for encryption when transmitting or receiving protected
frames.

Common errors include:
ZX_ERR_INVALID_ARGS: The given config does not specify a valid key.
ZX_ERR_NOT_SUPPORTED: The device does not support the given cipher.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanKeyConfiguration` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_InstallKey_Result` |

### JoinBss

Join a specific BSS in which we will participate.
This applies regardless of if we are hosting the BSS or joining it
(indicated by the `remote` flag in `JoinBssRequest`).
If successful, the device will switch to the correct channel and perform
any internal filtering/timing operations required to join the BSS.
For client STAs, this is the first step before authenticating.

Common errors include:   

ZX_ERR_NOT_SUPPORTED: The device does not support the given bss config.

#### Request

| Name | Type |
|---|---|
| `join_request` | `https://fuchsia.dev/reference/fuchsia.wlan.driver//https://fuchsia.dev/reference/fuchsia.wlan.driver#JoinBssRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_JoinBss_Result` |

### NotifyAssociationComplete

Notifies the device of a successful association and configures
additional parameters necessary to participate in that association.

# Errors

Common errors include:

- `ZX_ERR_BAD_STATE`: The device was not previously informed of this BSS via `WlanSoftmac.JoinBss`.

#### Request

| Name | Type |
|---|---|
| `assoc_cfg` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanAssociationConfig` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_NotifyAssociationComplete_Result` |

### Query

Gets general information about the device and its supported features.
This method is safe to call even when the SoftMAC has not yet started.

Note: The implementation of this method must not depend on a response
from an ethernet driver, otherwise there is a risk of deadlock.
The wlansoftmac driver calls this method synchronously while
serving the fuchsia.hardware.ethernet/EthernetImpl.Query method.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_Query_Result` |

### QueryDiscoverySupport

Gets information about the station discovery (e.g., scanning and
probing) features supported by the device. This method is safe to call
even when the SoftMAC has not yet started.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QueryDiscoverySupport_Result` |

### QueryMacSublayerSupport

Gets information about the MAC features supported by the device. This
method is safe to call even when the SoftMAC has not yet started.

Note: The implementation of this method must not depend on a response
from an ethernet driver, otherwise there is a risk of deadlock.
The wlansoftmac driver calls this method synchronously while
serving the fuchsia.hardware.ethernet/EthernetImpl.Query method.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QueryMacSublayerSupport_Result` |

### QuerySecuritySupport

Gets information about the security features supported by the device.
This method is safe to call even when the SoftMAC has not yet started.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QuerySecuritySupport_Result` |

### QuerySpectrumManagementSupport

Gets information about the spectrum usage (e.g., DFS) features supported
by the device. This method is safe to call even when the SoftMAC has not
yet started.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QuerySpectrumManagementSupport_Result` |

### SetChannel

Set the primary radio channel, e.g. in response to a channel switch event.
If successful, this will trigger the channel switch immediately. This may
impact the transmission of any frames that are in-flight, and might also
interfere with an ongoing scan request.

Common errors include:   

ZX_ERR_NOT_SUPPORTED: The device cannot switch to the requested channel.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseSetChannelRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_SetChannel_Result` |

### StartActiveScan

Starts an active scan. The server will deliver scan results
as Beacon or Probe Response frames using WlanSoftmacIfc.Recv().
When complete, the server will call WlanSoftmacIfc.ScanComplete()
with the same `scan_id` returned by StartActiveScan().

A device driver indicates support for `StartActiveScan()` using
`fuchsia.wlan.common/ProbeRequestOffloadExtension.supported`.

Common errors include:
ZX_ERR_INVALID_ARGS: The device is not capable of performing the
requested scan, e.g. because an incompatible channel was requested.
ZX_ERR_UNAVAILABLE: The device cannot currently perform scans.
ZX_ERR_SHOULD_WAIT: Another scan is already in-progress.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacStartActiveScanRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_StartActiveScan_Result` |

### StartPassiveScan

Starts a passive scan. The server will deliver scan results
as Beacon frames using WlanSoftmacIfc.Recv(). When complete,
the server will call WlanSoftmacIfc.ScanComplete() with the
same `scan_id` returned by StartPassiveScan().

The server indicates support for `StartPassiveScan()` using
`fuchsia.wlan.common/ScanOffloadExtension.supported`.

Common errors include:
ZX_ERR_INVALID_ARGS: The device is not capable of performing the
requested scan, e.g. because an incompatible channel was requested.
ZX_ERR_UNAVAILABLE: The device cannot currently perform scans.
ZX_ERR_SHOULD_WAIT: Another scan is already in-progress.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseStartPassiveScanRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_StartPassiveScan_Result` |

### UpdateWmmParameters

Indicate the device of modified WiFi Multimedia (WMM) parameters for a
particular access category (AC).

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseUpdateWmmParametersRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_UpdateWmmParameters_Result` |

## WlanSoftmacBridge

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=691)*

`WlanSoftmacBridge` is the protocol the `wlansoftmac` driver serves
to the bridged driver. This protocol **should not** be implemented
by a vendor driver.

<br />

### CancelScan

Cancels the ongoing scan corresponding to `scan_id`,
where `scan_id` is an identifier returned by
`StartPassiveScan()` or `StartActiveScan()`. If cancellation succeeds,
the server will soon call WlanSoftmacIfc.ScanComplete() with the same
`scan_id`.

A device driver indicates support for `CancelScan()` using
`fuchsia.wlan.common/ScanOffloadExtension.scan_cancel_supported`.

Common errors include:

- `ZX_ERR_NOT_FOUND`: `scan_id` does not match an ongoing scan.
- `ZX_ERR_NOT_SUPPORTED`: Server does not support scan cancellation.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseCancelScanRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_CancelScan_Result` |

### ClearAssociation

Notifies MAC and PHY that the peer has been de-associated.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseClearAssociationRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_ClearAssociation_Result` |

### DisableBeaconing

Disables hardware beaconing.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_DisableBeaconing_Result` |

### EnableBeaconing

Enables hardware Beaconing.

This method cannot be called while beaconing is enabled and so
`DisableBeaconing` must be called prior to this method if beaconing is
enabled.

All request fields are required.

Common errors include:

- `ZX_ERR_NOT_SUPPORTED`: The device does not support hardware beacons.
- `ZX_ERR_INVALID_ARGS`: The device cannot transmit the requested beacon.
- `ZX_ERR_BAD_STATE`: The device is already beaconing.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseEnableBeaconingRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_EnableBeaconing_Result` |

### InstallKey

Install a key for encryption when transmitting or receiving protected
frames.

Common errors include:
ZX_ERR_INVALID_ARGS: The given config does not specify a valid key.
ZX_ERR_NOT_SUPPORTED: The device does not support the given cipher.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanKeyConfiguration` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_InstallKey_Result` |

### JoinBss

Join a specific BSS in which we will participate.
This applies regardless of if we are hosting the BSS or joining it
(indicated by the `remote` flag in `JoinBssRequest`).
If successful, the device will switch to the correct channel and perform
any internal filtering/timing operations required to join the BSS.
For client STAs, this is the first step before authenticating.

Common errors include:   

ZX_ERR_NOT_SUPPORTED: The device does not support the given bss config.

#### Request

| Name | Type |
|---|---|
| `join_request` | `https://fuchsia.dev/reference/fuchsia.wlan.driver//https://fuchsia.dev/reference/fuchsia.wlan.driver#JoinBssRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_JoinBss_Result` |

### NotifyAssociationComplete

Notifies the device of a successful association and configures
additional parameters necessary to participate in that association.

# Errors

Common errors include:

- `ZX_ERR_BAD_STATE`: The device was not previously informed of this BSS via `WlanSoftmac.JoinBss`.

#### Request

| Name | Type |
|---|---|
| `assoc_cfg` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanAssociationConfig` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_NotifyAssociationComplete_Result` |

### Query

Gets general information about the device and its supported features.
This method is safe to call even when the SoftMAC has not yet started.

Note: The implementation of this method must not depend on a response
from an ethernet driver, otherwise there is a risk of deadlock.
The wlansoftmac driver calls this method synchronously while
serving the fuchsia.hardware.ethernet/EthernetImpl.Query method.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_Query_Result` |

### QueryDiscoverySupport

Gets information about the station discovery (e.g., scanning and
probing) features supported by the device. This method is safe to call
even when the SoftMAC has not yet started.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QueryDiscoverySupport_Result` |

### QueryMacSublayerSupport

Gets information about the MAC features supported by the device. This
method is safe to call even when the SoftMAC has not yet started.

Note: The implementation of this method must not depend on a response
from an ethernet driver, otherwise there is a risk of deadlock.
The wlansoftmac driver calls this method synchronously while
serving the fuchsia.hardware.ethernet/EthernetImpl.Query method.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QueryMacSublayerSupport_Result` |

### QuerySecuritySupport

Gets information about the security features supported by the device.
This method is safe to call even when the SoftMAC has not yet started.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QuerySecuritySupport_Result` |

### QuerySpectrumManagementSupport

Gets information about the spectrum usage (e.g., DFS) features supported
by the device. This method is safe to call even when the SoftMAC has not
yet started.

#### Request

\<EMPTY\>

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QuerySpectrumManagementSupport_Result` |

### SetChannel

Set the primary radio channel, e.g. in response to a channel switch event.
If successful, this will trigger the channel switch immediately. This may
impact the transmission of any frames that are in-flight, and might also
interfere with an ongoing scan request.

Common errors include:   

ZX_ERR_NOT_SUPPORTED: The device cannot switch to the requested channel.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseSetChannelRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_SetChannel_Result` |

### SetEthernetStatus

Forwards a status containing `ETHERNET_STATUS_*` flags to the
`fuchsia.hardware.ethernet/EthernetImplIfc` proxy owned by
the C++ portion of wlansoftmac.

As documented, the value of `status` is set by bits defined in
`ETHERNET_STATUS_*` flags. However, there is only one flag named
`ETHERNET_STATUS_ONLINE` and no specification of for the meaning
of specifying no flags. In practice, `0x1` means the status is up,
and `0x0` means the status is down.

While this method should belong in something like an
"`EthernetImplIfcBridge` protocol", it's included in the
`WlanSoftmacBridge` protocol as a convenience. The wlansoftmac driver
will eventually cease using a `fuchsia.hardware.ethernet/EthernetImplIfc`
proxy and use a `fuchsia.hardware.network.driver/NetworkDeviceIfc`
proxy instead. At that time, an equivalent of this method should be
refactored into a separate bridge.

#### Request

| Name | Type |
|---|---|
| `status` | `uint32` |

#### Response

\<EMPTY\>

### Start

Signal to the server that the MLME for the iface is ready to send and receive
frames.

The client provides the following arguments:

- `ifc_bridge`: The client end of a `WlanSoftmacIfcBridge` server which the `wlansoftmac` driver will use to forward `WlanSoftmacIfc` events to the bridged driver.
- `ethernet_tx`: A `ethernet_tx_t*` casted to a `uint64`. The `ethernet_tx_t` is defined in `//src/connectivity/wlan/drivers/wlansoftmac/rust_driver/c-binding/bindings.h`.
- `wlan_rx`: A `wlan_rx_t*` casted to a `uint64`. The `wlan_rx_t` is defined in `//src/connectivity/wlan/drivers/wlansoftmac/rust_driver/c-binding/bindings.h`.

The server must copy the contents of `ethernet_tx_t` and `wlan_rx_t` before
returning from this method. The lifetimes of `ethernet_tx_t*` and `wlan_rx_t*` are only as
long as this method call, but the contents of `ethernet_tx_t` and `wlan_rx_t` will
live until the server stops the MLME.

The server returns a server end of a `fuchsia.wlan.mlme/MLME` protocol. The SME
for the iface owns the client end. Thus, this channel is used for SME \<-\> MLME
communication.

The `WlanSoftmacBridge.Start` method is different from `WlanSoftmac.Start`
for two reasons. First, Rust bindings do not exist for Driver transported
protocols, so `WlanSoftmacIfcBridge` protocol must be Zircon transported to be
usable by the bridged driver. Second, the Zircon transport adds
significant latency compared to the Driver transport. As a result, the
`ethernet_tx` and `wlan_rx` arguments provide an FFI for the wlansoftmac driver
to send Ethernet and receive WLAN packets to the bridged driver with
latency comparable or better than a Driver transported protocol.

Except where noted, `WlanSoftmacBridge` methods must only be called after
a successful call to `WlanSoftmacBridge.Start`.

Common errors include:

- `ZX_ERR_ALREADY_BOUND`: `Start` was already called on this softmac.

#### Request

| Name | Type |
|---|---|
| `ifc_bridge` | `client_end:https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacIfcBridge` |
| `ethernet_tx` | `uint64` |
| `wlan_rx` | `uint64` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBridge_Start_Result` |

### StartActiveScan

Starts an active scan. The server will deliver scan results
as Beacon or Probe Response frames using WlanSoftmacIfc.Recv().
When complete, the server will call WlanSoftmacIfc.ScanComplete()
with the same `scan_id` returned by StartActiveScan().

A device driver indicates support for `StartActiveScan()` using
`fuchsia.wlan.common/ProbeRequestOffloadExtension.supported`.

Common errors include:
ZX_ERR_INVALID_ARGS: The device is not capable of performing the
requested scan, e.g. because an incompatible channel was requested.
ZX_ERR_UNAVAILABLE: The device cannot currently perform scans.
ZX_ERR_SHOULD_WAIT: Another scan is already in-progress.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacStartActiveScanRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_StartActiveScan_Result` |

### StartPassiveScan

Starts a passive scan. The server will deliver scan results
as Beacon frames using WlanSoftmacIfc.Recv(). When complete,
the server will call WlanSoftmacIfc.ScanComplete() with the
same `scan_id` returned by StartPassiveScan().

The server indicates support for `StartPassiveScan()` using
`fuchsia.wlan.common/ScanOffloadExtension.supported`.

Common errors include:
ZX_ERR_INVALID_ARGS: The device is not capable of performing the
requested scan, e.g. because an incompatible channel was requested.
ZX_ERR_UNAVAILABLE: The device cannot currently perform scans.
ZX_ERR_SHOULD_WAIT: Another scan is already in-progress.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseStartPassiveScanRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_StartPassiveScan_Result` |

### UpdateWmmParameters

Indicate the device of modified WiFi Multimedia (WMM) parameters for a
particular access category (AC).

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBaseUpdateWmmParametersRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_UpdateWmmParameters_Result` |

## WlanSoftmacIfc

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=340)*
Added: HEAD

<br />

### NotifyScanComplete

Reports completion of a scan associated with the unique `scan_id`. `status`
indicates whether the scan completed successfully, failed due to an error,
or was cancelled.

Return status indicates the reason for scan completion:
ZX_OK: All channels were scanned successfully.
ZX_ERR_CANCELLED: The scan was terminated by a user request, either an
explicit WlanSoftmac.CancelScan() or the initiation of an
incompatible request (e.g. connect).
ZX_ERR_OUT_OF_RANGE: The scan request included a prohibited channel.
This may be due to the current country setting.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacIfcBaseNotifyScanCompleteRequest` |

#### Response

\<EMPTY\>

### Recv

Forward up a packet received over the wireless medium.

#### Request

| Name | Type |
|---|---|
| `packet` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanRxPacket` |

#### Response

\<EMPTY\>

### ReportTxResult

Reports the result of an attempted transmission.

A device driver indicates support for `ReportTxResult()` using
`fuchsia.wlan.common/DeviceExtension.report_tx_result_supported`.

#### Request

| Name | Type |
|---|---|
| `tx_result` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanTxResult` |

#### Response

\<EMPTY\>

## WlanSoftmacIfcBase

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=209)*

Protocol containing methods common to both `WlanSoftmacIfc` and `WlanSoftmacIfcBridge`.

The `WlanSoftmacIfc` and `WlanSoftmacIfcBridge` protocols have common methods, as the latter
generally forwards `WlanSoftmacIfc` requests received in the wlansoftmac driver
to `WlanSoftmacIfcBridge` requests in the bridged driver. Composing this
protocol into `WlanSoftmacIfc` and `WlanSoftmacIfcBridge` minimizes the duplication of method
definitions (and associated request conversions that would be caused by such duplication).

**This protocol is not implemented directly by any component.** It is composed into `WlanSoftmacIfc`
and `WlanSoftmacIfcBridge`.
Added: HEAD

<br />

### NotifyScanComplete

Reports completion of a scan associated with the unique `scan_id`. `status`
indicates whether the scan completed successfully, failed due to an error,
or was cancelled.

Return status indicates the reason for scan completion:
ZX_OK: All channels were scanned successfully.
ZX_ERR_CANCELLED: The scan was terminated by a user request, either an
explicit WlanSoftmac.CancelScan() or the initiation of an
incompatible request (e.g. connect).
ZX_ERR_OUT_OF_RANGE: The scan request included a prohibited channel.
This may be due to the current country setting.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacIfcBaseNotifyScanCompleteRequest` |

#### Response

\<EMPTY\>

### ReportTxResult

Reports the result of an attempted transmission.

A device driver indicates support for `ReportTxResult()` using
`fuchsia.wlan.common/DeviceExtension.report_tx_result_supported`.

#### Request

| Name | Type |
|---|---|
| `tx_result` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanTxResult` |

#### Response

\<EMPTY\>

## WlanSoftmacIfcBridge

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=244)*

Protocol that transports `WlanSoftmacIfc` requests from the wlansoftmac driver to
the bridged driver.

This protocol should always be available at HEAD since it's intended to be an in-tree only protocol.
This protocol only exists because wlansoftmac cannot be implemented in Rust and must interact with
the wlansoftmac-c, wlansoftmac-rust, and wlan-mlme Rust crates.
Added: HEAD

<br />

### NotifyScanComplete

Reports completion of a scan associated with the unique `scan_id`. `status`
indicates whether the scan completed successfully, failed due to an error,
or was cancelled.

Return status indicates the reason for scan completion:
ZX_OK: All channels were scanned successfully.
ZX_ERR_CANCELLED: The scan was terminated by a user request, either an
explicit WlanSoftmac.CancelScan() or the initiation of an
incompatible request (e.g. connect).
ZX_ERR_OUT_OF_RANGE: The scan request included a prohibited channel.
This may be due to the current country setting.

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacIfcBaseNotifyScanCompleteRequest` |

#### Response

\<EMPTY\>

### ReportTxResult

Reports the result of an attempted transmission.

A device driver indicates support for `ReportTxResult()` using
`fuchsia.wlan.common/DeviceExtension.report_tx_result_supported`.

#### Request

| Name | Type |
|---|---|
| `tx_result` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanTxResult` |

#### Response

\<EMPTY\>

### StopBridgedDriver

Stop the bridged driver.

Calling this method causes both the server end of this protocol (`WlanSoftmacIfcBridge`)
to close and the client end of `WlanSoftmacBridge` to close. The server will not return a
response from this method until after processing all queued events.

In practice, the wlansoftmac driver calls this method during unbind.

#### Request

\<EMPTY\>

#### Response

\<EMPTY\>

## WlanTx

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=327)*

Protocol for sending a WLAN frame from the bridged wlansoftmac
driver to the wlansoftmac driver.

# Experimental

This protocol is implemented as a foreign function interface (FFI)
between the wlansoftmac driver and the bridged driver solely to improve
the performance of processing data frames through the wlan-mlme library.

<br />

### Transfer

#### Request

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanTxTransferRequest` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanTx_Transfer_Result` |

## **STRUCTS**

### EthernetRx_Transfer_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=269)*

\<EMPTY\>

### EthernetTx_Transfer_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=298)*

\<EMPTY\>

### WlanRxInfo

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=83)*

| Field | Type | Description | Default |
|---|---|---|---|
| `rx_flags` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanRxInfoFlags` | Receive flags. These represent boolean flags as opposed to enums or value-based info which are represented below. Values should be taken from the WLAN_RX_INFO_FLAGS_\* enum. | No default |
| `valid_fields` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanRxInfoValid` | Bitmask indicating which of the following fields are valid in this struct. Reserved flags must be zero. | No default |
| `phy` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#WlanPhyType` | The PHY format of the device at the time of the operation. | No default |
| `data_rate` | `uint32` | The data rate of the device, measured in units of 0.5 Mb/s. | No default |
| `primary` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelNumber` | The channel of the device at the time of the operation. This field must be included. | No default |
| `bandwidth` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelBandwidth` | The bandwidth of the channel at the time of the operation. | No default |
| `vht_secondary_80_channel` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelNumber` | The secondary 80 MHz channel segment, if applicable. | No default |
| `mcs` | `uint8` | The modulation and coding scheme index of the device at the time of the operation. Depends on the PHY format and channel width. | No default |
| `rssi_dbm` | `int8` | Received Signal Strength Indicator. | No default |
| `snr_dbh` | `int16` | Signal-to-Noise Ratio, in 0.5 dB. | No default |

### WlanRxPacket

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=184)*

| Field | Type | Description | Default |
|---|---|---|---|
| `mac_frame` | `vector<uint8>` |   | No default |
| `info` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanRxInfo` |   | No default |

### WlanSoftmacBase_CancelScan_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=671)*

\<EMPTY\>

### WlanSoftmacBase_ClearAssociation_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=595)*

\<EMPTY\>

### WlanSoftmacBase_DisableBeaconing_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=566)*

\<EMPTY\>

### WlanSoftmacBase_EnableBeaconing_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=562)*

\<EMPTY\>

### WlanSoftmacBase_InstallKey_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=575)*

\<EMPTY\>

### WlanSoftmacBase_JoinBss_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=533)*

\<EMPTY\>

### WlanSoftmacBase_NotifyAssociationComplete_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=589)*

\<EMPTY\>

### WlanSoftmacBase_QueryDiscoverySupport_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=476)*

| Field | Type | Description | Default |
|---|---|---|---|
| `resp` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#DiscoverySupport` |   | No default |

### WlanSoftmacBase_QueryMacSublayerSupport_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=488)*

| Field | Type | Description | Default |
|---|---|---|---|
| `resp` | `https://fuchsia.dev/reference/fuchsia.wlan.common//https://fuchsia.dev/reference/fuchsia.wlan.common#MacSublayerSupport` |   | No default |

### WlanSoftmacBase_QuerySecuritySupport_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=495)*

| Field | Type | Description | Default |
|---|---|---|---|
| `resp` | `https://fuchsia.dev/reference/fuchsia.wlan.common//https://fuchsia.dev/reference/fuchsia.wlan.common#SecuritySupport` |   | No default |

### WlanSoftmacBase_QuerySpectrumManagementSupport_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=503)*

| Field | Type | Description | Default |
|---|---|---|---|
| `resp` | `https://fuchsia.dev/reference/fuchsia.wlan.common//https://fuchsia.dev/reference/fuchsia.wlan.common#SpectrumManagementSupport` |   | No default |

### WlanSoftmacBase_SetChannel_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=519)*

\<EMPTY\>

### WlanSoftmacBase_UpdateWmmParameters_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=679)*

\<EMPTY\>

### WlanSoftmacBridge_Start_Response [resource](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#value-vs-resource)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=737)*

| Field | Type | Description | Default |
|---|---|---|---|
| `sme_channel` | `handle<channel>` |   | No default |

### WlanSoftmac_QueueTx_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=804)*

\<EMPTY\>

### WlanSoftmac_Start_Response [resource](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#value-vs-resource)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=787)*

| Field | Type | Description | Default |
|---|---|---|---|
| `sme_channel` | `handle<channel>` |   | No default |

### WlanTxInfo

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=131)*

| Field | Type | Description | Default |
|---|---|---|---|
| `tx_flags` | `uint32` | Transmit flags. These represent boolean options as opposed to enums or other value-based info which are represented below. Values should be taken from the WLAN_TX_INFO_FLAGS_\* enum. | No default |
| `valid_fields` | `uint32` | Bitmask indicating which of the following fields are valid in this struct. Reserved flags must be zero. Values for fields not indicated by a flag may be chosen at the discretion of the softmac driver. | No default |
| `tx_vector_idx` | `uint16` |   | No default |
| `phy` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#WlanPhyType` |   | No default |
| `bandwidth` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelBandwidth` |   | No default |
| `mcs` | `uint8` | The modulation and coding scheme index for this packet. Depends on the PHY format and channel width. | No default |

### WlanTxPacket

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=190)*

| Field | Type | Description | Default |
|---|---|---|---|
| `mac_frame` | `vector<uint8>` |   | No default |
| `info` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanTxInfo` | Additional data needed to transmit the packet. TODO(https://fxbug.dev/42056823): This field is ignored by iwlwifi. | No default |

### WlanTxResult

*Defined in [fuchsia.wlan.softmac/tx.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/tx.fidl;l=35)*

TX status reports are used by the Minstrel rate selection algorithm
Tests should use the default value in //src/connectivity/wlan/testing/hw-sim/src/lib.rs
Added: HEAD

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `tx_result_entry` | `array<https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanTxResultEntry, 8>` | up to 8 different tx_result_entry for one PPDU frame. WLAN_TX_VECTOR_IDX_INVALID indicates no more entries. | No default |
| `peer_addr` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#MacAddr` | Destination mac address, or addr1 in packet NEXTer. | No default |
| `result_code` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanTxResultCode` |   | No default |

### WlanTxResultEntry

*Defined in [fuchsia.wlan.softmac/tx.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/tx.fidl;l=16)*

One entry in a WlanTxResult report. Indicates a number of attempted transmissions on
a particular tx vector, but does not imply successful transmission.
Added: HEAD

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `tx_vector_idx` | `uint16` |   | No default |
| `attempts` | `uint8` | Number of total attempts with this specific tx vector, including successful attempts. DDK assumes the number of attempts per packet will not exceed 255. (typically \<= 8) | No default |

### WlanTx_Transfer_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=334)*

\<EMPTY\>

## **ENUMS**

### WlanProtection [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

Type: `uint8`

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=154)*

| Name | Value | Description |
|---|---|---|
| ### NONE | `0` |   |
| ### RX | `1` |   |
| ### TX | `2` |   |
| ### RX_TX | `3` |   |

### WlanTxResultCode [flexible](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

Type: `uint8`

*Defined in [fuchsia.wlan.softmac/tx.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/tx.fidl;l=25)*

Outcome of a packet transmission.
Added: HEAD

<br />

| Name | Value | Description |
|---|---|---|
| ### FAILED | `0` | ACK was not received or transmission otherwise failed. |
| ### SUCCESS | `1` | ACK was received from peer. |

## **TABLES**

### DiscoverySupport

*Defined in [fuchsia.wlan.softmac/features.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/features.fidl;l=29)*

Features related to discovery of potential BSSs.
See IEEE 802.11-2016 11.1.4.2 and 11.1.4.3.
Added: HEAD

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `scan_offload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#ScanOffloadExtension` |   |
| ### 2 | `probe_response_offload` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#ProbeResponseOffloadExtension` |   |

### EthernetRxTransferRequest

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=266)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `packet_address` | `uint64` |   |
| ### 2 | `packet_size` | `uint64` |   |

### EthernetTxTransferRequest

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=292)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `packet_address` | `uint64` |   |
| ### 2 | `packet_size` | `uint64` |   |
| ### 3 | `async_id` | `uint64` |   |
| ### 4 | `borrowed_operation` | `uint64` |   |
| ### 5 | `complete_borrowed_operation` | `uint64` |   |

### ProbeResponseOffloadExtension

*Defined in [fuchsia.wlan.softmac/features.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/features.fidl;l=21)*

Indicates where and how probe responses are to be handled.
See IEEE 802.11-2016 11.1.4.3.
This is a discovery extension, expected to be used for softmac only.
Added: HEAD

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `supported` | `bool` | If true, driver responds to probe requests; otherwise MLME must respond. |

### ScanOffloadExtension

*Defined in [fuchsia.wlan.softmac/features.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/features.fidl;l=10)*

Indicates where and how scan logic is orchestrated.
See IEEE 802.11-2016 11.1.4.2 and 11.1.4.3.
This is a discovery extension, expected to be used for softmac only.
Added: HEAD

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `supported` | `bool` | If true, driver orchestrates scans; otherwise MLME must do so. |
| ### 2 | `scan_cancel_supported` | `bool` |   |

### WlanAssociationConfig

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=418)*

Argument table to be passed as the single argument to
WlanSoftmac.NotifyAssociationComplete.
All information here is relevant only in the context of the association with
the given peer_addr.
All fields in this table are required unless stated otherwise.

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `bssid` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#MacAddr` | The MAC address of the peer with which we are now associated. |
| ### 2 | `aid` | `uint16` | A unique identifier for this specific association. This is unique among active associations, not necessarily historical ones. |
| ### 3 | `listen_interval` | `uint16` |   |
| ### 4 | `primary` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelNumber` | The channel on which we have associated with this peer. |
| ### 5 | `qos` | `bool` | QoS capable and parameters |
| ### 6 | `wmm_params` | `https://fuchsia.dev/reference/fuchsia.wlan.driver//https://fuchsia.dev/reference/fuchsia.wlan.driver#WlanWmmParameters` | WFA WMM v1.2, 2.2.2 |
| ### 7 | `rates` | `vector<uint8>:263` | Concatenation of SupportedRates and ExtendedSupportedRates IEEE Std 802.11-2016, 9.4.2.3 \& 9.4.2.13 |
| ### 8 | `capability_info` | `uint16` | IEEE Std 802.11-2016, 9.4.1.4 |
| ### 9 | `ht_cap` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#HtCapabilities` | IEEE Std 802.11-2016, 9.4.2.56, 57 Rx MCS Bitmask in Supported MCS Set field represents the set of MCS the peer can receive at from this device, considering this device's Tx capability. |
| ### 10 | `ht_op` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#HtOperation` |   |
| ### 11 | `vht_cap` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#VhtCapabilities` | IEEE Std 802.11-2016, 9.4.2.158, 159 |
| ### 12 | `vht_op` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#VhtOperation` |   |
| ### 13 | `bandwidth` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelBandwidth` |   |
| ### 14 | `vht_secondary_80_channel` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelNumber` |   |

### WlanKeyConfiguration

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=162)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `protection` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanProtection` | Which path to protect: None, TX, RX, or TX and RX. |
| ### 2 | `cipher_oui` | `array<uint8, 3>` | IEEE Cipher suite selector. See IEEE Std 802.11-2016, 9.4.2.25.2, Table 9-131 |
| ### 3 | `cipher_type` | `uint8` |   |
| ### 4 | `key_type` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#KeyType` | Whether this key is a pairwise, group or peer key. |
| ### 5 | `peer_addr` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#MacAddr` | The peer MAC address for pairwise and peer keys. For group keys this value is always the broadcast address. |
| ### 6 | `key_idx` | `uint8` | Index for rotating keys, e.g. group keys. This value is always 0 for key types which aren't rotating, e.g. pairwise keys. |
| ### 7 | `key` | `vector<uint8>:32` |   |
| ### 8 | `rsc` | `uint64` | Receive Sequence Counter for group keys only. In all other cases the RSC will be 0. |

### WlanRxTransferRequest

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=310)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `packet_address` | `uint64` |   |
| ### 2 | `packet_size` | `uint64` |   |
| ### 3 | `packet_info` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanRxInfo` |   |
| ### 4 | `async_id` | `uint64` |   |
| ### 5 | `arena` | `uint64` |   |

### WlanSoftmacBandCapability

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=12)*

Describes the capabilities of a SoftMAC on a particular band.

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `band` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#WlanBand` | Band to which the capabilities described by this datagram apply. |
| ### 5 | `ht_caps` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#HtCapabilities` | Servers (i.e., drivers) should set `ht_caps` if the device supports HT PHY mode or unset `ht_caps` if the device does not. |
| ### 7 | `vht_caps` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#VhtCapabilities` | Servers (i.e., drivers) should set `vht_caps` if the device supports VHT PHY mode or unset `vht_caps` if the device does not. |
| ### 10 | `basic_rates` | `vector<uint8>:12` | Set of supported basic rates in units of 500 Kbit/s (as defined in IEEE Std 802.11-2016, 9.4.2.3), e.g., 0x02 represents 1 Mbps. This set represents all of the non-HT rates that the device supports for both transmitting and receiving. |
| ### 11 | `primary_channels` | `vector<https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelNumber>:256` | Set of valid primary channels per regulatory information as determined by the device driver during iface creation. A primary channel refers to a channel on which APs may transmit beacon frames. The client must use this set to determine the efficacy of subsequent requests to scan a subset of channels using the iface or to determine which primary channel to use when starting an AP. |

### WlanSoftmacBaseCancelScanRequest

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=669)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `scan_id` | `uint64` |   |

### WlanSoftmacBaseClearAssociationRequest

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=593)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `peer_addr` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#MacAddr` |   |

### WlanSoftmacBaseEnableBeaconingRequest

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=550)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `packet_template` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanTxPacket` | Beacon template. Since this is a template, some packet content can only contain minimal valid information, because the content is later modified by hardware, firmware, or software. |
| ### 2 | `tim_ele_offset` | `uint64` | TIM offset to the start of the `packet_template` field in bytes. This must index the first byte of the TIM IE, which is the tag ID. |
| ### 3 | `beacon_interval` | `uint16` | Beacon interval period in TU. |

### WlanSoftmacBaseSetChannelRequest

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=515)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `primary` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelNumber` |   |
| ### 2 | `bandwidth` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelBandwidth` |   |
| ### 3 | `vht_secondary_80_channel` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelNumber` |   |

### WlanSoftmacBaseStartPassiveScanRequest

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=611)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `channels` | `vector<https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelNumber>:256` | List of channels to scan on. An empty list of channels will cause a scan request to immediately return ZX_ERR_INVALID_ARGS. Invalid channel numbers will be silently ignored. The validity of a channel number depends on the current regulatory region, and a SoftMAC driver cannot always determine the region setting. This is especially the case when firmware changes the region setting dynamically. This is a required parameter. |
| ### 2 | `min_channel_time` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Duration` | Minimum duration to spend on each channel during the scan. |
| ### 3 | `max_channel_time` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Duration` | Maximum duration to spend on each channel during the scan. |
| ### 4 | `min_home_time` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Duration` | Minimum duration to spend on the home channel(s) between the dwell time on each channel where a home channel corresponds to channels the device should otherwise be present on while not scanning. |

### WlanSoftmacBaseUpdateWmmParametersRequest

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=676)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `ac` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#WlanAccessCategory` |   |
| ### 2 | `params` | `https://fuchsia.dev/reference/fuchsia.wlan.driver//https://fuchsia.dev/reference/fuchsia.wlan.driver#WlanWmmParameters` |   |

### WlanSoftmacBase_StartActiveScan_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=651)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `scan_id` | `uint64` |   |

### WlanSoftmacBase_StartPassiveScan_Response

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=633)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `scan_id` | `uint64` |   |

### WlanSoftmacIfcBaseNotifyScanCompleteRequest

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=231)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `status` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Result` |   |
| ### 2 | `scan_id` | `uint64` |   |

### WlanSoftmacQueryResponse

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=42)*

High-level information describing the state of a running softmac.
All fields in this response are required.

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `sta_addr` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#MacAddr` | Station address. |
| ### 2 | `mac_role` | `https://fuchsia.dev/reference/fuchsia.wlan.common//https://fuchsia.dev/reference/fuchsia.wlan.common#WlanMacRole` | MAC role |
| ### 3 | `supported_phys` | `vector<https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#WlanPhyType>:64` | Bitmask indicating WlanInfoPhyType values supported by the hardware. |
| ### 4 | `hardware_capability` | `https://fuchsia.dev/reference/fuchsia.wlan.driver//https://fuchsia.dev/reference/fuchsia.wlan.driver#WlanSoftmacHardwareCapability` | Bitmask indicating enabled WlanInfoHardwareCapability values. Values defined as fuchsia.wlan.driver.WlanSoftmacHardwareCapability |
| ### 5 | `band_caps` | `vector<https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBandCapability>:16` | Supported bands. |
| ### 6 | `factory_addr` | `https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#MacAddr` | The MAC address of the device as assigned in the factory. |

### WlanSoftmacStartActiveScanRequest

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=350)*

Argument struct to be passed as the single argument to WlanSoftmac.StartActiveScan

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `channels` | `vector<https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#ChannelNumber>:256` | List of channels to scan on. An empty list of channels will cause a scan request to immediately return ZX_ERR_INVALID_ARGS. Invalid channel numbers will be silently ignored. The validity of a channel number depends on the current regulatory region, and a SoftMAC driver cannot always determine the region setting. This is especially the case when firmware changes the region setting dynamically. |
| ### 2 | `ssids` | `vector<https://fuchsia.dev/reference/fuchsia.wlan.ieee80211//https://fuchsia.dev/reference/fuchsia.wlan.ieee80211#CSsid>:84` | List of SSIDs to scan for. For a list with a single SSID, the SSID will be placed in the SSID element in the Probe Request frame. For a list with more than one SSID, all SSIDs will be placed in an SSID List element in the Probe Request frame with the first SSID in the list in the required SSID element. An empty list is the same as specifying a list containing only the wildcard SSID. |
| ### 3 | `mac_header` | `vector<uint8>:28` | Buffer containing a MAC header (as defined in IEEE Std 802.11-2016, 9.3.3.2) to include in each Probe Request frame. |
| ### 4 | `ies` | `vector<uint8>:11454` | Buffer containing IE bytes to include in each Probe Request frame. The IEs specified must not result in a Probe Request MMPDU that exceed the limits defined by IEEE Std 802.11-2016, 9.2.4.7. MMPDU limit constants can be found in ieee80211. These limits are very large and will likely not be exceeded by specifying the most common IEs found in Probe Request frames. |
| ### 5 | `min_channel_time` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Duration` | Minimum duration to spend on each channel during the scan. |
| ### 6 | `max_channel_time` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Duration` | Maximum duration to spend on each channel during the scan. |
| ### 7 | `min_home_time` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Duration` | Minimum duration to spend on the home channel(s) between the dwell time on each channel where a home channel corresponds to channels the device should otherwise be present on while not scanning. |
| ### 8 | `min_probes_per_channel` | `uint8` | Minimum number of Probe Request frames to transmit per channel visit during a scan. The definition of a channel visit may differ between device drivers, but it is roughly the interval of time spent on a specific channel during a scan. Sending more than one Probe Request frame on a channel may increase the probability that it is received in a noisy environment. |
| ### 9 | `max_probes_per_channel` | `uint8` | Maximum number of Probe Request frames to transmit per channel visit during a scan. The definition of a channel visit may differ between device drivers, but it is roughly the interval of time spent on a specific channel during a scan. Specifying 0 is invalid since at least one Probe Request frame must be transmitted for an active scan. Limiting the number of Probe Request frames sent on a channel reduces the time spent transmitting frames, and thus increase the time spent receiving frames, while scanning. |

### WlanTxTransferRequest

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=328)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `packet_address` | `uint64` |   |
| ### 2 | `packet_size` | `uint64` |   |
| ### 3 | `packet_info` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanTxInfo` |   |
| ### 4 | `async_id` | `uint64` |   |
| ### 5 | `arena` | `uint64` |   |

## **UNIONS**

### EthernetRx_Transfer_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=269)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#EthernetRx_Transfer_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### EthernetTx_Transfer_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=298)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#EthernetTx_Transfer_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_CancelScan_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=671)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_CancelScan_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_ClearAssociation_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=595)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_ClearAssociation_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_DisableBeaconing_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=566)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_DisableBeaconing_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_EnableBeaconing_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=562)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_EnableBeaconing_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_InstallKey_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=575)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_InstallKey_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_JoinBss_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=533)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_JoinBss_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_NotifyAssociationComplete_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=589)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_NotifyAssociationComplete_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_QueryDiscoverySupport_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=476)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QueryDiscoverySupport_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_QueryMacSublayerSupport_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=488)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QueryMacSublayerSupport_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_QuerySecuritySupport_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=495)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QuerySecuritySupport_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_QuerySpectrumManagementSupport_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=503)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_QuerySpectrumManagementSupport_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_Query_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=470)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacQueryResponse` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_SetChannel_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=519)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_SetChannel_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_StartActiveScan_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=651)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_StartActiveScan_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_StartPassiveScan_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=633)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_StartPassiveScan_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBase_UpdateWmmParameters_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=679)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBase_UpdateWmmParameters_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmacBridge_Start_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible) [resource](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#value-vs-resource)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=737)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmacBridge_Start_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmac_QueueTx_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=804)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmac_QueueTx_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanSoftmac_Start_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible) [resource](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#value-vs-resource)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=787)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanSoftmac_Start_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### WlanTx_Transfer_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=334)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.wlan.softmac#WlanTx_Transfer_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

## **BITS**

### WlanRxInfoFlags [flexible](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

Type: `uint32`

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=75)*

| Name | Value | Description |
|---|---|---|
| ### FCS_INVALID | 1 | The FCS for the received frame was invalid. |
| ### FRAME_BODY_PADDING_4 | 2 | Padding was added after the MAC header to align the frame body to 4 bytes. |

### WlanRxInfoValid [flexible](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

Type: `uint32`

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=65)*

| Name | Value | Description |
|---|---|---|
| ### PHY | 1 |   |
| ### DATA_RATE | 2 |   |
| ### CHAN_WIDTH | 4 |   |
| ### MCS | 8 |   |
| ### RSSI | 16 |   |
| ### SNR | 32 |   |

### WlanTxInfoFlags [flexible](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

Type: `uint32`

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=112)*

| Name | Value | Description |
|---|---|---|
| ### PROTECTED | 1 | Indicate this packet should be protected. |
| ### FAVOR_RELIABILITY | 2 | For rate control: indicate an important data frame, such as EAPOL, which should be sent *reliably* rather than fast, and is exempt from rate probing |
| ### QOS | 4 | Indicate that this packet should be sent out with QoS header when possible (11n+). |

### WlanTxInfoValid [flexible](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

Type: `uint32`

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=123)*

| Name | Value | Description |
|---|---|---|
| ### DATA_RATE | 1 |   |
| ### TX_VECTOR_IDX | 2 |   |
| ### PHY | 4 |   |
| ### CHANNEL_BANDWIDTH | 8 |   |
| ### MCS | 16 |   |

## **CONSTANTS**

| Name | Value | Type | Description |
|---|---|---|---|
| [WLAN_MAC_MAX_RATES](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=411) | `263` | `uint32` |   |
| [WLAN_TX_RESULT_MAX_ENTRY](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/tx.fidl;l=11) | `8` | `uint32` | Added: HEAD |
| [WLAN_TX_VECTOR_IDX_INVALID](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/tx.fidl;l=9) | `0` | `uint16` | Added: HEAD |

## **SERVICES**

### Service

*Defined in [fuchsia.wlan.softmac/softmac.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=809)*

| Name | Type | Transport |
|---|---|---|
| [wlan_softmac](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.wlan.softmac/softmac.fidl;l=810) | `fuchsia.wlan.softmac/WlanSoftmac` | Driver |

<br />