fuchsia.wlan.softmac

Added: 15

PROTOCOLS

EthernetRx

Defined in fuchsia.wlan.softmac/softmac.fidl

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.

Added: HEAD

Transfer

Request

NameType
payload EthernetRxTransferRequest

Response

NameType
payload EthernetRx_Transfer_Result

EthernetTx

Defined in fuchsia.wlan.softmac/softmac.fidl

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.

Added: HEAD

Transfer

Request

NameType
payload EthernetTxTransferRequest

Response

NameType
payload EthernetTx_Transfer_Result

WlanRx

Defined in fuchsia.wlan.softmac/softmac.fidl

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.

Added: HEAD

Transfer

Request

NameType
payload WlanRxTransferRequest

Response

<EMPTY>

WlanSoftmac

Defined in fuchsia.wlan.softmac/softmac.fidl

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

Added: 15

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.
Added: HEAD

Request

NameType
payload WlanSoftmacBaseCancelScanRequest

Response

NameType
payload WlanSoftmacBase_CancelScan_Result

ClearAssociation

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

Added: HEAD

Request

NameType
payload WlanSoftmacBaseClearAssociationRequest

Response

NameType
payload WlanSoftmacBase_ClearAssociation_Result

DisableBeaconing

Disables hardware beaconing.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.
Added: HEAD

Request

NameType
payload WlanSoftmacBaseEnableBeaconingRequest

Response

NameType
payload 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.

Added: HEAD

Request

NameType
payload WlanKeyConfiguration

Response

NameType
payload 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.

Added: HEAD

Request

NameType
join_request fuchsia.wlan.common/JoinBssRequest

Response

NameType
payload 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.
Added: HEAD

Request

NameType
assoc_cfg WlanAssociationConfig

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: 15

Request

NameType
packet WlanTxPacket

Response

NameType
payload 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.

Added: HEAD

Request

NameType
payload WlanSoftmacBaseSetChannelRequest

Response

NameType
payload 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.
Added: 15

Request

NameType
ifc client_end:WlanSoftmacIfc

Response

NameType
payload 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.

Added: HEAD

Request

NameType
payload WlanSoftmacStartActiveScanRequest

Response

NameType
payload 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.

Added: HEAD

Request

NameType
payload WlanSoftmacBaseStartPassiveScanRequest

Response

NameType
payload WlanSoftmacBase_StartPassiveScan_Result

Stop

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

Added: 15

Request

<EMPTY>

Response

<EMPTY>

UpdateWmmParameters

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

Added: HEAD

Request

NameType
payload WlanSoftmacBaseUpdateWmmParametersRequest

Response

NameType
payload WlanSoftmacBase_UpdateWmmParameters_Result

WlanSoftmacBase

Defined in fuchsia.wlan.softmac/softmac.fidl

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.

Added: HEAD

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.
Added: HEAD

Request

NameType
payload WlanSoftmacBaseCancelScanRequest

Response

NameType
payload WlanSoftmacBase_CancelScan_Result

ClearAssociation

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

Added: HEAD

Request

NameType
payload WlanSoftmacBaseClearAssociationRequest

Response

NameType
payload WlanSoftmacBase_ClearAssociation_Result

DisableBeaconing

Disables hardware beaconing.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.
Added: HEAD

Request

NameType
payload WlanSoftmacBaseEnableBeaconingRequest

Response

NameType
payload 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.

Added: HEAD

Request

NameType
payload WlanKeyConfiguration

Response

NameType
payload 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.

Added: HEAD

Request

NameType
join_request fuchsia.wlan.common/JoinBssRequest

Response

NameType
payload 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.
Added: HEAD

Request

NameType
assoc_cfg WlanAssociationConfig

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

NameType
payload WlanSoftmacBaseSetChannelRequest

Response

NameType
payload 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.

Added: HEAD

Request

NameType
payload WlanSoftmacStartActiveScanRequest

Response

NameType
payload 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.

Added: HEAD

Request

NameType
payload WlanSoftmacBaseStartPassiveScanRequest

Response

NameType
payload WlanSoftmacBase_StartPassiveScan_Result

UpdateWmmParameters

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

Added: HEAD

Request

NameType
payload WlanSoftmacBaseUpdateWmmParametersRequest

Response

NameType
payload WlanSoftmacBase_UpdateWmmParameters_Result

WlanSoftmacBridge

Defined in fuchsia.wlan.softmac/softmac.fidl

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

Added: 15

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.
Added: HEAD

Request

NameType
payload WlanSoftmacBaseCancelScanRequest

Response

