VSF Documented
vsf_wifi_aic8800d_priv.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * *
7 * You may obtain a copy of the License at *
8 * *
9 * http://www.apache.org/licenses/LICENSE-2.0 *
10 * *
11 * Unless required by applicable law or agreed to in writing, software *
12 * distributed under the License is distributed on an "AS IS" BASIS, *
13 * either express or implied. See the License for the specific language *
14 * governing permissions and limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_WIFI_AIC8800D_PRIV_H__
19#define __VSF_WIFI_AIC8800D_PRIV_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "./vsf_wifi_aic8800d.h"
24#include "../../vsf_wifi_priv.h"
25
26#if VSF_USE_WIFI == ENABLED && VSF_WIFI_USE_AIC8800D == ENABLED
27
28#include <stdint.h>
29#include <stdbool.h>
30#include <stddef.h>
31#include <stdio.h>
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37/*============================ MACROS ========================================*/
38
39#define AIC8800D_CMD_TIMEOUT_MS 5000
40#define AIC8800D_CMD_BUF_SIZE 1536
41#define AIC8800D_MAX_CMD_PARAM 1024
42#define AIC8800D_MAX_PENDING_CMDS 4
43
44/* Default RF config for AIC8800D80 U02 (pll trx, matches Linux rf_tbl_masked) */
45#define AIC8800D_RF_CFG_COUNT 1
46static const uint32_t __aic8800d_rf_cfg[AIC8800D_RF_CFG_COUNT][3] = {
47 {0x40344058, 0x00800000, 0x00000000}, /* pll trx */
48};
49
50/* System config tables for AIC8800D80 (matches Linux syscfg_tbl / syscfg_tbl_masked) */
51#define AIC8800D_SYSCFG_COUNT 3
52static const uint32_t __aic8800d_syscfg[AIC8800D_SYSCFG_COUNT][2] = {
53 {0x40500014, 0x00000101},
54 {0x40500018, 0x0000010D},
55 {0x40500004, 0x00000010},
56};
57
58#define AIC8800D_SYSCFG_MASKED_COUNT 1
59static const uint32_t __aic8800d_syscfg_masked[AIC8800D_SYSCFG_MASKED_COUNT][3] = {
60 {0x40506024, 0x000000FF, 0x000000DF},
61};
62
63/* Firmware binary is embedded as a C array in vsf_wifi_aic8800d_firmware_data.c.
64 * The source binary is fmacfw_8800d80_u02.bin from the Linux reference driver.
65 * Regenerate the C array when switching to a different firmware file. */
66#define AIC8800D_FW_LOAD_ADDR 0x00120000
67#define AIC8800D_FW_CHUNK_SIZE 1024
68#define AIC8800D_FW_START_APP_TYPE 1 /* HOST_START_APP_AUTO */
69#define AIC8800D_START_APP_REBOOT 3 /* HOST_START_APP_REBOOT: reset to boot ROM */
70
71/* USB packet types */
72#define AIC8800D_USB_TYPE_DATA 0x00
73#define AIC8800D_USB_TYPE_CFG 0x10
74#define AIC8800D_USB_TYPE_CFG_CMD_RSP 0x11
75#define AIC8800D_USB_TYPE_CFG_DATA_CFM 0x12
76#define AIC8800D_USB_TYPE_CFG_PRINT 0x13
77
78/* LMAC tasks */
79#define AIC8800D_TASK_MM 0
80#define AIC8800D_TASK_DBG 1
81#define AIC8800D_TASK_SCAN 2
82#define AIC8800D_TASK_SCANU 4
83#define AIC8800D_TASK_ME 5
84#define AIC8800D_TASK_SM 6
85#define AIC8800D_DRV_TASK_ID 100
86
87#define AIC8800D_LMAC_FIRST_MSG(task) ((uint16_t)((task) << 10))
88#define AIC8800D_MSG_I(msg) ((msg) & ((1u << 10) - 1))
89#define AIC8800D_MSG_T(msg) ((uint8_t)((msg) >> 10))
90
91/* LMAC message IDs - must match AIC8800 reference lmac_msg.h offsets */
92#define AIC8800D_MM_RESET_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 0)
93#define AIC8800D_MM_RESET_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 1)
94#define AIC8800D_MM_START_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 2)
95#define AIC8800D_MM_START_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 3)
96#define AIC8800D_MM_VERSION_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 4)
97#define AIC8800D_MM_VERSION_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 5)
98#define AIC8800D_MM_ADD_IF_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 6)
99#define AIC8800D_MM_ADD_IF_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 7)
100#define AIC8800D_MM_REMOVE_IF_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 8)
101#define AIC8800D_MM_REMOVE_IF_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 9)
102/* MM_STA_ADD/DEL skipped (10-13) */
103#define AIC8800D_MM_SET_FILTER_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 14)
104#define AIC8800D_MM_SET_FILTER_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 15)
105#define AIC8800D_MM_SET_CHANNEL_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 16)
106#define AIC8800D_MM_SET_CHANNEL_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 17)
107#define AIC8800D_MM_KEY_ADD_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 36)
108#define AIC8800D_MM_KEY_ADD_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 37)
109#define AIC8800D_MM_SET_ARPOFFLOAD_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 0x61)
110#define AIC8800D_MM_SET_ARPOFFLOAD_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 0x62)
111#define AIC8800D_MM_BA_ADD_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 0x28)
112#define AIC8800D_MM_BA_ADD_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 0x29)
113#define AIC8800D_MM_BA_DEL_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 0x2A)
114#define AIC8800D_MM_BA_DEL_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 0x2B)
115/* ... many MM messages omitted ... */
116#define AIC8800D_MM_GET_MAC_ADDR_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 115)
117#define AIC8800D_MM_GET_MAC_ADDR_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 116)
118#define AIC8800D_MM_GET_FW_VERSION_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 128)
119#define AIC8800D_MM_GET_FW_VERSION_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 129)
120
121#define AIC8800D_MM_SET_STACK_START_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 123)
122#define AIC8800D_MM_SET_STACK_START_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 124)
123
124#define AIC8800D_MM_SET_RF_CALIB_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 105)
125#define AIC8800D_MM_SET_RF_CALIB_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 106)
126#define AIC8800D_MM_SET_COEX_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 101)
127#define AIC8800D_MM_SET_COEX_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 102)
128#define AIC8800D_MM_SET_TXPWR_IDX_LVL_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 119)
129#define AIC8800D_MM_SET_TXPWR_IDX_LVL_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 120)
130#define AIC8800D_MM_SET_TXPWR_OFST_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 121)
131#define AIC8800D_MM_SET_TXPWR_OFST_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 122)
132#define AIC8800D_MM_SET_TXPWR_LVL_ADJ_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 131)
133#define AIC8800D_MM_SET_TXPWR_LVL_ADJ_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_MM) + 132)
134
135#define AIC8800D_ME_CONFIG_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_ME) + 0)
136#define AIC8800D_ME_CONFIG_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_ME) + 1)
137#define AIC8800D_ME_CHAN_CONFIG_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_ME) + 2)
138#define AIC8800D_ME_CHAN_CONFIG_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_ME) + 3)
139#define AIC8800D_ME_SET_CONTROL_PORT_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_ME) + 4)
140#define AIC8800D_ME_SET_CONTROL_PORT_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_ME) + 5)
141#define AIC8800D_ME_TRAFFIC_IND_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_ME) + 12)
142#define AIC8800D_ME_TRAFFIC_IND_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_ME) + 13)
143
144#define AIC8800D_SCANU_START_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SCANU) + 0)
145#define AIC8800D_SCANU_START_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SCANU) + 1)
146#define AIC8800D_SCANU_RESULT_IND (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SCANU) + 4)
147#define AIC8800D_SCANU_START_CFM_ADDTIONAL (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SCANU) + 9)
148#define AIC8800D_SCANU_CANCEL_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SCANU) + 10)
149#define AIC8800D_SCANU_CANCEL_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SCANU) + 11)
150
151#define AIC8800D_SM_CONNECT_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SM) + 0)
152#define AIC8800D_SM_CONNECT_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SM) + 1)
153#define AIC8800D_SM_CONNECT_IND (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SM) + 2)
154#define AIC8800D_SM_DISCONNECT_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SM) + 3)
155#define AIC8800D_SM_DISCONNECT_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SM) + 4)
156#define AIC8800D_SM_DISCONNECT_IND (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SM) + 5)
157#define AIC8800D_SM_EXTERNAL_AUTH_REQUIRED_IND (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SM) + 6)
158#define AIC8800D_SM_EXTERNAL_AUTH_REQUIRED_RSP (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SM) + 7)
159#define AIC8800D_SM_FT_AUTH_IND (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SM) + 8)
160#define AIC8800D_SM_FT_AUTH_RSP (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_SM) + 9)
161
162#define AIC8800D_DBG_MEM_READ_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_DBG) + 0)
163#define AIC8800D_DBG_MEM_READ_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_DBG) + 1)
164#define AIC8800D_DBG_MEM_WRITE_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_DBG) + 2)
165#define AIC8800D_DBG_MEM_WRITE_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_DBG) + 3)
166/* DBG_SET_MOD/SEV_FILTER, DBG_ERROR_IND, DBG_GET_SYS_STAT skipped (4-10) */
167#define AIC8800D_DBG_MEM_BLOCK_WRITE_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_DBG) + 11)
168#define AIC8800D_DBG_MEM_BLOCK_WRITE_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_DBG) + 12)
169#define AIC8800D_DBG_START_APP_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_DBG) + 13)
170#define AIC8800D_DBG_START_APP_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_DBG) + 14)
171#define AIC8800D_DBG_MEM_MASK_WRITE_REQ (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_DBG) + 17)
172#define AIC8800D_DBG_MEM_MASK_WRITE_CFM (AIC8800D_LMAC_FIRST_MSG(AIC8800D_TASK_DBG) + 18)
173
174#define AIC8800D_CO_OK 0
175#define AIC8800D_CO_FAIL 1
176
177/*============================ TYPES =========================================*/
178
183typedef bool aic_bool;
184
188
193
201
209
218
219/* Request parameter structures */
226
230
235
239
241 aic_u32 get; /* matches Linux mm_get_mac_addr_req */
242};
243
247
249 aic_u8 type; /* MM_STA / MM_AP / ... */
250 aic_u8 __pad0; /* mac_addr is 2-byte aligned -> addr at offset 2 */
253 aic_u8 __pad1; /* total 10 bytes, matches Linux mm_add_if_req */
254};
255
259
260/* MM_SET_ARPOFFLOAD_REQ (8 bytes, matches Linux mm_set_arpoffload_en_req):
261 * tells the firmware our DHCP-assigned IP so its ARP offload engine relays
262 * ARP traffic for that IP to the host correctly. */
269
270/* MM_BA_ADD_REQ / MM_BA_DEL_REQ: explicit Block Ack session management
271 * (Linux lmac_msg.h mm_ba_add_req / mm_ba_del_req). */
273 aic_u8 type; /* 0: TX, 1: RX */
276 aic_u8 bufsz; /* MPDUs held per TID */
277 aic_u16 ssn; /* start sequence number */
278};
279
286
292
293/* TX power level configurations (v1/v2/v3/v4 unions) */
306
313
323
336
345
351
355
366
372
379
390
397
407
408/* Confirmation parameter structures */
414
419
431
435
439
443
444/* MM_SET_COEX_REQ (16 bytes, matches Linux struct mm_set_coex_req) */
454
460
464
469
470/* ME */
471#define AIC8800D_MAC_DOMAINCHANNEL_24G_MAX 14
472#define AIC8800D_MAC_DOMAINCHANNEL_5G_MAX 28
473
474#define AIC8800D_MAC_MCS_MAX_LEN 16
475#define AIC8800D_MAC_HE_MAC_CAPA_LEN 6
476#define AIC8800D_MAC_HE_PHY_CAPA_LEN 11
477#define AIC8800D_MAC_HE_PPE_THRES_MAX_LEN 25
478
487
495
504
511
526
533
534/* SCANU */
535#define AIC8800D_SCAN_CHANNEL_MAX 42
536#define AIC8800D_SCAN_SSID_MAX 3
537
541 /* Field offsets MUST match the golden Linux SCANU_START_REQ byte-for-byte
542 * (verified from aic_connect_linux_success.pcap frame 17, param_len=376):
543 * bssid@352 (2-aligned, implicit pad after the 33B ssid entries),
544 * add_ies@358, add_ie_len@362, vif_idx@364, chan_cnt@367, ssid_cnt@368,
545 * no_cck@369, duration@372.
546 * If these offsets drift (e.g. C alignment pads add_ies to 4 bytes), the
547 * firmware reads chan_cnt/ssid_cnt as 0 and silently scans a default
548 * profile, returning only a small subset of the APs in range. */
550 aic_u16 add_ies[2]; /* @358 host ptr, unused -> 0 */
551 aic_u16 add_ie_len; /* @362 */
552 aic_u8 vif_idx; /* @364 */
553 aic_u8 __pad0[2]; /* @365..366 */
554 aic_u8 chan_cnt; /* @367 */
555 aic_u8 ssid_cnt; /* @368 */
556 aic_u8 no_cck; /* @369 */
557 aic_u8 __pad1; /* @370 */
558 aic_u32 duration; /* @372 (implicit pad @371) */
559};
560
561/* The firmware parses this message by fixed offsets; lock the layout down so
562 * a careless struct edit cannot silently re-break scanning. */
563VSF_STATIC_ASSERT(sizeof(struct aic8800d_scanu_start_req) == 376, scan_req_size);
564VSF_STATIC_ASSERT(offsetof(struct aic8800d_scanu_start_req, bssid) == 352, scan_req_bssid_off);
565VSF_STATIC_ASSERT(offsetof(struct aic8800d_scanu_start_req, vif_idx) == 364, scan_req_vif_off);
566VSF_STATIC_ASSERT(offsetof(struct aic8800d_scanu_start_req, chan_cnt) == 367, scan_req_chancnt_off);
567VSF_STATIC_ASSERT(offsetof(struct aic8800d_scanu_start_req, ssid_cnt) == 368, scan_req_ssidcnt_off);
568VSF_STATIC_ASSERT(offsetof(struct aic8800d_scanu_start_req, duration) == 372, scan_req_duration_off);
569
575
578
582
593
594/* SM */
595#define AIC8800D_SM_ASSOC_IE_LEN 256
596
597/* mac_connection_flags from Linux lmac_mac.h */
598#define AIC8800D_CONNECTION_FLAG_CONTROL_PORT_HOST (1u << 0)
599#define AIC8800D_CONNECTION_FLAG_CONTROL_PORT_NO_ENC (1u << 1)
600#define AIC8800D_CONNECTION_FLAG_DISABLE_HT (1u << 2)
601#define AIC8800D_CONNECTION_FLAG_WPA_WPA2_IN_USE (1u << 3)
602#define AIC8800D_CONNECTION_FLAG_MFP_IN_USE (1u << 4)
603#define AIC8800D_CONNECTION_FLAG_REASSOCIATION (1u << 5)
604
605/* TX/RX data descriptor sizes */
606#define AIC8800D_TXDESC_API_SIZE 28 /* sizeof(struct hostdesc) */
607#define AIC8800D_RX_HWHDR_LEN 60 /* RX_HWHRD_LEN in Linux driver */
608#define AIC8800D_USB_TX_HEADER_LEN 4 /* USB data TX header: [len u16][type u8][rsvd u8] */
609#define AIC8800D_USB_RX_ALIGNMENT 4
610
627
631
632/* SM_CONNECT_IND carries assoc IEs in a SM_ASSOC_IE_LEN(800)-byte buffer,
633 * larger than the 256-byte ie_buf of SM_CONNECT_REQ (Linux lmac_msg.h). */
634#define AIC8800D_SM_ASSOC_IND_IE_LEN 800
635
656
657/* Field order MUST match Linux lmac_msg.h struct sm_disconnect_req
658 * { u16 reason_code; u8 vif_idx; } -- the firmware decodes reason_code
659 * first; swapped fields make it read vif_idx=3 (a non-existent vif),
660 * the disconnect never completes and the SM stays busy (next connect
661 * rejected with CO_OP_IN_PROGRESS). */
666
671
672/* MM_KEY_ADD_REQ (44 bytes, matches Linux struct mm_key_add_req with
673 * mac_sec_key { u8 length; pad[3]; u32 array[8]; }) */
674#define AIC8800D_SEC_KEY_LEN 32
675#define AIC8800D_CIPHER_CCMP 2
688
693
698
712
716
717/* USB bulk TX aggregation header (8 bytes) */
728
730 /* hw_rxhdr is 60 bytes; we only need the fields used for routing.
731 * The full layout includes hwvect (36 bytes), phy_info (8 bytes),
732 * flags (4 bytes), pattern (4 bytes). Keep opaque for now. */
734};
735
736/* DBG */
737#define AIC8800D_PATCH_MAGIC_NUM 0x48435450 /* "PTCH" */
738#define AIC8800D_PATCH_MAGIC_NUM_2 0x50544348 /* "HCTP" */
739#define AIC8800D_PATCH_BLOCK_MAX 4
740
750
751/* Default patch table for AIC8800D80 U02 (2.4G/5G selection, aggregation) */
752#define AIC8800D_PATCH_TBL_COUNT 2
753static const uint32_t __aic8800d_patch_tbl[AIC8800D_PATCH_TBL_COUNT][2] = {
754 {0x00b4, 0xf3010001}, /* 5G + ... */
755 {0x0170, 0x0001000A}, /* rx aggr counter */
756};
757
758/* Boot-time upload addresses (from fw_patch_table INF record:
759 * addr_adid=0x00201940, addr_patch=0x001E0000, ext patch 0 -> 0x0020B43C;
760 * the hardcoded defaults in Linux aic_compat_8800d80.h are overridden by
761 * aicbt_patch_info_unpack()) */
762#define AIC8800D_ADID_ADDR 0x00201940
763#define AIC8800D_PATCH_ADDR 0x001E0000
764#define AIC8800D_PATCH_EXT_ADDR 0x0020B43C
765
766/* Firmware binary (auto-generated from fmacfw_8800d80_u02.bin) */
767extern const uint8_t __aic8800d_firmware_data[];
769/* ADID (chip trim/calibration data), auto-generated from fw_adid_8800d80_u02.bin */
770extern const uint8_t __aic8800d_adid_data[];
771extern const uint32_t __aic8800d_adid_size;
772/* Boot patch code, auto-generated from fw_patch_8800d80_u02.bin */
773extern const uint8_t __aic8800d_patch_data[];
775/* Boot patch ext data, auto-generated from fw_patch_8800d80_u02_ext0.bin */
778/* Boot patch table, auto-generated from fw_patch_table_8800d80_u02.bin */
781
785
790
795
800
806
811
817
818/* Firmware bundle selection. The AIC8800D series has several chip variants
819 * (D80/D81/D40/DC/X2, and chip revisions U01/U02/U03/U04) each requiring a
820 * matching firmware image + patch table; using the wrong image either fails
821 * the download or misbehaves at runtime (e.g. no data forwarding). The
822 * driver picks the bundle from the chip identification (chip_rev /
823 * chip_sub_rev / USB VID:PID) read during system_config. */
824#define AIC8800D_FW_IMG_ADID 0
825#define AIC8800D_FW_IMG_PATCH 1
826#define AIC8800D_FW_IMG_EXT 2
827#define AIC8800D_FW_IMG_MAIN 3
828#define AIC8800D_FW_IMG_NUM 4
829
830typedef struct aic8800d_fw_variant_t {
831 const char *name;
832 struct {
833 uint32_t addr; /* upload address, 0 = image not used */
834 const uint8_t *data;
835 uint32_t size; /* 0 = image skipped */
840
845
851
857
861
862/* Pending command record */
863typedef struct aic8800d_cmd_t {
864 uint16_t id; /* A2E request message id */
865 uint16_t cfm_id; /* expected E2A confirmation id */
866 uint8_t token; /* local token for matching */
867 bool busy;
868 vsf_wifi_done_t done; /* caller completion callback */
869 void *cfm_param; /* buffer to copy E2A param into */
870 uint16_t cfm_param_len; /* size of cfm_param buffer */
872
873/* Chip driver private state */
874typedef struct aic8800d_priv_t {
877
881
882 /* Command manager */
885
886 /* Init state machine */
889
890 /* Firmware load state */
900 uint8_t chip_rev; /* chip_id read from 0x40500000 */
902
903 /* Boot patch table (fw_patch_table_8800d80_u02.bin) write state */
907
908 /* Patch config state */
916
917 /* System config state */
920
921 /* RF config state */
923
924 /* Scan state */
932#define AIC8800D_SCAN_RSN_CAP_CACHE_SIZE 8
933 struct {
938
939 /* Connect state */
944
945 /* Link state (cached from SM_CONNECT_IND) */
948 bool qos;
949
950 /* ARP offload: MM_SET_ARPOFFLOAD_REQ sent to the firmware with our
951 * DHCP-assigned IP (only once, on the first DHCP ACK). */
953
954 /* Key install state (MM_KEY_ADD_REQ -> optional ME_SET_CONTROL_PORT_REQ) */
958
959 /* Init watchdog (stale-firmware self-heal): armed when the init chain runs
960 * on a runtime-mode device; if the chain stalls (stale firmware does not
961 * answer MM_SET_STACK_START_REQ), the timer fires and reboots the chip
962 * into boot ROM so the cold download flow can run. */
965
966/*============================ GLOBAL VARIABLES ==============================*/
967
968/*============================ LOCAL VARIABLES ===============================*/
969
970/*============================ PROTOTYPES ====================================*/
971
974 const void *param, uint16_t param_len,
975 uint16_t cfm_id, void *cfm_param, uint16_t cfm_param_len,
976 vsf_wifi_done_t done);
978 const struct aic8800d_ipc_e2a_msg *msg);
979
980#ifdef __cplusplus
981}
982#endif
983
984#endif /* VSF_USE_WIFI == ENABLED && VSF_WIFI_USE_AIC8800D == ENABLED */
985#endif /* __VSF_WIFI_AIC8800D_PRIV_H__ */
#define VSF_STATIC_ASSERT(__COND,...)
Definition __type.h:199
vsf_err_t
Definition __type.h:42
bool
Definition type.h:60
Definition vsf_eda.h:851
__le16 duration
Definition ieee80211.h:1
u8 bssid[ETH_ALEN]
Definition ieee80211.h:2
#define offsetof(__type, __member)
Definition stddef.h:84
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
signed char int8_t
Definition stdint.h:4
Definition vsf_wifi_aic8800d_priv.h:863
uint8_t token
Definition vsf_wifi_aic8800d_priv.h:866
uint16_t id
Definition vsf_wifi_aic8800d_priv.h:864
vsf_wifi_done_t done
Definition vsf_wifi_aic8800d_priv.h:868
uint16_t cfm_param_len
Definition vsf_wifi_aic8800d_priv.h:870
bool busy
Definition vsf_wifi_aic8800d_priv.h:867
uint16_t cfm_id
Definition vsf_wifi_aic8800d_priv.h:865
void * cfm_param
Definition vsf_wifi_aic8800d_priv.h:869
Definition vsf_wifi_aic8800d_priv.h:846
aic_u32 mem_addr
Definition vsf_wifi_aic8800d_priv.h:847
aic_u32 mem_data[]
Definition vsf_wifi_aic8800d_priv.h:849
aic_u32 mem_size
Definition vsf_wifi_aic8800d_priv.h:848
Definition vsf_wifi_aic8800d_priv.h:841
aic_u32 mem_addr
Definition vsf_wifi_aic8800d_priv.h:842
aic_u32 mem_size
Definition vsf_wifi_aic8800d_priv.h:843
Definition vsf_wifi_aic8800d_priv.h:812
aic_u32 mem_addr
Definition vsf_wifi_aic8800d_priv.h:813
aic_u32 mem_size
Definition vsf_wifi_aic8800d_priv.h:814
aic_u32 mem_data[]
Definition vsf_wifi_aic8800d_priv.h:815
Definition vsf_wifi_aic8800d_priv.h:807
aic_u32 mem_addr
Definition vsf_wifi_aic8800d_priv.h:808
aic_u32 mem_data
Definition vsf_wifi_aic8800d_priv.h:809
Definition vsf_wifi_aic8800d_priv.h:801
aic_u32 mem_mask
Definition vsf_wifi_aic8800d_priv.h:803
aic_u32 mem_data
Definition vsf_wifi_aic8800d_priv.h:804
aic_u32 mem_addr
Definition vsf_wifi_aic8800d_priv.h:802
Definition vsf_wifi_aic8800d_priv.h:786
aic_u32 mem_addr
Definition vsf_wifi_aic8800d_priv.h:787
aic_u32 mem_data
Definition vsf_wifi_aic8800d_priv.h:788
Definition vsf_wifi_aic8800d_priv.h:782
aic_u32 mem_addr
Definition vsf_wifi_aic8800d_priv.h:783
Definition vsf_wifi_aic8800d_priv.h:796
aic_u32 mem_addr
Definition vsf_wifi_aic8800d_priv.h:797
aic_u32 mem_data
Definition vsf_wifi_aic8800d_priv.h:798
Definition vsf_wifi_aic8800d_priv.h:791
aic_u32 mem_addr
Definition vsf_wifi_aic8800d_priv.h:792
aic_u32 mem_data
Definition vsf_wifi_aic8800d_priv.h:793
Definition vsf_wifi_aic8800d_priv.h:858
aic_u32 status
Definition vsf_wifi_aic8800d_priv.h:859
Definition vsf_wifi_aic8800d_priv.h:852
aic_u32 boot_param
Definition vsf_wifi_aic8800d_priv.h:855
aic_u32 boot_addr
Definition vsf_wifi_aic8800d_priv.h:853
aic_u32 boot_type
Definition vsf_wifi_aic8800d_priv.h:854
Definition vsf_wifi_aic8800d_priv.h:830
const uint8_t * data
Definition vsf_wifi_aic8800d_priv.h:834
const char * name
Definition vsf_wifi_aic8800d_priv.h:831
struct aic8800d_fw_variant_t::@332 img[AIC8800D_FW_IMG_NUM]
uint32_t patch_table_size
Definition vsf_wifi_aic8800d_priv.h:838
uint32_t size
Definition vsf_wifi_aic8800d_priv.h:835
const uint8_t * patch_table
Definition vsf_wifi_aic8800d_priv.h:837
uint32_t addr
Definition vsf_wifi_aic8800d_priv.h:833
Definition vsf_wifi_aic8800d_priv.h:699
aic_u16 packet_len
Definition vsf_wifi_aic8800d_priv.h:700
aic_u8 staid
Definition vsf_wifi_aic8800d_priv.h:709
aic_u16 flags_ext
Definition vsf_wifi_aic8800d_priv.h:701
struct aic8800d_mac_addr eth_dest_addr
Definition vsf_wifi_aic8800d_priv.h:703
aic_u16 ethertype
Definition vsf_wifi_aic8800d_priv.h:705
aic_u8 ac
Definition vsf_wifi_aic8800d_priv.h:706
aic_u32 status_desc_addr
Definition vsf_wifi_aic8800d_priv.h:702
aic_u8 tid
Definition vsf_wifi_aic8800d_priv.h:707
struct aic8800d_mac_addr eth_src_addr
Definition vsf_wifi_aic8800d_priv.h:704
aic_u8 vif_idx
Definition vsf_wifi_aic8800d_priv.h:708
aic_u16 flags
Definition vsf_wifi_aic8800d_priv.h:710
Definition vsf_wifi_aic8800d_priv.h:729
aic_u8 raw[AIC8800D_RX_HWHDR_LEN]
Definition vsf_wifi_aic8800d_priv.h:733
Definition vsf_wifi_aic8800d_priv.h:210
aic_u32 pattern
Definition vsf_wifi_aic8800d_priv.h:215
aic_u16 dummy_dest_id
Definition vsf_wifi_aic8800d_priv.h:212
aic_u16 param_len
Definition vsf_wifi_aic8800d_priv.h:214
aic_u32 param[(AIC8800D_MAX_CMD_PARAM+3)/4]
Definition vsf_wifi_aic8800d_priv.h:216
aic_u16 id
Definition vsf_wifi_aic8800d_priv.h:211
aic_u16 dummy_src_id
Definition vsf_wifi_aic8800d_priv.h:213
Definition vsf_wifi_aic8800d_priv.h:202
aic_u16 param_len
Definition vsf_wifi_aic8800d_priv.h:206
aic_u16 id
Definition vsf_wifi_aic8800d_priv.h:203
aic_u32 param[]
Definition vsf_wifi_aic8800d_priv.h:207
aic_u16 dest_id
Definition vsf_wifi_aic8800d_priv.h:204
aic_u16 src_id
Definition vsf_wifi_aic8800d_priv.h:205
Definition vsf_wifi_aic8800d_priv.h:185
aic_u16 array[3]
Definition vsf_wifi_aic8800d_priv.h:186
Definition vsf_wifi_aic8800d_priv.h:194
aic_u8 __pad
Definition vsf_wifi_aic8800d_priv.h:199
aic_u8 band
Definition vsf_wifi_aic8800d_priv.h:196
aic_s8 tx_power
Definition vsf_wifi_aic8800d_priv.h:198
aic_u16 freq
Definition vsf_wifi_aic8800d_priv.h:195
aic_u8 flags
Definition vsf_wifi_aic8800d_priv.h:197
Definition vsf_wifi_aic8800d_priv.h:505
aic_u8 mac_cap_info[AIC8800D_MAC_HE_MAC_CAPA_LEN]
Definition vsf_wifi_aic8800d_priv.h:506
struct aic8800d_mac_he_mcs_nss_supp mcs_supp
Definition vsf_wifi_aic8800d_priv.h:508
aic_u8 phy_cap_info[AIC8800D_MAC_HE_PHY_CAPA_LEN]
Definition vsf_wifi_aic8800d_priv.h:507
aic_u8 ppe_thres[AIC8800D_MAC_HE_PPE_THRES_MAX_LEN]
Definition vsf_wifi_aic8800d_priv.h:509
Definition vsf_wifi_aic8800d_priv.h:496
aic_u16 tx_mcs_160
Definition vsf_wifi_aic8800d_priv.h:500
aic_u16 rx_mcs_80p80
Definition vsf_wifi_aic8800d_priv.h:501
aic_u16 tx_mcs_80p80
Definition vsf_wifi_aic8800d_priv.h:502
aic_u16 rx_mcs_80
Definition vsf_wifi_aic8800d_priv.h:497
aic_u16 tx_mcs_80
Definition vsf_wifi_aic8800d_priv.h:498
aic_u16 rx_mcs_160
Definition vsf_wifi_aic8800d_priv.h:499
Definition vsf_wifi_aic8800d_priv.h:479
aic_u8 mcs_rate[AIC8800D_MAC_MCS_MAX_LEN]
Definition vsf_wifi_aic8800d_priv.h:482
aic_u16 ht_capa_info
Definition vsf_wifi_aic8800d_priv.h:480
aic_u8 a_mpdu_param
Definition vsf_wifi_aic8800d_priv.h:481
aic_u16 ht_extended_capa
Definition vsf_wifi_aic8800d_priv.h:483
aic_u8 asel_capa
Definition vsf_wifi_aic8800d_priv.h:485
aic_u32 tx_beamforming_capa
Definition vsf_wifi_aic8800d_priv.h:484
Definition vsf_wifi_aic8800d_priv.h:189
aic_u8 length
Definition vsf_wifi_aic8800d_priv.h:190
aic_u8 array[32]
Definition vsf_wifi_aic8800d_priv.h:191
Definition vsf_wifi_aic8800d_priv.h:488
aic_u16 tx_highest
Definition vsf_wifi_aic8800d_priv.h:493
aic_u16 rx_highest
Definition vsf_wifi_aic8800d_priv.h:491
aic_u16 rx_mcs_map
Definition vsf_wifi_aic8800d_priv.h:490
aic_u32 vht_capa_info
Definition vsf_wifi_aic8800d_priv.h:489
aic_u16 tx_mcs_map
Definition vsf_wifi_aic8800d_priv.h:492
Definition vsf_wifi_aic8800d_priv.h:527
struct aic8800d_mac_chan_def chan5G[AIC8800D_MAC_DOMAINCHANNEL_5G_MAX]
Definition vsf_wifi_aic8800d_priv.h:529
aic_u8 chan2G4_cnt
Definition vsf_wifi_aic8800d_priv.h:530
struct aic8800d_mac_chan_def chan2G4[AIC8800D_MAC_DOMAINCHANNEL_24G_MAX]
Definition vsf_wifi_aic8800d_priv.h:528
aic_u8 chan5G_cnt
Definition vsf_wifi_aic8800d_priv.h:531
Definition vsf_wifi_aic8800d_priv.h:512
aic_u8 phy_bw_max
Definition vsf_wifi_aic8800d_priv.h:517
aic_bool ht_supp
Definition vsf_wifi_aic8800d_priv.h:518
aic_bool he_supp
Definition vsf_wifi_aic8800d_priv.h:520
aic_bool he_ul_on
Definition vsf_wifi_aic8800d_priv.h:521
aic_bool ant_div_on
Definition vsf_wifi_aic8800d_priv.h:523
aic_bool dpsm
Definition vsf_wifi_aic8800d_priv.h:524
aic_u16 tx_lft
Definition vsf_wifi_aic8800d_priv.h:516
struct aic8800d_mac_vht_capability vht_cap
Definition vsf_wifi_aic8800d_priv.h:514
struct aic8800d_mac_he_capability he_cap
Definition vsf_wifi_aic8800d_priv.h:515
struct aic8800d_mac_ht_capability ht_cap
Definition vsf_wifi_aic8800d_priv.h:513
aic_bool ps_on
Definition vsf_wifi_aic8800d_priv.h:522
aic_bool vht_supp
Definition vsf_wifi_aic8800d_priv.h:519
Definition vsf_wifi_aic8800d_priv.h:694
aic_u8 control_port_open
Definition vsf_wifi_aic8800d_priv.h:696
aic_u8 sta_idx
Definition vsf_wifi_aic8800d_priv.h:695
Definition vsf_wifi_aic8800d_priv.h:415
aic_u8 inst_nbr
Definition vsf_wifi_aic8800d_priv.h:417
aic_u8 status
Definition vsf_wifi_aic8800d_priv.h:416
Definition vsf_wifi_aic8800d_priv.h:248
aic_u8 type
Definition vsf_wifi_aic8800d_priv.h:249
aic_u8 p2p
Definition vsf_wifi_aic8800d_priv.h:252
aic_u8 __pad1
Definition vsf_wifi_aic8800d_priv.h:253
struct aic8800d_mac_addr addr
Definition vsf_wifi_aic8800d_priv.h:251
aic_u8 __pad0
Definition vsf_wifi_aic8800d_priv.h:250
Definition vsf_wifi_aic8800d_priv.h:280
aic_u8 status
Definition vsf_wifi_aic8800d_priv.h:283
aic_u8 tid
Definition vsf_wifi_aic8800d_priv.h:282
aic_u8 aligned
Definition vsf_wifi_aic8800d_priv.h:284
aic_u8 sta_idx
Definition vsf_wifi_aic8800d_priv.h:281
Definition vsf_wifi_aic8800d_priv.h:272
aic_u8 tid
Definition vsf_wifi_aic8800d_priv.h:275
aic_u8 bufsz
Definition vsf_wifi_aic8800d_priv.h:276
aic_u8 sta_idx
Definition vsf_wifi_aic8800d_priv.h:274
aic_u8 type
Definition vsf_wifi_aic8800d_priv.h:273
aic_u16 ssn
Definition vsf_wifi_aic8800d_priv.h:277
Definition vsf_wifi_aic8800d_priv.h:287
aic_u8 tid
Definition vsf_wifi_aic8800d_priv.h:290
aic_u8 sta_idx
Definition vsf_wifi_aic8800d_priv.h:289
aic_u8 type
Definition vsf_wifi_aic8800d_priv.h:288
Definition vsf_wifi_aic8800d_priv.h:231
aic_u8 fw_version[63]
Definition vsf_wifi_aic8800d_priv.h:233
aic_u8 fw_version_len
Definition vsf_wifi_aic8800d_priv.h:232
Definition vsf_wifi_aic8800d_priv.h:227
aic_u8 dummy
Definition vsf_wifi_aic8800d_priv.h:228
Definition vsf_wifi_aic8800d_priv.h:409
aic_u8 status
Definition vsf_wifi_aic8800d_priv.h:411
aic_u8 mac_addr[6]
Definition vsf_wifi_aic8800d_priv.h:410
aic_u8 pad
Definition vsf_wifi_aic8800d_priv.h:412
Definition vsf_wifi_aic8800d_priv.h:240
aic_u32 get
Definition vsf_wifi_aic8800d_priv.h:241
Definition vsf_wifi_aic8800d_priv.h:689
aic_u8 hw_key_idx
Definition vsf_wifi_aic8800d_priv.h:691
aic_u8 status
Definition vsf_wifi_aic8800d_priv.h:690
Definition vsf_wifi_aic8800d_priv.h:676
aic_u8 sta_idx
Definition vsf_wifi_aic8800d_priv.h:678
aic_u8 pairwise
Definition vsf_wifi_aic8800d_priv.h:686
aic_u8 cipher_suite
Definition vsf_wifi_aic8800d_priv.h:683
aic_u32 key[AIC8800D_SEC_KEY_LEN/4]
Definition vsf_wifi_aic8800d_priv.h:682
aic_u8 key_len
Definition vsf_wifi_aic8800d_priv.h:680
aic_u8 __pad0[2]
Definition vsf_wifi_aic8800d_priv.h:679
aic_u8 __pad1[3]
Definition vsf_wifi_aic8800d_priv.h:681
aic_u8 inst_nbr
Definition vsf_wifi_aic8800d_priv.h:684
aic_u8 key_idx
Definition vsf_wifi_aic8800d_priv.h:677
aic_u8 spp
Definition vsf_wifi_aic8800d_priv.h:685
Definition vsf_wifi_aic8800d_priv.h:432
aic_u32 dummy
Definition vsf_wifi_aic8800d_priv.h:433
Definition vsf_wifi_aic8800d_priv.h:236
aic_u32 dummy
Definition vsf_wifi_aic8800d_priv.h:237
Definition vsf_wifi_aic8800d_priv.h:263
aic_u8 __pad[2]
Definition vsf_wifi_aic8800d_priv.h:267
aic_u8 enable
Definition vsf_wifi_aic8800d_priv.h:265
aic_u32 ipaddr
Definition vsf_wifi_aic8800d_priv.h:264
aic_u8 vif_idx
Definition vsf_wifi_aic8800d_priv.h:266
Definition vsf_wifi_aic8800d_priv.h:436
aic_u32 radio_cnt
Definition vsf_wifi_aic8800d_priv.h:437
Definition vsf_wifi_aic8800d_priv.h:398
aic_u8 band
Definition vsf_wifi_aic8800d_priv.h:399
aic_u16 center2_freq
Definition vsf_wifi_aic8800d_priv.h:403
aic_u8 dummy
Definition vsf_wifi_aic8800d_priv.h:405
aic_u8 type
Definition vsf_wifi_aic8800d_priv.h:400
aic_u16 prim20_freq
Definition vsf_wifi_aic8800d_priv.h:401
aic_u16 center1_freq
Definition vsf_wifi_aic8800d_priv.h:402
aic_u8 index
Definition vsf_wifi_aic8800d_priv.h:404
Definition vsf_wifi_aic8800d_priv.h:445
aic_u8 bt_on
Definition vsf_wifi_aic8800d_priv.h:446
aic_u8 enable_nullcts
Definition vsf_wifi_aic8800d_priv.h:448
aic_u8 disable_coexnull
Definition vsf_wifi_aic8800d_priv.h:447
aic_u8 __pad[3]
Definition vsf_wifi_aic8800d_priv.h:451
aic_u8 enable_periodic_timer
Definition vsf_wifi_aic8800d_priv.h:449
aic_u32 coex_timeslot[2]
Definition vsf_wifi_aic8800d_priv.h:452
aic_u8 coex_timeslot_set
Definition vsf_wifi_aic8800d_priv.h:450
Definition vsf_wifi_aic8800d_priv.h:440
aic_u32 dummy
Definition vsf_wifi_aic8800d_priv.h:441
Definition vsf_wifi_aic8800d_priv.h:256
aic_u32 filter
Definition vsf_wifi_aic8800d_priv.h:257
Definition vsf_wifi_aic8800d_priv.h:391
aic_u32 rxgain_24g_addr
Definition vsf_wifi_aic8800d_priv.h:392
aic_u32 txgain_5g_addr
Definition vsf_wifi_aic8800d_priv.h:395
aic_u32 rxgain_5g_addr
Definition vsf_wifi_aic8800d_priv.h:393
aic_u32 txgain_24g_addr
Definition vsf_wifi_aic8800d_priv.h:394
Definition vsf_wifi_aic8800d_priv.h:380
aic_u32 param_alpha
Definition vsf_wifi_aic8800d_priv.h:383
aic_u8 xtal_cap_fine
Definition vsf_wifi_aic8800d_priv.h:387
aic_u8 xtal_cap
Definition vsf_wifi_aic8800d_priv.h:386
aic_u32 bt_calib_en
Definition vsf_wifi_aic8800d_priv.h:384
aic_u32 cal_cfg_24g
Definition vsf_wifi_aic8800d_priv.h:381
aic_u8 __pad[2]
Definition vsf_wifi_aic8800d_priv.h:388
aic_u32 cal_cfg_5g
Definition vsf_wifi_aic8800d_priv.h:382
aic_u32 bt_calib_param
Definition vsf_wifi_aic8800d_priv.h:385
Definition vsf_wifi_aic8800d_priv.h:465
aic_u8 is_5g_support
Definition vsf_wifi_aic8800d_priv.h:466
aic_u8 vendor_info
Definition vsf_wifi_aic8800d_priv.h:467
Definition vsf_wifi_aic8800d_priv.h:220
aic_u8 efuse_valid
Definition vsf_wifi_aic8800d_priv.h:222
aic_u8 is_stack_start
Definition vsf_wifi_aic8800d_priv.h:221
aic_u8 fwtrace_redir
Definition vsf_wifi_aic8800d_priv.h:224
aic_u8 set_vendor_info
Definition vsf_wifi_aic8800d_priv.h:223
Definition vsf_wifi_aic8800d_priv.h:352
struct aic8800d_txpwr_lvl_adj_conf txpwr_lvl_adj
Definition vsf_wifi_aic8800d_priv.h:353
Definition vsf_wifi_aic8800d_priv.h:337
struct aic8800d_txpwr_lvl_conf_v4 txpwr_lvl_v4
Definition vsf_wifi_aic8800d_priv.h:342
struct aic8800d_txpwr_lvl_conf_v3 txpwr_lvl_v3
Definition vsf_wifi_aic8800d_priv.h:341
struct aic8800d_txpwr_lvl_conf_v2 txpwr_lvl_v2
Definition vsf_wifi_aic8800d_priv.h:340
struct aic8800d_txpwr_lvl_conf txpwr_lvl
Definition vsf_wifi_aic8800d_priv.h:339
union aic8800d_mm_set_txpwr_lvl_req::@330 u
Definition vsf_wifi_aic8800d_priv.h:373
struct aic8800d_txpwr_ofst_conf txpwr_ofst
Definition vsf_wifi_aic8800d_priv.h:375
struct aic8800d_txpwr_ofst2x_conf txpwr_ofst2x
Definition vsf_wifi_aic8800d_priv.h:376
union aic8800d_mm_set_txpwr_ofst_req::@331 u
Definition vsf_wifi_aic8800d_priv.h:461
aic_u32 dummy
Definition vsf_wifi_aic8800d_priv.h:462
Definition vsf_wifi_aic8800d_priv.h:455
aic_u32 phy_cfg[16]
Definition vsf_wifi_aic8800d_priv.h:456
aic_u16 lp_clk_accuracy
Definition vsf_wifi_aic8800d_priv.h:458
aic_u32 uapsd_timeout
Definition vsf_wifi_aic8800d_priv.h:457
Definition vsf_wifi_aic8800d_priv.h:420
aic_u32 version_machw_1
Definition vsf_wifi_aic8800d_priv.h:422
aic_u32 version_machw_2
Definition vsf_wifi_aic8800d_priv.h:423
aic_u8 pad
Definition vsf_wifi_aic8800d_priv.h:429
aic_u32 version_phy_1
Definition vsf_wifi_aic8800d_priv.h:424
aic_u8 max_vif_nb
Definition vsf_wifi_aic8800d_priv.h:428
aic_u32 features
Definition vsf_wifi_aic8800d_priv.h:426
aic_u32 version_lmac
Definition vsf_wifi_aic8800d_priv.h:421
aic_u32 version_phy_2
Definition vsf_wifi_aic8800d_priv.h:425
aic_u16 max_sta_nb
Definition vsf_wifi_aic8800d_priv.h:427
Definition vsf_wifi_aic8800d_priv.h:244
aic_u32 dummy
Definition vsf_wifi_aic8800d_priv.h:245
Definition vsf_wifi_aic8800d_priv.h:741
aic_u32 pair_start
Definition vsf_wifi_aic8800d_priv.h:743
aic_u32 magic_num_2
Definition vsf_wifi_aic8800d_priv.h:744
aic_u32 pair_count
Definition vsf_wifi_aic8800d_priv.h:745
aic_u32 magic_num
Definition vsf_wifi_aic8800d_priv.h:742
aic_u32 block_size[AIC8800D_PATCH_BLOCK_MAX]
Definition vsf_wifi_aic8800d_priv.h:748
aic_u32 block_src[AIC8800D_PATCH_BLOCK_MAX]
Definition vsf_wifi_aic8800d_priv.h:747
aic_u32 block_dst[AIC8800D_PATCH_BLOCK_MAX]
Definition vsf_wifi_aic8800d_priv.h:746
Definition vsf_wifi_aic8800d_priv.h:874
bool connect_active
Definition vsf_wifi_aic8800d_priv.h:942
uint8_t fw_img_idx
Definition vsf_wifi_aic8800d_priv.h:896
uint8_t syscfg_idx
Definition vsf_wifi_aic8800d_priv.h:918
uint8_t scan_finish_retries
Definition vsf_wifi_aic8800d_priv.h:928
uint8_t scan_results_received
Definition vsf_wifi_aic8800d_priv.h:930
uint16_t rsn_cap
Definition vsf_wifi_aic8800d_priv.h:935
uint8_t sta_idx
Definition vsf_wifi_aic8800d_priv.h:947
bool scan_active
Definition vsf_wifi_aic8800d_priv.h:926
const vsf_wifi_aic8800d_bus_ops_t * bus_ops
Definition vsf_wifi_aic8800d_priv.h:876
vsf_wifi_t * wifi
Definition vsf_wifi_aic8800d_priv.h:875
vsf_callback_timer_t scan_finish_timer
Definition vsf_wifi_aic8800d_priv.h:931
uint8_t vif_idx
Definition vsf_wifi_aic8800d_priv.h:878
vsf_wifi_done_t connect_done
Definition vsf_wifi_aic8800d_priv.h:941
uint32_t patch_tbl_pairs[160][2]
Definition vsf_wifi_aic8800d_priv.h:906
uint32_t fw_size
Definition vsf_wifi_aic8800d_priv.h:893
uint8_t mac_addr[6]
Definition vsf_wifi_aic8800d_priv.h:879
uint32_t fw_offset
Definition vsf_wifi_aic8800d_priv.h:894
uint8_t patch_step
Definition vsf_wifi_aic8800d_priv.h:909
uint32_t fw_version
Definition vsf_wifi_aic8800d_priv.h:913
bool arp_offload_done
Definition vsf_wifi_aic8800d_priv.h:952
vsf_wifi_done_t fw_done
Definition vsf_wifi_aic8800d_priv.h:897
struct aic8800d_dbg_mem_read_cfm sysconfig_rd_cfm
Definition vsf_wifi_aic8800d_priv.h:898
uint8_t next_token
Definition vsf_wifi_aic8800d_priv.h:884
bool scan_finish_pending
Definition vsf_wifi_aic8800d_priv.h:927
uint16_t ap_rsn_cap
Definition vsf_wifi_aic8800d_priv.h:943
bool mac_addr_valid
Definition vsf_wifi_aic8800d_priv.h:880
uint8_t init_step
Definition vsf_wifi_aic8800d_priv.h:887
uint8_t ap_idx
Definition vsf_wifi_aic8800d_priv.h:946
vsf_wifi_done_t init_done
Definition vsf_wifi_aic8800d_priv.h:888
uint8_t syscfg_masked_idx
Definition vsf_wifi_aic8800d_priv.h:919
aic8800d_cmd_t cmds[AIC8800D_MAX_PENDING_CMDS]
Definition vsf_wifi_aic8800d_priv.h:883
uint32_t patch_buff_base
Definition vsf_wifi_aic8800d_priv.h:914
uint8_t scan_results_expected
Definition vsf_wifi_aic8800d_priv.h:929
struct aic8800d_mm_key_add_cfm key_add_cfm
Definition vsf_wifi_aic8800d_priv.h:956
bool key_open_port
Definition vsf_wifi_aic8800d_priv.h:957
uint32_t config_base
Definition vsf_wifi_aic8800d_priv.h:911
uint32_t patch_str_base
Definition vsf_wifi_aic8800d_priv.h:912
uint8_t scan_rsn_cap_cache_num
Definition vsf_wifi_aic8800d_priv.h:937
struct aic8800d_sm_connect_req connect_req
Definition vsf_wifi_aic8800d_priv.h:940
aic8800d_fw_variant_t fw_variant
Definition vsf_wifi_aic8800d_priv.h:901
uint8_t chip_mcu_id
Definition vsf_wifi_aic8800d_priv.h:899
vsf_wifi_done_t scan_done
Definition vsf_wifi_aic8800d_priv.h:925
uint8_t chip_rev
Definition vsf_wifi_aic8800d_priv.h:900
bool qos
Definition vsf_wifi_aic8800d_priv.h:948
uint16_t patch_tbl_count
Definition vsf_wifi_aic8800d_priv.h:905
uint16_t patch_tbl_idx
Definition vsf_wifi_aic8800d_priv.h:904
uint8_t rf_cfg_idx
Definition vsf_wifi_aic8800d_priv.h:922
uint8_t patch_write_idx
Definition vsf_wifi_aic8800d_priv.h:915
struct aic8800d_priv_t::@333 scan_rsn_cap_cache[AIC8800D_SCAN_RSN_CAP_CACHE_SIZE]
uint32_t fw_addr
Definition vsf_wifi_aic8800d_priv.h:895
uint8_t * fw_buf
Definition vsf_wifi_aic8800d_priv.h:892
struct aic8800d_dbg_mem_read_cfm patch_rd_cfm
Definition vsf_wifi_aic8800d_priv.h:910
uint8_t fw_load_step
Definition vsf_wifi_aic8800d_priv.h:891
vsf_callback_timer_t init_wd_timer
Definition vsf_wifi_aic8800d_priv.h:963
vsf_wifi_done_t key_done
Definition vsf_wifi_aic8800d_priv.h:955
Definition vsf_wifi_aic8800d_priv.h:579
aic_u8 status
Definition vsf_wifi_aic8800d_priv.h:580
Definition vsf_wifi_aic8800d_priv.h:576
Definition vsf_wifi_aic8800d_priv.h:583
aic_s8 rssi
Definition vsf_wifi_aic8800d_priv.h:590
aic_u8 sta_idx
Definition vsf_wifi_aic8800d_priv.h:588
aic_u8 band
Definition vsf_wifi_aic8800d_priv.h:587
aic_u16 length
Definition vsf_wifi_aic8800d_priv.h:584
aic_u8 inst_nbr
Definition vsf_wifi_aic8800d_priv.h:589
aic_u16 center_freq
Definition vsf_wifi_aic8800d_priv.h:586
aic_u16 framectrl
Definition vsf_wifi_aic8800d_priv.h:585
aic_u32 payload[]
Definition vsf_wifi_aic8800d_priv.h:591
Definition vsf_wifi_aic8800d_priv.h:570
aic_u8 vif_idx
Definition vsf_wifi_aic8800d_priv.h:571
aic_u8 result_cnt
Definition vsf_wifi_aic8800d_priv.h:573
aic_u8 status
Definition vsf_wifi_aic8800d_priv.h:572
Definition vsf_wifi_aic8800d_priv.h:538
struct aic8800d_mac_ssid ssid[AIC8800D_SCAN_SSID_MAX]
Definition vsf_wifi_aic8800d_priv.h:540
aic_u8 __pad0[2]
Definition vsf_wifi_aic8800d_priv.h:553
struct aic8800d_mac_chan_def chan[AIC8800D_SCAN_CHANNEL_MAX]
Definition vsf_wifi_aic8800d_priv.h:539
aic_u8 vif_idx
Definition vsf_wifi_aic8800d_priv.h:552
aic_u8 no_cck
Definition vsf_wifi_aic8800d_priv.h:556
aic_u8 chan_cnt
Definition vsf_wifi_aic8800d_priv.h:554
aic_u8 ssid_cnt
Definition vsf_wifi_aic8800d_priv.h:555
aic_u32 duration
Definition vsf_wifi_aic8800d_priv.h:558
aic_u8 __pad1
Definition vsf_wifi_aic8800d_priv.h:557
struct aic8800d_mac_addr bssid
Definition vsf_wifi_aic8800d_priv.h:549
aic_u16 add_ies[2]
Definition vsf_wifi_aic8800d_priv.h:550
aic_u16 add_ie_len
Definition vsf_wifi_aic8800d_priv.h:551
Definition vsf_wifi_aic8800d_priv.h:628
aic_u8 status
Definition vsf_wifi_aic8800d_priv.h:629
Definition vsf_wifi_aic8800d_priv.h:636
aic_u8 width
Definition vsf_wifi_aic8800d_priv.h:651
aic_u8 vif_idx
Definition vsf_wifi_aic8800d_priv.h:640
aic_u8 ap_idx
Definition vsf_wifi_aic8800d_priv.h:641
aic_u8 band
Definition vsf_wifi_aic8800d_priv.h:649
aic_u16 assoc_rsp_ie_len
Definition vsf_wifi_aic8800d_priv.h:646
aic_u8 qos
Definition vsf_wifi_aic8800d_priv.h:643
aic_u16 assoc_req_ie_len
Definition vsf_wifi_aic8800d_priv.h:645
aic_u8 roamed
Definition vsf_wifi_aic8800d_priv.h:639
aic_u32 assoc_ie_buf[AIC8800D_SM_ASSOC_IND_IE_LEN/4]
Definition vsf_wifi_aic8800d_priv.h:647
aic_u32 center_freq1
Definition vsf_wifi_aic8800d_priv.h:652
aic_u32 ac_param[4]
Definition vsf_wifi_aic8800d_priv.h:654
aic_u8 acm
Definition vsf_wifi_aic8800d_priv.h:644
aic_u16 aid
Definition vsf_wifi_aic8800d_priv.h:648
aic_u16 status_code
Definition vsf_wifi_aic8800d_priv.h:637
aic_u8 ch_idx
Definition vsf_wifi_aic8800d_priv.h:642
struct aic8800d_mac_addr bssid
Definition vsf_wifi_aic8800d_priv.h:638
aic_u32 center_freq2
Definition vsf_wifi_aic8800d_priv.h:653
aic_u16 center_freq
Definition vsf_wifi_aic8800d_priv.h:650
Definition vsf_wifi_aic8800d_priv.h:611
struct aic8800d_mac_chan_def chan
Definition vsf_wifi_aic8800d_priv.h:615
aic_u32 ie_buf[AIC8800D_SM_ASSOC_IE_LEN/4]
Definition vsf_wifi_aic8800d_priv.h:625
aic_u16 listen_interval
Definition vsf_wifi_aic8800d_priv.h:620
aic_u8 __pad_after_chan[2]
Definition vsf_wifi_aic8800d_priv.h:616
aic_u8 dont_wait_bcmc
Definition vsf_wifi_aic8800d_priv.h:621
struct aic8800d_mac_addr bssid
Definition vsf_wifi_aic8800d_priv.h:614
aic_u8 uapsd_queues
Definition vsf_wifi_aic8800d_priv.h:623
aic_u16 ie_len
Definition vsf_wifi_aic8800d_priv.h:619
struct aic8800d_mac_ssid ssid
Definition vsf_wifi_aic8800d_priv.h:612
aic_u8 auth_type
Definition vsf_wifi_aic8800d_priv.h:622
aic_u16 ctrl_port_ethertype
Definition vsf_wifi_aic8800d_priv.h:618
aic_u32 flags
Definition vsf_wifi_aic8800d_priv.h:617
aic_u8 vif_idx
Definition vsf_wifi_aic8800d_priv.h:624
aic_u8 __pad_after_ssid
Definition vsf_wifi_aic8800d_priv.h:613
Definition vsf_wifi_aic8800d_priv.h:667
aic_u16 reason_code
Definition vsf_wifi_aic8800d_priv.h:668
aic_u8 vif_idx
Definition vsf_wifi_aic8800d_priv.h:669
Definition vsf_wifi_aic8800d_priv.h:662
aic_u16 reason_code
Definition vsf_wifi_aic8800d_priv.h:663
aic_u8 vif_idx
Definition vsf_wifi_aic8800d_priv.h:664
Definition vsf_wifi_aic8800d_priv.h:713
struct aic8800d_hostdesc host
Definition vsf_wifi_aic8800d_priv.h:714
Definition vsf_wifi_aic8800d_priv.h:346
aic_s8 pwrlvl_adj_tbl_2g4[3]
Definition vsf_wifi_aic8800d_priv.h:348
aic_s8 pwrlvl_adj_tbl_5g[6]
Definition vsf_wifi_aic8800d_priv.h:349
aic_u8 enable
Definition vsf_wifi_aic8800d_priv.h:347
Definition vsf_wifi_aic8800d_priv.h:307
aic_u8 enable
Definition vsf_wifi_aic8800d_priv.h:308
aic_s8 pwrlvl_11b_11ag_2g4[12]
Definition vsf_wifi_aic8800d_priv.h:309
aic_s8 pwrlvl_11n_11ac_2g4[10]
Definition vsf_wifi_aic8800d_priv.h:310
aic_s8 pwrlvl_11ax_2g4[12]
Definition vsf_wifi_aic8800d_priv.h:311
Definition vsf_wifi_aic8800d_priv.h:314
aic_s8 pwrlvl_11a_5g[12]
Definition vsf_wifi_aic8800d_priv.h:319
aic_s8 pwrlvl_11ax_2g4[12]
Definition vsf_wifi_aic8800d_priv.h:318
aic_u8 enable
Definition vsf_wifi_aic8800d_priv.h:315
aic_s8 pwrlvl_11ax_5g[12]
Definition vsf_wifi_aic8800d_priv.h:321
aic_s8 pwrlvl_11n_11ac_2g4[10]
Definition vsf_wifi_aic8800d_priv.h:317
aic_s8 pwrlvl_11n_11ac_5g[10]
Definition vsf_wifi_aic8800d_priv.h:320
aic_s8 pwrlvl_11b_11ag_2g4[12]
Definition vsf_wifi_aic8800d_priv.h:316
Definition vsf_wifi_aic8800d_priv.h:324
aic_s8 pwrlvl_11a_5g[12]
Definition vsf_wifi_aic8800d_priv.h:329
aic_s8 pwrlvl_11ax_6g[12]
Definition vsf_wifi_aic8800d_priv.h:334
aic_s8 pwrlvl_11n_11ac_2g4[10]
Definition vsf_wifi_aic8800d_priv.h:327
aic_s8 pwrlvl_11a_6g[8]
Definition vsf_wifi_aic8800d_priv.h:332
aic_s8 pwrlvl_11ax_5g[12]
Definition vsf_wifi_aic8800d_priv.h:331
aic_s8 pwrlvl_11n_11ac_6g[10]
Definition vsf_wifi_aic8800d_priv.h:333
aic_s8 pwrlvl_11ax_2g4[12]
Definition vsf_wifi_aic8800d_priv.h:328
aic_s8 pwrlvl_11b_11ag_2g4[12]
Definition vsf_wifi_aic8800d_priv.h:326
aic_u8 enable
Definition vsf_wifi_aic8800d_priv.h:325
aic_s8 pwrlvl_11n_11ac_5g[10]
Definition vsf_wifi_aic8800d_priv.h:330
Definition vsf_wifi_aic8800d_priv.h:294
aic_s8 ofdmlowrate_2g4
Definition vsf_wifi_aic8800d_priv.h:297
aic_s8 ofdmlowrate_5g
Definition vsf_wifi_aic8800d_priv.h:301
aic_s8 ofdm256qam_2g4
Definition vsf_wifi_aic8800d_priv.h:299
aic_s8 ofdm64qam_5g
Definition vsf_wifi_aic8800d_priv.h:302
aic_u8 enable
Definition vsf_wifi_aic8800d_priv.h:295
aic_s8 ofdm1024qam_5g
Definition vsf_wifi_aic8800d_priv.h:304
aic_s8 ofdm1024qam_2g4
Definition vsf_wifi_aic8800d_priv.h:300
aic_s8 ofdm64qam_2g4
Definition vsf_wifi_aic8800d_priv.h:298
aic_s8 dsss
Definition vsf_wifi_aic8800d_priv.h:296
aic_s8 ofdm256qam_5g
Definition vsf_wifi_aic8800d_priv.h:303
Definition vsf_wifi_aic8800d_priv.h:367
aic_s8 pwrofst2x_tbl_2g4[3][3]
Definition vsf_wifi_aic8800d_priv.h:369
aic_s8 pwrofst2x_tbl_5g[3][6]
Definition vsf_wifi_aic8800d_priv.h:370
aic_u8 enable
Definition vsf_wifi_aic8800d_priv.h:368
Definition vsf_wifi_aic8800d_priv.h:356
aic_s8 chan_5_9
Definition vsf_wifi_aic8800d_priv.h:359
aic_s8 chan_10_13
Definition vsf_wifi_aic8800d_priv.h:360
aic_s8 chan_142_165
Definition vsf_wifi_aic8800d_priv.h:364
aic_u8 enable
Definition vsf_wifi_aic8800d_priv.h:357
aic_s8 chan_36_64
Definition vsf_wifi_aic8800d_priv.h:361
aic_s8 chan_100_120
Definition vsf_wifi_aic8800d_priv.h:362
aic_s8 chan_122_140
Definition vsf_wifi_aic8800d_priv.h:363
aic_s8 chan_1_4
Definition vsf_wifi_aic8800d_priv.h:358
Definition vsf_wifi_aic8800d_priv.h:718
aic_u8 type
Definition vsf_wifi_aic8800d_priv.h:725
aic_u8 len_lsb
Definition vsf_wifi_aic8800d_priv.h:719
aic_u8 len2_lsb
Definition vsf_wifi_aic8800d_priv.h:721
aic_u8 len3_msb
Definition vsf_wifi_aic8800d_priv.h:724
aic_u8 len2_msb
Definition vsf_wifi_aic8800d_priv.h:722
aic_u8 reserved
Definition vsf_wifi_aic8800d_priv.h:726
aic_u8 len_msb
Definition vsf_wifi_aic8800d_priv.h:720
aic_u8 len3_lsb
Definition vsf_wifi_aic8800d_priv.h:723
Definition vsf_wifi_aic8800d.h:55
Definition vsf_wifi_priv.h:57
void(* vsf_wifi_done_t)(vsf_wifi_t *wifi, vsf_err_t err)
Definition vsf_wifi.h:123
int8_t aic_s8
Definition vsf_wifi_aic8800d_priv.h:180
struct aic8800d_cmd_t aic8800d_cmd_t
struct aic8800d_fw_variant_t aic8800d_fw_variant_t
void __aic8800d_cmd_cfm(vsf_wifi_t *wifi, aic8800d_cmd_t *cmd, const struct aic8800d_ipc_e2a_msg *msg)
Definition vsf_wifi_aic8800d.c:208
#define AIC8800D_SCAN_CHANNEL_MAX
Definition vsf_wifi_aic8800d_priv.h:535
#define AIC8800D_SYSCFG_MASKED_COUNT
Definition vsf_wifi_aic8800d_priv.h:58
#define AIC8800D_SCAN_RSN_CAP_CACHE_SIZE
Definition vsf_wifi_aic8800d_priv.h:932
#define AIC8800D_MAC_DOMAINCHANNEL_5G_MAX
Definition vsf_wifi_aic8800d_priv.h:472
const uint32_t __aic8800d_patch_ext_size
Definition vsf_wifi_aic8800d_firmware_data.c:20491
#define AIC8800D_SM_ASSOC_IE_LEN
Definition vsf_wifi_aic8800d_priv.h:595
#define AIC8800D_MAC_DOMAINCHANNEL_24G_MAX
Definition vsf_wifi_aic8800d_priv.h:471
#define AIC8800D_SEC_KEY_LEN
Definition vsf_wifi_aic8800d_priv.h:674
uint16_t aic_u16
Definition vsf_wifi_aic8800d_priv.h:181
const uint8_t __aic8800d_adid_data[]
Definition vsf_wifi_aic8800d_firmware_data.c:20484
#define AIC8800D_MAX_PENDING_CMDS
Definition vsf_wifi_aic8800d_priv.h:42
uint32_t aic_u32
Definition vsf_wifi_aic8800d_priv.h:182
#define AIC8800D_MAX_CMD_PARAM
Definition vsf_wifi_aic8800d_priv.h:41
const uint32_t __aic8800d_patch_table_size
Definition vsf_wifi_aic8800d_firmware_data.c:20557
#define AIC8800D_MAC_HE_MAC_CAPA_LEN
Definition vsf_wifi_aic8800d_priv.h:475
const uint8_t __aic8800d_patch_ext_data[]
Definition vsf_wifi_aic8800d_firmware_data.c:20490
vsf_err_t __aic8800d_send_msg(vsf_wifi_t *wifi, uint16_t id, const void *param, uint16_t param_len, uint16_t cfm_id, void *cfm_param, uint16_t cfm_param_len, vsf_wifi_done_t done)
Definition vsf_wifi_aic8800d.c:100
const uint8_t __aic8800d_patch_table_data[]
Definition vsf_wifi_aic8800d_firmware_data.c:20493
#define AIC8800D_MAC_HE_PPE_THRES_MAX_LEN
Definition vsf_wifi_aic8800d_priv.h:477
struct aic8800d_priv_t aic8800d_priv_t
const uint8_t __aic8800d_firmware_data[]
Definition vsf_wifi_aic8800d_firmware_data.c:3
#define AIC8800D_RX_HWHDR_LEN
Definition vsf_wifi_aic8800d_priv.h:607
#define AIC8800D_SYSCFG_COUNT
Definition vsf_wifi_aic8800d_priv.h:51
#define AIC8800D_SM_ASSOC_IND_IE_LEN
Definition vsf_wifi_aic8800d_priv.h:634
#define AIC8800D_PATCH_TBL_COUNT
Definition vsf_wifi_aic8800d_priv.h:752
const uint32_t __aic8800d_firmware_size
Definition vsf_wifi_aic8800d_firmware_data.c:20482
#define AIC8800D_RF_CFG_COUNT
Definition vsf_wifi_aic8800d_priv.h:45
#define AIC8800D_SCAN_SSID_MAX
Definition vsf_wifi_aic8800d_priv.h:536
#define AIC8800D_MAC_HE_PHY_CAPA_LEN
Definition vsf_wifi_aic8800d_priv.h:476
aic8800d_priv_t * __aic8800d_priv(vsf_wifi_t *wifi)
Definition vsf_wifi_aic8800d.c:61
const uint32_t __aic8800d_patch_size
Definition vsf_wifi_aic8800d_firmware_data.c:20488
bool aic_bool
Definition vsf_wifi_aic8800d_priv.h:183
#define AIC8800D_MAC_MCS_MAX_LEN
Definition vsf_wifi_aic8800d_priv.h:474
const uint32_t __aic8800d_adid_size
Definition vsf_wifi_aic8800d_firmware_data.c:20485
#define AIC8800D_FW_IMG_NUM
Definition vsf_wifi_aic8800d_priv.h:828
const uint8_t __aic8800d_patch_data[]
Definition vsf_wifi_aic8800d_firmware_data.c:20487
uint8_t aic_u8
Definition vsf_wifi_aic8800d_priv.h:179
#define AIC8800D_PATCH_BLOCK_MAX
Definition vsf_wifi_aic8800d_priv.h:739
Generated from commit: vsfteam/vsf@4327394