1 /* SPDX-License-Identifier: Apache-2.0 */
3 * WFx hardware interface definitions
5 * Copyright (c) 2018-2019, Silicon Laboratories Inc.
8 #ifndef WFX_HIF_API_MIB_H
9 #define WFX_HIF_API_MIB_H
11 #include "hif_api_general.h"
13 #define HIF_API_IPV4_ADDRESS_SIZE 4
14 #define HIF_API_IPV6_ADDRESS_SIZE 16
17 HIF_MIB_ID_GL_OPERATIONAL_POWER_MODE = 0x2000,
18 HIF_MIB_ID_GL_BLOCK_ACK_INFO = 0x2001,
19 HIF_MIB_ID_GL_SET_MULTI_MSG = 0x2002,
20 HIF_MIB_ID_CCA_CONFIG = 0x2003,
21 HIF_MIB_ID_ETHERTYPE_DATAFRAME_CONDITION = 0x2010,
22 HIF_MIB_ID_PORT_DATAFRAME_CONDITION = 0x2011,
23 HIF_MIB_ID_MAGIC_DATAFRAME_CONDITION = 0x2012,
24 HIF_MIB_ID_MAC_ADDR_DATAFRAME_CONDITION = 0x2013,
25 HIF_MIB_ID_IPV4_ADDR_DATAFRAME_CONDITION = 0x2014,
26 HIF_MIB_ID_IPV6_ADDR_DATAFRAME_CONDITION = 0x2015,
27 HIF_MIB_ID_UC_MC_BC_DATAFRAME_CONDITION = 0x2016,
28 HIF_MIB_ID_CONFIG_DATA_FILTER = 0x2017,
29 HIF_MIB_ID_SET_DATA_FILTERING = 0x2018,
30 HIF_MIB_ID_ARP_IP_ADDRESSES_TABLE = 0x2019,
31 HIF_MIB_ID_NS_IP_ADDRESSES_TABLE = 0x201A,
32 HIF_MIB_ID_RX_FILTER = 0x201B,
33 HIF_MIB_ID_BEACON_FILTER_TABLE = 0x201C,
34 HIF_MIB_ID_BEACON_FILTER_ENABLE = 0x201D,
35 HIF_MIB_ID_GRP_SEQ_COUNTER = 0x2030,
36 HIF_MIB_ID_TSF_COUNTER = 0x2031,
37 HIF_MIB_ID_STATISTICS_TABLE = 0x2032,
38 HIF_MIB_ID_COUNTERS_TABLE = 0x2033,
39 HIF_MIB_ID_MAX_TX_POWER_LEVEL = 0x2034,
40 HIF_MIB_ID_EXTENDED_COUNTERS_TABLE = 0x2035,
41 HIF_MIB_ID_DOT11_MAC_ADDRESS = 0x2040,
42 HIF_MIB_ID_DOT11_MAX_TRANSMIT_MSDU_LIFETIME = 0x2041,
43 HIF_MIB_ID_DOT11_MAX_RECEIVE_LIFETIME = 0x2042,
44 HIF_MIB_ID_DOT11_WEP_DEFAULT_KEY_ID = 0x2043,
45 HIF_MIB_ID_DOT11_RTS_THRESHOLD = 0x2044,
46 HIF_MIB_ID_SLOT_TIME = 0x2045,
47 HIF_MIB_ID_CURRENT_TX_POWER_LEVEL = 0x2046,
48 HIF_MIB_ID_NON_ERP_PROTECTION = 0x2047,
49 HIF_MIB_ID_TEMPLATE_FRAME = 0x2048,
50 HIF_MIB_ID_BEACON_WAKEUP_PERIOD = 0x2049,
51 HIF_MIB_ID_RCPI_RSSI_THRESHOLD = 0x204A,
52 HIF_MIB_ID_BLOCK_ACK_POLICY = 0x204B,
53 HIF_MIB_ID_OVERRIDE_INTERNAL_TX_RATE = 0x204C,
54 HIF_MIB_ID_SET_ASSOCIATION_MODE = 0x204D,
55 HIF_MIB_ID_SET_UAPSD_INFORMATION = 0x204E,
56 HIF_MIB_ID_SET_TX_RATE_RETRY_POLICY = 0x204F,
57 HIF_MIB_ID_PROTECTED_MGMT_POLICY = 0x2050,
58 HIF_MIB_ID_SET_HT_PROTECTION = 0x2051,
59 HIF_MIB_ID_KEEP_ALIVE_PERIOD = 0x2052,
60 HIF_MIB_ID_ARP_KEEP_ALIVE_PERIOD = 0x2053,
61 HIF_MIB_ID_INACTIVITY_TIMER = 0x2054,
62 HIF_MIB_ID_INTERFACE_PROTECTION = 0x2055,
63 HIF_MIB_ID_BEACON_STATS = 0x2056,
66 #define HIF_OP_POWER_MODE_MASK 0xf
68 enum hif_op_power_mode {
69 HIF_OP_POWER_MODE_ACTIVE = 0x0,
70 HIF_OP_POWER_MODE_DOZE = 0x1,
71 HIF_OP_POWER_MODE_QUIESCENT = 0x2
74 struct hif_mib_gl_operational_power_mode {
77 u8 wup_ind_activation:1;
81 struct hif_mib_gl_block_ack_info {
83 u8 rx_max_num_agreements;
85 u8 tx_max_num_agreements;
88 struct hif_mib_gl_set_multi_msg {
89 u8 enable_multi_tx_conf:1;
94 enum hif_cca_thr_mode {
95 HIF_CCA_THR_MODE_RELATIVE = 0x0,
96 HIF_CCA_THR_MODE_ABSOLUTE = 0x1
99 struct hif_mib_gl_cca_config {
104 #define MAX_NUMBER_DATA_FILTERS 0xA
106 #define MAX_NUMBER_IPV4_ADDR_CONDITIONS 0x4
107 #define MAX_NUMBER_IPV6_ADDR_CONDITIONS 0x4
108 #define MAX_NUMBER_MAC_ADDR_CONDITIONS 0x4
109 #define MAX_NUMBER_UC_MC_BC_CONDITIONS 0x4
110 #define MAX_NUMBER_ETHER_TYPE_CONDITIONS 0x4
111 #define MAX_NUMBER_PORT_CONDITIONS 0x4
112 #define MAX_NUMBER_MAGIC_CONDITIONS 0x4
113 #define MAX_NUMBER_ARP_CONDITIONS 0x2
114 #define MAX_NUMBER_NS_CONDITIONS 0x2
116 struct hif_mib_ethertype_data_frame_condition {
122 enum hif_udp_tcp_protocol {
123 HIF_PROTOCOL_UDP = 0x0,
124 HIF_PROTOCOL_TCP = 0x1,
125 HIF_PROTOCOL_BOTH_UDP_TCP = 0x2
128 enum hif_which_port {
131 HIF_PORT_SRC_OR_DST = 0x2
134 struct hif_mib_ports_data_frame_condition {
143 #define HIF_API_MAGIC_PATTERN_SIZE 32
145 struct hif_mib_magic_data_frame_condition {
148 u8 magic_pattern_length;
150 u8 magic_pattern[HIF_API_MAGIC_PATTERN_SIZE];
153 enum hif_mac_addr_type {
154 HIF_MAC_ADDR_A1 = 0x0,
155 HIF_MAC_ADDR_A2 = 0x1,
156 HIF_MAC_ADDR_A3 = 0x2
159 struct hif_mib_mac_addr_data_frame_condition {
162 u8 mac_address[ETH_ALEN];
165 enum hif_ip_addr_mode {
166 HIF_IP_ADDR_SRC = 0x0,
167 HIF_IP_ADDR_DST = 0x1
170 struct hif_mib_ipv4_addr_data_frame_condition {
174 u8 i_pv4_address[HIF_API_IPV4_ADDRESS_SIZE];
177 struct hif_mib_ipv6_addr_data_frame_condition {
181 u8 i_pv6_address[HIF_API_IPV6_ADDRESS_SIZE];
184 union hif_addr_type {
194 struct hif_mib_uc_mc_bc_data_frame_condition {
196 union hif_addr_type param;
200 struct hif_mib_config_data_filter {
214 struct hif_mib_set_data_filtering {
220 enum hif_arp_ns_frame_treatment {
221 HIF_ARP_NS_FILTERING_DISABLE = 0x0,
222 HIF_ARP_NS_FILTERING_ENABLE = 0x1,
223 HIF_ARP_NS_REPLY_ENABLE = 0x2
226 struct hif_mib_arp_ip_addr_table {
230 u8 ipv4_address[HIF_API_IPV4_ADDRESS_SIZE];
233 struct hif_mib_ns_ip_addr_table {
237 u8 ipv6_address[HIF_API_IPV6_ADDRESS_SIZE];
240 struct hif_mib_rx_filter {
245 u8 keep_alive_filter:1;
250 #define HIF_API_OUI_SIZE 3
251 #define HIF_API_MATCH_DATA_SIZE 3
253 struct hif_ie_table_entry {
260 u8 oui[HIF_API_OUI_SIZE];
261 u8 match_data[HIF_API_MATCH_DATA_SIZE];
264 struct hif_mib_bcn_filter_table {
265 u32 num_of_info_elmts;
266 struct hif_ie_table_entry ie_table[];
269 enum hif_beacon_filter {
270 HIF_BEACON_FILTER_DISABLE = 0x0,
271 HIF_BEACON_FILTER_ENABLE = 0x1,
272 HIF_BEACON_FILTER_AUTO_ERP = 0x2
275 struct hif_mib_bcn_filter_enable {
280 struct hif_mib_group_seq_counter {
286 struct hif_mib_tsf_counter {
291 struct hif_mib_stats_table {
297 struct hif_mib_extended_count_table {
298 u32 count_plcp_errors;
299 u32 count_fcs_errors;
300 u32 count_tx_packets;
301 u32 count_rx_packets;
302 u32 count_rx_packet_errors;
303 u32 count_rx_decryption_failures;
304 u32 count_rx_mic_failures;
305 u32 count_rx_no_key_failures;
306 u32 count_tx_multicast_frames;
307 u32 count_tx_frames_success;
308 u32 count_tx_frame_failures;
309 u32 count_tx_frames_retried;
310 u32 count_tx_frames_multi_retried;
311 u32 count_rx_frame_duplicates;
312 u32 count_rts_success;
313 u32 count_rts_failures;
314 u32 count_ack_failures;
315 u32 count_rx_multicast_frames;
316 u32 count_rx_frames_success;
317 u32 count_rx_cmacicv_errors;
318 u32 count_rx_cmac_replays;
319 u32 count_rx_mgmt_ccmp_replays;
320 u32 count_rx_bipmic_errors;
322 u32 count_miss_beacon;
326 struct hif_mib_count_table {
327 u32 count_plcp_errors;
328 u32 count_fcs_errors;
329 u32 count_tx_packets;
330 u32 count_rx_packets;
331 u32 count_rx_packet_errors;
332 u32 count_rx_decryption_failures;
333 u32 count_rx_mic_failures;
334 u32 count_rx_no_key_failures;
335 u32 count_tx_multicast_frames;
336 u32 count_tx_frames_success;
337 u32 count_tx_frame_failures;
338 u32 count_tx_frames_retried;
339 u32 count_tx_frames_multi_retried;
340 u32 count_rx_frame_duplicates;
341 u32 count_rts_success;
342 u32 count_rts_failures;
343 u32 count_ack_failures;
344 u32 count_rx_multicast_frames;
345 u32 count_rx_frames_success;
346 u32 count_rx_cmacicv_errors;
347 u32 count_rx_cmac_replays;
348 u32 count_rx_mgmt_ccmp_replays;
349 u32 count_rx_bipmic_errors;
352 struct hif_mib_max_tx_power_level {
353 s32 max_tx_power_level_rf_port1;
354 s32 max_tx_power_level_rf_port2;
357 struct hif_mib_beacon_stats {
358 s32 latest_tbtt_diff;
362 struct hif_mib_mac_address {
363 u8 mac_addr[ETH_ALEN];
367 struct hif_mib_dot11_max_transmit_msdu_lifetime {
371 struct hif_mib_dot11_max_receive_lifetime {
375 struct hif_mib_wep_default_key_id {
376 u8 wep_default_key_id;
380 struct hif_mib_dot11_rts_threshold {
384 struct hif_mib_slot_time {
388 struct hif_mib_current_tx_power_level {
392 struct hif_mib_non_erp_protection {
393 u8 use_cts_to_self:1;
399 HIF_TX_MODE_MIXED = 0x0,
400 HIF_TX_MODE_GREENFIELD = 0x1
404 HIF_TMPLT_PRBREQ = 0x0,
406 HIF_TMPLT_NULL = 0x2,
407 HIF_TMPLT_QOSNUL = 0x3,
408 HIF_TMPLT_PSPOLL = 0x4,
409 HIF_TMPLT_PRBRES = 0x5,
414 #define HIF_API_MAX_TEMPLATE_FRAME_SIZE 700
416 struct hif_mib_template_frame {
421 u8 frame[HIF_API_MAX_TEMPLATE_FRAME_SIZE];
424 struct hif_mib_beacon_wake_up_period {
425 u8 wakeup_period_min;
428 u8 wakeup_period_max;
432 struct hif_mib_rcpi_rssi_threshold {
440 u8 rolling_average_count;
443 #define DEFAULT_BA_MAX_RX_BUFFER_SIZE 16
445 struct hif_mib_block_ack_policy {
446 u8 block_ack_tx_tid_policy;
448 u8 block_ack_rx_tid_policy;
449 u8 block_ack_rx_max_buffer_size;
452 struct hif_mib_override_int_rate {
454 u8 non_erp_internal_tx_rate;
458 enum hif_mpdu_start_spacing {
459 HIF_MPDU_START_SPACING_NO_RESTRIC = 0x0,
460 HIF_MPDU_START_SPACING_QUARTER = 0x1,
461 HIF_MPDU_START_SPACING_HALF = 0x2,
462 HIF_MPDU_START_SPACING_ONE = 0x3,
463 HIF_MPDU_START_SPACING_TWO = 0x4,
464 HIF_MPDU_START_SPACING_FOUR = 0x5,
465 HIF_MPDU_START_SPACING_EIGHT = 0x6,
466 HIF_MPDU_START_SPACING_SIXTEEN = 0x7
469 struct hif_mib_set_association_mode {
476 u8 mixed_or_greenfield_type;
477 u8 mpdu_start_spacing;
481 struct hif_mib_set_uapsd_information {
492 u16 min_auto_trigger_interval;
493 u16 max_auto_trigger_interval;
494 u16 auto_trigger_step;
497 struct hif_mib_tx_rate_retry_policy {
499 u8 short_retry_count;
505 u8 rate_recovery_count;
510 #define HIF_MIB_NUM_TX_RATE_RETRY_POLICIES 15
512 struct hif_mib_set_tx_rate_retry_policy {
513 u8 num_tx_rate_policies;
515 struct hif_mib_tx_rate_retry_policy tx_rate_retry_policy[];
518 struct hif_mib_protected_mgmt_policy {
521 u8 host_enc_auth_frames:1;
526 struct hif_mib_set_ht_protection {
532 struct hif_mib_keep_alive_period {
533 u16 keep_alive_period;
537 struct hif_mib_arp_keep_alive_period {
538 u16 arp_keep_alive_period;
541 u8 sender_ipv4_address[HIF_API_IPV4_ADDRESS_SIZE];
542 u8 target_ipv4_address[HIF_API_IPV4_ADDRESS_SIZE];
545 struct hif_mib_inactivity_timer {
551 struct hif_mib_interface_protection {