NameType
payload WlanSoftmacBase_CancelScan_Result

ClearAssociation

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

Added: HEAD

Request

NameType
payload WlanSoftmacBaseClearAssociationRequest

Response

NameType
payload WlanSoftmacBase_ClearAssociation_Result

DisableBeaconing

Disables hardware beaconing.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.
Added: HEAD

Request

NameType
payload WlanSoftmacBaseEnableBeaconingRequest

Response

NameType
payload 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.

Added: HEAD

Request

NameType
payload WlanKeyConfiguration

Response

NameType
payload 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.

Added: HEAD

Request

NameType
join_request fuchsia.wlan.common/JoinBssRequest

Response

NameType
payload 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.
Added: HEAD

Request

NameType
assoc_cfg WlanAssociationConfig

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

<EMPTY>

Response

NameType
payload 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.

Added: HEAD

Request

NameType
payload WlanSoftmacBaseSetChannelRequest

Response

NameType
payload 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.

Added: HEAD

Request

NameType
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.
Added: HEAD

Request

NameType
ifc_bridge client_end:WlanSoftmacIfcBridge
ethernet_tx uint64
wlan_rx uint64

Response

NameType
payload 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.

Added: HEAD

Request

NameType
payload WlanSoftmacStartActiveScanRequest

Response

NameType
payload 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.

Added: HEAD

Request

NameType
payload WlanSoftmacBaseStartPassiveScanRequest

Response

NameType
payload WlanSoftmacBase_StartPassiveScan_Result

UpdateWmmParameters

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

Added: HEAD

Request

NameType
payload WlanSoftmacBaseUpdateWmmParametersRequest

Response

NameType
payload WlanSoftmacBase_UpdateWmmParameters_Result

WlanSoftmacIfc

Defined in fuchsia.wlan.softmac/softmac.fidl

Added: 15

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.

Added: HEAD

Request

NameType
payload WlanSoftmacIfcBaseNotifyScanCompleteRequest

Response

<EMPTY>

Recv

Forward up a packet received over the wireless medium.

Request

NameType
packet 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.

Added: HEAD

Request

NameType
tx_result fuchsia.wlan.common/WlanTxResult

Response

<EMPTY>

WlanSoftmacIfcBase

Defined in fuchsia.wlan.softmac/softmac.fidl

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

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.

Added: HEAD

Request

NameType
payload 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.

Added: HEAD

Request

NameType
tx_result fuchsia.wlan.common/WlanTxResult

Response

<EMPTY>

WlanSoftmacIfcBridge

Defined in fuchsia.wlan.softmac/softmac.fidl

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

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.

Added: HEAD

Request

NameType
payload 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.

Added: HEAD

Request

NameType
tx_result fuchsia.wlan.common/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.

Added: HEAD

Request

<EMPTY>

Response

<EMPTY>

WlanTx

Defined in fuchsia.wlan.softmac/softmac.fidl

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.

Added: HEAD

Transfer

Request

NameType
payload WlanTxTransferRequest

Response

NameType
payload WlanTx_Transfer_Result

STRUCTS

EthernetRx_Transfer_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

EthernetTx_Transfer_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

WlanRxInfo

Defined in fuchsia.wlan.softmac/softmac.fidl

Added: 15

FieldTypeDescriptionDefault
rx_flags 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 WlanRxInfoValid

Bitmask indicating which of the following fields are valid in this struct. Reserved flags must be zero.

No default
phy fuchsia.wlan.common/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
channel fuchsia.wlan.common/WlanChannel

The channel of the device at the time of the operation. This field must be included.

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

Added: 15

FieldTypeDescriptionDefault
mac_frame vector<uint8> No default
info WlanRxInfo No default

WlanSoftmacBase_CancelScan_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

WlanSoftmacBase_ClearAssociation_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

WlanSoftmacBase_DisableBeaconing_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

WlanSoftmacBase_EnableBeaconing_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

WlanSoftmacBase_InstallKey_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

WlanSoftmacBase_JoinBss_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

WlanSoftmacBase_NotifyAssociationComplete_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

WlanSoftmacBase_QueryDiscoverySupport_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

FieldTypeDescriptionDefault
resp fuchsia.wlan.common/DiscoverySupport No default

WlanSoftmacBase_QueryMacSublayerSupport_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

FieldTypeDescriptionDefault
resp fuchsia.wlan.common/MacSublayerSupport No default

WlanSoftmacBase_QuerySecuritySupport_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

FieldTypeDescriptionDefault
resp fuchsia.wlan.common/SecuritySupport No default

WlanSoftmacBase_QuerySpectrumManagementSupport_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

