Morse Micro IoT SDK  2.9.7
mmwlan.h
1/*
2 * Copyright 2021-2024 Morse Micro
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
34#pragma once
35
36#include <stdarg.h>
37#include <stdint.h>
38#include <stdlib.h>
39#include <stdbool.h>
40#include <string.h>
41
42#include "mmpkt.h"
43
44#ifdef __cplusplus
45extern "C" {
46#endif
47
50{
76};
77
79#define MMWLAN_SSID_MAXLEN (32)
80
82#define MMWLAN_PASSPHRASE_MAXLEN (100)
83
85#define MMWLAN_RAW_MAX_PRIORITY (7)
86
88#define MMWLAN_MAC_ADDR_LEN (6)
89
91#define MMWLAN_MAX_EC_GROUPS (4)
92
94#define MMWLAN_OUI_SIZE (3)
95
98#define DEFAULT_BGSCAN_SHORT_INTERVAL_S (0)
99
101#define DEFAULT_BGSCAN_THRESHOLD_DBM (0)
102
105#define DEFAULT_BGSCAN_LONG_INTERVAL_S (0)
106
108#define DEFAULT_TWT_WAKE_INTERVAL_US (300000000)
109
111#define DEFAULT_TWT_MIN_WAKE_DURATION_US (65280)
112
114#define MMWLAN_DEFAULT_SCAN_INTERVAL_BASE_S (2)
115
117#define MMWLAN_DEFAULT_SCAN_INTERVAL_LIMIT_S (512)
118
120#define MMWLAN_DEFAULT_SOFTAP_BEACON_INTERVAL_TUS (100)
121
123#define MMWLAN_DEFAULT_SOFTAP_DTIM_PERIOD (1)
124
125
130#define MMWLAN_STANDBY_STATUS_FRAME_USER_PAYLOAD_MAXLEN (64)
131
133#define MMWLAN_STANDBY_WAKE_FRAME_USER_FILTER_MAXLEN (64)
134
137{
144};
145
148{
154
157{
163
166{
172
179{
187
190{
198
201{
206};
207
210{
211 MMWLAN_4ADDR_MODE_DISABLED,
212 MMWLAN_4ADDR_MODE_ENABLED,
213};
214
219{
221 uint32_t duty_cycle;
228};
229
240#define MMWLAN_SKIP_OP_CLASS_CHECK -1
241
244{
258 uint8_t bw_mhz;
267};
268
270#define MMWLAN_COUNTRY_CODE_LEN 3
271
274{
278 unsigned num_channels;
281};
282
288{
290 unsigned num_domains;
291
294};
295
305static inline const struct mmwlan_s1g_channel_list *
307{
308 unsigned ii;
309
310 if (db == NULL)
311 {
312 return NULL;
313 }
314
315 for (ii = 0; ii < db->num_domains; ii++)
316 {
317 const struct mmwlan_s1g_channel_list *channel_list = db->domains[ii];
318 if (channel_list->country_code[0] == country_code[0] &&
319 channel_list->country_code[1] == country_code[1])
320 {
321 return channel_list;
322 }
323 }
324 return NULL;
325}
326
344
354#define MMWLAN_MORSELIB_VERSION_MAXLEN (32)
356#define MMWLAN_FW_VERSION_MAXLEN (32)
358#define MMWLAN_CHIP_ID_STRING_MAXLEN (32)
359
362{
371};
372
384
386#define MMWLAN_BCF_BOARD_DESC_MAXLEN (31)
388#define MMWLAN_BCF_BUILD_VERSION_MAXLEN (31)
389
392{
394 struct
395 {
397 uint16_t major;
399 uint8_t minor;
401 uint8_t patch;
403
411
419};
420
429
430
448enum mmwlan_status mmwlan_override_max_tx_power(uint16_t tx_power_dbm);
449
460enum mmwlan_status mmwlan_set_rts_threshold(unsigned rts_threshold);
461
477
492enum mmwlan_status mmwlan_set_subbands_enabled(bool subbands_enabled);
493
505
517
522#define MMWLAN_MINIMUM_FRAGMENT_THRESHOLD (256)
523
543enum mmwlan_status mmwlan_set_fragment_threshold(unsigned fragment_threshold);
544
557{
565
578
586};
587
589#define MMWLAN_SCAN_CONFIG_INIT \
590 { MMWLAN_SCAN_DEFAULT_DWELL_TIME_MS, false, MMWLAN_SCAN_DEFAULT_DWELL_ON_HOME_MS }
591
600
603{
626};
627
637#define MMWLAN_TWT_CONFIG_ARGS_INIT { MMWLAN_TWT_DISABLED, DEFAULT_TWT_WAKE_INTERVAL_US, 0, 0, \
638 DEFAULT_TWT_MIN_WAKE_DURATION_US, MMWLAN_TWT_SETUP_REQUEST }
639
651 const struct mmwlan_twt_config_args *twt_config_args);
652
654#define MMWLAN_QOS_QUEUE_NUM_ACIS 4
655
658{
660 uint8_t aci;
662 uint8_t aifs;
664 uint16_t cw_min;
666 uint16_t cw_max;
668 uint32_t txop_max_us;
669};
670
691 size_t count);
692
695{
703
712
722
731
750{
752 uint8_t reserved;
753};
754
760#define MMWLAN_BOOT_ARGS_INIT { 0 }
761
776
786
791{
792 MMWLAN_STA_DISABLED,
793 MMWLAN_STA_CONNECTING,
794 MMWLAN_STA_CONNECTED,
795};
796
801{
802 MMWLAN_STA_TYPE_SENSOR = 0x01,
803 MMWLAN_STA_TYPE_NON_SENSOR = 0x02,
804};
805
808{
810 int16_t rssi;
812 const uint8_t *bssid;
814 const uint8_t *ssid;
816 const uint8_t *ies;
822 uint16_t ies_len;
824 uint8_t ssid_len;
828 uint8_t bw_mhz;
830 uint8_t op_bw_mhz;
832 uint64_t tsf;
833};
834
836typedef void (*mmwlan_scan_rx_cb_t)(const struct mmwlan_scan_result *result, void *arg);
837
839typedef void (*mmwlan_sta_status_cb_t)(enum mmwlan_sta_state sta_state);
840
848{
868};
869
872{
875};
876
883typedef void (*mmwlan_sta_event_cb_t)(const struct mmwlan_sta_event_cb_args *sta_event, void *arg);
884
900{
904 uint16_t ssid_len;
1009};
1010
1016#define MMWLAN_STA_ARGS_INIT \
1017 { { 0 }, 0, { 0 }, MMWLAN_OPEN, { 0 }, 0, MMWLAN_PMF_REQUIRED, -1, MMWLAN_STA_TYPE_NON_SENSOR, \
1018 { 0 }, MMWLAN_CAC_DISABLED, DEFAULT_BGSCAN_SHORT_INTERVAL_S, DEFAULT_BGSCAN_THRESHOLD_DBM, \
1019 DEFAULT_BGSCAN_LONG_INTERVAL_S, NULL, NULL, \
1020 MMWLAN_DEFAULT_SCAN_INTERVAL_BASE_S, MMWLAN_DEFAULT_SCAN_INTERVAL_LIMIT_S, \
1021 NULL, 0, NULL, NULL, MMWLAN_4ADDR_MODE_DISABLED }
1022
1048 mmwlan_sta_status_cb_t sta_status_cb);
1049
1060
1063{
1066};
1067
1070{
1077};
1078
1086{
1090 union
1091 {
1093 struct
1094 {
1098 const uint8_t *ssid;
1100 uint16_t ssid_len;
1102 const char *passphrase;
1105};
1106
1114{
1116 void (*dpp_event_cb)(const struct mmwlan_dpp_cb_args *dpp_event, void *arg);
1119};
1120
1136
1146
1153
1156#define MMWLAN_SCAN_DEFAULT_DWELL_TIME_MS (30)
1158#define MMWLAN_SCAN_DEFAULT_DWELL_ON_HOME_MS (200)
1159
1161#define MMWLAN_SCAN_MIN_DWELL_TIME_MS (15)
1162
1167{
1175};
1176
1178typedef void (*mmwlan_scan_complete_cb_t)(enum mmwlan_scan_state scan_state, void *arg);
1179
1185{
1197 uint8_t *extra_ies;
1206 uint16_t ssid_len;
1213};
1214
1224#define MMWLAN_SCAN_ARGS_INIT \
1225 { MMWLAN_SCAN_DEFAULT_DWELL_TIME_MS, NULL, 0, { 0 }, 0, MMWLAN_SCAN_DEFAULT_DWELL_ON_HOME_MS }
1226
1231{
1240};
1241
1251#define MMWLAN_SCAN_REQ_INIT { NULL, NULL, NULL, MMWLAN_SCAN_ARGS_INIT }
1252
1271
1281
1289{
1291 uint8_t reserved;
1292};
1293
1303typedef void (*mmwlan_softap_sta_status_cb_t)(const struct mmwlan_softap_sta_status *sta_status,
1304 void *arg);
1305
1324{
1328 uint16_t ssid_len;
1355 uint16_t op_class;
1375 uint16_t dtim_period;
1382 uint8_t pri_bw_mhz;
1398};
1399
1405#define MMWLAN_SOFTAP_ARGS_INIT \
1406 { { 0 }, 0, { 0 }, MMWLAN_OPEN, { 0 }, 0, MMWLAN_PMF_REQUIRED, \
1407 { 0 }, 0, 0, 0, 0, 0, 0, NULL, NULL }
1408
1409
1425
1441
1459enum mmwlan_status mmwlan_get_mac_addr(uint8_t *mac_addr);
1460
1466uint16_t mmwlan_get_aid(void);
1467
1476enum mmwlan_status mmwlan_get_bssid(uint8_t *bssid);
1477
1485int32_t mmwlan_get_rssi(void);
1486
1498
1527
1543enum mmwlan_status mmwlan_enable_arp_refresh_offload(uint32_t interval_s, uint32_t dest_ip,
1544 bool send_as_garp);
1545
1550{
1552 uint32_t ip4_addr;
1554 uint32_t mask4_addr;
1556 uint32_t gw4_addr;
1558 uint32_t dns4_addr;
1559};
1560
1562typedef void (*mmwlan_dhcp_lease_update_cb_t)(const struct mmwlan_dhcp_lease_info *lease_info,
1563 void *arg);
1564
1584 void *arg);
1585
1591{
1610};
1611
1624{
1629 uint8_t set_cfgs;
1634 uint16_t period_s;
1646 uint32_t src_ip;
1650 uint16_t src_port;
1654 uint32_t dest_ip;
1658 uint16_t dest_port;
1659};
1660
1666#define MMWLAN_TCP_KEEPALIVE_OFFLOAD_ARGS_INIT { 0 }
1667
1685 const struct mmwlan_tcp_keepalive_offload_args *args);
1686
1695
1700#define MMWLAN_WHITELIST_FLAGS_CLEAR 0x01
1701
1706{
1708 uint8_t flags;
1714 uint32_t src_ip;
1716 uint32_t dest_ip;
1718 uint32_t netmask;
1720 uint16_t src_port;
1722 uint16_t dest_port;
1723};
1724
1744
1794{
1811};
1812
1822typedef void (*mmwlan_standby_exit_cb_t)(uint8_t reason, void *arg);
1823
1826{
1831};
1832
1851
1867
1875{
1882 uint32_t payload_len;
1883};
1884
1908 const struct mmwlan_standby_set_status_payload_args *args);
1909
1912{
1919 uint32_t filter_len;
1921 uint32_t offset;
1922};
1923
1950 const struct mmwlan_standby_set_wake_filter_args *args);
1951
1957{
1961 uint32_t src_ip;
1963 uint32_t dst_ip;
1968 uint16_t dst_port;
1987};
1988
2000
2001
2046{
2051};
2052
2062#define MMWLAN_SET_WNM_SLEEP_ENABLED_ARGS_INIT { false, false }
2063
2091 const struct mmwlan_set_wnm_sleep_enabled_args *args);
2092
2118static inline enum mmwlan_status mmwlan_set_wnm_sleep_enabled(bool wnm_sleep_enabled)
2119{
2120 struct mmwlan_set_wnm_sleep_enabled_args wnm_sleep_args =
2122 wnm_sleep_args.wnm_sleep_enabled = wnm_sleep_enabled;
2123 return mmwlan_set_wnm_sleep_enabled_ext(&wnm_sleep_args);
2124}
2125
2142#define MMWLAN_BEACON_VENDOR_IE_MAX_OUI_FILTERS (5)
2143
2152typedef void (*mmwlan_beacon_vendor_ie_filter_cb_t)(const uint8_t *ies, uint32_t ies_len,
2153 void *arg);
2154
2157
2160{
2171 void *cb_arg;
2174 uint8_t n_ouis;
2177};
2178
2192
2193
2196/*
2197 * ---------------------------------------------------------------------------------------------
2198 */
2199
2214void mmwlan_init(void);
2215
2216
2224void mmwlan_deinit(void);
2225
2238#ifndef MMWLAN_DEFAULT_MIN_HEALTH_CHECK_INTERVAL_MS
2239#define MMWLAN_DEFAULT_MIN_HEALTH_CHECK_INTERVAL_MS 60000
2240#endif
2241
2245#ifndef MMWLAN_DEFAULT_MAX_HEALTH_CHECK_INTERVAL_MS
2246#define MMWLAN_DEFAULT_MAX_HEALTH_CHECK_INTERVAL_MS 120000
2247#endif
2248
2261 uint32_t max_interval_ms);
2262
2265/*
2266 * ---------------------------------------------------------------------------------------------
2267 */
2268
2277{
2280};
2281
2288typedef void (*mmwlan_link_state_cb_t)(enum mmwlan_link_state link_state, void *arg);
2289
2305
2315typedef void (*mmwlan_rx_cb_t)(uint8_t *header, unsigned header_len,
2316 uint8_t *payload, unsigned payload_len,
2317 void *arg);
2318
2333
2341typedef void (*mmwlan_rx_pkt_cb_t)(struct mmpkt *mmpkt, void *arg);
2342
2355
2366
2380struct mmpkt *mmwlan_alloc_mmpkt_for_tx(uint32_t payload_len, uint8_t tid);
2381
2383#define MMWLAN_TX_DEFAULT_TIMEOUT_MS (1000)
2384
2386#define MMWLAN_TX_DEFAULT_QOS_TID (0)
2387
2389#define MMWLAN_MAX_QOS_TID (7)
2390
2406{
2411 uint8_t tid;
2412};
2413
2417#define MMWLAN_TX_METADATA_INIT { MMWLAN_TX_DEFAULT_QOS_TID }
2418
2452enum mmwlan_status mmwlan_tx_pkt(struct mmpkt *pkt, const struct mmwlan_tx_metadata *metadata);
2453
2479static inline enum mmwlan_status mmwlan_tx_tid(const uint8_t *data, unsigned len, uint8_t tid)
2480{
2481 enum mmwlan_status status;
2482 struct mmpkt *pkt;
2483 struct mmpktview *pktview;
2485
2487 if (status != MMWLAN_SUCCESS)
2488 {
2489 return status;
2490 }
2491
2492 pkt = mmwlan_alloc_mmpkt_for_tx(len, tid);
2493 if (pkt == NULL)
2494 {
2495 return MMWLAN_NO_MEM;
2496 }
2497
2498 pktview = mmpkt_open(pkt);
2499 mmpkt_append_data(pktview, data, len);
2500 mmpkt_close(&pktview);
2501
2502 metadata.tid = tid;
2503 return mmwlan_tx_pkt(pkt, &metadata);
2504}
2505
2530static inline enum mmwlan_status mmwlan_tx(const uint8_t *data, unsigned len)
2531{
2532 return mmwlan_tx_tid(data, len, MMWLAN_TX_DEFAULT_QOS_TID);
2533}
2534
2540{
2543};
2544
2557typedef void (*mmwlan_tx_flow_control_cb_t)(enum mmwlan_tx_flow_control_state state, void *arg);
2558
2572
2575/*
2576 * ---------------------------------------------------------------------------------------------
2577 */
2578
2589{
2591 uint32_t n_entries;
2593 uint32_t *rate_info;
2595 uint32_t *total_sent;
2597 uint32_t *total_success;
2598};
2599
2616{
2617 MMWLAN_RC_STATS_RATE_INFO_BW_OFFSET = 0,
2618 MMWLAN_RC_STATS_RATE_INFO_RATE_OFFSET = 4,
2619 MMWLAN_RC_STATS_RATE_INFO_GUARD_OFFSET = 8,
2620};
2621
2630
2637
2643{
2645 uint8_t *buf;
2647 uint32_t len;
2648};
2649
2662struct mmwlan_morse_stats *mmwlan_get_morse_stats(uint32_t core_num, bool reset);
2663
2670
2676
2690
2697
2702/*
2703 * ---------------------------------------------------------------------------------------------
2704 */
2705
2717{
2731
2734{
2741};
2742
2745{
2750};
2751
2765 enum mmwlan_bw bandwidth_override,
2766 enum mmwlan_gi gi_override);
2767
2783enum mmwlan_status mmwlan_ate_execute_command(uint8_t *command, uint32_t command_len,
2784 uint8_t *response, uint32_t *response_len);
2785
2788#ifdef __cplusplus
2789}
2790#endif
2791
struct mmwlan_beacon_vendor_ie_filter filter
Filter structure used when calling mmwlan_update_beacon_vendor_ie_filter().
static void mmpkt_append_data(struct mmpktview *view, const uint8_t *data, uint32_t len)
Appends the given data to the data already in the mmpkt.
Definition: mmpkt.h:413
static void mmpkt_close(struct mmpktview **view)
Close the given view.
Definition: mmpkt.h:247
static struct mmpktview * mmpkt_open(struct mmpkt *mmpkt)
Open a view of the given mmpkt.
Definition: mmpkt.h:236
enum mmwlan_status mmwlan_update_beacon_vendor_ie_filter(const struct mmwlan_beacon_vendor_ie_filter *filter)
Function to update the filter used to pass beacon back.
#define MMWLAN_BEACON_VENDOR_IE_MAX_OUI_FILTERS
Max number of OUIs supported in vendor IE OUI filter, mmwlan_beacon_vendor_ie_filter.
Definition: mmwlan.h:2142
void(* mmwlan_beacon_vendor_ie_filter_cb_t)(const uint8_t *ies, uint32_t ies_len, void *arg)
Beacon vendor ie filter callback function prototype.
Definition: mmwlan.h:2152
uint8_t mmwlan_oui_t[MMWLAN_OUI_SIZE]
24-bit OUI type.
Definition: mmwlan.h:2156
enum mmwlan_status mmwlan_softap_disable(void)
Disable Soft AP mode.
mmwlan_scan_state
Enumeration of states in Scan mode.
Definition: mmwlan.h:1167
enum mmwlan_status mmwlan_set_listen_interval(uint16_t interval)
Sets the listen interval to be indicated in the association response frame.
void(* mmwlan_scan_rx_cb_t)(const struct mmwlan_scan_result *result, void *arg)
mmwlan scan rx callback function prototype.
Definition: mmwlan.h:836
enum mmwlan_status mmwlan_get_version(struct mmwlan_version *version)
Retrieve version information from morselib and the connected Morse transceiver.
int32_t mmwlan_get_rssi(void)
Gets the RSSI measured from the AP.
enum mmwlan_status mmwlan_boot(const struct mmwlan_boot_args *args)
Boot the Morse Micro transceiver and leave it in an idle state.
enum mmwlan_status mmwlan_scan_abort(void)
Abort in progress or pending scans.
void(* mmwlan_sta_event_cb_t)(const struct mmwlan_sta_event_cb_args *sta_event, void *arg)
STA event callback prototype.
Definition: mmwlan.h:883
enum mmwlan_status mmwlan_set_ampdu_enabled(bool ampdu_enabled)
Sets whether or not Aggregated MAC Protocol Data Unit (A-MPDU) support is enabled.
mmwlan_sta_event
Enumeration of STA events.
Definition: mmwlan.h:848
enum mmwlan_status mmwlan_get_duty_cycle_stats(struct mmwlan_duty_cycle_stats *stats)
Retrieve the transmit duty cycle configuration and statistics.
mmwlan_sta_state
Enumeration of states in STA mode.
Definition: mmwlan.h:791
enum mmwlan_sta_state mmwlan_get_sta_state(void)
Gets the current WLAN STA state.
enum mmwlan_status mmwlan_set_scan_config(const struct mmwlan_scan_config *config)
Update the scan configuration with the given settings.
void(* mmwlan_sta_status_cb_t)(enum mmwlan_sta_state sta_state)
STA status callback function prototype.
Definition: mmwlan.h:839
enum mmwlan_status mmwlan_set_sgi_enabled(bool sgi_enabled)
Sets whether or not Short Guard Interval (SGI) support is enabled.
#define MMWLAN_BCF_BOARD_DESC_MAXLEN
Maximum length of a BCF board description string (excluding null terminator).
Definition: mmwlan.h:386
enum mmwlan_status mmwlan_get_bssid(uint8_t *bssid)
Gets the BSSID of the AP to which the STA is associated.
mmwlan_station_type
Enumeration of S1G non-AP STA types.
Definition: mmwlan.h:801
enum mmwlan_status mmwlan_set_duty_cycle_mode(enum mmwlan_duty_cycle_mode duty_cycle_mode)
Configure the duty cycle behavior for air time distribution.
void(* mmwlan_softap_sta_status_cb_t)(const struct mmwlan_softap_sta_status *sta_status, void *arg)
Type definition for callback to be invoked on change in status of a connected STA.
Definition: mmwlan.h:1303
enum mmwlan_status mmwlan_shutdown(void)
Perform a clean shutdown of the Morse Micro transceiver, including cleanly disconnecting from a conne...
enum mmwlan_status mmwlan_set_power_save_mode(enum mmwlan_ps_mode mode)
Sets whether or not the 802.11 power save is enabled.
#define MMWLAN_BCF_BUILD_VERSION_MAXLEN
Maximum length of a BCF build version string (excluding null terminator).
Definition: mmwlan.h:388
enum mmwlan_status mmwlan_twt_add_configuration(const struct mmwlan_twt_config_args *twt_config_args)
Add configurations for Target Wake Time (TWT).
enum mmwlan_status mmwlan_get_bcf_metadata(struct mmwlan_bcf_metadata *metadata)
Read the metadata from the board configuration file (BCF)r.
void(* mmwlan_scan_complete_cb_t)(enum mmwlan_scan_state scan_state, void *arg)
mmwlan scan complete callback function prototype.
Definition: mmwlan.h:1178
enum mmwlan_status mmwlan_softap_enable(const struct mmwlan_softap_args *args)
Enable Soft AP mode.
mmwlan_mcs10_mode
Enumeration of configuration states for MCS10 behavior.
Definition: mmwlan.h:695
enum mmwlan_status mmwlan_sta_enable(const struct mmwlan_sta_args *args, mmwlan_sta_status_cb_t sta_status_cb)
Enable station mode.
enum mmwlan_status mmwlan_set_subbands_enabled(bool subbands_enabled)
Sets whether or not sub-band support is enabled for transmit.
enum mmwlan_status mmwlan_set_fragment_threshold(unsigned fragment_threshold)
Set the Fragmentation threshold.
enum mmwlan_status mmwlan_override_max_tx_power(uint16_t tx_power_dbm)
Override the maximum TX power.
#define MMWLAN_CHIP_ID_STRING_MAXLEN
Maximum length of the chip id string.
Definition: mmwlan.h:358
enum mmwlan_status mmwlan_set_rts_threshold(unsigned rts_threshold)
Set the RTS threshold.
enum mmwlan_status mmwlan_set_default_qos_queue_params(const struct mmwlan_qos_queue_params *params, size_t count)
Updates the default QoS queue configuration to the given values.
enum mmwlan_status mmwlan_dpp_stop(void)
Function to stop the DPP process.
enum mmwlan_status mmwlan_scan_request(const struct mmwlan_scan_req *scan_req)
Request a scan.
uint16_t mmwlan_get_aid(void)
Gets the station's AID.
mmwlan_dpp_pb_result
Enumeration of results for MMWLAN_DPP_EVT_PB_RESULT.
Definition: mmwlan.h:1070
enum mmwlan_status mmwlan_sta_disable(void)
Disable station mode.
enum mmwlan_status mmwlan_get_mac_addr(uint8_t *mac_addr)
Gets the MAC address of this device.
enum mmwlan_status mmwlan_dpp_start(const struct mmwlan_dpp_args *args)
Function to start the Device Provisioning Protocol (DPP) process.
#define MMWLAN_FW_VERSION_MAXLEN
Maximum length of the firmware version string.
Definition: mmwlan.h:356
#define MMWLAN_MORSELIB_VERSION_MAXLEN
Maximum length of the Morselib version string.
Definition: mmwlan.h:354
enum mmwlan_status mmwlan_set_mcs10_mode(enum mmwlan_mcs10_mode mcs10_mode)
Configure the rate adaptation behavior around selecting MCS10.
mmwlan_dpp_event
Enumeration of DPP events.
Definition: mmwlan.h:1063
@ MMWLAN_SCAN_SUCCESSFUL
Scan was successful and all channels were scanned.
Definition: mmwlan.h:1169
@ MMWLAN_SCAN_RUNNING
Scanning in progress.
Definition: mmwlan.h:1174
@ MMWLAN_SCAN_TERMINATED
Scan was incomplete.
Definition: mmwlan.h:1172
@ MMWLAN_STA_EVT_CTRL_PORT_OPEN
The Supplicant IEEE 802.1X Controlled Port is now open meaning that the STA is fully authenticated an...
Definition: mmwlan.h:865
@ MMWLAN_STA_EVT_SCAN_ABORT
The STA has aborted a scan early.
Definition: mmwlan.h:854
@ MMWLAN_STA_EVT_CTRL_PORT_CLOSED
The Supplicant IEEE 802.1X Controlled Port is now closed.
Definition: mmwlan.h:867
@ MMWLAN_STA_EVT_SCAN_COMPLETE
The STA has finished a scan.
Definition: mmwlan.h:852
@ MMWLAN_STA_EVT_SCAN_REQUEST
The STA is starting a scan.
Definition: mmwlan.h:850
@ MMWLAN_STA_EVT_AUTH_REQUEST
The STA is sending an authentication request to the AP.
Definition: mmwlan.h:856
@ MMWLAN_STA_EVT_ASSOC_REQUEST
The STA is sending an association request to the AP.
Definition: mmwlan.h:858
@ MMWLAN_STA_EVT_DEAUTH_TX
The STA is sending a de-authorization request to the AP.
Definition: mmwlan.h:860
@ MMWLAN_MCS10_MODE_AUTO
Use MCS10 on retries instead of MCS 0 if the bandwidth is 1 MHz.
Definition: mmwlan.h:701
@ MMWLAN_MCS10_MODE_FORCED
Always use MCS10 instead of MCS 0 if the bandwidth is 1 MHz.
Definition: mmwlan.h:699
@ MMWLAN_MCS10_MODE_DISABLED
MCS10 is disabled.
Definition: mmwlan.h:697
@ MMWLAN_DPP_PB_RESULT_SUCCESS
DPP push button process was successful.
Definition: mmwlan.h:1072
@ MMWLAN_DPP_PB_RESULT_SESSION_OVERLAP
A session overlap occurred during the DPP push button process.
Definition: mmwlan.h:1076
@ MMWLAN_DPP_PB_RESULT_ERROR
An error occurred during the DPP push button process.
Definition: mmwlan.h:1074
@ MMWLAN_DPP_EVT_PB_RESULT
DPP push button result.
Definition: mmwlan.h:1065
static enum mmwlan_status mmwlan_tx_tid(const uint8_t *data, unsigned len, uint8_t tid)
Transmit the given packet using the given QoS Traffic ID (TID).
Definition: mmwlan.h:2479
enum mmwlan_status mmwlan_register_rx_cb(mmwlan_rx_cb_t callback, void *arg)
Register a receive callback.
enum mmwlan_status mmwlan_tx_wait_until_ready(uint32_t timeout_ms)
Blocks until the transmit path is ready for transmit.
enum mmwlan_status mmwlan_register_rx_pkt_cb(mmwlan_rx_pkt_cb_t callback, void *arg)
Register a receive callback which consumes an mmpkt.
void(* mmwlan_link_state_cb_t)(enum mmwlan_link_state link_state, void *arg)
Prototype for link state change callbacks.
Definition: mmwlan.h:2288
#define MMWLAN_TX_DEFAULT_QOS_TID
Default QoS Traffic ID (TID) to use for transmit (mmwlan_tx()).
Definition: mmwlan.h:2386
enum mmwlan_status mmwlan_register_link_state_cb(mmwlan_link_state_cb_t callback, void *arg)
Register a link status callback.
enum mmwlan_status mmwlan_register_tx_flow_control_cb(mmwlan_tx_flow_control_cb_t cb, void *arg)
Register a transmit flow control callback.
mmwlan_tx_flow_control_state
Enumeration of states that can be returned by the transmit flow control callback (as registered by mm...
Definition: mmwlan.h:2540
mmwlan_link_state
Enumeration of link states.
Definition: mmwlan.h:2277
struct mmpkt * mmwlan_alloc_mmpkt_for_tx(uint32_t payload_len, uint8_t tid)
Allocate an mmpkt data structure for transmission with at least enough space for the given payload le...
void(* mmwlan_rx_cb_t)(uint8_t *header, unsigned header_len, uint8_t *payload, unsigned payload_len, void *arg)
Receive data packet callback function.
Definition: mmwlan.h:2315
void(* mmwlan_tx_flow_control_cb_t)(enum mmwlan_tx_flow_control_state state, void *arg)
Transmit flow control callback function type.
Definition: mmwlan.h:2557
static enum mmwlan_status mmwlan_tx(const uint8_t *data, unsigned len)
Transmit the given packet using MMWLAN_TX_DEFAULT_QOS_TID.
Definition: mmwlan.h:2530
enum mmwlan_status mmwlan_tx_pkt(struct mmpkt *pkt, const struct mmwlan_tx_metadata *metadata)
Transmit the given packet.
#define MMWLAN_TX_METADATA_INIT
Initializer for mmwlan_tx_metadata.
Definition: mmwlan.h:2417
void(* mmwlan_rx_pkt_cb_t)(struct mmpkt *mmpkt, void *arg)
Receive data packet callback function, consuming an mmpkt.
Definition: mmwlan.h:2341
#define MMWLAN_TX_DEFAULT_TIMEOUT_MS
Default transmit timeout.
Definition: mmwlan.h:2383
@ MMWLAN_TX_READY
Transmit data path ready for packets (not paused).
Definition: mmwlan.h:2541
@ MMWLAN_TX_PAUSED
Transmit data path paused (blocked).
Definition: mmwlan.h:2542
@ MMWLAN_LINK_UP
The link is up.
Definition: mmwlan.h:2279
@ MMWLAN_LINK_DOWN
The link is down.
Definition: mmwlan.h:2278
enum mmwlan_status mmwlan_set_health_check_interval(uint32_t min_interval_ms, uint32_t max_interval_ms)
Specify the upper and lower bound for the periodic health check interval.
void mmwlan_deinit(void)
Deinitialize the MMWLAN subsystem, freeing any allocated memory.
void mmwlan_init(void)
Initialize the MMWLAN subsystem.
enum mmwlan_status mmwlan_disable_tcp_keepalive_offload(void)
Disables the TCP keep-alive offload feature.
enum mmwlan_status mmwlan_enable_arp_refresh_offload(uint32_t interval_s, uint32_t dest_ip, bool send_as_garp)
Enables ARP refresh offload.
enum mmwlan_status mmwlan_enable_tcp_keepalive_offload(const struct mmwlan_tcp_keepalive_offload_args *args)
Enables TCP keep-alive offload.
enum mmwlan_status mmwlan_enable_dhcp_offload(mmwlan_dhcp_lease_update_cb_t dhcp_lease_update_cb, void *arg)
Enables DHCP offload.
void(* mmwlan_dhcp_lease_update_cb_t)(const struct mmwlan_dhcp_lease_info *lease_info, void *arg)
DHCP Lease update callback function prototype - this is called whenever a lease is updated.
Definition: mmwlan.h:1562
mmwlan_tcp_keepalive_offload_cfg
Keep-alive offload configuration options for mmwlan_tcp_keepalive_offload_args::set_cfgs bitmap.
Definition: mmwlan.h:1591
enum mmwlan_status mmwlan_enable_arp_response_offload(uint32_t arp_addr)
Enables ARP response offload.
enum mmwlan_status mmwlan_set_whitelist_filter(const struct mmwlan_config_whitelist *whitelist)
Sets and enables the IP whitelist filter.
@ MMWLAN_TCP_KEEPALIVE_SET_CFG_DEST_PORT
Bitmap for TCP keep alive destination port parameter.
Definition: mmwlan.h:1605
@ MMWLAN_TCP_KEEPALIVE_SET_CFG_DEST_IP_ADDR
Bitmap for TCP keep alive destination IP parameter.
Definition: mmwlan.h:1601
@ MMWLAN_TCP_KEEPALIVE_SET_CFG_SRC_IP_ADDR
Bitmap for TCP keep alive source IP parameter.
Definition: mmwlan.h:1599
@ MMWLAN_TCP_KEEPALIVE_SET_CFG_RETRY_COUNT
Bitmap for TCP keep alive retry count parameter.
Definition: mmwlan.h:1595
@ MMWLAN_TCP_KEEPALIVE_SET_CFG_SRC_PORT
Bitmap for TCP keep alive source port parameter.
Definition: mmwlan.h:1603
@ MMWLAN_TCP_KEEPALIVE_SET_CFG_TIMING_ONLY
Bitmap for TCP keep alive timing parameters only.
Definition: mmwlan.h:1607
@ MMWLAN_TCP_KEEPALIVE_SET_CFG_RETRY_INTERVAL
Bitmap for TCP keep alive retry interval parameter.
Definition: mmwlan.h:1597
@ MMWLAN_TCP_KEEPALIVE_SET_CFG_ALL
Bitmap for all TCP keep alive parameters.
Definition: mmwlan.h:1609
@ MMWLAN_TCP_KEEPALIVE_SET_CFG_PERIOD
Bitmap for TCP keep alive period parameter.
Definition: mmwlan.h:1593
static const struct mmwlan_s1g_channel_list * mmwlan_lookup_regulatory_domain(const struct mmwlan_regulatory_db *db, const char *country_code)
Look up the given country code in the regulatory database and return the matching channel list if fou...
Definition: mmwlan.h:306
enum mmwlan_status mmwlan_set_channel_list(const struct mmwlan_s1g_channel_list *channel_list)
Set the list of channels that are supported by the regulatory domain in which the device resides.
#define MMWLAN_COUNTRY_CODE_LEN
Length of the two character country code string (null-terminated).
Definition: mmwlan.h:270
enum mmwlan_status mmwlan_standby_set_status_payload(const struct mmwlan_standby_set_status_payload_args *args)
Sets the user payload in the standby status packet.
enum mmwlan_status mmwlan_standby_exit(void)
Forces the Morse chip to exit standby mode.
enum mmwlan_status mmwlan_standby_set_config(const struct mmwlan_standby_config *config)
Sets the configuration for standby mode.
enum mmwlan_status mmwlan_standby_set_wake_filter(const struct mmwlan_standby_set_wake_filter_args *args)
Configures the standby mode UDP wake packet filter.
mmwlan_standby_exit_reason
Reasons we can exit standby mode.
Definition: mmwlan.h:1794
enum mmwlan_status mmwlan_standby_enter(const struct mmwlan_standby_enter_args *args)
This function puts the Morse chip into standby mode allowing the host processor to go to sleep.
void(* mmwlan_standby_exit_cb_t)(uint8_t reason, void *arg)
Standby mode callback whenever an event requiring an exit from standby mode occurs.
Definition: mmwlan.h:1822
@ MMWLAN_STANDBY_EXIT_REASON_WAKEUP_FRAME
The STA has received the wake-up frame.
Definition: mmwlan.h:1798
@ MMWLAN_STANDBY_EXIT_REASON_HW_SCAN_NOT_ENABLED
HW scan is not enabled.
Definition: mmwlan.h:1808
@ MMWLAN_STANDBY_EXIT_REASON_EXT_INPUT
The external input pin has fired.
Definition: mmwlan.h:1802
@ MMWLAN_STANDBY_EXIT_REASON_WHITELIST_PKT
Whitelisted packet received.
Definition: mmwlan.h:1804
@ MMWLAN_STANDBY_EXIT_REASON_HW_SCAN_FAILED_TO_START
HW scan failed to start.
Definition: mmwlan.h:1810
@ MMWLAN_STANDBY_EXIT_REASON_TCP_CONNECTION_LOST
TCP connection lost.
Definition: mmwlan.h:1806
@ MMWLAN_STANDBY_EXIT_REASON_ASSOCIATE
The STA needs to (re)associate.
Definition: mmwlan.h:1800
@ MMWLAN_STANDBY_EXIT_REASON_NONE
No specific reason for exiting standby mode.
Definition: mmwlan.h:1796
void mmwlan_free_rc_stats(struct mmwlan_rc_stats *stats)
Free a mmwlan_rc_stats structure that was allocated with mmwlan_get_rc_stats().
mmwlan_rc_stats_rate_info_offsets
Enumeration defined offsets into the bit field of rate information (rate_info in mmwlan_rc_stats).
Definition: mmwlan.h:2616
struct mmwlan_rc_stats * mmwlan_get_rc_stats(void)
Retrieves WLAN rate control statistics.
struct mmwlan_morse_stats * mmwlan_get_morse_stats(uint32_t core_num, bool reset)
Retrieves statistics from the Morse transceiver.
void mmwlan_free_morse_stats(struct mmwlan_morse_stats *stats)
Frees a mmwlan_morse_stats instance that was returned by mmwlan_get_morse_stats().
enum mmwlan_status mmwlan_ate_override_rate_control(enum mmwlan_mcs tx_rate_override, enum mmwlan_bw bandwidth_override, enum mmwlan_gi gi_override)
Enable/disable override of rate control parameters.
mmwlan_mcs
Enumeration of MCS rates.
Definition: mmwlan.h:2717
enum mmwlan_status mmwlan_ate_execute_command(uint8_t *command, uint32_t command_len, uint8_t *response, uint32_t *response_len)
Execute a test/debug command.
mmwlan_bw
Enumeration of bandwidths.
Definition: mmwlan.h:2734
mmwlan_gi
Enumeration of guard intervals.
Definition: mmwlan.h:2745
@ MMWLAN_MCS_7
MCS7.
Definition: mmwlan.h:2726
@ MMWLAN_MCS_3
MCS3.
Definition: mmwlan.h:2722
@ MMWLAN_MCS_8
MCS8.
Definition: mmwlan.h:2727
@ MMWLAN_MCS_NONE
Use-case specific special value.
Definition: mmwlan.h:2718
@ MMWLAN_MCS_9
MCS9.
Definition: mmwlan.h:2728
@ MMWLAN_MCS_0
MCS0.
Definition: mmwlan.h:2719
@ MMWLAN_MCS_4
MCS4.
Definition: mmwlan.h:2723
@ MMWLAN_MCS_6
MCS6.
Definition: mmwlan.h:2725
@ MMWLAN_MCS_MAX
Maximum supported MCS rate.
Definition: mmwlan.h:2729
@ MMWLAN_MCS_5
MCS5.
Definition: mmwlan.h:2724
@ MMWLAN_MCS_2
MCS2.
Definition: mmwlan.h:2721
@ MMWLAN_MCS_1
MCS1.
Definition: mmwlan.h:2720
@ MMWLAN_BW_NONE
Use-case specific special value.
Definition: mmwlan.h:2735
@ MMWLAN_BW_2MHZ
2 MHz bandwidth
Definition: mmwlan.h:2737
@ MMWLAN_BW_4MHZ
4 MHz bandwidth
Definition: mmwlan.h:2738
@ MMWLAN_BW_MAX
Maximum supported bandwidth.
Definition: mmwlan.h:2740
@ MMWLAN_BW_8MHZ
8 MHz bandwidth
Definition: mmwlan.h:2739
@ MMWLAN_BW_1MHZ
1 MHz bandwidth
Definition: mmwlan.h:2736
@ MMWLAN_GI_MAX
Maximum valid value of this enum.
Definition: mmwlan.h:2749
@ MMWLAN_GI_LONG
Long guard interval.
Definition: mmwlan.h:2748
@ MMWLAN_GI_SHORT
Short guard interval.
Definition: mmwlan.h:2747
@ MMWLAN_GI_NONE
Use-case specific special value.
Definition: mmwlan.h:2746
enum mmwlan_status mmwlan_clear_umac_stats(void)
Clear all current values of the UMAC statistics.
enum mmwlan_status mmwlan_get_umac_stats(struct mmwlan_stats_umac_data *stats_dest)
Gets the current values of the UMAC statistics.
static enum mmwlan_status mmwlan_set_wnm_sleep_enabled(bool wnm_sleep_enabled)
Sets whether WNM sleep mode is enabled.
Definition: mmwlan.h:2118
#define MMWLAN_SET_WNM_SLEEP_ENABLED_ARGS_INIT
Initializer for mmwlan_set_wnm_sleep_enabled_args.
Definition: mmwlan.h:2062
enum mmwlan_status mmwlan_set_wnm_sleep_enabled_ext(const struct mmwlan_set_wnm_sleep_enabled_args *args)
Sets extended WNM sleep mode.
mmwlan_status
Enumeration of status return codes.
Definition: mmwlan.h:50
#define MMWLAN_PASSPHRASE_MAXLEN
Maximum allowable length of a passphrase when connecting to an AP.
Definition: mmwlan.h:82
mmwlan_duty_cycle_mode
Enumeration of Duty Cycle modes.
Definition: mmwlan.h:201
mmwlan_pmf_mode
Enumeration of Protected Management Frame (PMF) modes (802.11w).
Definition: mmwlan.h:157
#define MMWLAN_STANDBY_STATUS_FRAME_USER_PAYLOAD_MAXLEN
The maximum length of a user-specified payload (bytes) for Standby status frames.
Definition: mmwlan.h:130
#define MMWLAN_MAX_EC_GROUPS
Maximum allowable number of EC Groups.
Definition: mmwlan.h:91
mmwlan_security_type
Enumeration of supported security types.
Definition: mmwlan.h:137
#define MMWLAN_OUI_SIZE
Size of an 802.11 OUI element in octets.
Definition: mmwlan.h:94
#define MMWLAN_SSID_MAXLEN
Maximum allowable length of an SSID.
Definition: mmwlan.h:79
mmwlan_twt_setup_command
Enumeration of Target Wake Time (TWT) setup commands.
Definition: mmwlan.h:190
mmwlan_4addr_mode
Enumeration of Linux 4-address mode settings.
Definition: mmwlan.h:210
#define MMWLAN_MAC_ADDR_LEN
Length of a WLAN MAC address.
Definition: mmwlan.h:88
mmwlan_ps_mode
Enumeration of supported 802.11 power save modes.
Definition: mmwlan.h:148
mmwlan_twt_mode
Enumeration of Target Wake Time (TWT) modes.
Definition: mmwlan.h:179
#define MMWLAN_STANDBY_WAKE_FRAME_USER_FILTER_MAXLEN
The maximum allowed length of a user filter to apply to wake frames.
Definition: mmwlan.h:133
mmwlan_cac_mode
Enumeration of Centralized Authentication Control (CAC) modes.
Definition: mmwlan.h:166
@ MMWLAN_INVALID_ARGUMENT
The operation failed due to an invalid argument.
Definition: mmwlan.h:56
@ MMWLAN_NOT_RUNNING
Indicates that the operation failed because the UMAC was not running (e.g., the device was not booted...
Definition: mmwlan.h:75
@ MMWLAN_TIMED_OUT
Failed due to timeout.
Definition: mmwlan.h:65
@ MMWLAN_SHUTDOWN_BLOCKED
Used to indicate that a call to mmwlan_sta_disable() did not shutdown the transceiver.
Definition: mmwlan.h:68
@ MMWLAN_SUCCESS
The operation was successful.
Definition: mmwlan.h:52
@ MMWLAN_CHANNEL_INVALID
Attempted to tune to a channel that was not in the regulatory database or not supported.
Definition: mmwlan.h:70
@ MMWLAN_NO_MEM
Failed due to memory allocation failure.
Definition: mmwlan.h:63
@ MMWLAN_CHANNEL_LIST_NOT_SET
Unable to proceed because channel list has not been set.
Definition: mmwlan.h:61
@ MMWLAN_ERROR
The operation failed with an unspecified error.
Definition: mmwlan.h:54
@ MMWLAN_UNAVAILABLE
Functionality is temporarily unavailable.
Definition: mmwlan.h:58
@ MMWLAN_NOT_FOUND
The request could not be completed because the given resource was not found.
Definition: mmwlan.h:72
@ MMWLAN_DUTY_CYCLE_MODE_SPREAD
Duty cycle air time evenly spread.
Definition: mmwlan.h:203
@ MMWLAN_DUTY_CYCLE_MODE_BURST
Duty cycle air time available in burst.
Definition: mmwlan.h:205
@ MMWLAN_PMF_DISABLED
No protected management frames.
Definition: mmwlan.h:161
@ MMWLAN_PMF_REQUIRED
Protected management frames must be used.
Definition: mmwlan.h:159
@ MMWLAN_OPEN
Open (no security)
Definition: mmwlan.h:139
@ MMWLAN_SAE
Simultaneous Authentication of Equals (SAE)
Definition: mmwlan.h:143
@ MMWLAN_OWE
Opportunistic Wireless Encryption (OWE)
Definition: mmwlan.h:141
@ MMWLAN_TWT_SETUP_SUGGEST
TWT setup suggest command.
Definition: mmwlan.h:194
@ MMWLAN_TWT_SETUP_REQUEST
TWT setup request command.
Definition: mmwlan.h:192
@ MMWLAN_TWT_SETUP_DEMAND
TWT setup demand command.
Definition: mmwlan.h:196
@ MMWLAN_PS_DISABLED
Power save disabled.
Definition: mmwlan.h:150
@ MMWLAN_PS_ENABLED
Power save enabled.
Definition: mmwlan.h:152
@ MMWLAN_TWT_DISABLED
TWT disabled.
Definition: mmwlan.h:181
@ MMWLAN_TWT_RESPONDER
TWT enabled as a responder.
Definition: mmwlan.h:185
@ MMWLAN_TWT_REQUESTER
TWT enabled as a requester.
Definition: mmwlan.h:183
@ MMWLAN_CAC_DISABLED
CAC disabled.
Definition: mmwlan.h:168
@ MMWLAN_CAC_ENABLED
CAC enabled.
Definition: mmwlan.h:170
Core mmpkt data structure.
Definition: mmpkt.h:79
Board configuration file (BCF) metadata.
Definition: mmwlan.h:392
char board_desc[MMWLAN_BCF_BOARD_DESC_MAXLEN+1]
Board description string.
Definition: mmwlan.h:410
uint8_t patch
Patch version field.
Definition: mmwlan.h:401
struct mmwlan_bcf_metadata::@1 version
BCF semantic version.
uint16_t major
Major version field.
Definition: mmwlan.h:397
uint8_t minor
Minor version field.
Definition: mmwlan.h:399
char build_version[MMWLAN_BCF_BUILD_VERSION_MAXLEN+1]
Build version string.
Definition: mmwlan.h:418
Structure for storing beacon vendor ie filter parameter.
Definition: mmwlan.h:2160
void * cb_arg
Opaque argument to be passed to the callbacks.
Definition: mmwlan.h:2171
mmwlan_beacon_vendor_ie_filter_cb_t cb
Callback that will be executed upon reception of a beacon containing a Vendor Specific information el...
Definition: mmwlan.h:2169
mmwlan_oui_t ouis[MMWLAN_BEACON_VENDOR_IE_MAX_OUI_FILTERS]
List of OUIs to filter on.
Definition: mmwlan.h:2176
uint8_t n_ouis
Number of OUIs contained within ouis.
Definition: mmwlan.h:2174
Arguments data structure for mmwlan_boot().
Definition: mmwlan.h:750
uint8_t reserved
Note this field should not be used and will be removed in future.
Definition: mmwlan.h:752
Whitelist filter configuration.
Definition: mmwlan.h:1706
uint16_t src_port
The source TCP or UDP port to match, 0 for any.
Definition: mmwlan.h:1720
uint32_t netmask
The netmask to apply to the source or destination IP, 0.0.0.0 for any.
Definition: mmwlan.h:1718
uint32_t src_ip
The IPv4 source address to match, 0.0.0.0 for any.
Definition: mmwlan.h:1714
uint16_t dest_port
The destination TCP or UDP port to match, 0 for any.
Definition: mmwlan.h:1722
uint32_t dest_ip
The IPv4 destination address to match, 0.0.0.0 for any - this is usually our IP address.
Definition: mmwlan.h:1716
uint16_t llc_protocol
The LLC protocol to match - 0x0800 for IPv4 and 0x86DD for IPv6, 0 for any.
Definition: mmwlan.h:1712
uint8_t flags
Flags - clear any active whitelist filters if bit 0 is set.
Definition: mmwlan.h:1708
uint8_t ip_protocol
The IP protocol to match - 6 for TCP, 17 for UDP, 0 for any.
Definition: mmwlan.h:1710
DHCP lease info structure.
Definition: mmwlan.h:1550
uint32_t ip4_addr
local IP address
Definition: mmwlan.h:1552
uint32_t mask4_addr
Netmask address.
Definition: mmwlan.h:1554
uint32_t dns4_addr
DNS address.
Definition: mmwlan.h:1558
uint32_t gw4_addr
Gateway address.
Definition: mmwlan.h:1556
Structure to hold the arguments used for the DPP process.
Definition: mmwlan.h:1114
void(* dpp_event_cb)(const struct mmwlan_dpp_cb_args *dpp_event, void *arg)
DPP event callback prototype.
Definition: mmwlan.h:1116
void * dpp_event_cb_arg
Optional user argument that will be passed back to the DPP event callback.
Definition: mmwlan.h:1118
Structure passed back when a DPP event occurs.
Definition: mmwlan.h:1086
union mmwlan_dpp_cb_args::@2 args
Union of arguments for DPP events.
const uint8_t * ssid
SSID of the AP to connect to.
Definition: mmwlan.h:1098
uint16_t ssid_len
Length of the SSID.
Definition: mmwlan.h:1100
const char * passphrase
Passphrase, NULL terminated.
Definition: mmwlan.h:1102
enum mmwlan_dpp_pb_result result
Result of DPP push button.
Definition: mmwlan.h:1096
struct mmwlan_dpp_cb_args::@2::@3 pb_result
Argument for MMWLAN_DPP_EVT_PB_RESULT event.
enum mmwlan_dpp_event event
The DPP event that has occurred.
Definition: mmwlan.h:1088
Duty cycle configuration and statistics.
Definition: mmwlan.h:219
uint32_t burst_window_duration_us
Burst window duration (us) - applicable in burst mode only.
Definition: mmwlan.h:227
uint32_t burst_airtime_remaining_us
Airtime remaining (us) - applicable in burst mode only.
Definition: mmwlan.h:225
uint32_t duty_cycle
Target duty cycle in 100th of a %, i.e.
Definition: mmwlan.h:221
enum mmwlan_duty_cycle_mode mode
Configured duty cycle mode, see mmwlan_duty_cycle_mode.
Definition: mmwlan.h:223
Data structure used to represent an opaque buffer containing Morse statistics.
Definition: mmwlan.h:2643
uint8_t * buf
Buffer containing the stats.
Definition: mmwlan.h:2645
uint32_t len
Length of stats in buf.
Definition: mmwlan.h:2647
Structure for storing QoS queue parameters
Definition: mmwlan.h:658
uint8_t aci
Access Category Index [0..3].
Definition: mmwlan.h:660
uint32_t txop_max_us
Maximum burst time in microseconds, 0 meaning disabled.
Definition: mmwlan.h:668
uint16_t cw_min
Minimum Contention Window.
Definition: mmwlan.h:664
uint8_t aifs
Arbitration Inter-frame Space [2..255].
Definition: mmwlan.h:662
uint16_t cw_max
Maximum Contention Window.
Definition: mmwlan.h:666
Rate control statistics data structure.
Definition: mmwlan.h:2589
uint32_t * total_success
Total successes for each rate table entry.
Definition: mmwlan.h:2597
uint32_t n_entries
The number of rate table entries.
Definition: mmwlan.h:2591
uint32_t * rate_info
Rate info for each rate table entry.
Definition: mmwlan.h:2593
uint32_t * total_sent
Total number of packets sent for each rate table entry.
Definition: mmwlan.h:2595
Regulatory database data structure.
Definition: mmwlan.h:288
unsigned num_domains
Number of regulatory domains in the database.
Definition: mmwlan.h:290
const struct mmwlan_s1g_channel_list ** domains
The regulatory domain data.
Definition: mmwlan.h:293
A list of S1G channels supported by a given regulatory domain.
Definition: mmwlan.h:274
unsigned num_channels
The number of channels in the list.
Definition: mmwlan.h:278
uint8_t country_code[MMWLAN_COUNTRY_CODE_LEN]
Two character country code (null-terminated) used to identify the regulatory domain.
Definition: mmwlan.h:276
const struct mmwlan_s1g_channel * channels
The channel data.
Definition: mmwlan.h:280
Regulatory domain information about an S1G channel.
Definition: mmwlan.h:244
int8_t max_tx_eirp_dbm
Maximum transmit power (EIRP in dBm).
Definition: mmwlan.h:260
uint32_t airtime_min_us
The minimum packet airtime duration to trigger spacing (in microseconds).
Definition: mmwlan.h:264
int16_t s1g_operating_class
S1G operating class.
Definition: mmwlan.h:254
int16_t global_operating_class
Global operating class.
Definition: mmwlan.h:252
uint32_t airtime_max_us
The maximum allowable packet airtime duration (in microseconds).
Definition: mmwlan.h:266
uint32_t centre_freq_hz
Center frequency of the channel (in Hz).
Definition: mmwlan.h:246
bool duty_cycle_omit_ctrl_resp
Boolean indicating whether to omit control response frames from duty cycle.
Definition: mmwlan.h:250
uint16_t duty_cycle_sta
STA Duty Cycle (in 100th of %).
Definition: mmwlan.h:248
uint8_t s1g_chan_num
S1G channel number.
Definition: mmwlan.h:256
uint32_t pkt_spacing_us
The length of time to close the tx window between packets (in microseconds).
Definition: mmwlan.h:262
uint8_t bw_mhz
Channel operating bandwidth (in MHz).
Definition: mmwlan.h:258
Structure to hold scan arguments.
Definition: mmwlan.h:1185
uint8_t * extra_ies
Extra Information Elements to include in Probe Request frames.
Definition: mmwlan.h:1197
uint8_t ssid[MMWLAN_SSID_MAXLEN]
SSID used for scan.
Definition: mmwlan.h:1204
uint32_t dwell_on_home_ms
Time to dwell on home channel in between channels during a scan, to allow traffic to still pass.
Definition: mmwlan.h:1212
size_t extra_ies_len
Length of extra_ies.
Definition: mmwlan.h:1199
uint16_t ssid_len
Length of the SSID.
Definition: mmwlan.h:1206
uint32_t dwell_time_ms
Minimum time to dwell on a channel waiting for probe responses/beacons.
Definition: mmwlan.h:1192
Scan configuration data structure.
Definition: mmwlan.h:557
bool ndp_probe_enabled
Boolean value indicating whether NDP probe support should be enabled.
Definition: mmwlan.h:577
uint32_t home_channel_dwell_time_ms
Set the home channel dwell time to use for scans that are requested internally within the mmwlan driv...
Definition: mmwlan.h:585
uint32_t dwell_time_ms
Set the per-channel dwell time to use for scans that are requested internally within the mmwlan drive...
Definition: mmwlan.h:564
Structure to hold arguments specific to a given instance of a scan.
Definition: mmwlan.h:1231
mmwlan_scan_rx_cb_t scan_rx_cb
Scan response receive callback.
Definition: mmwlan.h:1233
void * scan_cb_arg
Opaque argument to be passed to the callbacks.
Definition: mmwlan.h:1237
mmwlan_scan_complete_cb_t scan_complete_cb
Scan complete callback.
Definition: mmwlan.h:1235
struct mmwlan_scan_args args
Scan arguments to be used mmwlan_scan_args.
Definition: mmwlan.h:1239
Result of the scan request.
Definition: mmwlan.h:808
uint8_t ssid_len
Length of the SSID (ssid).
Definition: mmwlan.h:824
uint8_t bw_mhz
Bandwidth, in MHz, where the frame was received.
Definition: mmwlan.h:828
const uint8_t * ies
Pointer to the start of the Information Elements within the Probe Response frame.
Definition: mmwlan.h:816
uint16_t capability_info
Value of the Capability Information field.
Definition: mmwlan.h:820
uint16_t ies_len
Length of the Information Elements (ies).
Definition: mmwlan.h:822
const uint8_t * bssid
Pointer to the BSSID field within the Probe Response frame.
Definition: mmwlan.h:812
uint32_t channel_freq_hz
Center frequency in Hz of the channel where the frame was received.
Definition: mmwlan.h:826
uint16_t beacon_interval
Value of the Beacon Interval field.
Definition: mmwlan.h:818
uint64_t tsf
TSF timestamp in the Probe Response frame.
Definition: mmwlan.h:832
uint8_t op_bw_mhz
Operating bandwidth, in MHz, of the access point.
Definition: mmwlan.h:830
int16_t rssi
RSSI of the received frame.
Definition: mmwlan.h:810
const uint8_t * ssid
Pointer to the SSID within the SSID IE of the Probe Response frame.
Definition: mmwlan.h:814
Structure for storing WNM sleep extended arguments.
Definition: mmwlan.h:2046
bool wnm_sleep_enabled
Boolean indicating whether WNM sleep is enabled.
Definition: mmwlan.h:2048
bool chip_powerdown_enabled
Boolean indicating whether chip should be powered down during WNM sleep.
Definition: mmwlan.h:2050
Arguments data structure for mmwlan_softap_enable().
Definition: mmwlan.h:1324
char passphrase[MMWLAN_PASSPHRASE_MAXLEN+1]
Passphrase (only used if security_type is MMWLAN_SAE, otherwise ignored.
Definition: mmwlan.h:1338
uint8_t bssid[MMWLAN_MAC_ADDR_LEN]
Optional BSSID of the AP.
Definition: mmwlan.h:1334
int sae_owe_ec_groups[MMWLAN_MAX_EC_GROUPS]
Preference list of enabled elliptic curve groups for SAE and OWE.
Definition: mmwlan.h:1347
uint16_t passphrase_len
Length of passphrase.
Definition: mmwlan.h:1340
uint16_t op_class
Operating Class to use (S1G or Global).
Definition: mmwlan.h:1355
uint8_t pri_1mhz_chan_idx
Index of the primary 1 Mhz channel within the operating channel.
Definition: mmwlan.h:1387
mmwlan_softap_sta_status_cb_t sta_status_cb
Optional callback to be invoked when the status of a connected STA changes.
Definition: mmwlan.h:1392
uint8_t pri_bw_mhz
Bandwidth to use for the primary channel.
Definition: mmwlan.h:1382
uint16_t s1g_chan_num
S1G channel number of the channel to use.
Definition: mmwlan.h:1363
uint16_t ssid_len
Length of the SSID.
Definition: mmwlan.h:1328
enum mmwlan_pmf_mode pmf_mode
Protected Management Frame mode to use (802.11w)
Definition: mmwlan.h:1342
void * sta_status_cb_arg
Optional opaque argument to be passed to sta_status_cb.
Definition: mmwlan.h:1397
uint16_t dtim_period
The Delivery Traffic Indication Map (DTIM) interval in beacons.
Definition: mmwlan.h:1375
uint16_t beacon_interval_tus
The Beacon period in units of TUs.
Definition: mmwlan.h:1369
uint8_t ssid[MMWLAN_SSID_MAXLEN]
SSID of the AP.
Definition: mmwlan.h:1326
enum mmwlan_security_type security_type
Type of security to use.
Definition: mmwlan.h:1336
Data structure for communicating STA status information for stations connected to a Soft AP.
Definition: mmwlan.h:1289
uint8_t reserved
Placeholder so that the struct is not empty.
Definition: mmwlan.h:1291
Arguments data structure for mmwlan_sta_enable().
Definition: mmwlan.h:900
mmwlan_scan_rx_cb_t scan_rx_cb
Optional callback for scan results which are received during the connection process.
Definition: mmwlan.h:959
int bgscan_signal_threshold_dbm
Background scan signal strength threshold that switches between short and long intervals.
Definition: mmwlan.h:946
int16_t raw_sta_priority
Priority used by the AP to assign a STA to a Restricted Access Window (RAW) group.
Definition: mmwlan.h:922
int sae_owe_ec_groups[MMWLAN_MAX_EC_GROUPS]
Preference list of enabled elliptic curve groups for SAE and OWE.
Definition: mmwlan.h:929
uint16_t scan_interval_base_s
The base scan interval (in seconds) to use when (re)connecting.
Definition: mmwlan.h:971
uint8_t ssid[MMWLAN_SSID_MAXLEN]
SSID of the AP to connect to.
Definition: mmwlan.h:902
char passphrase[MMWLAN_PASSPHRASE_MAXLEN+1]
Passphrase (only used if security_type is MMWLAN_SAE, otherwise ignored.
Definition: mmwlan.h:913
enum mmwlan_4addr_mode use_4addr
Whether the station should use Linux 4-address mode.
Definition: mmwlan.h:1008
enum mmwlan_pmf_mode pmf_mode
Protected Management Frame mode to use (802.11w)
Definition: mmwlan.h:917
mmwlan_sta_event_cb_t sta_evt_cb
STA event callback with a user-defined opaque parameter.
Definition: mmwlan.h:995
uint8_t * extra_assoc_ies
Extra Information Elements to include in association request frames.
Definition: mmwlan.h:986
enum mmwlan_security_type security_type
Type of security to use.
Definition: mmwlan.h:911
uint16_t passphrase_len
Length of passphrase.
Definition: mmwlan.h:915
uint16_t bgscan_long_interval_s
Background scan long interval, measured in seconds.
Definition: mmwlan.h:957
uint16_t bgscan_short_interval_s
Background scan short interval, measured in seconds.
Definition: mmwlan.h:942
enum mmwlan_cac_mode cac_mode
Whether Centralized Authentication Controlled is enabled on the STA.
Definition: mmwlan.h:931
uint8_t bssid[MMWLAN_MAC_ADDR_LEN]
BSSID of the AP to connect to.
Definition: mmwlan.h:909
void * scan_rx_cb_arg
Opaque argument to be passed to scan_rx_cb.
Definition: mmwlan.h:961
size_t extra_assoc_ies_len
Length of extra_assoc_ies.
Definition: mmwlan.h:988
uint16_t ssid_len
Length of the SSID.
Definition: mmwlan.h:904
void * sta_evt_cb_arg
STA event callback argument to be passed to sta_evt_cb.
Definition: mmwlan.h:1003
uint16_t scan_interval_limit_s
The maximum interval between scan attempts when (re)connecting.
Definition: mmwlan.h:979
enum mmwlan_station_type sta_type
S1G non-AP STA type.
Definition: mmwlan.h:924
Argument passed to the STA event callback.
Definition: mmwlan.h:872
enum mmwlan_sta_event event
The event that triggered the callback.
Definition: mmwlan.h:874
Standby mode configuration parameters.
Definition: mmwlan.h:1957
uint16_t dst_port
Destination UDP Port for the standby status packets, also used the source port for outgoing UDP port ...
Definition: mmwlan.h:1968
uint32_t src_ip
Source IP address to use for the standby status packets.
Definition: mmwlan.h:1961
uint32_t bss_inactivity_before_snooze_s
Definition: mmwlan.h:1972
uint32_t snooze_period_s
The interval in seconds to wake periodically from snooze and check for beacons.
Definition: mmwlan.h:1978
uint32_t snooze_increment_s
The amount in seconds to increase successive snooze intervals.
Definition: mmwlan.h:1984
uint32_t dst_ip
Destination IP address for the standby status packets.
Definition: mmwlan.h:1963
uint32_t snooze_max_s
The maximum time in seconds to snooze for after increments.
Definition: mmwlan.h:1986
uint32_t notify_period_s
Interval in seconds for transmitting Standby status packets.
Definition: mmwlan.h:1959
Arguments for mmwlan_standby_enter
Definition: mmwlan.h:1826
mmwlan_standby_exit_cb_t standby_exit_cb
Callback function to call when we exit standby mode.
Definition: mmwlan.h:1828
void * standby_exit_arg
Arguments to pass to callback function.
Definition: mmwlan.h:1830
Arguments for mmwlan_standby_set_status_payload.
Definition: mmwlan.h:1875
uint8_t payload[MMWLAN_STANDBY_STATUS_FRAME_USER_PAYLOAD_MAXLEN]
User data to append to the standby status packets.
Definition: mmwlan.h:1877
uint32_t payload_len
The length of the payload in bytes.
Definition: mmwlan.h:1882
Arguments for mmwlan_standby_set_wake_filter
Definition: mmwlan.h:1912
uint8_t filter[MMWLAN_STANDBY_WAKE_FRAME_USER_FILTER_MAXLEN]
Data to match with for filtering.
Definition: mmwlan.h:1914
uint32_t offset
The offset within the packet to search for the filter match.
Definition: mmwlan.h:1921
uint32_t filter_len
The length of the filter data in bytes.
Definition: mmwlan.h:1919
Data structure to contain all stats from the UMAC.
Definition: mmwlan_stats.h:49
Arguments data structure for TCP keep-alive arguments.
Definition: mmwlan.h:1624
uint16_t src_port
The source port for the keep alive packet.
Definition: mmwlan.h:1650
uint16_t period_s
The interval in seconds to send the keep alive in.
Definition: mmwlan.h:1634
uint32_t src_ip
The source IP for the keep alive packet.
Definition: mmwlan.h:1646
uint8_t retry_interval_s
The time to wait between retries in seconds.
Definition: mmwlan.h:1642
uint8_t set_cfgs
A bitmap specifying which configs to set.
Definition: mmwlan.h:1629
uint8_t retry_count
Number of times to retry before giving up.
Definition: mmwlan.h:1638
uint32_t dest_ip
The destination IP for the keep alive packet.
Definition: mmwlan.h:1654
uint16_t dest_port
The destination port for the keep alive packet.
Definition: mmwlan.h:1658
Structure for storing Target Wake Time (TWT) configuration arguments.
Definition: mmwlan.h:603
enum mmwlan_twt_setup_command twt_setup_command
TWT setup command, mmwlan_twt_setup_command.
Definition: mmwlan.h:625
uint64_t twt_wake_interval_us
TWT service period interval in micro seconds.
Definition: mmwlan.h:611
uint32_t twt_min_wake_duration_us
Minimum TWT wake duration in micro seconds.
Definition: mmwlan.h:623
uint8_t twt_wake_interval_exponent
TWT Wake interval exponent If non-zero, this parameter will be used to calculate twt_wake_interval_us...
Definition: mmwlan.h:621
uint16_t twt_wake_interval_mantissa
TWT Wake interval mantissa If non-zero, this parameter will be used to calculate twt_wake_interval_us...
Definition: mmwlan.h:616
enum mmwlan_twt_mode twt_mode
Target Wake Time (TWT) modes, mmwlan_twt_mode.
Definition: mmwlan.h:605
Metadata for TX packets.
Definition: mmwlan.h:2406
uint8_t tid
Traffic ID (TID) to use.
Definition: mmwlan.h:2411
Structure for retrieving version information from the mmwlan subsystem.
Definition: mmwlan.h:362
char morselib_version[MMWLAN_MORSELIB_VERSION_MAXLEN]
Morselib version string.
Definition: mmwlan.h:364
char morse_chip_id_string[MMWLAN_CHIP_ID_STRING_MAXLEN]
Morse transceiver chip ID user-friendly string.
Definition: mmwlan.h:370
char morse_fw_version[MMWLAN_FW_VERSION_MAXLEN]
Morse transceiver firmware version string.
Definition: mmwlan.h:366
uint32_t morse_chip_id
Morse transceiver chip ID.
Definition: mmwlan.h:368