FieldTypeDescriptionDefault
resp fuchsia.wlan.common/SpectrumManagementSupport No default

WlanSoftmacBase_SetChannel_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

WlanSoftmacBase_UpdateWmmParameters_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

WlanSoftmacBridge_Start_Response resource

Defined in fuchsia.wlan.softmac/softmac.fidl

FieldTypeDescriptionDefault
sme_channel handle<channel> No default

WlanSoftmac_QueueTx_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

WlanSoftmac_Start_Response resource

Defined in fuchsia.wlan.softmac/softmac.fidl

FieldTypeDescriptionDefault
sme_channel handle<channel> No default

WlanTxInfo

Defined in fuchsia.wlan.softmac/softmac.fidl

Added: 15

FieldTypeDescriptionDefault
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 fuchsia.wlan.common/WlanPhyType No default
channel_bandwidth fuchsia.wlan.common/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

Added: 15

FieldTypeDescriptionDefault
mac_frame vector<uint8> No default
info WlanTxInfo

Additional data needed to transmit the packet. TODO(https://fxbug.dev/42056823): This field is ignored by iwlwifi.

No default

WlanTx_Transfer_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

<EMPTY>

ENUMS

WlanProtection strict

Type: uint8

Defined in fuchsia.wlan.softmac/softmac.fidl

Added: 15

NameValueDescription
0
1
2
3

TABLES

EthernetRxTransferRequest

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalFieldTypeDescription
packet_address uint64
packet_size uint64

EthernetTxTransferRequest

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalFieldTypeDescription
packet_address uint64
packet_size uint64
async_id uint64
borrowed_operation uint64
complete_borrowed_operation uint64

WlanAssociationConfig

Defined in fuchsia.wlan.softmac/softmac.fidl

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.

Added: 15

OrdinalFieldTypeDescription
bssid fuchsia.wlan.ieee80211/MacAddr

The MAC address of the peer with which we are now associated.

aid uint16

A unique identifier for this specific association. This is unique among active associations, not necessarily historical ones.

listen_interval uint16
channel fuchsia.wlan.common/WlanChannel

The channel on which we have associated with this peer.

qos bool

QoS capable and parameters

wmm_params fuchsia.wlan.common/WlanWmmParameters

WFA WMM v1.2, 2.2.2

rates vector<uint8>:263

Concatenation of SupportedRates and ExtendedSupportedRates IEEE Std 802.11-2016, 9.4.2.3 & 9.4.2.13

capability_info uint16

IEEE Std 802.11-2016, 9.4.1.4

ht_cap 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.

ht_op fuchsia.wlan.ieee80211/HtOperation
vht_cap fuchsia.wlan.ieee80211/VhtCapabilities

IEEE Std 802.11-2016, 9.4.2.158, 159

vht_op fuchsia.wlan.ieee80211/VhtOperation

WlanKeyConfiguration

Defined in fuchsia.wlan.softmac/softmac.fidl

Added: 15

OrdinalFieldTypeDescription
protection WlanProtection

Which path to protect: None, TX, RX, or TX and RX.

cipher_oui array<uint8, 3>

IEEE Cipher suite selector. See IEEE Std 802.11-2016, 9.4.2.25.2, Table 9-131

cipher_type uint8
key_type fuchsia.wlan.common/WlanKeyType

Whether this key is a pairwise, group or peer key.

peer_addr fuchsia.wlan.ieee80211/MacAddr

The peer MAC address for pairwise and peer keys. For group keys this value is always the broadcast address.

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.

key vector<uint8>:32
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

OrdinalFieldTypeDescription
packet_address uint64
packet_size uint64
packet_info WlanRxInfo
async_id uint64
arena uint64

WlanSoftmacBandCapability

Defined in fuchsia.wlan.softmac/softmac.fidl

Describes the capabilities of a SoftMAC on a particular band.

Added: 15

OrdinalFieldTypeDescription
band fuchsia.wlan.ieee80211/WlanBand
Added: NEXT
basic_rate_count uint8

Count of supported basic rates. If the basic_rate_list field is present, then this field must also be present and must be consistent with the basic_rate_list field.

Deprecation

This field has been replaced by basic_rates. Servers (i.e., drivers) that target platform versions wherein basic_rate_count is deprecated should omit it and write basic rates to the basic_rates field instead. Clients attempt to read basic_rates before basic_rate_count.

Deprecated: 15
basic_rate_list array<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.

The count of rates present in this field must be consistent with the basic_rate_count field when present.

Deprecation

This field has been replaced by basic_rates. Servers (i.e., drivers) that target platform versions wherein basic_rate_list is deprecated should omit it and write basic rates to the basic_rates field instead. Clients attempt to read basic_rates before basic_rate_list.

Deprecated: 15
ht_supported bool

Determines if the ht_caps fields should be read by clients. If the device supports HT PHY mode, then ht_supported must be true and the ht_caps field must be set and provide data that describes HT capabilities. Any other configuration of these fields means that the device does not support HT PHY mode. See HtCapabilities.

Deprecation

This field determines whether or not the ht_caps field is read by clients, but is not strictly necessary as table fields like ht_caps may be set or unset. Servers (i.e., drivers) that target platform versions wherein ht_supported is deprecated should always set the field to true and set ht_caps if the device supports HT PHY mode or unset ht_caps if the device does not.

Deprecated: 15
ht_caps fuchsia.wlan.ieee80211/HtCapabilities
vht_supported bool

Determines if the vht_caps fields should be read by clients. If the device supports VHT PHY mode, then vht_supported must be true and the vht_caps field must be set and provide data that describes VHT capabilities. Any other configuration of these fields means that the device does not support VHT PHY mode. See VhtCapabilities.

Deprecation

This field determines whether or not the vht_caps field is read by clients, but is not strictly necessary as table fields like vht_caps may be set or unset. Servers (i.e., drivers) that target platform versions wherein vht_supported is deprecated should always set the field to true and set vht_caps if the device supports VHT PHY mode or unset vht_caps if the device does not.

Deprecated: 15
vht_caps fuchsia.wlan.ieee80211/VhtCapabilities
operating_channel_count uint16

Count of operating channels. If the operating_channel_list field is present, then this field must also be present and must be consistent with the operating_channel_list field.

Deprecation

This field has been replaced by operating_channels. Servers (i.e., drivers) that target platform versions wherein operating_channel_count is deprecated should omit it and write operating channels to the operating_channels field instead. Clients attempt to read operating_channels before operating_channel_count.

Deprecated: 15
operating_channel_list array<uint8, 256>

Set of valid operating channels per regulatory information as determined by the device driver during iface creation. An operating channel refers to a channel on which APs may transmit beacon frames.

The count of channels present in this field must be consistent with the operating_channel_count field when present.

Deprecation

This field has been replaced by operating_channels. Servers (i.e., drivers) that target platform versions wherein operating_channel_list is deprecated should omit it and write operating channels to the operating_channels field instead. Clients attempt to read operating_channels before operating_channel_list.

Deprecated: 15
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.

Added: 15
operating_channels vector<uint8>:256

Set of valid operating channels per regulatory information as determined by the device driver during iface creation. An operating 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 operating channel to use when starting an AP.

Added: 15

WlanSoftmacBaseCancelScanRequest

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalFieldTypeDescription
scan_id uint64

WlanSoftmacBaseClearAssociationRequest

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalFieldTypeDescription
peer_addr fuchsia.wlan.ieee80211/MacAddr

WlanSoftmacBaseEnableBeaconingRequest

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalFieldTypeDescription
packet_template 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.

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.

beacon_interval uint16

Beacon interval period in TU.

WlanSoftmacBaseSetChannelRequest

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalFieldTypeDescription
channel fuchsia.wlan.common/WlanChannel

WlanSoftmacBaseStartPassiveScanRequest

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalFieldTypeDescription
channels vector<uint8>: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.

min_channel_time zx/Duration

Minimum duration to spend on each channel during the scan.

max_channel_time zx/Duration

Maximum duration to spend on each channel during the scan.

min_home_time 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

OrdinalFieldTypeDescription
ac fuchsia.wlan.ieee80211/WlanAccessCategory
params fuchsia.wlan.common/WlanWmmParameters

WlanSoftmacBase_StartActiveScan_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalFieldTypeDescription
scan_id uint64

WlanSoftmacBase_StartPassiveScan_Response

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalFieldTypeDescription
scan_id uint64

WlanSoftmacIfcBaseNotifyScanCompleteRequest

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalFieldTypeDescription
status zx/Status
scan_id uint64

WlanSoftmacQueryResponse

Defined in fuchsia.wlan.softmac/softmac.fidl

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

Added: 15

OrdinalFieldTypeDescription
sta_addr fuchsia.wlan.ieee80211/MacAddr

Station address.

mac_role fuchsia.wlan.common/WlanMacRole

MAC role

supported_phys vector<fuchsia.wlan.common/WlanPhyType>:64

Bitmask indicating WlanInfoPhyType values supported by the hardware.

hardware_capability fuchsia.wlan.common/WlanSoftmacHardwareCapability

Bitmask indicating enabled WlanInfoHardwareCapability values. Values defined as fuchsia.wlan.common.WlanSoftmacHardwareCapability

band_caps vector<WlanSoftmacBandCapability>:16

Supported bands.

WlanSoftmacStartActiveScanRequest

Defined in fuchsia.wlan.softmac/softmac.fidl

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

Added: 15

OrdinalFieldTypeDescription
channels vector<uint8>: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.

ssids vector<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.

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.

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 fuchsia.wlan.ieee80211. These limits are very large and will likely not be exceeded by specifying the most common IEs found in Probe Request frames.

min_channel_time zx/Duration

Minimum duration to spend on each channel during the scan.

max_channel_time zx/Duration

Maximum duration to spend on each channel during the scan.

min_home_time 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.

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.

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

OrdinalFieldTypeDescription
packet_address uint64
packet_size uint64
packet_info WlanTxInfo
async_id uint64
arena uint64

UNIONS

EthernetRx_Transfer_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response EthernetRx_Transfer_Response
err zx/Status

EthernetTx_Transfer_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response EthernetTx_Transfer_Response
err zx/Status

WlanSoftmacBase_CancelScan_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_CancelScan_Response
err zx/Status

WlanSoftmacBase_ClearAssociation_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_ClearAssociation_Response
err zx/Status

WlanSoftmacBase_DisableBeaconing_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_DisableBeaconing_Response
err zx/Status

WlanSoftmacBase_EnableBeaconing_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_EnableBeaconing_Response
err zx/Status

WlanSoftmacBase_InstallKey_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_InstallKey_Response
err zx/Status

WlanSoftmacBase_JoinBss_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_JoinBss_Response
err zx/Status

WlanSoftmacBase_NotifyAssociationComplete_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_NotifyAssociationComplete_Response
err zx/Status

WlanSoftmacBase_QueryDiscoverySupport_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_QueryDiscoverySupport_Response
err zx/Status

WlanSoftmacBase_QueryMacSublayerSupport_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_QueryMacSublayerSupport_Response
err zx/Status

WlanSoftmacBase_QuerySecuritySupport_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_QuerySecuritySupport_Response
err zx/Status

WlanSoftmacBase_QuerySpectrumManagementSupport_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_QuerySpectrumManagementSupport_Response
err zx/Status

WlanSoftmacBase_Query_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacQueryResponse
err zx/Status

WlanSoftmacBase_SetChannel_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_SetChannel_Response
err zx/Status

WlanSoftmacBase_StartActiveScan_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_StartActiveScan_Response
err zx/Status

WlanSoftmacBase_StartPassiveScan_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_StartPassiveScan_Response
err zx/Status

WlanSoftmacBase_UpdateWmmParameters_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBase_UpdateWmmParameters_Response
err zx/Status

WlanSoftmacBridge_Start_Result strict resource

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmacBridge_Start_Response
err zx/Status

WlanSoftmac_QueueTx_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmac_QueueTx_Response
err zx/Status

WlanSoftmac_Start_Result strict resource

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanSoftmac_Start_Response
err zx/Status

WlanTx_Transfer_Result strict

Defined in fuchsia.wlan.softmac/softmac.fidl

OrdinalVariantTypeDescription
response WlanTx_Transfer_Response
err zx/Status

BITS

WlanRxInfoFlags flexible

Type: uint32

Defined in fuchsia.wlan.softmac/softmac.fidl

Added: 15

NameValueDescription
1

The FCS for the received frame was invalid.

2

Padding was added after the MAC header to align the frame body to 4 bytes.

WlanRxInfoValid flexible

Type: uint32

Defined in fuchsia.wlan.softmac/softmac.fidl

Added: 15

NameValueDescription
1
2
4
8
16
32

WlanTxInfoFlags flexible

Type: uint32

Defined in fuchsia.wlan.softmac/softmac.fidl

Added: 15

NameValueDescription
1

Indicate this packet should be protected.

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

4

Indicate that this packet should be sent out with QoS header when possible (11n+).

WlanTxInfoValid flexible

Type: uint32

Defined in fuchsia.wlan.softmac/softmac.fidl

Added: 15

NameValueDescription
1
2
4
8
16

CONSTANTS

NameValueTypeDescription
WLAN_MAC_MAX_RATES 263 uint32
Added: 15

SERVICES

Service

Defined in fuchsia.wlan.softmac/softmac.fidl

NameTypeTransport
wlan_softmac fuchsia.wlan.softmac/WlanSoftmac Driver