blob: f83d4e79ee7d2de92001c8f4e584cf7627b4c477 [file] [log] [blame]
Shad Ansari2f7f9be2017-06-07 13:34:53 -07001/*
2<:copyright-BRCM:2016:proprietary:standard
3
4 Broadcom Proprietary and Confidential.(c) 2016 Broadcom
5 All Rights Reserved
6
7This program is the proprietary software of Broadcom Corporation and/or its
8licensors, and may only be used, duplicated, modified or distributed pursuant
9to the terms and conditions of a separate, written license agreement executed
10between you and Broadcom (an "Authorized License"). Except as set forth in
11an Authorized License, Broadcom grants no license (express or implied), right
12to use, or waiver of any kind with respect to the Software, and Broadcom
13expressly reserves all rights in and to the Software and all intellectual
14property rights therein. IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU HAVE
15NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY NOTIFY
16BROADCOM AND DISCONTINUE ALL USE OF THE SOFTWARE.
17
18Except as expressly set forth in the Authorized License,
19
201. This program, including its structure, sequence and organization,
21 constitutes the valuable trade secrets of Broadcom, and you shall use
22 all reasonable efforts to protect the confidentiality thereof, and to
23 use this information only in connection with your use of Broadcom
24 integrated circuit products.
25
262. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
27 AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR
28 WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH
29 RESPECT TO THE SOFTWARE. BROADCOM SPECIFICALLY DISCLAIMS ANY AND
30 ALL IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY, NONINFRINGEMENT,
31 FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR
32 COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR CORRESPONDENCE
33 TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF USE OR
34 PERFORMANCE OF THE SOFTWARE.
35
363. TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR
37 ITS LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL,
38 INDIRECT, OR EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY
39 WAY RELATING TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE EVEN
40 IF BROADCOM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES;
41 OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT ACTUALLY PAID FOR THE
42 SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE LIMITATIONS
43 SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY
44 LIMITED REMEDY.
45:>
46*/
47#ifndef BCMOLT_MODEL_DATA_H_
48#define BCMOLT_MODEL_DATA_H_
49
50#include "bcmos_system.h"
51
52/** \addtogroup object_model
53 * @{
54 */
55typedef uint32_t bcmolt_time_quanta; /**< bcmolt_time_quanta: typed alias for a 32-bit unsigned integer. */
56typedef uint16_t bcmolt_ae_ni; /**< bcmolt_ae_ni: typed alias for a 16-bit unsigned integer. */
57#define BCMOLT_AE_NI_AE_NI_INVALID ((bcmolt_ae_ni) 65535U)
58typedef uint8_t bcmolt_aggregation_domain; /**< bcmolt_aggregation_domain: typed alias for a 8-bit unsigned integer. */
59typedef uint32_t bcmolt_bandwidth_Kbps; /**< bcmolt_bandwidth_Kbps: typed alias for a 32-bit unsigned integer. */
60typedef uint32_t bcmolt_ber_interval; /**< bcmolt_ber_interval: typed alias for a 32-bit unsigned integer. */
61#define BCMOLT_BER_INTERVAL_BER_INTERVAL_NOT_CONFIGURED ((bcmolt_ber_interval) 0)
62typedef uint8_t bcmolt_burst_profile_index; /**< bcmolt_burst_profile_index: typed alias for a 8-bit unsigned integer. */
63typedef uint8_t bcmolt_dba_port; /**< bcmolt_dba_port: typed alias for a 8-bit unsigned integer. */
64#define BCMOLT_DBA_PORT_COUNT ((bcmolt_dba_port) 8)
65typedef uint8_t bcmolt_epon_top; /**< bcmolt_epon_top: typed alias for a 8-bit unsigned integer. */
66#define BCMOLT_EPON_TOP_COUNT ((bcmolt_epon_top) 8)
67typedef uint8_t bcmolt_epm_lim_global; /**< bcmolt_epm_lim_global: typed alias for a 8-bit unsigned integer. */
68#define BCMOLT_EPM_LIM_GLOBAL_COUNT ((bcmolt_epm_lim_global) 16)
69typedef uint8_t bcmolt_xg2g_id; /**< bcmolt_xg2g_id: typed alias for a 8-bit unsigned integer. */
70typedef uint16_t bcmolt_epon_llid; /**< bcmolt_epon_llid: typed alias for a 16-bit unsigned integer. */
71#define BCMOLT_EPON_LLID_BROADCAST_LLID_10G ((bcmolt_epon_llid) 32766)
72#define BCMOLT_EPON_LLID_BROADCAST_LLID_1G ((bcmolt_epon_llid) 32767)
73typedef uint32_t bcmolt_epon_tunnel_id; /**< bcmolt_epon_tunnel_id: typed alias for a 32-bit unsigned integer. */
74typedef uint16_t bcmolt_epon_ni; /**< bcmolt_epon_ni: typed alias for a 16-bit unsigned integer. */
75#define BCMOLT_EPON_NI_INVALID ((bcmolt_epon_ni) 65535U)
76typedef uint8_t bcmolt_epon_onu_id; /**< bcmolt_epon_onu_id: typed alias for a 8-bit unsigned integer. */
77#define BCMOLT_EPON_ONU_ID_UNKNOWN_ONU ((bcmolt_epon_onu_id) 255)
78typedef uint16_t bcmolt_flow_id; /**< bcmolt_flow_id: typed alias for a 16-bit unsigned integer. */
79typedef uint16_t bcmolt_gpon_alloc_id; /**< bcmolt_gpon_alloc_id: typed alias for a 16-bit unsigned integer. */
80#define BCMOLT_GPON_ALLOC_ID_ANY ((bcmolt_gpon_alloc_id) 65534U)
81#define BCMOLT_GPON_ALLOC_ID_INVALID ((bcmolt_gpon_alloc_id) 65535U)
82typedef uint16_t bcmolt_vlan_id; /**< bcmolt_vlan_id: typed alias for a 16-bit unsigned integer. */
83#define BCMOLT_VLAN_ID_MAX ((bcmolt_vlan_id) 4095)
84#define BCMOLT_VLAN_ID_ANY ((bcmolt_vlan_id) 65535U)
85typedef uint16_t bcmolt_gpon_gem_id; /**< bcmolt_gpon_gem_id: typed alias for a 16-bit unsigned integer. */
86#define BCMOLT_GPON_GEM_ID_ANY ((bcmolt_gpon_gem_id) 65534U)
87#define BCMOLT_GPON_GEM_ID_INVALID ((bcmolt_gpon_gem_id) 65535U)
88typedef uint16_t bcmolt_gpon_onu_id; /**< bcmolt_gpon_onu_id: typed alias for a 16-bit unsigned integer. */
89#define BCMOLT_GPON_ONU_ID_ANY ((bcmolt_gpon_onu_id) 65534U)
90#define BCMOLT_GPON_ONU_ID_INVALID ((bcmolt_gpon_onu_id) 65535U)
91typedef uint8_t bcmolt_gpon_ni; /**< bcmolt_gpon_ni: typed alias for a 8-bit unsigned integer. */
92#define BCMOLT_GPON_NI_INVALID ((bcmolt_gpon_ni) 255)
93typedef uint16_t bcmolt_pon_onu_id; /**< bcmolt_pon_onu_id: typed alias for a 16-bit unsigned integer. */
94#define BCMOLT_PON_ONU_ID_INVALID ((bcmolt_pon_onu_id) 65535U)
95typedef uint8_t bcmolt_mac_table_idx_cam; /**< bcmolt_mac_table_idx_cam: typed alias for a 8-bit unsigned integer. */
96#define BCMOLT_MAC_TABLE_IDX_CAM_NONE ((bcmolt_mac_table_idx_cam) 255)
97typedef uint16_t bcmolt_mac_table_idx_combined; /**< bcmolt_mac_table_idx_combined: typed alias for a 16-bit unsigned integer. */
98#define BCMOLT_MAC_TABLE_IDX_COMBINED_NONE ((bcmolt_mac_table_idx_combined) 65535U)
99typedef uint16_t bcmolt_mac_table_idx_main; /**< bcmolt_mac_table_idx_main: typed alias for a 16-bit unsigned integer. */
100#define BCMOLT_MAC_TABLE_IDX_MAIN_NONE ((bcmolt_mac_table_idx_main) 65535U)
101typedef uint32_t bcmolt_meters; /**< bcmolt_meters: typed alias for a 32-bit unsigned integer. */
102typedef uint16_t bcmolt_pon_alloc_id; /**< bcmolt_pon_alloc_id: typed alias for a 16-bit unsigned integer. */
103#define BCMOLT_PON_ALLOC_ID_INVALID ((bcmolt_pon_alloc_id) 65535U)
104typedef uint16_t bcmolt_pon_alloc_index; /**< bcmolt_pon_alloc_index: typed alias for a 16-bit unsigned integer. */
105#define BCMOLT_PON_ALLOC_INDEX_INVALID ((bcmolt_pon_alloc_index) 65535U)
106typedef uint16_t bcmolt_pon_gem_port_id; /**< bcmolt_pon_gem_port_id: typed alias for a 16-bit unsigned integer. */
107#define BCMOLT_PON_GEM_PORT_ID_INVALID ((bcmolt_pon_gem_port_id) 65535U)
108typedef uint16_t bcmolt_pon_gem_port_index; /**< bcmolt_pon_gem_port_index: typed alias for a 16-bit unsigned integer. */
109#define BCMOLT_PON_GEM_PORT_INDEX_INVALID ((bcmolt_pon_gem_port_index) 65535U)
110typedef uint8_t bcmolt_pon_ni; /**< bcmolt_pon_ni: typed alias for a 8-bit unsigned integer. */
111#define BCMOLT_PON_NI_INVALID ((bcmolt_pon_ni) 255)
112typedef uint16_t bcmolt_xgpon_alloc_id; /**< bcmolt_xgpon_alloc_id: typed alias for a 16-bit unsigned integer. */
113#define BCMOLT_XGPON_ALLOC_ID_ANY ((bcmolt_xgpon_alloc_id) 65534U)
114#define BCMOLT_XGPON_ALLOC_ID_INVALID ((bcmolt_xgpon_alloc_id) 65535U)
115typedef uint16_t bcmolt_xgpon_gem_id; /**< bcmolt_xgpon_gem_id: typed alias for a 16-bit unsigned integer. */
116#define BCMOLT_XGPON_GEM_ID_ANY ((bcmolt_xgpon_gem_id) 65534U)
117#define BCMOLT_XGPON_GEM_ID_INVALID ((bcmolt_xgpon_gem_id) 65535U)
118typedef uint8_t bcmolt_xgpon_ni; /**< bcmolt_xgpon_ni: typed alias for a 8-bit unsigned integer. */
119#define BCMOLT_XGPON_NI_INVALID ((bcmolt_xgpon_ni) 255)
120typedef uint16_t bcmolt_xgpon_onu_id; /**< bcmolt_xgpon_onu_id: typed alias for a 16-bit unsigned integer. */
121#define BCMOLT_XGPON_ONU_ID_ANY ((bcmolt_xgpon_onu_id) 65534U)
122#define BCMOLT_XGPON_ONU_ID_INVALID ((bcmolt_xgpon_onu_id) 65535U)
123
124/** activation fail reason.
125 */
126typedef enum bcmolt_activation_fail_reason
127{
128 BCMOLT_ACTIVATION_FAIL_REASON__BEGIN = 0,
129 BCMOLT_ACTIVATION_FAIL_REASON_NONE = 0, /**< None. */
130 BCMOLT_ACTIVATION_FAIL_REASON_RANGING = 1, /**< Ranging. */
131 BCMOLT_ACTIVATION_FAIL_REASON_PASSWORD_AUTHENTICATION = 2, /**< Password authentication. */
132 BCMOLT_ACTIVATION_FAIL_REASON_LOS = 3, /**< LOS. */
133 BCMOLT_ACTIVATION_FAIL_REASON_ONU_ALARM = 4, /**< ONU Alarm. */
134 BCMOLT_ACTIVATION_FAIL_REASON__NUM_OF /**< Number of enum entries, not an entry itself. */
135} bcmolt_activation_fail_reason;
136
137/** Additional BW eligibility.
138 */
139typedef enum bcmolt_additional_bw_eligibility
140{
141 BCMOLT_ADDITIONAL_BW_ELIGIBILITY__BEGIN = 0,
142 BCMOLT_ADDITIONAL_BW_ELIGIBILITY_NONE = 0, /**< None. */
143 BCMOLT_ADDITIONAL_BW_ELIGIBILITY_NON_ASSURED = 1, /**< Non Assured. */
144 BCMOLT_ADDITIONAL_BW_ELIGIBILITY_BEST_EFFORT = 2, /**< Best Effort. */
145 BCMOLT_ADDITIONAL_BW_ELIGIBILITY__NUM_OF /**< Number of enum entries, not an entry itself. */
146} bcmolt_additional_bw_eligibility;
147
148/** Enable state of the AE NI.
149 */
150typedef enum bcmolt_ae_ni_en_state
151{
152 BCMOLT_AE_NI_EN_STATE__BEGIN = 0,
153 BCMOLT_AE_NI_EN_STATE_DISABLED = 0, /**< AE NI is fully disabled. */
154 BCMOLT_AE_NI_EN_STATE_ENABLED = 1, /**< AE NI is fully enabled. */
155 BCMOLT_AE_NI_EN_STATE__NUM_OF /**< Number of enum entries, not an entry itself. */
156} bcmolt_ae_ni_en_state;
157
158/** Alloc operation.
159 */
160typedef enum bcmolt_alloc_operation
161{
162 BCMOLT_ALLOC_OPERATION__BEGIN = 0,
163 BCMOLT_ALLOC_OPERATION_ACTIVATE = 0, /**< Activate. */
164 BCMOLT_ALLOC_OPERATION_DEACTIVATE = 1, /**< Deactivate. */
165 BCMOLT_ALLOC_OPERATION__NUM_OF /**< Number of enum entries, not an entry itself. */
166} bcmolt_alloc_operation;
167
168/** Alloc State.
169 */
170typedef enum bcmolt_alloc_state
171{
172 BCMOLT_ALLOC_STATE__BEGIN = 0,
173 BCMOLT_ALLOC_STATE_NOT_CONFIGURED = 0, /**< Not configured. */
174 BCMOLT_ALLOC_STATE_INACTIVE = 1, /**< Inactive. */
175 BCMOLT_ALLOC_STATE_PROCESSING = 2, /**< Processing. */
176 BCMOLT_ALLOC_STATE_ACTIVE = 3, /**< Active. */
177 BCMOLT_ALLOC_STATE__NUM_OF /**< Number of enum entries, not an entry itself. */
178} bcmolt_alloc_state;
179
180/** Alloc Type.
181 */
182typedef enum bcmolt_alloc_type
183{
184 BCMOLT_ALLOC_TYPE__BEGIN = 0,
185 BCMOLT_ALLOC_TYPE_NONE = 0, /**< None. */
186 BCMOLT_ALLOC_TYPE_NSR = 1, /**< Non Status Report. */
187 BCMOLT_ALLOC_TYPE_SR = 2, /**< Status Report. */
188 BCMOLT_ALLOC_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
189} bcmolt_alloc_type;
190
191/** Alloc Type to scan during the rogue onu detection process.
192 */
193typedef enum bcmolt_alloc_type_to_scan
194{
195 BCMOLT_ALLOC_TYPE_TO_SCAN__BEGIN = 0,
196 BCMOLT_ALLOC_TYPE_TO_SCAN_UNUSED = 0, /**< Scan only the Alloc-IDs that have not been used. */
197 BCMOLT_ALLOC_TYPE_TO_SCAN_PREVIOUSLY_USED = 1, /**< Scan only the Alloc-IDs that has been used but currently not being used. This is for detecting the case when the OLT has released the Alloc, but the ONU is still holding it due to an error. */
198 BCMOLT_ALLOC_TYPE_TO_SCAN_ALL = 2, /**< Scan both used and unused Alloc-IDs. */
199 BCMOLT_ALLOC_TYPE_TO_SCAN__NUM_OF /**< Number of enum entries, not an entry itself. */
200} bcmolt_alloc_type_to_scan;
201
202/** What to do when the capture buffer is full.
203 */
204typedef enum bcmolt_api_capture_buffer_mode
205{
206 BCMOLT_API_CAPTURE_BUFFER_MODE__BEGIN = 0,
207 BCMOLT_API_CAPTURE_BUFFER_MODE_OVERFLOW = 0, /**< Drop messages when the buffer is full. */
208 BCMOLT_API_CAPTURE_BUFFER_MODE_WRAP = 1, /**< Wrap back to the beginning when the buffer is full. */
209 BCMOLT_API_CAPTURE_BUFFER_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
210} bcmolt_api_capture_buffer_mode;
211
212/** Where to perform the API capture.
213 */
214typedef enum bcmolt_api_capture_location
215{
216 BCMOLT_API_CAPTURE_LOCATION__BEGIN = 0,
217 BCMOLT_API_CAPTURE_LOCATION_DEVICE = 0, /**< On the device. */
218 BCMOLT_API_CAPTURE_LOCATION_HOST = 1, /**< On the host. */
219 BCMOLT_API_CAPTURE_LOCATION__NUM_OF /**< Number of enum entries, not an entry itself. */
220} bcmolt_api_capture_location;
221
222/** Calibration Record.
223 */
224typedef enum bcmolt_calibration_record
225{
226 BCMOLT_CALIBRATION_RECORD__BEGIN = 0,
227 BCMOLT_CALIBRATION_RECORD_UNSPECIFIED = 0, /**< Unspecified. */
228 BCMOLT_CALIBRATION_RECORD_UNCALIBRATED = 1, /**< Uncalibrated. */
229 BCMOLT_CALIBRATION_RECORD_LOOSE = 2, /**< Loose. */
230 BCMOLT_CALIBRATION_RECORD_SUFFICIENT = 3, /**< Sufficient. */
231 BCMOLT_CALIBRATION_RECORD__NUM_OF /**< Number of enum entries, not an entry itself. */
232} bcmolt_calibration_record;
233
234/** sign.
235 */
236typedef enum bcmolt_sign
237{
238 BCMOLT_SIGN__BEGIN = 0,
239 BCMOLT_SIGN_POSITIVE = 0, /**< Positive. */
240 BCMOLT_SIGN_NEGATIVE = 1, /**< Negative. */
241 BCMOLT_SIGN__NUM_OF /**< Number of enum entries, not an entry itself. */
242} bcmolt_sign;
243
244/** XGPON ni upstream line rate capabilities
245 */
246typedef enum bcmolt_upstream_line_rate_capabilities
247{
248 BCMOLT_UPSTREAM_LINE_RATE_CAPABILITIES__BEGIN = 0,
249 BCMOLT_UPSTREAM_LINE_RATE_CAPABILITIES_RATE_2_P_5_G = 0, /**< 2.5G Upstream line rate capability */
250 BCMOLT_UPSTREAM_LINE_RATE_CAPABILITIES_RATE_10_G = 1, /**< 10G Upstream line rate capability */
251 BCMOLT_UPSTREAM_LINE_RATE_CAPABILITIES__NUM_OF /**< Number of enum entries, not an entry itself. */
252} bcmolt_upstream_line_rate_capabilities;
253
254/** Link type.
255 */
256typedef enum bcmolt_link_type
257{
258 BCMOLT_LINK_TYPE__BEGIN = 0,
259 BCMOLT_LINK_TYPE_UNSPECIFIED = 0, /**< Link type unspecified */
260 BCMOLT_LINK_TYPE_B = 1, /**< Link type A is not supported, link type B is supported */
261 BCMOLT_LINK_TYPE_A = 2, /**< Link type A is supported, link type B is not supported */
262 BCMOLT_LINK_TYPE_A_AND_B = 3, /**< Both link types A and B are supported */
263 BCMOLT_LINK_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
264} bcmolt_link_type;
265
266/** capture strobe signal.
267 */
268typedef enum bcmolt_capture_strobe_signal
269{
270 BCMOLT_CAPTURE_STROBE_SIGNAL__BEGIN = 0,
271 BCMOLT_CAPTURE_STROBE_SIGNAL_GPON_BCDR_RESET = 0, /**< gpon bcdr reset. */
272 BCMOLT_CAPTURE_STROBE_SIGNAL_GPON_TRX_ED = 1, /**< gpon trx ed. */
273 BCMOLT_CAPTURE_STROBE_SIGNAL_GPON_RSSI = 2, /**< gpon rssi. */
274 BCMOLT_CAPTURE_STROBE_SIGNAL_GPON_EOB = 3, /**< gpon eob. */
275 BCMOLT_CAPTURE_STROBE_SIGNAL_SERDES_BURST_EN = 4, /**< serdes burst en. */
276 BCMOLT_CAPTURE_STROBE_SIGNAL_SERDES_RX_LOCK = 5, /**< serdes rx lock. */
277 BCMOLT_CAPTURE_STROBE_SIGNAL__NUM_OF /**< Number of enum entries, not an entry itself. */
278} bcmolt_capture_strobe_signal;
279
280/** Console Redirection Type.
281 */
282typedef enum bcmolt_console_redirection
283{
284 BCMOLT_CONSOLE_REDIRECTION__BEGIN = 0,
285 BCMOLT_CONSOLE_REDIRECTION_NONE = 0, /**< No redirection */
286 BCMOLT_CONSOLE_REDIRECTION_REDIRECT = 1, /**< Embedded console output is redirected to the host */
287 BCMOLT_CONSOLE_REDIRECTION_CLONE = 2, /**< Embedded console output is cloned to the host */
288 BCMOLT_CONSOLE_REDIRECTION__NUM_OF /**< Number of enum entries, not an entry itself. */
289} bcmolt_console_redirection;
290
291/** control state.
292 */
293typedef enum bcmolt_control_state
294{
295 BCMOLT_CONTROL_STATE__BEGIN = 0,
296 BCMOLT_CONTROL_STATE_DISABLE = 0, /**< Disabled. */
297 BCMOLT_CONTROL_STATE_ENABLE = 1, /**< Enabled. */
298 BCMOLT_CONTROL_STATE__NUM_OF /**< Number of enum entries, not an entry itself. */
299} bcmolt_control_state;
300
301/** dba mode.
302 */
303typedef enum bcmolt_dba_mode
304{
305 BCMOLT_DBA_MODE__BEGIN = 0,
306 BCMOLT_DBA_MODE_NORMAL = 0, /**< normal. */
307 BCMOLT_DBA_MODE_EXTENDED = 1, /**< extended. */
308 BCMOLT_DBA_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
309} bcmolt_dba_mode;
310
311/** DBA RAM.
312 */
313typedef enum bcmolt_dba_ram
314{
315 BCMOLT_DBA_RAM__BEGIN = 0,
316 BCMOLT_DBA_RAM_GRANT_FIFO_RAM_0 = 0, /**< Grant FIFO RAM 0. */
317 BCMOLT_DBA_RAM_GRANT_FIFO_RAM_1 = 1, /**< Grant FIFO RAM 1. */
318 BCMOLT_DBA_RAM_GRANT_FIFO_RAM_2 = 2, /**< Grant FIFO RAM 2. */
319 BCMOLT_DBA_RAM_GRANT_FIFO_RAM_3 = 3, /**< Grant FIFO RAM 3. */
320 BCMOLT_DBA_RAM_GRANT_FIFO_RAM_4 = 4, /**< Grant FIFO RAM 4. */
321 BCMOLT_DBA_RAM_GRANT_FIFO_RAM_5 = 5, /**< Grant FIFO RAM 5. */
322 BCMOLT_DBA_RAM_GRANT_FIFO_RAM_6 = 6, /**< Grant FIFO RAM 6. */
323 BCMOLT_DBA_RAM_GRANT_FIFO_RAM_7 = 7, /**< Grant FIFO RAM 7. */
324 BCMOLT_DBA_RAM_GRANTS_OUT_RAM = 8, /**< Grants Out RAM. */
325 BCMOLT_DBA_RAM_GRANTS_IN_RAM = 9, /**< Grants In RAM. */
326 BCMOLT_DBA_RAM_GRANTS_RETIRED_RAM = 10, /**< Grants Retired RAM. */
327 BCMOLT_DBA_RAM_REPORT_RAM = 11, /**< Report RAM. */
328 BCMOLT_DBA_RAM_GRANT_CFG_RAM = 12, /**< Grant Cfg RAM. */
329 BCMOLT_DBA_RAM_DEFAULT_TOKENS_RAM = 13, /**< Default Tokens RAM. */
330 BCMOLT_DBA_RAM_POLL_RECORDS_RAM = 14, /**< Poll Records RAM. */
331 BCMOLT_DBA_RAM_HEIR_POLL_RAM = 15, /**< Heir Poll RAM. */
332 BCMOLT_DBA_RAM_LAST_POLL_TIME_RAM = 16, /**< Last Poll Time RAM. */
333 BCMOLT_DBA_RAM_POLL_ORDER_RAM = 17, /**< Poll Order RAM. */
334 BCMOLT_DBA_RAM_TDM_RAM_0 = 18, /**< TDM RAM 0. */
335 BCMOLT_DBA_RAM_TDM_RAM_1 = 19, /**< TDM RAM 1. */
336 BCMOLT_DBA_RAM_TDM_RAM_2 = 20, /**< TDM RAM 2. */
337 BCMOLT_DBA_RAM_TDM_RAM_3 = 21, /**< TDM RAM 3. */
338 BCMOLT_DBA_RAM_TDM_RAM_4 = 22, /**< TDM RAM 4. */
339 BCMOLT_DBA_RAM_TDM_RAM_5 = 23, /**< TDM RAM 5. */
340 BCMOLT_DBA_RAM_TDM_RAM_6 = 24, /**< TDM RAM 6. */
341 BCMOLT_DBA_RAM_TDM_RAM_7 = 25, /**< TDM RAM 7. */
342 BCMOLT_DBA_RAM__NUM_OF /**< Number of enum entries, not an entry itself. */
343} bcmolt_dba_ram;
344
345/** DBA type.
346 */
347typedef enum bcmolt_dba_type
348{
349 BCMOLT_DBA_TYPE__BEGIN = 0,
350 BCMOLT_DBA_TYPE_INTERNAL = 0, /**< DBA internal implementation */
351 BCMOLT_DBA_TYPE_PARTIAL_EXTERNAL = 1, /**< DBA partial external implementation (DE, BA are implemented externally) */
352 BCMOLT_DBA_TYPE_EXTERNAL = 2, /**< DBA external implementation */
353 BCMOLT_DBA_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
354} bcmolt_dba_type;
355
356/** DDR Test Status.
357 */
358typedef enum bcmolt_ddr_test_status
359{
360 BCMOLT_DDR_TEST_STATUS__BEGIN = 0,
361 BCMOLT_DDR_TEST_STATUS_COMPLETED = 0, /**< The DDR test ran to completion */
362 BCMOLT_DDR_TEST_STATUS_CONNECTION_FAILED = 1, /**< The DDR test failed due to an issue loading the bootloader */
363 BCMOLT_DDR_TEST_STATUS_TIMEOUT = 2, /**< The DDR test failed to complete within the expected time */
364 BCMOLT_DDR_TEST_STATUS__NUM_OF /**< Number of enum entries, not an entry itself. */
365} bcmolt_ddr_test_status;
366
367/** DDR Test Result.
368 */
369typedef enum bcmolt_ddr_test_result
370{
371 BCMOLT_DDR_TEST_RESULT_SUCCESS = 0, /**< Success. */
372 BCMOLT_DDR_TEST_RESULT_PHY_INIT_ERROR = 1, /**< PHY Init Error. */
373 BCMOLT_DDR_TEST_RESULT_DRAM_INIT_ERROR = 2, /**< DRAM Init Error. */
374 BCMOLT_DDR_TEST_RESULT_SHMOO_ERROR = 3, /**< SHMOO Error. */
375 BCMOLT_DDR_TEST_RESULT_EDIS_TEST_ERROR = 4, /**< EDIS Test Error. */
376 BCMOLT_DDR_TEST_RESULT_MEM_TEST_ERROR = 5, /**< Mem Test Error. */
377 BCMOLT_DDR_TEST_RESULT_NOT_TESTED = 127 /**< Not Tested. */
378} bcmolt_ddr_test_result;
379
380/** Reasons why the connection between the host and the device failed
381 */
382typedef enum bcmolt_host_connection_fail_reason
383{
384 BCMOLT_HOST_CONNECTION_FAIL_REASON__BEGIN = 0,
385 BCMOLT_HOST_CONNECTION_FAIL_REASON_TIMEOUT = 0, /**< The connection process has timed out. */
386 BCMOLT_HOST_CONNECTION_FAIL_REASON_KEEPALIVE = 1, /**< Too much time has passed between keepalive messages from the device. */
387 BCMOLT_HOST_CONNECTION_FAIL_REASON_USER_CALLBACK_ERROR = 2, /**< A user callback returned a nonzero error code. Check log output to determine which callback failed. */
388 BCMOLT_HOST_CONNECTION_FAIL_REASON_SOFTWARE_VERSION_MISMATCH= 3, /**< The software version on the running device doesn't match the version in the host software. Only the revision number is allowed to differ - major/minor/model must match. */
389 BCMOLT_HOST_CONNECTION_FAIL_REASON_SYSTEM_MODE_MISMATCH = 4, /**< The system mode on the running device doesn't match the version in the host software. */
390 BCMOLT_HOST_CONNECTION_FAIL_REASON_NNI_SPEED_MISMATCH = 5, /**< The NNI speed on the running device doesn't match the version in the host software. */
391 BCMOLT_HOST_CONNECTION_FAIL_REASON_RECONNECT_TIMEOUT = 6, /**< A running device didn't respond to the request to reconnect. */
392 BCMOLT_HOST_CONNECTION_FAIL_REASON_INTERNAL_ERROR = 7, /**< An unspecified internal error occurred - check the log output for details. */
393 BCMOLT_HOST_CONNECTION_FAIL_REASON_SYSTEM_MODE_NOT_SUPPORTED= 8, /**< The given system mode is not supported on this device. */
394 BCMOLT_HOST_CONNECTION_FAIL_REASON_PARAMETER = 9, /**< One of the initial connection parameters was incorrect. */
395 BCMOLT_HOST_CONNECTION_FAIL_REASON__NUM_OF /**< Number of enum entries, not an entry itself. */
396} bcmolt_host_connection_fail_reason;
397
398/** deactivation reason.
399 */
400typedef enum bcmolt_deactivation_reason
401{
402 BCMOLT_DEACTIVATION_REASON__BEGIN = 0,
403 BCMOLT_DEACTIVATION_REASON_NONE = 0, /**< none. */
404 BCMOLT_DEACTIVATION_REASON_DEACTIVATION = 1, /**< deactivation. */
405 BCMOLT_DEACTIVATION_REASON_ACK_TIMEOUT = 2, /**< ack timeout. */
406 BCMOLT_DEACTIVATION_REASON_SFI = 3, /**< sfi alarm. */
407 BCMOLT_DEACTIVATION_REASON_TIWI = 4, /**< tiwi. */
408 BCMOLT_DEACTIVATION_REASON_PASSWORD_AUTHENTICATION = 5, /**< password authentication. */
409 BCMOLT_DEACTIVATION_REASON_ONU_ALARM = 6, /**< onu alarm. */
410 BCMOLT_DEACTIVATION_REASON_LOS = 7, /**< los. */
411 BCMOLT_DEACTIVATION_REASON_LOKI = 8, /**< loki. */
412 BCMOLT_DEACTIVATION_REASON_RERANGE_FAILURE = 9, /**< re-range failure. */
413 BCMOLT_DEACTIVATION_REASON__NUM_OF /**< Number of enum entries, not an entry itself. */
414} bcmolt_deactivation_reason;
415
416/** Revision of the BCM68620 device.
417 */
418typedef enum bcmolt_device_chip_revision
419{
420 BCMOLT_DEVICE_CHIP_REVISION_A0 = 160, /**< A0. */
421 BCMOLT_DEVICE_CHIP_REVISION_B0 = 176 /**< B0. */
422} bcmolt_device_chip_revision;
423
424/** Device Image Type.
425 */
426typedef enum bcmolt_device_image_type
427{
428 BCMOLT_DEVICE_IMAGE_TYPE__BEGIN = 0,
429 BCMOLT_DEVICE_IMAGE_TYPE_BOOTLOADER = 0, /**< Bootloader. */
430 BCMOLT_DEVICE_IMAGE_TYPE_APPLICATION = 1, /**< Application. */
431 BCMOLT_DEVICE_IMAGE_TYPE_ITU_PON_ONU_FIRMWARE = 2, /**< ITU PON ONU firmware. */
432 BCMOLT_DEVICE_IMAGE_TYPE_EPON_ONU_FIRMWARE = 3, /**< EPON ONU firmware. */
433 BCMOLT_DEVICE_IMAGE_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
434} bcmolt_device_image_type;
435
436/** Network interface speed
437 */
438typedef enum bcmolt_nni_speed
439{
440 BCMOLT_NNI_SPEED__BEGIN = 0,
441 BCMOLT_NNI_SPEED_GBPS_1 = 0, /**< 1Gbps */
442 BCMOLT_NNI_SPEED_GBPS_2P5 = 1, /**< 2.5Gbps */
443 BCMOLT_NNI_SPEED_GBPS_10 = 2, /**< 10Gbps */
444 BCMOLT_NNI_SPEED_GBPS_12P5 = 3, /**< 12.5Gbps */
445 BCMOLT_NNI_SPEED_GBPS_10_G_MUX = 4, /**< 10Gbps Mux */
446 BCMOLT_NNI_SPEED__NUM_OF /**< Number of enum entries, not an entry itself. */
447} bcmolt_nni_speed;
448
449/** Options for the reset operation.
450 */
451typedef enum bcmolt_device_reset_mode
452{
453 BCMOLT_DEVICE_RESET_MODE_DEVICE = 1, /**< Turn off the embedded device's processor. */
454 BCMOLT_DEVICE_RESET_MODE_HOST = 2, /**< Reset the host processor. */
455 BCMOLT_DEVICE_RESET_MODE_ALL = 3 /**< Turn off the embedded device's processor and reset the host processor. */
456} bcmolt_device_reset_mode;
457
458/** The overall state of the host's connection to the device.
459 */
460typedef enum bcmolt_device_state
461{
462 BCMOLT_DEVICE_STATE__BEGIN = 0,
463 BCMOLT_DEVICE_STATE_DISCONNECTED = 0, /**< The host is not connected to the device. */
464 BCMOLT_DEVICE_STATE_CONNECTING = 1, /**< The host is in the process of connecting to the device. */
465 BCMOLT_DEVICE_STATE_READY = 2, /**< The device is connected to the host and is ready to accept any command from the host. */
466 BCMOLT_DEVICE_STATE_WAITING_FOR_DEVICE = 3, /**< Waiting for the embedded side to respond to a configuration message. */
467 BCMOLT_DEVICE_STATE_TESTING_DDR = 4, /**< A DDR test is currently in progress */
468 BCMOLT_DEVICE_STATE__NUM_OF /**< Number of enum entries, not an entry itself. */
469} bcmolt_device_state;
470
471/** Disable Serial Number Control.
472 */
473typedef enum bcmolt_disable_serial_number_control
474{
475 BCMOLT_DISABLE_SERIAL_NUMBER_CONTROL__BEGIN = 0,
476 BCMOLT_DISABLE_SERIAL_NUMBER_CONTROL_UNICAST_DISABLE = 0, /**< Unicast Disable. */
477 BCMOLT_DISABLE_SERIAL_NUMBER_CONTROL_UNICAST_ENABLE = 1, /**< Unicast Enable. */
478 BCMOLT_DISABLE_SERIAL_NUMBER_CONTROL_BROADCAST_ENABLE = 2, /**< Broadcast Enable. */
479 BCMOLT_DISABLE_SERIAL_NUMBER_CONTROL_BROADCAST_DISABLE = 3, /**< Broadcast Disable. */
480 BCMOLT_DISABLE_SERIAL_NUMBER_CONTROL_DISABLE_DISCOVERY = 4, /**< Disable Discovery. */
481 BCMOLT_DISABLE_SERIAL_NUMBER_CONTROL__NUM_OF /**< Number of enum entries, not an entry itself. */
482} bcmolt_disable_serial_number_control;
483
484/** drv_icf_id.
485 */
486typedef enum bcmolt_drv_icf_id
487{
488 BCMOLT_DRV_ICF_ID__BEGIN = 0,
489 BCMOLT_DRV_ICF_ID_IDX0 = 0, /**< IDX0. */
490 BCMOLT_DRV_ICF_ID_IDX1 = 1, /**< IDX1. */
491 BCMOLT_DRV_ICF_ID_IDX2 = 2, /**< IDX2. */
492 BCMOLT_DRV_ICF_ID_IDX3 = 3, /**< IDX3. */
493 BCMOLT_DRV_ICF_ID__NUM_OF /**< Number of enum entries, not an entry itself. */
494} bcmolt_drv_icf_id;
495
496/** drv_sgb_id.
497 */
498typedef enum bcmolt_drv_sgb_id
499{
500 BCMOLT_DRV_SGB_ID__BEGIN = 0,
501 BCMOLT_DRV_SGB_ID_IDX0 = 0, /**< IDX0. */
502 BCMOLT_DRV_SGB_ID_IDX1 = 1, /**< IDX1. */
503 BCMOLT_DRV_SGB_ID__NUM_OF /**< Number of enum entries, not an entry itself. */
504} bcmolt_drv_sgb_id;
505
506/** DS VLAN action.
507 */
508typedef enum bcmolt_ds_vlan_action
509{
510 BCMOLT_DS_VLAN_ACTION__BEGIN = 0,
511 BCMOLT_DS_VLAN_ACTION_REMOVE = 0, /**< Remove. */
512 BCMOLT_DS_VLAN_ACTION_TRANSPARENT = 1, /**< Transparent. */
513 BCMOLT_DS_VLAN_ACTION__NUM_OF /**< Number of enum entries, not an entry itself. */
514} bcmolt_ds_vlan_action;
515
516/** TFB Trap Behavior.
517 */
518typedef enum bcmolt_tfb_trap_behavior
519{
520 BCMOLT_TFB_TRAP_BEHAVIOR__BEGIN = 0,
521 BCMOLT_TFB_TRAP_BEHAVIOR_DROP = 0, /**< Drop. */
522 BCMOLT_TFB_TRAP_BEHAVIOR_FORWARD_NNI = 1, /**< Forward NNI. */
523 BCMOLT_TFB_TRAP_BEHAVIOR_FORWARD_CPU = 2, /**< Forward CPU. */
524 BCMOLT_TFB_TRAP_BEHAVIOR_SNOOP = 3, /**< Snoop. */
525 BCMOLT_TFB_TRAP_BEHAVIOR__NUM_OF /**< Number of enum entries, not an entry itself. */
526} bcmolt_tfb_trap_behavior;
527
528/** TFB Mode.
529 */
530typedef enum bcmolt_tfb_mode
531{
532 BCMOLT_TFB_MODE__BEGIN = 0,
533 BCMOLT_TFB_MODE_GPON = 0, /**< GPON. */
534 BCMOLT_TFB_MODE_XGPON = 1, /**< XGPON. */
535 BCMOLT_TFB_MODE_EPON = 2, /**< EPON. */
536 BCMOLT_TFB_MODE_XEPON = 3, /**< XEPON. */
537 BCMOLT_TFB_MODE_COEX = 4, /**< COEX. */
538 BCMOLT_TFB_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
539} bcmolt_tfb_mode;
540
541/** LIM SEC Mode Up.
542 */
543typedef enum bcmolt_lim_sec_mode_up
544{
545 BCMOLT_LIM_SEC_MODE_UP__BEGIN = 0,
546 BCMOLT_LIM_SEC_MODE_UP_TEK = 0, /**< Teknovus encryption mode */
547 BCMOLT_LIM_SEC_MODE_UP_PER_LLID = 1, /**< Encryption per LLID, 802.1ae/zero-overhead */
548 BCMOLT_LIM_SEC_MODE_UP_NTT = 2, /**< EPON (NTT) encryption mode */
549 BCMOLT_LIM_SEC_MODE_UP__NUM_OF /**< Number of enum entries, not an entry itself. */
550} bcmolt_lim_sec_mode_up;
551
552/** LIM SEC Mode Dn.
553 */
554typedef enum bcmolt_lim_sec_mode_dn
555{
556 BCMOLT_LIM_SEC_MODE_DN__BEGIN = 0,
557 BCMOLT_LIM_SEC_MODE_DN_TEK = 0, /**< Teknovus encryption mode */
558 BCMOLT_LIM_SEC_MODE_DN_PER_LLID = 1, /**< Encryption per LLID, 802.1ae/zero-overhead */
559 BCMOLT_LIM_SEC_MODE_DN_NTT = 2, /**< EPON (NTT) encryption mode */
560 BCMOLT_LIM_SEC_MODE_DN_CEPON = 3, /**< CEPON (3Churn) encryption mode */
561 BCMOLT_LIM_SEC_MODE_DN__NUM_OF /**< Number of enum entries, not an entry itself. */
562} bcmolt_lim_sec_mode_dn;
563
564/** XIM SEC Mode.
565 */
566typedef enum bcmolt_xim_sec_mode
567{
568 BCMOLT_XIM_SEC_MODE__BEGIN = 0,
569 BCMOLT_XIM_SEC_MODE_RESERVED_0 = 0, /**< Reserved 0. */
570 BCMOLT_XIM_SEC_MODE_PER_LLID = 1, /**< Per LLID. */
571 BCMOLT_XIM_SEC_MODE_RESERVED_2 = 2, /**< Reserved 2. */
572 BCMOLT_XIM_SEC_MODE_CEPON = 3, /**< CEPON. */
573 BCMOLT_XIM_SEC_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
574} bcmolt_xim_sec_mode;
575
576/** HSC RAM.
577 */
578typedef enum bcmolt_hsc_ram
579{
580 BCMOLT_HSC_RAM__BEGIN = 0,
581 BCMOLT_HSC_RAM_LLC_T1 = 0, /**< LLC T1. */
582 BCMOLT_HSC_RAM_LLC_T2 = 1, /**< LLC T2. */
583 BCMOLT_HSC_RAM_LLC_T3 = 2, /**< LLC T3. */
584 BCMOLT_HSC_RAM_GRP_T2 = 3, /**< Grp T2. */
585 BCMOLT_HSC_RAM_GRP_T3 = 4, /**< Grp T3. */
586 BCMOLT_HSC_RAM_SHP_T1 = 5, /**< Shp T1. */
587 BCMOLT_HSC_RAM_SHP_T2 = 6, /**< Shp T2. */
588 BCMOLT_HSC_RAM_SHP_T3 = 7, /**< Shp T3. */
589 BCMOLT_HSC_RAM_PRF_T1 = 8, /**< Prf T1. */
590 BCMOLT_HSC_RAM_PRF_T2 = 9, /**< Prf T2. */
591 BCMOLT_HSC_RAM_PRF_T3 = 10, /**< Prf T3. */
592 BCMOLT_HSC_RAM_CRE_T1 = 11, /**< Cre T1. */
593 BCMOLT_HSC_RAM_CRE_T2 = 12, /**< Cre T2. */
594 BCMOLT_HSC_RAM_CRE_T3 = 13, /**< Cre T3. */
595 BCMOLT_HSC_RAM_ELU = 14, /**< ELU. */
596 BCMOLT_HSC_RAM_PTR_T1 = 15, /**< Ptr T1. */
597 BCMOLT_HSC_RAM_PTR_T2 = 16, /**< Ptr T2. */
598 BCMOLT_HSC_RAM_AGR_SHP_T1 = 17, /**< Agr Shp T1. */
599 BCMOLT_HSC_RAM_AEM = 18, /**< AEM. */
600 BCMOLT_HSC_RAM_ALL_LLC = 19, /**< All LLC. */
601 BCMOLT_HSC_RAM__NUM_OF /**< Number of enum entries, not an entry itself. */
602} bcmolt_hsc_ram;
603
604/** LIM RAM.
605 */
606typedef enum bcmolt_lim_ram
607{
608 BCMOLT_LIM_RAM__BEGIN = 0,
609 BCMOLT_LIM_RAM_LLID_UP = 0, /**< LLID Up. */
610 BCMOLT_LIM_RAM_PER_ONU_STAT = 1, /**< Per ONU Stat. */
611 BCMOLT_LIM_RAM_FEC_UP_FULL_S = 2, /**< FEC Up Full S. */
612 BCMOLT_LIM_RAM_FEC_UP_DATA = 3, /**< FEC Up Data. */
613 BCMOLT_LIM_RAM__NUM_OF /**< Number of enum entries, not an entry itself. */
614} bcmolt_lim_ram;
615
616/** LKY RAM.
617 */
618typedef enum bcmolt_lky_ram
619{
620 BCMOLT_LKY_RAM__BEGIN = 0,
621 BCMOLT_LKY_RAM_TX_KEY_RAM = 0, /**< Tx Key RAM. */
622 BCMOLT_LKY_RAM_TX_KEY_BUFFER = 1, /**< Tx Key Buffer. */
623 BCMOLT_LKY_RAM_RX_KEY_RAM = 2, /**< Rx Key RAM. */
624 BCMOLT_LKY_RAM_RX_KEY_BUFFER = 3, /**< Rx Key Buffer. */
625 BCMOLT_LKY_RAM__NUM_OF /**< Number of enum entries, not an entry itself. */
626} bcmolt_lky_ram;
627
628/** MIC RAM.
629 */
630typedef enum bcmolt_mic_ram
631{
632 BCMOLT_MIC_RAM__BEGIN = 0,
633 BCMOLT_MIC_RAM_RANGE = 0, /**< Range. */
634 BCMOLT_MIC_RAM_LLID = 1, /**< LLID. */
635 BCMOLT_MIC_RAM_IDX = 2, /**< Index. */
636 BCMOLT_MIC_RAM_GRANT_MISS = 3, /**< Grant Miss. */
637 BCMOLT_MIC_RAM_GRANT_ID = 4, /**< Grant ID. */
638 BCMOLT_MIC_RAM_TX_IV = 5, /**< Tx IV. */
639 BCMOLT_MIC_RAM_RX_IV = 6, /**< Rx IV. */
640 BCMOLT_MIC_RAM_TX_PORT_STAT = 7, /**< Tx Port Stat. */
641 BCMOLT_MIC_RAM_RX_PORT_STAT = 8, /**< Rx Port Stat. */
642 BCMOLT_MIC_RAM__NUM_OF /**< Number of enum entries, not an entry itself. */
643} bcmolt_mic_ram;
644
645/** XPCSRM RAM.
646 */
647typedef enum bcmolt_xpcsrm_ram
648{
649 BCMOLT_XPCSRM_RAM__BEGIN = 0,
650 BCMOLT_XPCSRM_RAM_CAPTURE_FIFO = 0, /**< Capture FIFO. */
651 BCMOLT_XPCSRM_RAM_FEC_DECODE = 1, /**< FEC Decode. */
652 BCMOLT_XPCSRM_RAM_FEC_STATS = 2, /**< FEC Stats. */
653 BCMOLT_XPCSRM_RAM_FEC_ENQUEUE = 3, /**< FEC Enqueue. */
654 BCMOLT_XPCSRM_RAM_IDLE_INSERT = 4, /**< Idle Insert. */
655 BCMOLT_XPCSRM_RAM__NUM_OF /**< Number of enum entries, not an entry itself. */
656} bcmolt_xpcsrm_ram;
657
658/** embedded image transfer status.
659 */
660typedef enum bcmolt_embedded_image_transfer_status
661{
662 BCMOLT_EMBEDDED_IMAGE_TRANSFER_STATUS__BEGIN = 0,
663 BCMOLT_EMBEDDED_IMAGE_TRANSFER_STATUS_NONE = 0, /**< No file. Transfer has never started for this entry. */
664 BCMOLT_EMBEDDED_IMAGE_TRANSFER_STATUS_IN_PROGRESS = 1, /**< Transfer has started and not finished. */
665 BCMOLT_EMBEDDED_IMAGE_TRANSFER_STATUS_SUCCESS = 2, /**< Transfer has finished successfully. */
666 BCMOLT_EMBEDDED_IMAGE_TRANSFER_STATUS_FAILURE = 3, /**< Transfer failed. Typically due to CRC error. */
667 BCMOLT_EMBEDDED_IMAGE_TRANSFER_STATUS__NUM_OF /**< Number of enum entries, not an entry itself. */
668} bcmolt_embedded_image_transfer_status;
669
670/** EPON Encryption information format.
671 */
672typedef enum bcmolt_epon_encryption_information_format
673{
674 BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT__BEGIN = 0,
675 BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT_CFB = 0, /**< CFB. */
676 BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT_CTR = 1, /**< CTR. */
677 BCMOLT_EPON_ENCRYPTION_INFORMATION_FORMAT__NUM_OF /**< Number of enum entries, not an entry itself. */
678} bcmolt_epon_encryption_information_format;
679
680/** energy detect source.
681 */
682typedef enum bcmolt_energy_detect_source
683{
684 BCMOLT_ENERGY_DETECT_SOURCE__BEGIN = 0,
685 BCMOLT_ENERGY_DETECT_SOURCE_INTERNAL = 0, /**< internal. */
686 BCMOLT_ENERGY_DETECT_SOURCE_TRX = 1, /**< TRX. */
687 BCMOLT_ENERGY_DETECT_SOURCE_BCDR = 2, /**< BCDR. */
688 BCMOLT_ENERGY_DETECT_SOURCE__NUM_OF /**< Number of enum entries, not an entry itself. */
689} bcmolt_energy_detect_source;
690
691/** EPON turbo mode. Enables double downstream speed (2G) on 1G EPON NIs
692 */
693typedef enum bcmolt_epon_1g_turbo_mode
694{
695 BCMOLT_EPON_1G_TURBO_MODE__BEGIN = 0,
696 BCMOLT_EPON_1G_TURBO_MODE_DISABLED = 0, /**< Turbo mode is disabled - EPON NI has a dowstream data rate of 1G. */
697 BCMOLT_EPON_1G_TURBO_MODE_ENABLED = 1, /**< Turbo mode is enabled - EPON NI has a dowstream data rate of 2G. */
698 BCMOLT_EPON_1G_TURBO_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
699} bcmolt_epon_1g_turbo_mode;
700
701/** EPON Clock Transport Mode.
702 */
703typedef enum bcmolt_epon_clock_transport_mode
704{
705 BCMOLT_EPON_CLOCK_TRANSPORT_MODE__BEGIN = 0,
706 BCMOLT_EPON_CLOCK_TRANSPORT_MODE_HOST_DRIVEN = 0, /**< At each pulse, the Maple will issue an indication to the host containing the equivalent MPCP time for this PON. */
707 BCMOLT_EPON_CLOCK_TRANSPORT_MODE_EMBEDDED_DRIVEN = 1, /**< At each pulse, the Maple will parse the ToD from the second UART (if available) and then format and send down an IEEE 802.1as clock transport time sync message to each user link. */
708 BCMOLT_EPON_CLOCK_TRANSPORT_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
709} bcmolt_epon_clock_transport_mode;
710
711/** Control for how the DBA handles received MPCP report frames.
712 */
713typedef enum bcmolt_epon_dba_reporting_mode
714{
715 BCMOLT_EPON_DBA_REPORTING_MODE__BEGIN = 0,
716 BCMOLT_EPON_DBA_REPORTING_MODE_SIEPON_A = 0, /**< Handle reports as specified by SIEPON package A. */
717 BCMOLT_EPON_DBA_REPORTING_MODE_SIEPON_B = 1, /**< Handle reports as specified by SIEPON package B. */
718 BCMOLT_EPON_DBA_REPORTING_MODE_SIEPON_C = 2, /**< Handle reports as specified by SIEPON package C */
719 BCMOLT_EPON_DBA_REPORTING_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
720} bcmolt_epon_dba_reporting_mode;
721
722/** EPON link rate.
723 */
724typedef enum bcmolt_epon_link_rate
725{
726 BCMOLT_EPON_LINK_RATE__BEGIN = 0,
727 BCMOLT_EPON_LINK_RATE_TEN_TEN = 0, /**< Ten_Ten. */
728 BCMOLT_EPON_LINK_RATE_TEN_ONE = 1, /**< Ten_One. */
729 BCMOLT_EPON_LINK_RATE_ONE_ONE = 2, /**< One_One. */
730 BCMOLT_EPON_LINK_RATE__NUM_OF /**< Number of enum entries, not an entry itself. */
731} bcmolt_epon_link_rate;
732
733/** Status.
734 */
735typedef enum bcmolt_status
736{
737 BCMOLT_STATUS__BEGIN = 0,
738 BCMOLT_STATUS_OFF = 0, /**< Status is off. */
739 BCMOLT_STATUS_ON = 1, /**< Status is on. */
740 BCMOLT_STATUS_NO_CHANGE = 2, /**< Status should not be changed (valid for SET API calls only). */
741 BCMOLT_STATUS__NUM_OF /**< Number of enum entries, not an entry itself. */
742} bcmolt_status;
743
744/** EPON encryption mode.
745 */
746typedef enum bcmolt_epon_encryption_mode
747{
748 BCMOLT_EPON_ENCRYPTION_MODE__BEGIN = 0,
749 BCMOLT_EPON_ENCRYPTION_MODE_NO_ENCRYPTION = 0, /**< No encryption of any kind. */
750 BCMOLT_EPON_ENCRYPTION_MODE_EPON_TRIPLE_CHURNING = 1, /**< EPON triple-churning mode per CTC specification. */
751 BCMOLT_EPON_ENCRYPTION_MODE_EPON_ZERO_OVERHEAD_AES = 2, /**< EPON zero-overhead AES mode. */
752 BCMOLT_EPON_ENCRYPTION_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
753} bcmolt_epon_encryption_mode;
754
755/** Epon Key Choice.
756 */
757typedef enum bcmolt_epon_key_choice
758{
759 BCMOLT_EPON_KEY_CHOICE__BEGIN = 0,
760 BCMOLT_EPON_KEY_CHOICE_KEY_0 = 0, /**< Key 0. */
761 BCMOLT_EPON_KEY_CHOICE_KEY_1 = 1, /**< Key 1. */
762 BCMOLT_EPON_KEY_CHOICE__NUM_OF /**< Number of enum entries, not an entry itself. */
763} bcmolt_epon_key_choice;
764
765/** EPON Encryption Direction.
766 */
767typedef enum bcmolt_epon_encryption_direction
768{
769 BCMOLT_EPON_ENCRYPTION_DIRECTION__BEGIN = 0,
770 BCMOLT_EPON_ENCRYPTION_DIRECTION_DOWNSTREAM_ONLY = 0, /**< Encrypt downstream traffic only. */
771 BCMOLT_EPON_ENCRYPTION_DIRECTION__NUM_OF /**< Number of enum entries, not an entry itself. */
772} bcmolt_epon_encryption_direction;
773
774/** EPON FEC enable state. See flag descriptions for restrictions.
775 */
776typedef enum bcmolt_epon_fec_en_state
777{
778 BCMOLT_EPON_FEC_EN_STATE__BEGIN = 0,
779 BCMOLT_EPON_FEC_EN_STATE_DISABLED = 0, /**< FEC is disabled. */
780 BCMOLT_EPON_FEC_EN_STATE_ENABLED = 1, /**< FEC is enabled. Note: FEC can only be enabled and disabled PON-wide for 10G paths, but can be enabled and disabled with logical link granularity for 1G paths. */
781 BCMOLT_EPON_FEC_EN_STATE__NUM_OF /**< Number of enum entries, not an entry itself. */
782} bcmolt_epon_fec_en_state;
783
784/** The types of OAM to choose from.
785 */
786typedef enum bcmolt_epon_oam_type
787{
788 BCMOLT_EPON_OAM_TYPE__BEGIN = 0,
789 BCMOLT_EPON_OAM_TYPE_BROADCOM = 0, /**< Broadcom OAM (formerly TEK). */
790 BCMOLT_EPON_OAM_TYPE_CTC = 1, /**< CTC OAM. */
791 BCMOLT_EPON_OAM_TYPE_DPOE = 2, /**< DPoE OAM */
792 BCMOLT_EPON_OAM_TYPE_SIEPONA = 3, /**< SiEPON OAM. (Mostly similar to DPoE). */
793 BCMOLT_EPON_OAM_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
794} bcmolt_epon_oam_type;
795
796/** epon link fec state.
797 */
798typedef enum bcmolt_epon_link_fec_state
799{
800 BCMOLT_EPON_LINK_FEC_STATE__BEGIN = 0,
801 BCMOLT_EPON_LINK_FEC_STATE_DISABLED = 0, /**< Disabled. */
802 BCMOLT_EPON_LINK_FEC_STATE_ENABLED = 1, /**< Enabled. */
803 BCMOLT_EPON_LINK_FEC_STATE_USE_DEFAULT = 2, /**< Use defaults. */
804 BCMOLT_EPON_LINK_FEC_STATE__NUM_OF /**< Number of enum entries, not an entry itself. */
805} bcmolt_epon_link_fec_state;
806
807/** The current registration status of a link.
808 */
809typedef enum bcmolt_epon_link_status
810{
811 BCMOLT_EPON_LINK_STATUS_NONE = 0,
812 BCMOLT_EPON_LINK_STATUS_DISCOVERED = 0x0001, /**< Link has completed MPCP registration. */
813 BCMOLT_EPON_LINK_STATUS_REGISTRATION_PREVENTED = 0x0008 /**< Link is being prevented from registering. */
814} bcmolt_epon_link_status;
815
816/** MPCP discovery info.
817 */
818typedef enum bcmolt_mpcp_discovery_info
819{
820 BCMOLT_MPCP_DISCOVERY_INFO_NONE = 0,
821 BCMOLT_MPCP_DISCOVERY_INFO_ONE_G_CAPABLE = 0x0001, /**< 1G Capable. */
822 BCMOLT_MPCP_DISCOVERY_INFO_TEN_G_CAPABLE = 0x0002, /**< 10G Capable. */
823 BCMOLT_MPCP_DISCOVERY_INFO_ONE_G_WINDOW = 0x0010, /**< 1G window. */
824 BCMOLT_MPCP_DISCOVERY_INFO_TEN_G_WINDOW = 0x0020 /**< 10G window. */
825} bcmolt_mpcp_discovery_info;
826
827/** EPON link state flags reflect the current status of the link.
828 */
829typedef enum bcmolt_epon_link_state_flags
830{
831 BCMOLT_EPON_LINK_STATE_FLAGS_NONE = 0,
832 BCMOLT_EPON_LINK_STATE_FLAGS_MPCP_REGISTRATION_COMPLETE = 0x0001 /**< Link has completed MPCP registration. */
833} bcmolt_epon_link_state_flags;
834
835/** EPON Link Type.
836 */
837typedef enum bcmolt_epon_link_type
838{
839 BCMOLT_EPON_LINK_TYPE__BEGIN = 0,
840 BCMOLT_EPON_LINK_TYPE_SYSTEM = 0, /**< A Link automatically created for system usage. */
841 BCMOLT_EPON_LINK_TYPE_DOWNSTREAM_ONLY = 1, /**< A Link that does not consume upstream bandwidth. */
842 BCMOLT_EPON_LINK_TYPE_BIDIRECTIONAL = 2, /**< A Link that undergoes the MPCP registration process. */
843 BCMOLT_EPON_LINK_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
844} bcmolt_epon_link_type;
845
846/** MPCP gate mode.
847 */
848typedef enum bcmolt_mpcp_gate_mode
849{
850 BCMOLT_MPCP_GATE_MODE__BEGIN = 0,
851 BCMOLT_MPCP_GATE_MODE_TEKNOVUS = 0, /**< Teknovus MPCP registration mode. */
852 BCMOLT_MPCP_GATE_MODE_CUSTOM = 1, /**< Non-Teknovus MPCP registration mode. */
853 BCMOLT_MPCP_GATE_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
854} bcmolt_mpcp_gate_mode;
855
856/** MPCP registration gate flags.
857 */
858typedef enum bcmolt_mpcp_registration_gate_flags
859{
860 BCMOLT_MPCP_REGISTRATION_GATE_FLAGS_NONE = 0,
861 BCMOLT_MPCP_REGISTRATION_GATE_FLAGS_FORCE_REPORT = 0x0001 /**< Force report bit. */
862} bcmolt_mpcp_registration_gate_flags;
863
864/** Enable state of the EPON NI. Initially the only enable states defined are
865 * `disabled' and `enabled', but this may later be extended to include
866 * different degrees of enablement.
867 */
868typedef enum bcmolt_epon_ni_en_state
869{
870 BCMOLT_EPON_NI_EN_STATE__BEGIN = 0,
871 BCMOLT_EPON_NI_EN_STATE_DISABLED = 0, /**< EPON NI is fully disabled. */
872 BCMOLT_EPON_NI_EN_STATE_ENABLED = 1, /**< EPON NI is fully enabled. */
873 BCMOLT_EPON_NI_EN_STATE_PROTECTED_WORKING = 2, /**< EPON NI is fully enabled. redundant and activily carrying traffic. */
874 BCMOLT_EPON_NI_EN_STATE_PROTECTED_STANDBY = 3, /**< EPON NI is fully enabled. redundant and protecting another PON. */
875 BCMOLT_EPON_NI_EN_STATE_PROCESSING = 4, /**< EPON NI is currently transitioning between states */
876 BCMOLT_EPON_NI_EN_STATE__NUM_OF /**< Number of enum entries, not an entry itself. */
877} bcmolt_epon_ni_en_state;
878
879/** EPON OAM Extension Type.
880 */
881typedef enum bcmolt_epon_oam_extension_type
882{
883 BCMOLT_EPON_OAM_EXTENSION_TYPE__BEGIN = 0,
884 BCMOLT_EPON_OAM_EXTENSION_TYPE_RESERVED = 0, /**< Reserved */
885 BCMOLT_EPON_OAM_EXTENSION_TYPE_BROADCOM = 1, /**< Broadcom */
886 BCMOLT_EPON_OAM_EXTENSION_TYPE_CTC = 2, /**< China Telecom */
887 BCMOLT_EPON_OAM_EXTENSION_TYPE_DASAN = 3, /**< Dasan Networks */
888 BCMOLT_EPON_OAM_EXTENSION_TYPE_KT = 4, /**< Korea Telecom */
889 BCMOLT_EPON_OAM_EXTENSION_TYPE_DPOE = 5, /**< DPoE */
890 BCMOLT_EPON_OAM_EXTENSION_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
891} bcmolt_epon_oam_extension_type;
892
893/** 1 to 11 matche the DPoE response code. Refer to DPoE-SP-OAMv1.0-I08-140807,
894 * Cl. 12.1.3. 21 to 28 are used for CTC.
895 */
896typedef enum bcmolt_epon_onu_upgrade_onu_response_code
897{
898 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_OK = 0, /**< No errors. */
899 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_UNDEFINED = 1, /**< Unknown error, or one not covered elsewhere. */
900 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_NOT_FOUND = 2, /**< Read requested file that is not available. */
901 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_NO_ACCESS = 3, /**< Access permissions do not allow the requested read/write. */
902 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_FULL = 4, /**< Storage is full, and cannot hold the written file. */
903 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_ILLEGAL_OPERATION = 5, /**< Cannot perform requested operation in current state. */
904 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_UNKNOWN_ID = 6, /**< Requested file ID is not supported by this device. */
905 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_BAD_BLOCK = 7, /**< Block received in error. */
906 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_TIMEOUT = 8, /**< No block received before timer expiration. */
907 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_BUSY = 9, /**< Cannot perform requested action due to other activity. */
908 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_INCOMPATIBLE_FILE = 10, /**< Received file is incompatible with this device. File incompatibility is determined by the device vendor. */
909 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_CORRUPTED_FILE = 11, /**< File was received corrupted and is unusable by this device. File integrity is determined by the device vendor. */
910 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_ERROR_NOT_DEFINED = 21, /**< ONU returned ERROR PDU: Undefined error code. */
911 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_ERROR_ALLOC_EXCEEDED = 22, /**< ONU returned ERROR PDU: Disk full or allocation exceeded. */
912 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_ERROR_ILLEGAL_OP = 23, /**< ONU returned ERROR PDU: Illegal TFTP operation. */
913 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_ERROR_FILE_EXISTS = 24, /**< ONU returned ERROR PDU: Mirror file already exists. */
914 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_END_WRITING_NVS = 25, /**< ONU returned END RESPONSE PDU with error: Writing file to NVS */
915 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_END_CRC_ERROR = 26, /**< ONU returned END RESPONSE PDU with error: CRC32 error */
916 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_END_PARAM_ERROR = 27, /**< ONU returned END RESPONSE PDU with error: Parameter error */
917 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_END_CMD_UNSUPPORTED = 28, /**< ONU returned END RESPONSE PDU with error: Command not supported */
918 BCMOLT_EPON_ONU_UPGRADE_ONU_RESPONSE_CODE_LAST = 29 /**< Last. */
919} bcmolt_epon_onu_upgrade_onu_response_code;
920
921/** EPON ONU Upgrade Return Code.
922 */
923typedef enum bcmolt_epon_onu_upgrade_return_code
924{
925 BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE__BEGIN = 0,
926 BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_SUCCESS = 0, /**< Command succeeded. */
927 BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_ONU_RESPONSE_TIMEOUT = 1, /**< ONU did not respond to a message within the time specified by the "Write request timeout". */
928 BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_ONU_ERROR_RESPONSE = 2, /**< Error found in the ONU response. */
929 BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_SYNC_ERROR = 3, /**< Block number sync error. */
930 BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_COMMIT_FAILED = 4, /**< Commit software command failed. */
931 BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_INTERNAL = 5, /**< Internal error. */
932 BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE_PARSE_ERROR = 6, /**< Unable to parse the ONU response. */
933 BCMOLT_EPON_ONU_UPGRADE_RETURN_CODE__NUM_OF /**< Number of enum entries, not an entry itself. */
934} bcmolt_epon_onu_upgrade_return_code;
935
936/** Indicates whether links are unprotected, protected standby, or protected
937 * working.
938 */
939typedef enum bcmolt_epon_protection_state
940{
941 BCMOLT_EPON_PROTECTION_STATE__BEGIN = 0,
942 BCMOLT_EPON_PROTECTION_STATE_UNPROTECTED = 0, /**< The link is not a member of a protection pair. */
943 BCMOLT_EPON_PROTECTION_STATE_PROTECTED_STANDBY = 1, /**< The link is a member of a protection pair in the standby role. */
944 BCMOLT_EPON_PROTECTION_STATE_PROTECTED_WORKING = 2, /**< The link is a member of a protection pair in the working role. */
945 BCMOLT_EPON_PROTECTION_STATE__NUM_OF /**< Number of enum entries, not an entry itself. */
946} bcmolt_epon_protection_state;
947
948/** EPON Protection Switching Type.
949 */
950typedef enum bcmolt_epon_protection_switching_type
951{
952 BCMOLT_EPON_PROTECTION_SWITCHING_TYPE__BEGIN = 0,
953 BCMOLT_EPON_PROTECTION_SWITCHING_TYPE_NO_PROTECTION_SWTICHING = 0, /**< No protection swtiching. */
954 BCMOLT_EPON_PROTECTION_SWITCHING_TYPE_LINE_CARD_PROTECTION_SWITCHING= 1, /**< Line card protection switching. */
955 BCMOLT_EPON_PROTECTION_SWITCHING_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
956} bcmolt_epon_protection_switching_type;
957
958/** Protection Switching Detection Options.
959 */
960typedef enum bcmolt_protection_switching_detection_options
961{
962 BCMOLT_PROTECTION_SWITCHING_DETECTION_OPTIONS_NONE = 0,
963 BCMOLT_PROTECTION_SWITCHING_DETECTION_OPTIONS_STANDBY_LOS_DETECTION = 0x0001 /**< Standby LOS detection. */
964} bcmolt_protection_switching_detection_options;
965
966/** Criteria for logical link selection during re-ranging process
967 */
968typedef enum bcmolt_epon_protection_switching_reranging_options
969{
970 BCMOLT_EPON_PROTECTION_SWITCHING_RERANGING_OPTIONS_RERANGE_NONE = 1, /**< No re-ranging at all */
971 BCMOLT_EPON_PROTECTION_SWITCHING_RERANGING_OPTIONS_RERANGE_SINGLE_LOGICAL_LINK = 2, /**< Pick minimum logical links to re-range */
972 BCMOLT_EPON_PROTECTION_SWITCHING_RERANGING_OPTIONS_RERANGE_ALL_LOGICAL_LINKS = 4 /**< Individually re-range all logical links */
973} bcmolt_epon_protection_switching_reranging_options;
974
975/** GPIO pin number.
976 */
977typedef enum bcmolt_gpio_pin
978{
979 BCMOLT_GPIO_PIN_PIN0 = 0, /**< GPIO pin 0. */
980 BCMOLT_GPIO_PIN_PIN1 = 1, /**< GPIO pin 1. */
981 BCMOLT_GPIO_PIN_PIN2 = 2, /**< GPIO pin 2. */
982 BCMOLT_GPIO_PIN_PIN3 = 3, /**< GPIO pin 3. */
983 BCMOLT_GPIO_PIN_PIN4 = 4, /**< GPIO pin 4. */
984 BCMOLT_GPIO_PIN_PIN5 = 5, /**< GPIO pin 5. */
985 BCMOLT_GPIO_PIN_PIN6 = 6, /**< GPIO pin 6. */
986 BCMOLT_GPIO_PIN_PIN7 = 7, /**< GPIO pin 7. */
987 BCMOLT_GPIO_PIN_PIN8 = 8, /**< GPIO pin 8. */
988 BCMOLT_GPIO_PIN_PIN9 = 9, /**< GPIO pin 9. */
989 BCMOLT_GPIO_PIN_PIN10 = 10, /**< GPIO pin 10. */
990 BCMOLT_GPIO_PIN_PIN11 = 11, /**< GPIO pin 11. */
991 BCMOLT_GPIO_PIN_PIN12 = 12, /**< GPIO pin 12. */
992 BCMOLT_GPIO_PIN_PIN13 = 13, /**< GPIO pin 13. */
993 BCMOLT_GPIO_PIN_PIN14 = 14, /**< GPIO pin 14. */
994 BCMOLT_GPIO_PIN_PIN15 = 15, /**< GPIO pin 15. */
995 BCMOLT_GPIO_PIN_PIN16 = 16, /**< GPIO pin 16. */
996 BCMOLT_GPIO_PIN_PIN17 = 17, /**< GPIO pin 17. */
997 BCMOLT_GPIO_PIN_PIN18 = 18, /**< GPIO pin 18. */
998 BCMOLT_GPIO_PIN_PIN19 = 19, /**< GPIO pin 19. */
999 BCMOLT_GPIO_PIN_PIN20 = 20, /**< GPIO pin 20. */
1000 BCMOLT_GPIO_PIN_PIN21 = 21, /**< GPIO pin 21. */
1001 BCMOLT_GPIO_PIN_PIN22 = 22, /**< GPIO pin 22. */
1002 BCMOLT_GPIO_PIN_PIN23 = 23, /**< GPIO pin 23. */
1003 BCMOLT_GPIO_PIN_PIN24 = 24, /**< GPIO pin 24. */
1004 BCMOLT_GPIO_PIN_PIN25 = 25, /**< GPIO pin 25. */
1005 BCMOLT_GPIO_PIN_PIN26 = 26, /**< GPIO pin 26. */
1006 BCMOLT_GPIO_PIN_PIN27 = 27, /**< GPIO pin 27. */
1007 BCMOLT_GPIO_PIN_PIN28 = 28, /**< GPIO pin 28. */
1008 BCMOLT_GPIO_PIN_PIN29 = 29, /**< GPIO pin 29. */
1009 BCMOLT_GPIO_PIN_PIN30 = 30, /**< GPIO pin 30. */
1010 BCMOLT_GPIO_PIN_PIN31 = 31, /**< GPIO pin 31. */
1011 BCMOLT_GPIO_PIN_PIN32 = 32, /**< GPIO pin 32. */
1012 BCMOLT_GPIO_PIN_PIN33 = 33, /**< GPIO pin 33. */
1013 BCMOLT_GPIO_PIN_PIN34 = 34, /**< GPIO pin 34. */
1014 BCMOLT_GPIO_PIN_PIN35 = 35, /**< GPIO pin 35. */
1015 BCMOLT_GPIO_PIN_PIN36 = 36, /**< GPIO pin 36. */
1016 BCMOLT_GPIO_PIN_PIN37 = 37, /**< GPIO pin 37. */
1017 BCMOLT_GPIO_PIN_PIN38 = 38, /**< GPIO pin 38. */
1018 BCMOLT_GPIO_PIN_PIN39 = 39, /**< GPIO pin 39. */
1019 BCMOLT_GPIO_PIN_PIN40 = 40, /**< GPIO pin 40. */
1020 BCMOLT_GPIO_PIN_PIN41 = 41, /**< GPIO pin 41. */
1021 BCMOLT_GPIO_PIN_PIN42 = 42, /**< GPIO pin 42. */
1022 BCMOLT_GPIO_PIN_PIN43 = 43, /**< GPIO pin 43. */
1023 BCMOLT_GPIO_PIN_PIN44 = 44, /**< GPIO pin 44. */
1024 BCMOLT_GPIO_PIN_PIN45 = 45, /**< GPIO pin 45. */
1025 BCMOLT_GPIO_PIN_PIN46 = 46, /**< GPIO pin 46. */
1026 BCMOLT_GPIO_PIN_PIN47 = 47, /**< GPIO pin 47. */
1027 BCMOLT_GPIO_PIN_PIN48 = 48, /**< GPIO pin 48. */
1028 BCMOLT_GPIO_PIN_PIN49 = 49, /**< GPIO pin 49. */
1029 BCMOLT_GPIO_PIN_PIN50 = 50, /**< GPIO pin 50. */
1030 BCMOLT_GPIO_PIN_PIN51 = 51, /**< GPIO pin 51. */
1031 BCMOLT_GPIO_PIN_PIN52 = 52, /**< GPIO pin 52. */
1032 BCMOLT_GPIO_PIN_PIN53 = 53, /**< GPIO pin 53. */
1033 BCMOLT_GPIO_PIN_PIN54 = 54, /**< GPIO pin 54. */
1034 BCMOLT_GPIO_PIN_PIN55 = 55, /**< GPIO pin 55. */
1035 BCMOLT_GPIO_PIN_PIN56 = 56, /**< GPIO pin 56. */
1036 BCMOLT_GPIO_PIN_PIN57 = 57, /**< GPIO pin 57. */
1037 BCMOLT_GPIO_PIN_PIN58 = 58, /**< GPIO pin 58. */
1038 BCMOLT_GPIO_PIN_PIN59 = 59, /**< GPIO pin 59. */
1039 BCMOLT_GPIO_PIN_PIN60 = 60, /**< GPIO pin 60. */
1040 BCMOLT_GPIO_PIN_PIN61 = 61, /**< GPIO pin 61. */
1041 BCMOLT_GPIO_PIN_PIN62 = 62, /**< GPIO pin 62. */
1042 BCMOLT_GPIO_PIN_PIN63 = 63, /**< GPIO pin 63. */
1043 BCMOLT_GPIO_PIN_PIN64 = 64, /**< GPIO pin 64. */
1044 BCMOLT_GPIO_PIN_PIN65 = 65, /**< GPIO pin 65. */
1045 BCMOLT_GPIO_PIN_PIN66 = 66, /**< GPIO pin 66. */
1046 BCMOLT_GPIO_PIN_PIN67 = 67, /**< GPIO pin 67. */
1047 BCMOLT_GPIO_PIN_PIN68 = 68, /**< GPIO pin 68. */
1048 BCMOLT_GPIO_PIN_PIN69 = 69, /**< GPIO pin 69. */
1049 BCMOLT_GPIO_PIN_PIN70 = 70, /**< GPIO pin 70. */
1050 BCMOLT_GPIO_PIN_PIN71 = 71, /**< GPIO pin 71. */
1051 BCMOLT_GPIO_PIN_PIN72 = 72, /**< GPIO pin 72. */
1052 BCMOLT_GPIO_PIN_PIN73 = 73, /**< GPIO pin 73. */
1053 BCMOLT_GPIO_PIN_PIN74 = 74, /**< GPIO pin 74. */
1054 BCMOLT_GPIO_PIN_PIN75 = 75, /**< GPIO pin 75. */
1055 BCMOLT_GPIO_PIN_PIN76 = 76, /**< GPIO pin 76. */
1056 BCMOLT_GPIO_PIN_PIN77 = 77, /**< GPIO pin 77. */
1057 BCMOLT_GPIO_PIN_PIN78 = 78, /**< GPIO pin 78. */
1058 BCMOLT_GPIO_PIN_PIN79 = 79, /**< GPIO pin 79. */
1059 BCMOLT_GPIO_PIN_PIN80 = 80, /**< GPIO pin 80. */
1060 BCMOLT_GPIO_PIN_PIN81 = 81, /**< GPIO pin 81. */
1061 BCMOLT_GPIO_PIN_PIN82 = 82, /**< GPIO pin 82. */
1062 BCMOLT_GPIO_PIN_PIN83 = 83, /**< GPIO pin 83. */
1063 BCMOLT_GPIO_PIN_PIN84 = 84, /**< GPIO pin 84. */
1064 BCMOLT_GPIO_PIN_PIN85 = 85, /**< GPIO pin 85. */
1065 BCMOLT_GPIO_PIN_PIN86 = 86, /**< GPIO pin 86. */
1066 BCMOLT_GPIO_PIN_PIN87 = 87, /**< GPIO pin 87. */
1067 BCMOLT_GPIO_PIN_PIN88 = 88, /**< GPIO pin 88. */
1068 BCMOLT_GPIO_PIN_PIN89 = 89, /**< GPIO pin 89. */
1069 BCMOLT_GPIO_PIN_PIN90 = 90, /**< GPIO pin 90. */
1070 BCMOLT_GPIO_PIN_PIN91 = 91, /**< GPIO pin 91. */
1071 BCMOLT_GPIO_PIN_PIN92 = 92, /**< GPIO pin 92. */
1072 BCMOLT_GPIO_PIN_PIN93 = 93, /**< GPIO pin 93. */
1073 BCMOLT_GPIO_PIN_PIN94 = 94, /**< GPIO pin 94. */
1074 BCMOLT_GPIO_PIN_PIN95 = 95, /**< GPIO pin 95. */
1075 BCMOLT_GPIO_PIN_PIN96 = 96, /**< GPIO pin 96. */
1076 BCMOLT_GPIO_PIN_PIN97 = 97, /**< GPIO pin 97. */
1077 BCMOLT_GPIO_PIN_PIN98 = 98, /**< GPIO pin 98. */
1078 BCMOLT_GPIO_PIN_PIN99 = 99, /**< GPIO pin 99. */
1079 BCMOLT_GPIO_PIN_PIN100 = 100, /**< GPIO pin 100. */
1080 BCMOLT_GPIO_PIN_PIN101 = 101, /**< GPIO pin 101. */
1081 BCMOLT_GPIO_PIN_PIN102 = 102, /**< GPIO pin 102. */
1082 BCMOLT_GPIO_PIN_PIN103 = 103, /**< GPIO pin 103. */
1083 BCMOLT_GPIO_PIN_PIN104 = 104, /**< GPIO pin 104. */
1084 BCMOLT_GPIO_PIN_PIN105 = 105, /**< GPIO pin 105. */
1085 BCMOLT_GPIO_PIN_PIN106 = 106, /**< GPIO pin 106. */
1086 BCMOLT_GPIO_PIN_UNCONFIGURED = 255 /**< Unconfigured GPIO pin. */
1087} bcmolt_gpio_pin;
1088
1089/** GPIO Polarity.
1090 */
1091typedef enum bcmolt_gpio_polarity
1092{
1093 BCMOLT_GPIO_POLARITY__BEGIN = 0,
1094 BCMOLT_GPIO_POLARITY_ACTIVE_LOW = 0, /**< Active Low. */
1095 BCMOLT_GPIO_POLARITY_ACTIVE_HIGH = 1, /**< Active High. */
1096 BCMOLT_GPIO_POLARITY__NUM_OF /**< Number of enum entries, not an entry itself. */
1097} bcmolt_gpio_polarity;
1098
1099/** External IRQ.
1100 */
1101typedef enum bcmolt_ext_irq
1102{
1103 BCMOLT_EXT_IRQ_EXT_IRQ0 = 0, /**< External IRQ 0. */
1104 BCMOLT_EXT_IRQ_EXT_IRQ1 = 1, /**< External IRQ 1. */
1105 BCMOLT_EXT_IRQ_EXT_IRQ2 = 2, /**< External IRQ 2. */
1106 BCMOLT_EXT_IRQ_EXT_IRQ3 = 3, /**< External IRQ 3. */
1107 BCMOLT_EXT_IRQ_EXT_IRQ4 = 4, /**< External IRQ 4. */
1108 BCMOLT_EXT_IRQ_EXT_IRQ5 = 5, /**< External IRQ 5. */
1109 BCMOLT_EXT_IRQ_UNCONFIGURED = 255 /**< Unconfigured external IRQ. */
1110} bcmolt_ext_irq;
1111
1112/** Flush MAC table option.
1113 */
1114typedef enum bcmolt_flush_mac_table_option
1115{
1116 BCMOLT_FLUSH_MAC_TABLE_OPTION__BEGIN = 0,
1117 BCMOLT_FLUSH_MAC_TABLE_OPTION_ALL = 0, /**< All. */
1118 BCMOLT_FLUSH_MAC_TABLE_OPTION_PER_VID = 1, /**< PER VID. */
1119 BCMOLT_FLUSH_MAC_TABLE_OPTION_PER_FLOW = 2, /**< PER flow. */
1120 BCMOLT_FLUSH_MAC_TABLE_OPTION_VID_PLUS_FLOW = 3, /**< VID+flow. */
1121 BCMOLT_FLUSH_MAC_TABLE_OPTION__NUM_OF /**< Number of enum entries, not an entry itself. */
1122} bcmolt_flush_mac_table_option;
1123
1124/** Frequency adjustment direction
1125 */
1126typedef enum bcmolt_frequency_adjustment_direction
1127{
1128 BCMOLT_FREQUENCY_ADJUSTMENT_DIRECTION__BEGIN = 0,
1129 BCMOLT_FREQUENCY_ADJUSTMENT_DIRECTION_LOWER = 0, /**< Lower */
1130 BCMOLT_FREQUENCY_ADJUSTMENT_DIRECTION_HIGHER = 1, /**< Higher */
1131 BCMOLT_FREQUENCY_ADJUSTMENT_DIRECTION__NUM_OF /**< Number of enum entries, not an entry itself. */
1132} bcmolt_frequency_adjustment_direction;
1133
1134/** GEM port ID direction.
1135 */
1136typedef enum bcmolt_gem_port_direction
1137{
1138 BCMOLT_GEM_PORT_DIRECTION__BEGIN = 0,
1139 BCMOLT_GEM_PORT_DIRECTION_DOWNSTREAM = 0, /**< downstream port ID. */
1140 BCMOLT_GEM_PORT_DIRECTION_UPSTREAM = 1, /**< upstream port ID. */
1141 BCMOLT_GEM_PORT_DIRECTION_BIDIRECTIONAL = 2, /**< bidirectional port ID. */
1142 BCMOLT_GEM_PORT_DIRECTION__NUM_OF /**< Number of enum entries, not an entry itself. */
1143} bcmolt_gem_port_direction;
1144
1145/** GEM port type.
1146 */
1147typedef enum bcmolt_gem_port_type
1148{
1149 BCMOLT_GEM_PORT_TYPE__BEGIN = 0,
1150 BCMOLT_GEM_PORT_TYPE_UNICAST = 0, /**< unicast port ID. */
1151 BCMOLT_GEM_PORT_TYPE_MULTICAST = 1, /**< multicast port ID. */
1152 BCMOLT_GEM_PORT_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
1153} bcmolt_gem_port_type;
1154
1155/** GEM port operation.
1156 */
1157typedef enum bcmolt_gem_port_operation
1158{
1159 BCMOLT_GEM_PORT_OPERATION__BEGIN = 0,
1160 BCMOLT_GEM_PORT_OPERATION_ACTIVATE = 0, /**< Activate. */
1161 BCMOLT_GEM_PORT_OPERATION_DEACTIVATE = 1, /**< Deactivate. */
1162 BCMOLT_GEM_PORT_OPERATION__NUM_OF /**< Number of enum entries, not an entry itself. */
1163} bcmolt_gem_port_operation;
1164
1165/** GPIO PIN Direction.
1166 */
1167typedef enum bcmolt_gpio_pin_dir
1168{
1169 BCMOLT_GPIO_PIN_DIR__BEGIN = 0,
1170 BCMOLT_GPIO_PIN_DIR_INPUT = 0, /**< Input. */
1171 BCMOLT_GPIO_PIN_DIR_OUTPUT = 1, /**< Output. */
1172 BCMOLT_GPIO_PIN_DIR__NUM_OF /**< Number of enum entries, not an entry itself. */
1173} bcmolt_gpio_pin_dir;
1174
1175/** GPIO Value.
1176 */
1177typedef enum bcmolt_gpio_value
1178{
1179 BCMOLT_GPIO_VALUE__BEGIN = 0,
1180 BCMOLT_GPIO_VALUE_CLEAR = 0, /**< Clear. */
1181 BCMOLT_GPIO_VALUE_SET = 1, /**< Set. */
1182 BCMOLT_GPIO_VALUE__NUM_OF /**< Number of enum entries, not an entry itself. */
1183} bcmolt_gpio_value;
1184
1185/** GPON GEM Port State.
1186 */
1187typedef enum bcmolt_gpon_gem_port_state
1188{
1189 BCMOLT_GPON_GEM_PORT_STATE__BEGIN = 0,
1190 BCMOLT_GPON_GEM_PORT_STATE_NOT_CONFIGURED = 0, /**< not configured. */
1191 BCMOLT_GPON_GEM_PORT_STATE_INACTIVE = 1, /**< inactive. */
1192 BCMOLT_GPON_GEM_PORT_STATE_PROCESSING = 2, /**< processing. */
1193 BCMOLT_GPON_GEM_PORT_STATE_ACTIVE = 3, /**< active. */
1194 BCMOLT_GPON_GEM_PORT_STATE__NUM_OF /**< Number of enum entries, not an entry itself. */
1195} bcmolt_gpon_gem_port_state;
1196
1197/** Key exchange mode.
1198 */
1199typedef enum bcmolt_key_exchange_mode
1200{
1201 BCMOLT_KEY_EXCHANGE_MODE__BEGIN = 0,
1202 BCMOLT_KEY_EXCHANGE_MODE_NORMAL = 0, /**< Normal. */
1203 BCMOLT_KEY_EXCHANGE_MODE_ENHANCED = 1, /**< Enhanced. */
1204 BCMOLT_KEY_EXCHANGE_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
1205} bcmolt_key_exchange_mode;
1206
1207/** OMCI Device ID.
1208 */
1209typedef enum bcmolt_omci_device_id
1210{
1211 BCMOLT_OMCI_DEVICE_ID_BASELINE = 10, /**< Baseline. */
1212 BCMOLT_OMCI_DEVICE_ID_EXTENDED = 11 /**< Extended. */
1213} bcmolt_omci_device_id;
1214
1215/** GPON ONU Upgrade Return Code.
1216 */
1217typedef enum bcmolt_gpon_onu_upgrade_return_code
1218{
1219 BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE__BEGIN = 0,
1220 BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_SUCCESS = 0, /**< Command succeeded. */
1221 BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_ONU_RESPONSE_TIMEOUT = 1, /**< ONU did not respond to a message within the time specified by the "Write request timeout". */
1222 BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_ONU_ERROR_RESPONSE = 2, /**< Error found in the ONU response. */
1223 BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_TCI_MISMATCH = 3, /**< Transaction ID mismatch. */
1224 BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_GET_IMAGE_FAILED = 4, /**< Get Image Info command failed. */
1225 BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_ACTIVATION_FAILED = 5, /**< Activation software command failed. */
1226 BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE_INTERNAL = 6, /**< Internal error. */
1227 BCMOLT_GPON_ONU_UPGRADE_RETURN_CODE__NUM_OF /**< Number of enum entries, not an entry itself. */
1228} bcmolt_gpon_onu_upgrade_return_code;
1229
1230/** G.988 OMCI Result Code.
1231 */
1232typedef enum bcmolt_omci_result_code
1233{
1234 BCMOLT_OMCI_RESULT_CODE__BEGIN = 0,
1235 BCMOLT_OMCI_RESULT_CODE_NO_ERROR = 0, /**< Command processed successfully. */
1236 BCMOLT_OMCI_RESULT_CODE_PROCESSING_ERROR = 1, /**< Command processing error. */
1237 BCMOLT_OMCI_RESULT_CODE_NOT_SUPPORTED = 2, /**< Command not supported, or not applicable for End software download message. */
1238 BCMOLT_OMCI_RESULT_CODE_PARAMETER_ERROR = 3, /**< Parameter error, or not applicable for End software download message. */
1239 BCMOLT_OMCI_RESULT_CODE_UNKNOWN_ENTITY = 4, /**< Unknown managed entity. */
1240 BCMOLT_OMCI_RESULT_CODE_UNKNOWN_INSTANCE = 5, /**< Unknown managed entity instance. */
1241 BCMOLT_OMCI_RESULT_CODE_DEVICE_BUSY = 6, /**< Device busy. */
1242 BCMOLT_OMCI_RESULT_CODE__NUM_OF /**< Number of enum entries, not an entry itself. */
1243} bcmolt_omci_result_code;
1244
1245/** ONU state.
1246 */
1247typedef enum bcmolt_onu_state
1248{
1249 BCMOLT_ONU_STATE_NOT_CONFIGURED = 0, /**< not_configured. */
1250 BCMOLT_ONU_STATE_INACTIVE = 1, /**< inactive. */
1251 BCMOLT_ONU_STATE_ACTIVE = 2, /**< active. */
1252 BCMOLT_ONU_STATE_ACTIVE_STANDBY = 3, /**< active standby. */
1253 BCMOLT_ONU_STATE_DISABLED = 4, /**< disabled. */
1254 BCMOLT_ONU_STATE_AWAKE_FREE = 5, /**< ONU is active, but power management is enabled. ONU is allowed to enter low power states at its own discretion. */
1255 BCMOLT_ONU_STATE_PROCESSING = 7, /**< processing. */
1256 BCMOLT_ONU_STATE_LOW_POWER_DOZE = 8, /**< ONU has entered the Doze low power state. */
1257 BCMOLT_ONU_STATE_LOW_POWER_SLEEP = 9, /**< ONU has entered the Sleep low power state. */
1258 BCMOLT_ONU_STATE_LOW_POWER_WATCH = 10, /**< ONU has entered the Watchful Sleep low power state. */
1259 BCMOLT_ONU_STATE_UNAWARE = 11 /**< ONU is added to data base but no bws is saved */
1260} bcmolt_onu_state;
1261
1262/** rssi location sign.
1263 */
1264typedef enum bcmolt_rssi_location_sign
1265{
1266 BCMOLT_RSSI_LOCATION_SIGN__BEGIN = 0,
1267 BCMOLT_RSSI_LOCATION_SIGN_BEFORE = 0, /**< before. */
1268 BCMOLT_RSSI_LOCATION_SIGN_AFTER = 1, /**< after. */
1269 BCMOLT_RSSI_LOCATION_SIGN__NUM_OF /**< Number of enum entries, not an entry itself. */
1270} bcmolt_rssi_location_sign;
1271
1272/** ONU post discovery mode.
1273 */
1274typedef enum bcmolt_onu_post_discovery_mode
1275{
1276 BCMOLT_ONU_POST_DISCOVERY_MODE__BEGIN = 0,
1277 BCMOLT_ONU_POST_DISCOVERY_MODE_NONE = 0, /**< none. */
1278 BCMOLT_ONU_POST_DISCOVERY_MODE_ACTIVATE = 1, /**< activate. */
1279 BCMOLT_ONU_POST_DISCOVERY_MODE_DISABLE = 2, /**< disable. */
1280 BCMOLT_ONU_POST_DISCOVERY_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
1281} bcmolt_onu_post_discovery_mode;
1282
1283/** Image transfer status.
1284 */
1285typedef enum bcmolt_image_transfer_status
1286{
1287 BCMOLT_IMAGE_TRANSFER_STATUS__BEGIN = 0,
1288 BCMOLT_IMAGE_TRANSFER_STATUS_SUCCESS = 0, /**< Success. */
1289 BCMOLT_IMAGE_TRANSFER_STATUS_MEMORY_ALLOCATION_FAILURE = 1, /**< Memory allocation failure. */
1290 BCMOLT_IMAGE_TRANSFER_STATUS_UNSUPPORTED_FILE_TYPE = 2, /**< Unsupported file type. */
1291 BCMOLT_IMAGE_TRANSFER_STATUS_CRC_ERROR = 3, /**< CRC checksum error. */
1292 BCMOLT_IMAGE_TRANSFER_STATUS_BLOCK_OUT_OF_SYNC = 4, /**< Block out of sync. */
1293 BCMOLT_IMAGE_TRANSFER_STATUS_INTERNAL_ERROR = 5, /**< Internal error. */
1294 BCMOLT_IMAGE_TRANSFER_STATUS_INVALID_STATE = 6, /**< Invalid state. */
1295 BCMOLT_IMAGE_TRANSFER_STATUS_PREMATURE_TERMINATION = 7, /**< Premature termination. */
1296 BCMOLT_IMAGE_TRANSFER_STATUS_ACK_TIMEOUT = 8, /**< ACK timeout. */
1297 BCMOLT_IMAGE_TRANSFER_STATUS__NUM_OF /**< Number of enum entries, not an entry itself. */
1298} bcmolt_image_transfer_status;
1299
1300/** iwf mode.
1301 */
1302typedef enum bcmolt_iwf_mode
1303{
1304 BCMOLT_IWF_MODE__BEGIN = 0,
1305 BCMOLT_IWF_MODE_DIRECT_MAPPING_MODE = 0, /**< DIRECT MAPPING MODE. */
1306 BCMOLT_IWF_MODE_PER_FLOW_MODE = 1, /**< PER FLOW MODE. */
1307 BCMOLT_IWF_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
1308} bcmolt_iwf_mode;
1309
1310/** log file id.
1311 */
1312typedef enum bcmolt_log_file_id
1313{
1314 BCMOLT_LOG_FILE_ID__BEGIN = 0,
1315 BCMOLT_LOG_FILE_ID_SRAM = 0, /**< SRAM. */
1316 BCMOLT_LOG_FILE_ID_DDR = 1, /**< DDR. */
1317 BCMOLT_LOG_FILE_ID__NUM_OF /**< Number of enum entries, not an entry itself. */
1318} bcmolt_log_file_id;
1319
1320/** log level.
1321 */
1322typedef enum bcmolt_log_level
1323{
1324 BCMOLT_LOG_LEVEL__BEGIN = 0,
1325 BCMOLT_LOG_LEVEL_NO_LOG = 0, /**< no log. */
1326 BCMOLT_LOG_LEVEL_FATAL = 1, /**< fatal. */
1327 BCMOLT_LOG_LEVEL_ERROR = 2, /**< error. */
1328 BCMOLT_LOG_LEVEL_WARNING = 3, /**< warning. */
1329 BCMOLT_LOG_LEVEL_INFO = 4, /**< info. */
1330 BCMOLT_LOG_LEVEL_DEBUG = 5, /**< debug. */
1331 BCMOLT_LOG_LEVEL__NUM_OF /**< Number of enum entries, not an entry itself. */
1332} bcmolt_log_level;
1333
1334/** log style.
1335 */
1336typedef enum bcmolt_log_style
1337{
1338 BCMOLT_LOG_STYLE__BEGIN = 0,
1339 BCMOLT_LOG_STYLE_NORMAL = 0, /**< normal. */
1340 BCMOLT_LOG_STYLE_BOLD = 1, /**< bold. */
1341 BCMOLT_LOG_STYLE_UNDERLINE = 2, /**< underline. */
1342 BCMOLT_LOG_STYLE_BLINK = 3, /**< blink. */
1343 BCMOLT_LOG_STYLE_REVERSE_VIDEO = 4, /**< reverse video. */
1344 BCMOLT_LOG_STYLE__NUM_OF /**< Number of enum entries, not an entry itself. */
1345} bcmolt_log_style;
1346
1347/** log type.
1348 */
1349typedef enum bcmolt_log_type
1350{
1351 BCMOLT_LOG_TYPE__BEGIN = 0,
1352 BCMOLT_LOG_TYPE_NONE = 0, /**< dont show log */
1353 BCMOLT_LOG_TYPE_PRINT = 1, /**< print. */
1354 BCMOLT_LOG_TYPE_SAVE = 2, /**< save. */
1355 BCMOLT_LOG_TYPE_BOTH = 3, /**< both. */
1356 BCMOLT_LOG_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
1357} bcmolt_log_type;
1358
1359/** MAC table miss fallback.
1360 */
1361typedef enum bcmolt_mac_table_miss_fallback
1362{
1363 BCMOLT_MAC_TABLE_MISS_FALLBACK__BEGIN = 0,
1364 BCMOLT_MAC_TABLE_MISS_FALLBACK_DROP = 0, /**< The packet is dropped. */
1365 BCMOLT_MAC_TABLE_MISS_FALLBACK_DEFAULT_FLOW = 1, /**< The packet is forwarded with the provisioned default flow ID. */
1366 BCMOLT_MAC_TABLE_MISS_FALLBACK_VID = 2, /**< The packet is forwarded with a flow ID equal to its VID. */
1367 BCMOLT_MAC_TABLE_MISS_FALLBACK__NUM_OF /**< Number of enum entries, not an entry itself. */
1368} bcmolt_mac_table_miss_fallback;
1369
1370/** MAC table Learning mode.
1371 */
1372typedef enum bcmolt_mac_table_learning_mode
1373{
1374 BCMOLT_MAC_TABLE_LEARNING_MODE__BEGIN = 0,
1375 BCMOLT_MAC_TABLE_LEARNING_MODE_NORMAL = 0, /**< Normal mode: upstream traffic that matches on MAC/VID but doesn't match on flow ID is still allowed to pass. */
1376 BCMOLT_MAC_TABLE_LEARNING_MODE_MOVE = 1, /**< Normal mode: upstream traffic that matches on MAC/VID but doesn't match on flow ID is considered to be a MAC move condition. */
1377 BCMOLT_MAC_TABLE_LEARNING_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
1378} bcmolt_mac_table_learning_mode;
1379
1380/** Mapping tag method.
1381 */
1382typedef enum bcmolt_mapping_tag_method
1383{
1384 BCMOLT_MAPPING_TAG_METHOD_OUTER_VID = 1, /**< Outer VID. */
1385 BCMOLT_MAPPING_TAG_METHOD_INNER_VID = 0 /**< Inner VID. */
1386} bcmolt_mapping_tag_method;
1387
1388/** NNI Connection.
1389 */
1390typedef enum bcmolt_nni_connection
1391{
1392 BCMOLT_NNI_CONNECTION__BEGIN = 0,
1393 BCMOLT_NNI_CONNECTION_PRIMARY = 0, /**< Primary. */
1394 BCMOLT_NNI_CONNECTION_BACKUP = 1, /**< Backup. */
1395 BCMOLT_NNI_CONNECTION__NUM_OF /**< Number of enum entries, not an entry itself. */
1396} bcmolt_nni_connection;
1397
1398/** Trivalent.
1399 */
1400typedef enum bcmolt_trivalent
1401{
1402 BCMOLT_TRIVALENT__BEGIN = 0,
1403 BCMOLT_TRIVALENT_FALSE = 0, /**< False. */
1404 BCMOLT_TRIVALENT_TRUE = 1, /**< True. */
1405 BCMOLT_TRIVALENT_NOT_APPLICABLE = 2, /**< Not Applicable. */
1406 BCMOLT_TRIVALENT__NUM_OF /**< Number of enum entries, not an entry itself. */
1407} bcmolt_trivalent;
1408
1409/** ODN Class.
1410 */
1411typedef enum bcmolt_odn_class
1412{
1413 BCMOLT_ODN_CLASS_N1 = 0, /**< N1. */
1414 BCMOLT_ODN_CLASS_N2 = 1, /**< N2. */
1415 BCMOLT_ODN_CLASS_E1 = 3, /**< E1. */
1416 BCMOLT_ODN_CLASS_E2 = 4 /**< E2. */
1417} bcmolt_odn_class;
1418
1419/** OMCI Port ID operation.
1420 */
1421typedef enum bcmolt_omci_port_id_operation
1422{
1423 BCMOLT_OMCI_PORT_ID_OPERATION__BEGIN = 0,
1424 BCMOLT_OMCI_PORT_ID_OPERATION_CONFIGURE = 0, /**< configure. */
1425 BCMOLT_OMCI_PORT_ID_OPERATION_REMOVE = 1, /**< remove. */
1426 BCMOLT_OMCI_PORT_ID_OPERATION__NUM_OF /**< Number of enum entries, not an entry itself. */
1427} bcmolt_omci_port_id_operation;
1428
1429/** ONU operation.
1430 */
1431typedef enum bcmolt_onu_operation
1432{
1433 BCMOLT_ONU_OPERATION__BEGIN = 0,
1434 BCMOLT_ONU_OPERATION_INACTIVE = 0, /**< Inactive. */
1435 BCMOLT_ONU_OPERATION_ACTIVE = 1, /**< Active. */
1436 BCMOLT_ONU_OPERATION_DISABLE = 2, /**< Disable. */
1437 BCMOLT_ONU_OPERATION_ENABLE = 3, /**< Enable. */
1438 BCMOLT_ONU_OPERATION_ACTIVE_STANDBY = 4, /**< Active Standby. */
1439 BCMOLT_ONU_OPERATION_AWAKE_FREE = 5, /**< Transitions the ONU to an active state with power management enabled. Allowed in inactive, disabled, and active states. */
1440 BCMOLT_ONU_OPERATION__NUM_OF /**< Number of enum entries, not an entry itself. */
1441} bcmolt_onu_operation;
1442
1443/** ONU Power level.
1444 */
1445typedef enum bcmolt_onu_power_level
1446{
1447 BCMOLT_ONU_POWER_LEVEL__BEGIN = 0,
1448 BCMOLT_ONU_POWER_LEVEL_INCREASE = 0, /**< increase. */
1449 BCMOLT_ONU_POWER_LEVEL_DECREASE = 1, /**< decrease. */
1450 BCMOLT_ONU_POWER_LEVEL__NUM_OF /**< Number of enum entries, not an entry itself. */
1451} bcmolt_onu_power_level;
1452
1453/** TC layer protocol.
1454 */
1455typedef enum bcmolt_tc_protocol
1456{
1457 BCMOLT_TC_PROTOCOL__BEGIN = 0,
1458 BCMOLT_TC_PROTOCOL_TC_LAYER_PROTOCOL_G_987_P_3 = 0, /**< TC layer protocol G.987.3 */
1459 BCMOLT_TC_PROTOCOL_TC_LAYER_PROTOCOL_G_989_P_3 = 1, /**< TC layer protocol G.989.3 */
1460 BCMOLT_TC_PROTOCOL__NUM_OF /**< Number of enum entries, not an entry itself. */
1461} bcmolt_tc_protocol;
1462
1463/** Packet Injection Error.
1464 */
1465typedef enum bcmolt_packet_injection_error
1466{
1467 BCMOLT_PACKET_INJECTION_ERROR__BEGIN = 0,
1468 BCMOLT_PACKET_INJECTION_ERROR_GEM_PORT_NOT_ACTIVE = 0, /**< GEM Port Not Active. */
1469 BCMOLT_PACKET_INJECTION_ERROR__NUM_OF /**< Number of enum entries, not an entry itself. */
1470} bcmolt_packet_injection_error;
1471
1472/** packet type.
1473 */
1474typedef enum bcmolt_packet_type
1475{
1476 BCMOLT_PACKET_TYPE__BEGIN = 0,
1477 BCMOLT_PACKET_TYPE_CPU = 0, /**< CPU. */
1478 BCMOLT_PACKET_TYPE_OMCI = 1, /**< OMCI. */
1479 BCMOLT_PACKET_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
1480} bcmolt_packet_type;
1481
1482/** Password authentication fail reason.
1483 */
1484typedef enum bcmolt_password_authentication_fail_reason
1485{
1486 BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON__BEGIN = 0,
1487 BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_NONE = 0, /**< none. */
1488 BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_PASSWORD_INCONSISTENCY = 1, /**< Password inconsistency. */
1489 BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_PASSWORD_MISMATCH = 2, /**< Password mismatch. */
1490 BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_PASSWORD_AUTHENTICATION_TIMEOUT = 3, /**< Password authentication timeout. */
1491 BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_ONU_ALARM = 4, /**< onu alarm. */
1492 BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_LOS_EVENT = 5, /**< los event. */
1493 BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON_DISABLE_EVENT = 6, /**< disable event. */
1494 BCMOLT_PASSWORD_AUTHENTICATION_FAIL_REASON__NUM_OF /**< Number of enum entries, not an entry itself. */
1495} bcmolt_password_authentication_fail_reason;
1496
1497/** Polarity.
1498 */
1499typedef enum bcmolt_polarity
1500{
1501 BCMOLT_POLARITY__BEGIN = 0,
1502 BCMOLT_POLARITY_LOW = 0, /**< Low. */
1503 BCMOLT_POLARITY_HIGH = 1, /**< High. */
1504 BCMOLT_POLARITY__NUM_OF /**< Number of enum entries, not an entry itself. */
1505} bcmolt_polarity;
1506
1507/** Polling Interval.
1508 */
1509typedef enum bcmolt_polling_interval
1510{
1511 BCMOLT_POLLING_INTERVAL_POLLING_DISABLED = 0, /**< No polling gates will be sent to this LLID. */
1512 BCMOLT_POLLING_INTERVAL_US_500 = 500, /**< 500 us. */
1513 BCMOLT_POLLING_INTERVAL_MS_1 = 1000, /**< 1 ms. */
1514 BCMOLT_POLLING_INTERVAL_MS_2 = 2000, /**< 2 ms. */
1515 BCMOLT_POLLING_INTERVAL_MS_4 = 4000, /**< 4 ms. */
1516 BCMOLT_POLLING_INTERVAL_MS_8 = 8000, /**< 8 ms. */
1517 BCMOLT_POLLING_INTERVAL_MS_16 = 16000, /**< 16 ms. */
1518 BCMOLT_POLLING_INTERVAL_AUTOMATIC = 2147483647L /**< Firmware will choose an appropriate value. */
1519} bcmolt_polling_interval;
1520
1521/** PON Operation.
1522 */
1523typedef enum bcmolt_pon_operation
1524{
1525 BCMOLT_PON_OPERATION__BEGIN = 0,
1526 BCMOLT_PON_OPERATION_INACTIVE = 0, /**< Inactive. */
1527 BCMOLT_PON_OPERATION_ACTIVE_WORKING = 1, /**< Active Working. */
1528 BCMOLT_PON_OPERATION_ACTIVE_STANDBY = 2, /**< Active Standby. */
1529 BCMOLT_PON_OPERATION__NUM_OF /**< Number of enum entries, not an entry itself. */
1530} bcmolt_pon_operation;
1531
1532/** PON Protection Switching Options.
1533 */
1534typedef enum bcmolt_pon_protection_switching_options
1535{
1536 BCMOLT_PON_PROTECTION_SWITCHING_OPTIONS_NONE = 0,
1537 BCMOLT_PON_PROTECTION_SWITCHING_OPTIONS_SWIFT_POPUP = 0x0001, /**< If set, switchovers will utilize the Swift_POPUP and Ranging_Adjustment PLOAMs added in G.984 annex D. */
1538 BCMOLT_PON_PROTECTION_SWITCHING_OPTIONS_DEBUG_FAST_RANGING = 0x0002 /**< If set, ONU EQDs will not be calculated as part of a switchover. Instead, each ONU's new EQD will be equal to its last EQD when the PON NI was in active-working state. This provides a fast switchover, but can only be used if the trunk distance never changes. */
1539} bcmolt_pon_protection_switching_options;
1540
1541/** PON state.
1542 */
1543typedef enum bcmolt_pon_state
1544{
1545 BCMOLT_PON_STATE__BEGIN = 0,
1546 BCMOLT_PON_STATE_INACTIVE = 0, /**< Inactive. */
1547 BCMOLT_PON_STATE_PROCESSING = 1, /**< Processing. */
1548 BCMOLT_PON_STATE_ACTIVE_WORKING = 2, /**< Active Working. */
1549 BCMOLT_PON_STATE_ACTIVE_STANDBY = 3, /**< Active Standby. */
1550 BCMOLT_PON_STATE__NUM_OF /**< Number of enum entries, not an entry itself. */
1551} bcmolt_pon_state;
1552
1553/** power levelling control.
1554 */
1555typedef enum bcmolt_power_levelling_control
1556{
1557 BCMOLT_POWER_LEVELLING_CONTROL__BEGIN = 0,
1558 BCMOLT_POWER_LEVELLING_CONTROL_DIRECT = 0, /**< Direct. */
1559 BCMOLT_POWER_LEVELLING_CONTROL_DECREASE = 1, /**< Decrease. */
1560 BCMOLT_POWER_LEVELLING_CONTROL_INCREASE = 2, /**< Increase. */
1561 BCMOLT_POWER_LEVELLING_CONTROL__NUM_OF /**< Number of enum entries, not an entry itself. */
1562} bcmolt_power_levelling_control;
1563
1564/** The reason that a power management state change occurred.
1565 */
1566typedef enum bcmolt_power_management_transition_reason
1567{
1568 BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON__BEGIN = 0,
1569 BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_POWER_MANAGEMENT_ENABLED = 0, /**< Host requested power management enable. */
1570 BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_POWER_MANAGEMENT_DISABLED = 1, /**< Host requested power management disable. */
1571 BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_SLEEP_REQUEST_AWAKE = 2, /**< Received sleep request PLOAM from ONU. */
1572 BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_SLEEP_REQUEST_DOZE = 3, /**< Received sleep request PLOAM from ONU. */
1573 BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_SLEEP_REQUEST_SLEEP = 4, /**< Received sleep request PLOAM from ONU. */
1574 BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_SLEEP_REQUEST_WATCH = 5, /**< Received sleep request PLOAM from ONU. */
1575 BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_TERI_EXPIRED = 6, /**< Teri timer expired. It has been too long since we have received an upstream burst from an ONU in a low power state. */
1576 BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_TALERTED_EXPIRED = 7, /**< Talerted timer expired. It has been too long since the ONU was requested to wake up with no idication that it has complied. */
1577 BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON_ALARM = 8, /**< A LOSi/LOFi/LOBi alarm has ben raised against the ONU. */
1578 BCMOLT_POWER_MANAGEMENT_TRANSITION_REASON__NUM_OF /**< Number of enum entries, not an entry itself. */
1579} bcmolt_power_management_transition_reason;
1580
1581/** PRBS Polynomial.
1582 */
1583typedef enum bcmolt_prbs_polynomial
1584{
1585 BCMOLT_PRBS_POLYNOMIAL__BEGIN = 0,
1586 BCMOLT_PRBS_POLYNOMIAL_PRBS_7 = 0, /**< PRBS_7. */
1587 BCMOLT_PRBS_POLYNOMIAL_PRBS_9 = 1, /**< PRBS_9. */
1588 BCMOLT_PRBS_POLYNOMIAL_PRBS_11 = 2, /**< PRBS_11. */
1589 BCMOLT_PRBS_POLYNOMIAL_PRBS_15 = 3, /**< PRBS_15. */
1590 BCMOLT_PRBS_POLYNOMIAL_PRBS_23 = 4, /**< PRBS_23. */
1591 BCMOLT_PRBS_POLYNOMIAL_PRBS_31 = 5, /**< PRBS_31. */
1592 BCMOLT_PRBS_POLYNOMIAL_PRBS_58 = 6, /**< PRBS_58. */
1593 BCMOLT_PRBS_POLYNOMIAL__NUM_OF /**< Number of enum entries, not an entry itself. */
1594} bcmolt_prbs_polynomial;
1595
1596/** PRBS checker mode.
1597 */
1598typedef enum bcmolt_prbs_checker_mode
1599{
1600 BCMOLT_PRBS_CHECKER_MODE__BEGIN = 0,
1601 BCMOLT_PRBS_CHECKER_MODE_SELF_SYNC = 0, /**< Self-sync mode w/ hysteresis. PRBS seed register is continuously seeded with previous received bits. This mode results in faster locking, but bit errors are counted multiple times (often by 3x). */
1602 BCMOLT_PRBS_CHECKER_MODE_INITIAL_SEED_MODE = 1, /**< Initial seed mode w/ hysteresis. PRBS seed registers is seeded with previous received bits only till PRBS lock is acquired and then they run locally independently from the received data until the checker goes out of PRBS lock. */
1603 BCMOLT_PRBS_CHECKER_MODE_INITIAL_SEED_MODE_2 = 2, /**< Initial seed mode w/o hysteresis. Similar to mode 1 above except once locked it stays locked until PRBS is disabled. */
1604 BCMOLT_PRBS_CHECKER_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
1605} bcmolt_prbs_checker_mode;
1606
1607/** PRBS Lock State.
1608 */
1609typedef enum bcmolt_prbs_lock_state
1610{
1611 BCMOLT_PRBS_LOCK_STATE__BEGIN = 0,
1612 BCMOLT_PRBS_LOCK_STATE_UNLOCKED = 0, /**< PRBS Checker is out of LOCK state and state machine is searching for a LOCK */
1613 BCMOLT_PRBS_LOCK_STATE_LOCKED = 1, /**< PRBS Checker is in LOCKED state */
1614 BCMOLT_PRBS_LOCK_STATE__NUM_OF /**< Number of enum entries, not an entry itself. */
1615} bcmolt_prbs_lock_state;
1616
1617/** Possible Raman Mitigation settings. Raman mitigation injects pseudo-noise
1618 * into the 1G downstream data path to reduce interference with analog video
1619 * signals on other wavelengths.
1620 */
1621typedef enum bcmolt_raman_mitigation_mode
1622{
1623 BCMOLT_RAMAN_MITIGATION_MODE__BEGIN = 0,
1624 BCMOLT_RAMAN_MITIGATION_MODE_DISABLED = 0, /**< No packets are generated. */
1625 BCMOLT_RAMAN_MITIGATION_MODE_RANDOM = 1, /**< Pseudo-random packets are generated. */
1626 BCMOLT_RAMAN_MITIGATION_MODE_FIXED = 2, /**< Fixed background packets are generated. */
1627 BCMOLT_RAMAN_MITIGATION_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
1628} bcmolt_raman_mitigation_mode;
1629
1630/** Ranging fail reason.
1631 */
1632typedef enum bcmolt_ranging_fail_reason
1633{
1634 BCMOLT_RANGING_FAIL_REASON__BEGIN = 0,
1635 BCMOLT_RANGING_FAIL_REASON_NONE = 0, /**< none. */
1636 BCMOLT_RANGING_FAIL_REASON_RANGING_ACK_TIMEOUT = 1, /**< ranging ack timeout. */
1637 BCMOLT_RANGING_FAIL_REASON_PLOAM_DATA_MISMATCH = 2, /**< ploam data mismatch. */
1638 BCMOLT_RANGING_FAIL_REASON_PLOAM_TYPE_MISMATCH = 3, /**< ploam type mismatch. */
1639 BCMOLT_RANGING_FAIL_REASON_PLOAM_ONU_ID_MISMATCH = 4, /**< ploam onu id mismatch. */
1640 BCMOLT_RANGING_FAIL_REASON_DRIFT_EXCEEDED = 5, /**< drift exceeded. */
1641 BCMOLT_RANGING_FAIL_REASON_NO_PLOAM_RECEIVED = 6, /**< no ploam received. */
1642 BCMOLT_RANGING_FAIL_REASON_LOS = 7, /**< los. */
1643 BCMOLT_RANGING_FAIL_REASON_ALARMS = 8, /**< alarms. */
1644 BCMOLT_RANGING_FAIL_REASON__NUM_OF /**< Number of enum entries, not an entry itself. */
1645} bcmolt_ranging_fail_reason;
1646
1647/** Registration Behavior.
1648 */
1649typedef enum bcmolt_registration_behavior
1650{
1651 BCMOLT_REGISTRATION_BEHAVIOR__BEGIN = 0,
1652 BCMOLT_REGISTRATION_BEHAVIOR_AUTOMATIC = 0, /**< All links will be allowed to register. */
1653 BCMOLT_REGISTRATION_BEHAVIOR_NOTIFY_UNKNOWN = 1, /**< Links that are not pre-provisioned will not be allowed to register. A maskable indication will be sent to the host which can then decide if the link should be provisioned. */
1654 BCMOLT_REGISTRATION_BEHAVIOR__NUM_OF /**< Number of enum entries, not an entry itself. */
1655} bcmolt_registration_behavior;
1656
1657/** request registration fail reason.
1658 */
1659typedef enum bcmolt_request_registration_fail_reason
1660{
1661 BCMOLT_REQUEST_REGISTRATION_FAIL_REASON__BEGIN = 0,
1662 BCMOLT_REQUEST_REGISTRATION_FAIL_REASON_NONE = 0, /**< None. */
1663 BCMOLT_REQUEST_REGISTRATION_FAIL_REASON_REGISTRATION_PLOAM_TIMEOUT = 1, /**< registration ploam timeout. */
1664 BCMOLT_REQUEST_REGISTRATION_FAIL_REASON_ONU_ALARM = 2, /**< onu alarm. */
1665 BCMOLT_REQUEST_REGISTRATION_FAIL_REASON_DEACTIVATION = 3, /**< deactivation. */
1666 BCMOLT_REQUEST_REGISTRATION_FAIL_REASON_DISABLE = 4, /**< disable. */
1667 BCMOLT_REQUEST_REGISTRATION_FAIL_REASON__NUM_OF /**< Number of enum entries, not an entry itself. */
1668} bcmolt_request_registration_fail_reason;
1669
1670/** Result.
1671 */
1672typedef enum bcmolt_result
1673{
1674 BCMOLT_RESULT__BEGIN = 0,
1675 BCMOLT_RESULT_SUCCESS = 0, /**< Success. */
1676 BCMOLT_RESULT_FAIL = 1, /**< Fail. */
1677 BCMOLT_RESULT__NUM_OF /**< Number of enum entries, not an entry itself. */
1678} bcmolt_result;
1679
1680/** Type of the rogue detection algorithm.
1681 */
1682typedef enum bcmolt_rogue_detection_algorithm_type
1683{
1684 BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE__BEGIN = 0,
1685 BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_EARLY_ROGUE_DETECTION = 0, /**< Firmware-driven periodic process which runs in the background to detect the potential rogue ONU. */
1686 BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_SPECIAL_MAP = 1, /**< Use the user-provisioned special bandwidth map until it is told to stop. */
1687 BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE_EXTENDED_GUARD_TIME = 2, /**< Destructive tool that extends the guard time on all bursts. */
1688 BCMOLT_ROGUE_DETECTION_ALGORITHM_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
1689} bcmolt_rogue_detection_algorithm_type;
1690
1691/** Rogue ONU detection measurement type.
1692 */
1693typedef enum bcmolt_rogue_detection_window
1694{
1695 BCMOLT_ROGUE_DETECTION_WINDOW__BEGIN = 0,
1696 BCMOLT_ROGUE_DETECTION_WINDOW_SILENT_WINDOW = 0, /**< Silent window measurement. */
1697 BCMOLT_ROGUE_DETECTION_WINDOW_CUT_OFF_WINDOW = 1, /**< Cut-off window measurement. */
1698 BCMOLT_ROGUE_DETECTION_WINDOW__NUM_OF /**< Number of enum entries, not an entry itself. */
1699} bcmolt_rogue_detection_window;
1700
1701/** Status of the rogue ONU detection result.
1702 */
1703typedef enum bcmolt_rogue_measurement_result
1704{
1705 BCMOLT_ROGUE_MEASUREMENT_RESULT__BEGIN = 0,
1706 BCMOLT_ROGUE_MEASUREMENT_RESULT_RSSI_COMPLETE = 0, /**< Rogue ONU RSSI detection activity completed. */
1707 BCMOLT_ROGUE_MEASUREMENT_RESULT_NOT_PERFORMED = 1, /**< Rogue ONU detection not performed. */
1708 BCMOLT_ROGUE_MEASUREMENT_RESULT_ROGUE_CYCLE_STOP = 2, /**< Rogue ONU cycle detection stopped. */
1709 BCMOLT_ROGUE_MEASUREMENT_RESULT_RSSI_ERROR = 3, /**< There was an error in the RSSI measurement. */
1710 BCMOLT_ROGUE_MEASUREMENT_RESULT_RSSI_NOT_COMPLETE = 4, /**< The RSSI mesaurement was not complete. */
1711 BCMOLT_ROGUE_MEASUREMENT_RESULT__NUM_OF /**< Number of enum entries, not an entry itself. */
1712} bcmolt_rogue_measurement_result;
1713
1714/** Rogue Scan Indication Status .
1715 */
1716typedef enum bcmolt_rogue_scan_status
1717{
1718 BCMOLT_ROGUE_SCAN_STATUS__BEGIN = 0,
1719 BCMOLT_ROGUE_SCAN_STATUS_COMPLETE = 0, /**< Rogue Scan was completed. */
1720 BCMOLT_ROGUE_SCAN_STATUS_LLID_STATE_IS_BAD = 1, /**< llid in targeted scan was an active link. */
1721 BCMOLT_ROGUE_SCAN_STATUS_LLID_IS_OOR = 2, /**< llid in targeted scan is out of range for pon. */
1722 BCMOLT_ROGUE_SCAN_STATUS_SCAN_ERR_NORES = 3, /**< There were no available LIM indexes for the scan.. */
1723 BCMOLT_ROGUE_SCAN_STATUS_SCAN_ERR_INTERNAL = 4, /**< An internal software was encountered.. */
1724 BCMOLT_ROGUE_SCAN_STATUS__NUM_OF /**< Number of enum entries, not an entry itself. */
1725} bcmolt_rogue_scan_status;
1726
1727/** RSSI measurement fail reason.
1728 */
1729typedef enum bcmolt_rssi_measurement_fail_reason
1730{
1731 BCMOLT_RSSI_MEASUREMENT_FAIL_REASON__BEGIN = 0,
1732 BCMOLT_RSSI_MEASUREMENT_FAIL_REASON_NONE = 0, /**< None. */
1733 BCMOLT_RSSI_MEASUREMENT_FAIL_REASON_NO_DELIMITER = 1, /**< No delimiter. */
1734 BCMOLT_RSSI_MEASUREMENT_FAIL_REASON_NO_ACCESS = 2, /**< No access. */
1735 BCMOLT_RSSI_MEASUREMENT_FAIL_REASON__NUM_OF /**< Number of enum entries, not an entry itself. */
1736} bcmolt_rssi_measurement_fail_reason;
1737
1738/** secure mutual authentication fail reason.
1739 */
1740typedef enum bcmolt_secure_mutual_authentication_fail_reason
1741{
1742 BCMOLT_SECURE_MUTUAL_AUTHENTICATION_FAIL_REASON__BEGIN = 0,
1743 BCMOLT_SECURE_MUTUAL_AUTHENTICATION_FAIL_REASON_TIMEOUT = 0, /**< secure mutual authentication timeout. */
1744 BCMOLT_SECURE_MUTUAL_AUTHENTICATION_FAIL_REASON__NUM_OF /**< Number of enum entries, not an entry itself. */
1745} bcmolt_secure_mutual_authentication_fail_reason;
1746
1747/** serdes ranging mode.
1748 */
1749typedef enum bcmolt_serdes_ranging_mode
1750{
1751 BCMOLT_SERDES_RANGING_MODE__BEGIN = 0,
1752 BCMOLT_SERDES_RANGING_MODE_ED_MODE = 0, /**< ed mode. */
1753 BCMOLT_SERDES_RANGING_MODE_BCDR_RESET_MODE = 1, /**< BCDR reset mode. */
1754 BCMOLT_SERDES_RANGING_MODE_FAST_MODE = 2, /**< fast mode. */
1755 BCMOLT_SERDES_RANGING_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
1756} bcmolt_serdes_ranging_mode;
1757
1758/** SerDes Instance.
1759 */
1760typedef enum bcmolt_serdes_instance
1761{
1762 BCMOLT_SERDES_INSTANCE__BEGIN = 0,
1763 BCMOLT_SERDES_INSTANCE_INSTANCE_0 = 0, /**< Primary Serdes, or 10G SerDes for EPON pon_ids. */
1764 BCMOLT_SERDES_INSTANCE_INSTANCE_1 = 1, /**< Secondary Serdes, or 1G/2G SerDes for EPON pon_ids. */
1765 BCMOLT_SERDES_INSTANCE__NUM_OF /**< Number of enum entries, not an entry itself. */
1766} bcmolt_serdes_instance;
1767
1768/** Shaper Mode.
1769 */
1770typedef enum bcmolt_shaper_mode
1771{
1772 BCMOLT_SHAPER_MODE__BEGIN = 0,
1773 BCMOLT_SHAPER_MODE_LAYER_1 = 0, /**< Shapers will count IPG, preamble, frame, and FCS */
1774 BCMOLT_SHAPER_MODE_LAYER_2 = 1, /**< Shapers will count frame and FCS. */
1775 BCMOLT_SHAPER_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
1776} bcmolt_shaper_mode;
1777
1778/** All possible statistic alarm trigger conditions.
1779 */
1780typedef enum bcmolt_stat_condition_type
1781{
1782 BCMOLT_STAT_CONDITION_TYPE__BEGIN = 0,
1783 BCMOLT_STAT_CONDITION_TYPE_NONE = 0, /**< The alarm is disabled. */
1784 BCMOLT_STAT_CONDITION_TYPE_RATE_THRESHOLD = 1, /**< The alarm is triggered if the stats delta value between samples crosses the configured threshold boundary. */
1785 BCMOLT_STAT_CONDITION_TYPE_RATE_RANGE = 2, /**< The alarm is triggered if the stats delta value between samples deviates from the configured range. */
1786 BCMOLT_STAT_CONDITION_TYPE_VALUE_THRESHOLD = 3, /**< The alarm is raised if the stats sample value becomes greater than this level. The alarm is cleared when the host read the stats. */
1787 BCMOLT_STAT_CONDITION_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
1788} bcmolt_stat_condition_type;
1789
1790/** Switch over type c onu state.
1791 */
1792typedef enum bcmolt_switch_over_type_c_onu_state
1793{
1794 BCMOLT_SWITCH_OVER_TYPE_C_ONU_STATE__BEGIN = 0,
1795 BCMOLT_SWITCH_OVER_TYPE_C_ONU_STATE_ACTIVE = 0, /**< Active. */
1796 BCMOLT_SWITCH_OVER_TYPE_C_ONU_STATE_ACTIVE_STANDBY = 1, /**< Active standby. */
1797 BCMOLT_SWITCH_OVER_TYPE_C_ONU_STATE__NUM_OF /**< Number of enum entries, not an entry itself. */
1798} bcmolt_switch_over_type_c_onu_state;
1799
1800/** System working mode (GPON/EPON etc.)
1801 */
1802typedef enum bcmolt_system_mode
1803{
1804 BCMOLT_SYSTEM_MODE__BEGIN = 0,
1805 BCMOLT_SYSTEM_MODE_GPON__16_X = 0, /**< 16x GPON */
1806 BCMOLT_SYSTEM_MODE_GPON__8_X = 1, /**< 8x GPON */
1807 BCMOLT_SYSTEM_MODE_GPON__4_X = 2, /**< 4x GPON */
1808 BCMOLT_SYSTEM_MODE_EPON__16_X = 3, /**< 16x EPON */
1809 BCMOLT_SYSTEM_MODE_XGPON_1__8_X = 4, /**< 8x XGPON1 */
1810 BCMOLT_SYSTEM_MODE_EPON__8_X_COEXISTENCE_TDMA = 5, /**< 8x EPON coexistence TDMA */
1811 BCMOLT_SYSTEM_MODE_AE_8_X = 6, /**< 8x 10G Active Ethernet */
1812 BCMOLT_SYSTEM_MODE_EPON__8_X_10_G = 7, /**< 8x EPON (10/10 only) */
1813 BCMOLT_SYSTEM_MODE_GPON_8_XGPON_4_X_COEXISTENCE = 8, /**< 8x GPON 4x XGPON coexistence */
1814 BCMOLT_SYSTEM_MODE_EPON__8_X = 9, /**< 8x EPON (1/1 only) */
1815 BCMOLT_SYSTEM_MODE_EPON__4_X = 10, /**< 4x EPON (1/1 only) */
1816 BCMOLT_SYSTEM_MODE_EPON__4_X_COEXISTENCE_TDMA = 11, /**< 4x EPON coexistence TDMA */
1817 BCMOLT_SYSTEM_MODE_EPON__4_X_10_G = 12, /**< 4x EPON (10/10 only) */
1818 BCMOLT_SYSTEM_MODE_XGS__2_X_10_G = 13, /**< 2x XGS-PON (10/10) */
1819 BCMOLT_SYSTEM_MODE_NGPON2__2_X_10_G = 14, /**< 2x NGPON2 (10/10) */
1820 BCMOLT_SYSTEM_MODE_NGPON2__8_X_2_P_5_G = 15, /**< 8x NGPON2 (10/2.5) */
1821 BCMOLT_SYSTEM_MODE_XGPON_1__4_X = 16, /**< 4x XGPON1 */
1822 BCMOLT_SYSTEM_MODE_EPON__2_X_10_G = 17, /**< 2x EPON (10/10 only) */
1823 BCMOLT_SYSTEM_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
1824} bcmolt_system_mode;
1825
1826/** US operating wavelength bands.
1827 */
1828typedef enum bcmolt_us_operating_wavelength_bands
1829{
1830 BCMOLT_US_OPERATING_WAVELENGTH_BANDS_EXPANDED_SPECTRUM_WIDE_BAND = 0, /**< Expanded spectrum wide band option */
1831 BCMOLT_US_OPERATING_WAVELENGTH_BANDS_EXPANDED_SPECTRUM_REDUCED_BAND = 1, /**< Expanded spectrum reduced band option */
1832 BCMOLT_US_OPERATING_WAVELENGTH_BANDS_EXPANDED_SPECTRUM_NARROW_BAND = 2, /**< Expanded spectrum reduced band option */
1833 BCMOLT_US_OPERATING_WAVELENGTH_BANDS_SHARED_SPECTRUM_WIDE_BAND = 16, /**< Shared spectrum wide band option */
1834 BCMOLT_US_OPERATING_WAVELENGTH_BANDS_SHARED_SPECTRUM_REDUCED_BAND = 17, /**< Shared spectrum reduced band option */
1835 BCMOLT_US_OPERATING_WAVELENGTH_BANDS_SHARED_SPECTRUM_NARROW_BAND = 18 /**< Shared spectrum wide narrow option */
1836} bcmolt_us_operating_wavelength_bands;
1837
1838/** Traffic resume result.
1839 */
1840typedef enum bcmolt_traffic_resume_result
1841{
1842 BCMOLT_TRAFFIC_RESUME_RESULT__BEGIN = 0,
1843 BCMOLT_TRAFFIC_RESUME_RESULT_SUCCESS = 0, /**< Success. */
1844 BCMOLT_TRAFFIC_RESUME_RESULT_FAILURE = 1, /**< Failure. */
1845 BCMOLT_TRAFFIC_RESUME_RESULT_SUSPECTED_LOS = 2, /**< suspected_los. */
1846 BCMOLT_TRAFFIC_RESUME_RESULT__NUM_OF /**< Number of enum entries, not an entry itself. */
1847} bcmolt_traffic_resume_result;
1848
1849/** trx calibration trigger.
1850 */
1851typedef enum bcmolt_trx_calibration_trigger
1852{
1853 BCMOLT_TRX_CALIBRATION_TRIGGER__BEGIN = 0,
1854 BCMOLT_TRX_CALIBRATION_TRIGGER_EPON_STAT = 0, /**< epon stat. */
1855 BCMOLT_TRX_CALIBRATION_TRIGGER_GPON_BCDR_RESET = 1, /**< gpon bcdr reset. */
1856 BCMOLT_TRX_CALIBRATION_TRIGGER_GPON_TRX_RESET = 2, /**< gpon trx reset. */
1857 BCMOLT_TRX_CALIBRATION_TRIGGER_GPON_TRX_ED = 3, /**< gpon trx ed. */
1858 BCMOLT_TRX_CALIBRATION_TRIGGER_GPON_RSSI = 4, /**< gpon rssi. */
1859 BCMOLT_TRX_CALIBRATION_TRIGGER_GPON_EOB = 5, /**< gpon eob. */
1860 BCMOLT_TRX_CALIBRATION_TRIGGER_GPON_RANGING = 6, /**< gpon ranging. */
1861 BCMOLT_TRX_CALIBRATION_TRIGGER_SERDES_BURST_EN = 7, /**< serdes burst en. */
1862 BCMOLT_TRX_CALIBRATION_TRIGGER__NUM_OF /**< Number of enum entries, not an entry itself. */
1863} bcmolt_trx_calibration_trigger;
1864
1865/** trx calibration trigger position.
1866 */
1867typedef enum bcmolt_trx_calibration_trigger_position
1868{
1869 BCMOLT_TRX_CALIBRATION_TRIGGER_POSITION__BEGIN = 0,
1870 BCMOLT_TRX_CALIBRATION_TRIGGER_POSITION_RISING = 0, /**< rising edge. */
1871 BCMOLT_TRX_CALIBRATION_TRIGGER_POSITION_FALLING = 1, /**< falling edge. */
1872 BCMOLT_TRX_CALIBRATION_TRIGGER_POSITION__NUM_OF /**< Number of enum entries, not an entry itself. */
1873} bcmolt_trx_calibration_trigger_position;
1874
1875/** trx calibration window mode.
1876 */
1877typedef enum bcmolt_trx_calibration_window_mode
1878{
1879 BCMOLT_TRX_CALIBRATION_WINDOW_MODE__BEGIN = 0,
1880 BCMOLT_TRX_CALIBRATION_WINDOW_MODE_RANGING = 0, /**< ranging. */
1881 BCMOLT_TRX_CALIBRATION_WINDOW_MODE_NON_RANGING = 1, /**< non ranging. */
1882 BCMOLT_TRX_CALIBRATION_WINDOW_MODE_BOTH = 2, /**< ranging and non ranging. */
1883 BCMOLT_TRX_CALIBRATION_WINDOW_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
1884} bcmolt_trx_calibration_window_mode;
1885
1886/** TRX type.
1887 */
1888typedef enum bcmolt_trx_type
1889{
1890 BCMOLT_TRX_TYPE__BEGIN = 0,
1891 BCMOLT_TRX_TYPE_SPS_43_48_H_HP_CDE_SD_2013 = 0, /**< SourcePhotonics - SPS-43-48H-HP-CDE-SD Reset is required BEFORE, TRX is Squelched. till 2013 rev. */
1892 BCMOLT_TRX_TYPE_SOG_4321_PSGB = 1, /**< Superxon B+ type */
1893 BCMOLT_TRX_TYPE_LTE_3680_M = 2, /**< LIGENT LTE3680M. */
1894 BCMOLT_TRX_TYPE_SOURCE_PHOTONICS = 3, /**< Source Photonics. */
1895 BCMOLT_TRX_TYPE_LTE_3680_P_TYPE_C_PLUS = 4, /**< LIGENT LTE3680P_TYPE_C_PLUS. */
1896 BCMOLT_TRX_TYPE_ANY = 5, /**< Any. */
1897 BCMOLT_TRX_TYPE_ANY_RESET_GUARD = 6, /**< Any reset guard. */
1898 BCMOLT_TRX_TYPE_ANY_RESET_PREAMBLE = 7, /**< Any reset preamble. */
1899 BCMOLT_TRX_TYPE_WTD_RTXM_167_526_CPLUS = 8, /**< WTD RTXM167 526 C+. */
1900 BCMOLT_TRX_TYPE_WTD_RTXM_167_522_BPLUS = 9, /**< WTD RTXM167 522 B+. */
1901 BCMOLT_TRX_TYPE_LTE_3680_P_BC = 10, /**< LIGENT HiSense LTE3680P-BC. */
1902 BCMOLT_TRX_TYPE_SOGQ_4321_PSGB_C_PLUS = 11, /**< Superxon C+ type */
1903 BCMOLT_TRX_TYPE_WTD_RTXM167_521 = 12, /**< WTD RTXM167_521. */
1904 BCMOLT_TRX_TYPE_LTE3678 = 13, /**< LTE3678. */
1905 BCMOLT_TRX_TYPE_SOGP_4321_PSGA = 14, /**< Superxon SOGP4321-PSGA. */
1906 BCMOLT_TRX_TYPE_GPON_GENERAL_1 = 15, /**< gpon general 1. */
1907 BCMOLT_TRX_TYPE_GPON_GENERAL_2 = 16, /**< gpon general 2. */
1908 BCMOLT_TRX_TYPE_GPON_GENERAL_3 = 17, /**< gpon general 3. */
1909 BCMOLT_TRX_TYPE_GPON_GENERAL_4 = 18, /**< gpon general 4. */
1910 BCMOLT_TRX_TYPE_GPON_GENERAL_5 = 19, /**< gpon general 5. */
1911 BCMOLT_TRX_TYPE_GPON_GENERAL_6 = 20, /**< gpon general 6. */
1912 BCMOLT_TRX_TYPE_GPON_GENERAL_7 = 21, /**< gpon general 7. */
1913 BCMOLT_TRX_TYPE_GPON_GENERAL_8 = 22, /**< gpon general 8. */
1914 BCMOLT_TRX_TYPE_GPON_GENERAL_9 = 23, /**< gpon general 9. */
1915 BCMOLT_TRX_TYPE_GPON_GENERAL_10 = 24, /**< gpon general 10. */
1916 BCMOLT_TRX_TYPE_GPON_GENERAL_11 = 25, /**< gpon general 11. */
1917 BCMOLT_TRX_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
1918} bcmolt_trx_type;
1919
1920/** Tune in fail reason.
1921 */
1922typedef enum bcmolt_tune_in_fail_reason
1923{
1924 BCMOLT_TUNE_IN_FAIL_REASON__BEGIN = 0,
1925 BCMOLT_TUNE_IN_FAIL_REASON_NONE = 0, /**< none. */
1926 BCMOLT_TUNE_IN_FAIL_REASON_NO_TUNING_RESPONSE_PLOAM_RECEIVED = 1, /**< No tuning response ploam received. */
1927 BCMOLT_TUNE_IN_FAIL_REASON_ONU_ACTIVATION_FAILED = 2, /**< onu activation failed. */
1928 BCMOLT_TUNE_IN_FAIL_REASON__NUM_OF /**< Number of enum entries, not an entry itself. */
1929} bcmolt_tune_in_fail_reason;
1930
1931/** Tune out fail reason.
1932 */
1933typedef enum bcmolt_tune_out_fail_reason
1934{
1935 BCMOLT_TUNE_OUT_FAIL_REASON__BEGIN = 0,
1936 BCMOLT_TUNE_OUT_FAIL_REASON_NONE = 0, /**< none. */
1937 BCMOLT_TUNE_OUT_FAIL_REASON_NACK_PLOAM_RECEIVED = 1, /**< NACK ploam received. */
1938 BCMOLT_TUNE_OUT_FAIL_REASON_NO_TUNING_RESPONSE_PLOAM_RECEIVED = 2, /**< no tuning response ploam received. */
1939 BCMOLT_TUNE_OUT_FAIL_REASON_TSOURCE_TIMEOUT = 3, /**< tsource timeout. */
1940 BCMOLT_TUNE_OUT_FAIL_REASON_ROLLBACK_REQUEST = 4, /**< rollback request. */
1941 BCMOLT_TUNE_OUT_FAIL_REASON__NUM_OF /**< Number of enum entries, not an entry itself. */
1942} bcmolt_tune_out_fail_reason;
1943
1944/** UART baud rate.
1945 */
1946typedef enum bcmolt_uart_baudrate
1947{
1948 BCMOLT_UART_BAUDRATE__BEGIN = 0,
1949 BCMOLT_UART_BAUDRATE_UART_RATE_4800 = 0, /**< UART rate 4800. */
1950 BCMOLT_UART_BAUDRATE_UART_RATE_9600 = 1, /**< UART rate 9600. */
1951 BCMOLT_UART_BAUDRATE_UART_RATE_14400 = 2, /**< UART rate 14400. */
1952 BCMOLT_UART_BAUDRATE_UART_RATE_19200 = 3, /**< UART rate 19200. */
1953 BCMOLT_UART_BAUDRATE_UART_RATE_38400 = 4, /**< UART rate 38400. */
1954 BCMOLT_UART_BAUDRATE_UART_RATE_57600 = 5, /**< UART rate 57600. */
1955 BCMOLT_UART_BAUDRATE_UART_RATE_115200 = 6, /**< UART rate 115200. */
1956 BCMOLT_UART_BAUDRATE_UART_RATE_230400 = 7, /**< UART rate 230400. */
1957 BCMOLT_UART_BAUDRATE_UART_RATE_380400 = 8, /**< UART rate 380400. */
1958 BCMOLT_UART_BAUDRATE_UART_RATE_460800 = 9, /**< UART rate 460800. */
1959 BCMOLT_UART_BAUDRATE_UART_RATE_921600 = 10, /**< UART rate 921600. */
1960 BCMOLT_UART_BAUDRATE__NUM_OF /**< Number of enum entries, not an entry itself. */
1961} bcmolt_uart_baudrate;
1962
1963/** us_gem_port_destination.
1964 */
1965typedef enum bcmolt_us_gem_port_destination
1966{
1967 BCMOLT_US_GEM_PORT_DESTINATION__BEGIN = 0,
1968 BCMOLT_US_GEM_PORT_DESTINATION_DATA = 0, /**< data. */
1969 BCMOLT_US_GEM_PORT_DESTINATION_CPU = 1, /**< cpu. */
1970 BCMOLT_US_GEM_PORT_DESTINATION_OMCI = 2, /**< omci. */
1971 BCMOLT_US_GEM_PORT_DESTINATION__NUM_OF /**< Number of enum entries, not an entry itself. */
1972} bcmolt_us_gem_port_destination;
1973
1974/** US VLAN action.
1975 */
1976typedef enum bcmolt_us_vlan_action
1977{
1978 BCMOLT_US_VLAN_ACTION_ADD = 1, /**< Add. */
1979 BCMOLT_US_VLAN_ACTION_TRANSPARENT = 0 /**< Transparent. */
1980} bcmolt_us_vlan_action;
1981
1982/** VLAN to flow mapping method.
1983 */
1984typedef enum bcmolt_vlan_to_flow_mapping_method
1985{
1986 BCMOLT_VLAN_TO_FLOW_MAPPING_METHOD__BEGIN = 0,
1987 BCMOLT_VLAN_TO_FLOW_MAPPING_METHOD_VID = 0, /**< VID. */
1988 BCMOLT_VLAN_TO_FLOW_MAPPING_METHOD_MACPLUSVID = 1, /**< MAC+VID. */
1989 BCMOLT_VLAN_TO_FLOW_MAPPING_METHOD__NUM_OF /**< Number of enum entries, not an entry itself. */
1990} bcmolt_vlan_to_flow_mapping_method;
1991
1992/** XGPON GEM Port State.
1993 */
1994typedef enum bcmolt_xgpon_gem_port_state
1995{
1996 BCMOLT_XGPON_GEM_PORT_STATE_NOT_CONFIGURED = 0, /**< not configured. */
1997 BCMOLT_XGPON_GEM_PORT_STATE_INACTIVE = 1, /**< inactive. */
1998 BCMOLT_XGPON_GEM_PORT_STATE_ACTIVE = 3 /**< active. */
1999} bcmolt_xgpon_gem_port_state;
2000
2001/** xgpon num of onus.
2002 */
2003typedef enum bcmolt_xgpon_num_of_onus
2004{
2005 BCMOLT_XGPON_NUM_OF_ONUS__BEGIN = 0,
2006 BCMOLT_XGPON_NUM_OF_ONUS_XGPON_SUPPORT_256_ONUS = 0, /**< xgpon support 256 onus. */
2007 BCMOLT_XGPON_NUM_OF_ONUS_XGPON_SUPPORT_510_ONUS = 1, /**< xgpon support 510 onus. */
2008 BCMOLT_XGPON_NUM_OF_ONUS__NUM_OF /**< Number of enum entries, not an entry itself. */
2009} bcmolt_xgpon_num_of_onus;
2010
2011/** xgpon serdes ranging mode.
2012 */
2013typedef enum bcmolt_xgpon_serdes_ranging_mode
2014{
2015 BCMOLT_XGPON_SERDES_RANGING_MODE__BEGIN = 0,
2016 BCMOLT_XGPON_SERDES_RANGING_MODE_ED = 0, /**< ed. */
2017 BCMOLT_XGPON_SERDES_RANGING_MODE_BCDR = 1, /**< bcdr. */
2018 BCMOLT_XGPON_SERDES_RANGING_MODE_FAST_RANGING1 = 2, /**< fast ranging1. */
2019 BCMOLT_XGPON_SERDES_RANGING_MODE_FAST_RANGING2 = 3, /**< fast ranging2. */
2020 BCMOLT_XGPON_SERDES_RANGING_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
2021} bcmolt_xgpon_serdes_ranging_mode;
2022
2023/** XGPON TRX type.
2024 */
2025typedef enum bcmolt_xgpon_trx_type
2026{
2027 BCMOLT_XGPON_TRX_TYPE__BEGIN = 0,
2028 BCMOLT_XGPON_TRX_TYPE_LTH_7222_PC = 0, /**< Ligent LTH 7222-PC. */
2029 BCMOLT_XGPON_TRX_TYPE_USER_DEFINED = 1, /**< User Defined. */
2030 BCMOLT_XGPON_TRX_TYPE_WTD_RTXM266_702 = 2, /**< WTD_RTXM266_702. */
2031 BCMOLT_XGPON_TRX_TYPE_LTH_7222_BC_PLUS = 3, /**< SFP+ */
2032 BCMOLT_XGPON_TRX_TYPE_LTH_7226_PC = 4, /**< XGS */
2033 BCMOLT_XGPON_TRX_TYPE_LTH_5302_PC = 5, /**< 10G EPON for XGS mode */
2034 BCMOLT_XGPON_TRX_TYPE_XGPON_GENERAL_1 = 6, /**< xgpon general 1. */
2035 BCMOLT_XGPON_TRX_TYPE_XGPON_GENERAL_2 = 7, /**< xgpon general 2. */
2036 BCMOLT_XGPON_TRX_TYPE_LTW_627_X_PC = 8, /**< Supports NGPON2 TRx for various channels */
2037 BCMOLT_XGPON_TRX_TYPE_XPP_XE_R_3_CDFB = 9, /**< 10G EPON for XGS mode */
2038 BCMOLT_XGPON_TRX_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
2039} bcmolt_xgpon_trx_type;
2040
2041/** Actual Scheduler/Shaper.
2042 */
2043typedef struct bcmolt_actual_schedulershaper
2044{
2045 bcmolt_time_quanta actual_mbs_tq; /**< Actual MBS (TQ). */
2046 bcmolt_time_quanta actual_weight_tq; /**< Actual Weight (TQ). */
2047} bcmolt_actual_schedulershaper;
2048
2049/** 128-bit AES key used for ONU authentication.
2050 */
2051typedef struct bcmolt_aes_key
2052{
2053 uint8_t bytes[16]; /**< Bytes that comprise the key. */
2054} bcmolt_aes_key;
2055
2056/** What portion of the capture buffer to read.
2057 */
2058typedef struct bcmolt_api_capture_buffer_reader
2059{
2060 uint32_t offset; /**< The bytes offset to read from. */
2061 uint32_t size; /**< The number of bytes to read. */
2062} bcmolt_api_capture_buffer_reader;
2063
2064/** Configuration for API capture.
2065 */
2066typedef struct bcmolt_api_capture_config
2067{
2068 bcmolt_api_capture_location location; /**< Where to perform the API capture. */
2069 uint32_t buffer_size_bytes; /**< Maximum number of bytes to capture. */
2070 bcmolt_api_capture_buffer_mode buffer_mode; /**< What to do when the capture buffer is full. */
2071} bcmolt_api_capture_config;
2072
2073/** Statistics on the most recent API capture.
2074 */
2075typedef struct bcmolt_api_capture_stats
2076{
2077 uint32_t buffer_used_bytes; /**< Used space in the capture buffer (in bytes). */
2078 uint32_t buffer_wrap_count; /**< Number of times the capture buffer has wrapped. */
2079 uint32_t events_recorded; /**< Number of events recorded in the capture buffer. */
2080 uint32_t events_dropped; /**< Number of events dropped due to overflow. */
2081 uint32_t readable_bytes; /**< Number of bytes needed to retrieve capture buffer. */
2082} bcmolt_api_capture_stats;
2083
2084/** Bounds.
2085 */
2086typedef struct bcmolt_bounds
2087{
2088 uint32_t best_case; /**< Best Case. */
2089 uint32_t worst_case; /**< Worst Case. */
2090} bcmolt_bounds;
2091
2092/** Fixed-Length list: 8x bounds.
2093 */
2094typedef struct bcmolt_arr_bounds_8
2095{
2096 bcmolt_bounds arr[8]; /**< Array. */
2097} bcmolt_arr_bounds_8;
2098
2099/** Fixed-Length list: 8x calibration_record.
2100 */
2101typedef struct bcmolt_arr_calibration_record_8
2102{
2103 bcmolt_calibration_record arr[8]; /**< Array. */
2104} bcmolt_arr_calibration_record_8;
2105
2106/** DS frequency offset.
2107 */
2108typedef struct bcmolt_ds_frequency_offset
2109{
2110 bcmolt_sign sign; /**< sign. */
2111 uint8_t value; /**< value. */
2112} bcmolt_ds_frequency_offset;
2113
2114/** Channel Profile
2115 */
2116typedef struct bcmolt_channel_profile
2117{
2118 uint8_t version; /**< Channel profile version */
2119 uint8_t channel_index; /**< Channel profile index */
2120 bcmolt_ds_frequency_offset ds_frequency_offset; /**< The difference between the actual OLT CT Tx frequency and the nominal central frequency for the given DWLCH ID, expressed in units of 0.1GHz */
2121 uint8_t channel_partition; /**< Channel partition */
2122 uint8_t uwlch_id; /**< The assigned upstream wavelength channel ID */
2123 uint32_t us_frequency; /**< The nominal central frequency of the upstream wavelength channel or a root frequency of the cyclic set of central frequencies forming an upstream wavelength channel, indicates the value in units of 0.1 GHz. */
2124 bcmolt_upstream_line_rate_capabilities us_rate; /**< US rate. */
2125 uint8_t default_onu_attenuation; /**< The default ONU attenuation level in steps of 3dB */
2126 uint8_t response_threshold; /**< Threshold represent the maximum number of Ploams the ONU can transmit at non-zero attenuation level while attempting to establish communication with OLT CT */
2127 bcmolt_link_type us_link_type; /**< US link type. */
2128 bcmos_bool is_valid; /**< is valid. */
2129} bcmolt_channel_profile;
2130
2131/** Fixed-Length list: 8x channel_profile.
2132 */
2133typedef struct bcmolt_arr_channel_profile_8
2134{
2135 bcmolt_channel_profile arr[8]; /**< Array. */
2136} bcmolt_arr_channel_profile_8;
2137
2138/** Power consumption report per channel
2139 */
2140typedef struct bcmolt_power_consumption_channel_report
2141{
2142 uint8_t ds_wavelength_channel_id; /**< Downstream wavelength channel ID */
2143 uint8_t us_wavelength_channel_id; /**< Upstream wavelength channel ID */
2144 uint16_t power_consumption; /**< Power consumption */
2145} bcmolt_power_consumption_channel_report;
2146
2147/** Fixed-Length list: 8x power_consumption_channel_report.
2148 */
2149typedef struct bcmolt_arr_power_consumption_channel_report_8
2150{
2151 bcmolt_power_consumption_channel_report arr[8]; /**< Array. */
2152} bcmolt_arr_power_consumption_channel_report_8;
2153
2154/** Fixed-Length list: 2x U16.
2155 */
2156typedef struct bcmolt_arr_u16_2
2157{
2158 uint16_t arr[2]; /**< Array. */
2159} bcmolt_arr_u16_2;
2160
2161/** Fixed-Length list: 2x U16.
2162 */
2163typedef struct bcmolt_arr_u16_2_hex
2164{
2165 uint16_t arr[2]; /**< Array. */
2166} bcmolt_arr_u16_2_hex;
2167
2168/** Fixed-Length list: 5x U16.
2169 */
2170typedef struct bcmolt_arr_u16_5_hex
2171{
2172 uint16_t arr[5]; /**< Array. */
2173} bcmolt_arr_u16_5_hex;
2174
2175/** Fixed-Length list: 7x U16.
2176 */
2177typedef struct bcmolt_arr_u16_7
2178{
2179 uint16_t arr[7]; /**< Array. */
2180} bcmolt_arr_u16_7;
2181
2182/** Fixed-Length list: 6x U32.
2183 */
2184typedef struct bcmolt_arr_u32_6
2185{
2186 uint32_t arr[6]; /**< Array. */
2187} bcmolt_arr_u32_6;
2188
2189/** Fixed-Length list: 10x U8.
2190 */
2191typedef struct bcmolt_arr_u8_10
2192{
2193 uint8_t arr[10]; /**< Array. */
2194} bcmolt_arr_u8_10;
2195
2196/** Fixed-Length list: 12x U8.
2197 */
2198typedef struct bcmolt_arr_u8_12
2199{
2200 uint8_t arr[12]; /**< Array. */
2201} bcmolt_arr_u8_12;
2202
2203/** Fixed-Length list: 13x U8.
2204 */
2205typedef struct bcmolt_arr_u8_13
2206{
2207 uint8_t arr[13]; /**< Array. */
2208} bcmolt_arr_u8_13;
2209
2210/** Fixed-Length list: 36x U8.
2211 */
2212typedef struct bcmolt_arr_u8_36
2213{
2214 uint8_t arr[36]; /**< Array. */
2215} bcmolt_arr_u8_36;
2216
2217/** Fixed-Length list: 4x U8.
2218 */
2219typedef struct bcmolt_arr_u8_4
2220{
2221 uint8_t arr[4]; /**< Array. */
2222} bcmolt_arr_u8_4;
2223
2224/** Fixed-Length list: 40x U8.
2225 */
2226typedef struct bcmolt_arr_u8_40
2227{
2228 uint8_t arr[40]; /**< Array. */
2229} bcmolt_arr_u8_40;
2230
2231/** XGPON burst profile.
2232 */
2233typedef struct bcmolt_xgpon_burst_profile
2234{
2235 uint8_t profile_version; /**< profile version. */
2236 bcmos_bool is_fec_on; /**< is fec on. */
2237 uint8_t delimiter_size_in_bytes; /**< delimiter size in bytes. */
2238 uint32_t delimiter_pattern_high; /**< delimiter pattern high. */
2239 uint32_t delimiter_pattern_low; /**< delimiter pattern low. */
2240 uint8_t preamble_length_in_bytes; /**< preamble length in bytes. */
2241 uint8_t preamble_repeats_count; /**< preamble repeats count. */
2242 uint32_t preamble_pattern_high; /**< preamble pattern high. */
2243 uint32_t preamble_pattern_low; /**< preamble pattern low. */
2244 uint64_t pon_tag; /**< PON tag. */
2245 uint32_t num_of_guard_bytes; /**< number of guard bytes. */
2246 bcmos_bool is_profile_valid; /**< is profile valid. */
2247 uint32_t burst_overhead_size_in_words; /**< Burst overhead size in 4-byte words (word size is 4 bytes regardless of upstream data rate). */
2248} bcmolt_xgpon_burst_profile;
2249
2250/** Fixed-Length list: 4x xgpon_burst_profile.
2251 */
2252typedef struct bcmolt_arr_xgpon_burst_profile_4
2253{
2254 bcmolt_xgpon_burst_profile arr[4]; /**< Array. */
2255} bcmolt_arr_xgpon_burst_profile_4;
2256
2257/** XGPON TRX configuration.
2258 */
2259typedef struct bcmolt_xgpon_trx_configuration
2260{
2261 uint32_t trx_reset_pattern_first; /**< trx reset pattern first. */
2262 uint32_t trx_reset_pattern_middle; /**< trx reset pattern middle. */
2263 uint32_t trx_reset_pattern_last; /**< trx reset pattern last. */
2264 uint8_t trx_reset_middle_repeats_count; /**< trx reset middle repeats count. */
2265 uint16_t trx_reset_location; /**< trx reset location. */
2266 bcmos_bool trx_reset_polarity; /**< trx reset polarity. */
2267 uint32_t bcdr_reset_pattern_first; /**< bcdr reset pattern first. */
2268 uint32_t bcdr_reset_pattern_middle; /**< bcdr reset pattern middle. */
2269 uint32_t bcdr_reset_pattern_last; /**< bcdr reset pattern last. */
2270 uint8_t bcdr_reset_middle_repeats_count; /**< bcdr reset middle repeats count. */
2271 uint8_t bcdr_reset_location; /**< bcdr reset location. */
2272 bcmos_bool bcdr_reset_polarity; /**< bcdr reset polarity. */
2273} bcmolt_xgpon_trx_configuration;
2274
2275/** Fixed-Length list: 4x xgpon_trx_configuration.
2276 */
2277typedef struct bcmolt_arr_xgpon_trx_configuration_4
2278{
2279 bcmolt_xgpon_trx_configuration arr[4]; /**< Array. */
2280} bcmolt_arr_xgpon_trx_configuration_4;
2281
2282/** Automatic ONU deactivation.
2283 */
2284typedef struct bcmolt_automatic_onu_deactivation
2285{
2286 bcmos_bool los; /**< Auto deactivate ONU due to LOS */
2287 bcmos_bool onu_alarms; /**< Auto deactivate ONU due to ONU alarms */
2288 bcmos_bool tiwi; /**< Auto deactivate ONU due to TIWi alarm */
2289 bcmos_bool ack_timeout; /**< Auto deactivate ONU due to Ack timeout */
2290 bcmos_bool sfi; /**< Auto deactivate ONU due to SFi alarm */
2291 bcmos_bool loki; /**< Auto deactivate ONU due to Loki alarm */
2292} bcmolt_automatic_onu_deactivation;
2293
2294/** TRX Resync pattern control.
2295 */
2296typedef struct bcmolt_resync_control
2297{
2298 uint8_t start_pattern; /**< start pattern. */
2299 uint8_t middle_pattern; /**< middle pattern. */
2300 uint8_t last_pattern; /**< last pattern. */
2301 uint8_t middle_repetition; /**< middle repetition. */
2302 uint8_t location; /**< location. */
2303} bcmolt_resync_control;
2304
2305/** BCDR resync pattern configuration.
2306 */
2307typedef struct bcmolt_bcdr_resync_pattern_configuration
2308{
2309 bcmolt_resync_control resync_control; /**< resync control. */
2310 bcmolt_resync_control ranging_resync_control; /**< ranging resync control. */
2311} bcmolt_bcdr_resync_pattern_configuration;
2312
2313/** BER monitoring parameters.
2314 */
2315typedef struct bcmolt_ber_monitor_params
2316{
2317 uint32_t us_ber_interval; /**< Interval in milliseconds for upstream BER monitoring (0 = disabled). */
2318 uint8_t sf_threshold; /**< Signal fail alarm is raised when BER raises to 10^-x, where x is this number. */
2319 uint8_t sd_threshold; /**< Signal degrade alarm is raised when BER raises to 10^-x, where x is this number. */
2320} bcmolt_ber_monitor_params;
2321
2322/** CBR RT Allocation profile.
2323 */
2324typedef struct bcmolt_cbr_rt_allocation_profile
2325{
2326 uint16_t ma_7; /**< CBA maximum allocation size for frame gap 7 */
2327 uint16_t ma_3; /**< CBA maximum allocation size for frame gap 3 */
2328 uint16_t ma_1; /**< CBA maximum allocation size for frame gap 1 */
2329} bcmolt_cbr_rt_allocation_profile;
2330
2331/** Results of the DDR test
2332 */
2333typedef struct bcmolt_ddr_test_completed
2334{
2335 bcmolt_ddr_test_status status; /**< Outcome of the DDR test */
2336 union
2337 {
2338 struct
2339 {
2340 bcmolt_ddr_test_result cpu_result; /**< CPU Result. */
2341 bcmolt_ddr_test_result ras_0_result; /**< RAS 0 Result. */
2342 bcmolt_ddr_test_result ras_1_result; /**< RAS 1 Result. */
2343 } completed;
2344
2345 struct
2346 {
2347 bcmolt_host_connection_fail_reason reason; /**< Connection fail reason. */
2348 } connection_failed;
2349 } u;
2350} bcmolt_ddr_test_completed;
2351
2352/** Debug parameters for device configuration
2353 */
2354typedef struct bcmolt_debug_device_cfg
2355{
2356 uint16_t host_dma_rx_queue_size; /**< RX Queue size of the host DMA */
2357 uint16_t host_dma_tx_queue_size; /**< TX Queue size of the host DMA */
2358 bcmos_bool avs_control; /**< AVS control. */
2359 bcmos_bool use_prev_pon_serdes_firmware; /**< This is a fallback option if there are issues with the new firmware */
2360 bcmos_bool use_prev_nni_serdes_firmware; /**< This is a fallback option if there are issues with the new firmware */
2361} bcmolt_debug_device_cfg;
2362
2363/** Device NNI Speed.
2364 */
2365typedef struct bcmolt_device_nni_speed
2366{
2367 bcmolt_nni_speed first_half; /**< Interface speed for the first half of the NNI ports on the system. */
2368 bcmolt_nni_speed second_half; /**< Interface speed for the second half of the NNI ports on the system. */
2369} bcmolt_device_nni_speed;
2370
2371/* \cond UNDOCUMENTED_SYMBOLS */
2372
2373/** Dummy Struct For Embedded Types.
2374 */
2375typedef struct bcmolt_dummy_struct_for_embedded_types
2376{
2377 bcmolt_aggregation_domain ad; /**< ad. */
2378 bcmolt_epon_top et; /**< et. */
2379 bcmolt_epm_lim_global elg; /**< elg. */
2380 bcmolt_dba_port dba_port; /**< dba port. */
2381 bcmolt_drv_sgb_id sgb; /**< sgb. */
2382 bcmolt_drv_icf_id icf; /**< icf. */
2383 bcmolt_tfb_trap_behavior tfb_trap_behavior; /**< tfb trap behavior. */
2384 bcmolt_tfb_mode tfb_mode; /**< tfb mode. */
2385 bcmolt_lim_sec_mode_up lim_sec_mode_up; /**< lim sec mode up. */
2386 bcmolt_lim_sec_mode_dn lim_sec_mode_dn; /**< lim sec mode dn. */
2387 bcmolt_xim_sec_mode xim_sec_mode; /**< xim sec mode. */
2388 bcmolt_dba_ram dba_ram; /**< dba ram. */
2389 bcmolt_hsc_ram hsc_ram; /**< hsc ram. */
2390 bcmolt_lim_ram lim_ram; /**< lim ram. */
2391 bcmolt_lky_ram lky_ram; /**< lky ram. */
2392 bcmolt_mic_ram mic_ram; /**< mic ram. */
2393 bcmolt_xpcsrm_ram xpcs_ram; /**< xpcs ram. */
2394 bcmolt_xg2g_id xg2g_id; /**< xg2g id. */
2395} bcmolt_dummy_struct_for_embedded_types;
2396
2397/* \endcond */
2398
2399/** Embedded image entry.
2400 */
2401typedef struct bcmolt_embedded_image_entry
2402{
2403 bcmolt_device_image_type image_type; /**< Type of the embedded file image. */
2404 uint32_t image_size; /**< Size of the embedded file image. Unit is bytes. */
2405 uint32_t crc32; /**< CRC 32 checksum of entire file image data. */
2406 bcmolt_embedded_image_transfer_status status; /**< Image transfer status. */
2407 char image_name[64]; /**< Name of the file image. Null-terminated string. This is required for the DPoE ONU only. DPoE requires the write request OAM contains the name of the file. */
2408} bcmolt_embedded_image_entry;
2409
2410/** Variable-length list of embedded_image_entry.
2411 */
2412typedef struct bcmolt_embedded_image_entry_list_u8
2413{
2414 uint8_t len; /**< List length. */
2415 bcmolt_embedded_image_entry *val; /**< List contents. */
2416} bcmolt_embedded_image_entry_list_u8;
2417
2418/** Encryption_information_container.
2419 */
2420typedef struct bcmolt_encryption_information_container
2421{
2422 bcmolt_epon_encryption_information_format format; /**< Format. */
2423 union
2424 {
2425 struct
2426 {
2427 uint8_t key[16]; /**< Key. */
2428 } cfb;
2429
2430 struct
2431 {
2432 uint8_t key[16]; /**< Key. */
2433 uint8_t sci[8]; /**< SCI. */
2434 } ctr;
2435 } u;
2436} bcmolt_encryption_information_container;
2437
2438/** EPON clock transport configuration
2439 */
2440typedef struct bcmolt_epon_clock_transport_configuration
2441{
2442 bcmolt_epon_clock_transport_mode epon_clock_transport_mode; /**< Clock Transport mode on this OLT PON Port. */
2443} bcmolt_epon_clock_transport_configuration;
2444
2445/** Data of unknown link, including rate and alarm status
2446 */
2447typedef struct bcmolt_unknown_link_status
2448{
2449 bcmolt_epon_link_rate link_rate; /**< The rate of the unknown link */
2450 bcmolt_status alarm_status; /**< Whether the unknown link alarm is raised or cleared. */
2451} bcmolt_unknown_link_status;
2452
2453/** Data of laser on/off violating link, including attempted laser on time,
2454 * attempted laser off time, and alarm status.
2455 */
2456typedef struct bcmolt_laser_on_off_status
2457{
2458 bcmolt_time_quanta laser_on_time; /**< The laser on time of the ONU that is violating. */
2459 bcmolt_time_quanta laser_off_time; /**< The laser off time of the ONU that is violating. */
2460 bcmolt_status alarm_status; /**< Whether the laser on/off violation alarm is raised or cleared. */
2461} bcmolt_laser_on_off_status;
2462
2463/** Data of range violating link, including the range it attempted to use, and
2464 * alarm status.
2465 */
2466typedef struct bcmolt_range_status
2467{
2468 bcmolt_time_quanta range; /**< The range that the violating link attempted to register at. */
2469 bcmolt_status alarm_status; /**< Whether the range violation alarm is raised or cleared. */
2470} bcmolt_range_status;
2471
2472/** Details of Suspected Rogue ONU provided in Denied Link Alarm
2473 */
2474typedef struct bcmolt_rogue_status
2475{
2476 bcmolt_epon_llid denied_llid; /**< LLID. */
2477 bcmolt_time_quanta denied_range; /**< ONU Range. */
2478 bcmolt_status alarm_status; /**< Alarm State. */
2479} bcmolt_rogue_status;
2480
2481/** The state of all alarms on an EPON Denied Link.
2482 */
2483typedef struct bcmolt_epon_denied_link_alarm_state
2484{
2485 bcmolt_unknown_link_status unknown_link_violation; /**< Unknown Link Violation. */
2486 bcmolt_status overhead_profile_violation; /**< Overhead Profile Violation. */
2487 bcmolt_status max_link_violation; /**< Max Link Violation. */
2488 bcmolt_status llid_pool_empty_violation; /**< LLID Pool Empty Violation. */
2489 bcmolt_laser_on_off_status laser_on_off_violation; /**< Laser On/Off Violation. */
2490 bcmolt_status system_resource_violation; /**< System Resource Violation. */
2491 bcmolt_range_status range_violation; /**< Range Violation. */
2492 bcmolt_status tdm_channels_exhausted; /**< TDM Channels Exhausted. */
2493 bcmolt_rogue_status rogue_violation; /**< Rogue ONU Violation. */
2494 bcmolt_status upstream_bandwidth_violation; /**< Upstream Bandwidth Violation. */
2495} bcmolt_epon_denied_link_alarm_state;
2496
2497/** Keys and mode for encrypting the EPON logical link.
2498 */
2499typedef struct bcmolt_epon_encryption_config
2500{
2501 bcmolt_epon_encryption_mode downstream_mode; /**< Downstream Mode. */
2502 bcmolt_epon_key_choice downstream_key_choice; /**< Downstream Key Choice. */
2503 bcmolt_encryption_information_container downstream_encryption_information; /**< Downstream Encryption Information. */
2504 bcmolt_epon_encryption_mode upstream_mode; /**< Upstream Mode. */
2505 bcmolt_epon_key_choice upstream_key_choice; /**< Upstream Key Choice. */
2506 bcmolt_encryption_information_container upstream_encryption_information; /**< Upstream Encryption Information. */
2507} bcmolt_epon_encryption_config;
2508
2509/** Key exchange configuration that applies to the EPON link.
2510 */
2511typedef struct bcmolt_epon_key_exchange_config
2512{
2513 bcmolt_epon_oam_type oam_type; /**< The type of OAM that is sent to start the key exchange. */
2514 uint16_t period; /**< Key exchange period in seconds. 0 means disable encryption. */
2515 bcmolt_epon_encryption_direction direction; /**< Encryption direction: Downstream only or Bi-directional. */
2516} bcmolt_epon_key_exchange_config;
2517
2518/** EPON laser overhead parameters. (Laser On and Laser Off times)
2519 */
2520typedef struct bcmolt_epon_laser_overhead_parameters
2521{
2522 bcmolt_time_quanta laser_on_time; /**< Number of time quanta to allow for ONUs' laser-on transition. */
2523 bcmolt_time_quanta laser_off_time; /**< Number of time quanta to allow for ONUs' laser-off transition. */
2524} bcmolt_epon_laser_overhead_parameters;
2525
2526/** The state of all alarms on an EPON Link.
2527 */
2528typedef struct bcmolt_epon_link_alarm_state
2529{
2530 bcmolt_status key_exchange_failure; /**< Key Exchange Failure. */
2531 bcmolt_status invalid_mpcp_report_received; /**< Invalid MPCP Report Received. */
2532 bcmolt_status mpcp_report_timeout; /**< MPCP Report Timeout. */
2533 bcmolt_status oam_keepalive_timeout; /**< OAM Keepalive Timeout. */
2534} bcmolt_epon_link_alarm_state;
2535
2536/** Downstream and upstream FEC enable state for an EPON link.
2537 */
2538typedef struct bcmolt_epon_link_fec_en
2539{
2540 bcmolt_epon_link_fec_state upstream; /**< FEC enable state for upstream path. */
2541 bcmolt_epon_link_fec_state downstream; /**< FEC enable state for downstream path. */
2542} bcmolt_epon_link_fec_en;
2543
2544/** EPON logical link.
2545 */
2546typedef struct bcmolt_epon_link_info
2547{
2548 bcmolt_epon_link_status link_status; /**< Link status flags. */
2549 bcmolt_epon_link_rate rate; /**< The rate at which the link operates. */
2550 bcmolt_epon_llid llid; /**< The LLID of the link. */
2551 bcmolt_mpcp_discovery_info mpcp_discovery_info; /**< Flags from MPCP discovery. */
2552 bcmolt_time_quanta onu_laser_on_time_tq; /**< Laser on time reported by ONU. This is set to 0 for 1G/1G links as 1G MPCP does not include this field. */
2553 bcmolt_time_quanta onu_laser_off_time_tq; /**< Laser off time reported by ONU. */
2554 uint8_t pending_grants; /**< The number of pending grants. */
2555 bcmolt_time_quanta range_value_tq; /**< The link's range value in TQ. */
2556 bcmolt_epon_tunnel_id tunnel_id; /**< The tunnel ID to use when sending traffic to the link. */
2557} bcmolt_epon_link_info;
2558
2559/** Gate parameters.
2560 */
2561typedef struct bcmolt_gate_parameters
2562{
2563 bcmolt_mpcp_registration_gate_flags flags; /**< Flags to set for this gate. */
2564 uint32_t delay_before_ms; /**< Delay before sending this gate in milliseconds. */
2565 bcmolt_time_quanta gate_size_tq; /**< Size of this gate in time quanta. */
2566} bcmolt_gate_parameters;
2567
2568/** Variable-length list of gate_parameters.
2569 */
2570typedef struct bcmolt_gate_parameters_list_u32
2571{
2572 uint32_t len; /**< List length. */
2573 bcmolt_gate_parameters *val; /**< List contents. */
2574} bcmolt_gate_parameters_list_u32;
2575
2576/** Specification of the EPON gate mode and associated parameters.
2577 */
2578typedef struct bcmolt_epon_registration_gate_mode
2579{
2580 bcmolt_mpcp_gate_mode registration_gate_mode; /**< MPCP registration gate mode. */
2581 union
2582 {
2583 struct
2584 {
2585 uint16_t reg_ack_timeout_ms; /**< Amount of time to wait for a link to respond with a register ack after a register is sent. */
2586 } teknovus;
2587
2588 struct
2589 {
2590 bcmolt_gate_parameters_list_u32 gates; /**< Gates to send for REG ACK. */
2591 } custom;
2592 } u;
2593} bcmolt_epon_registration_gate_mode;
2594
2595/** Configuration related to EPON logical link registration and reporting.
2596 */
2597typedef struct bcmolt_epon_logical_link_options
2598{
2599 bcmolt_epon_registration_gate_mode registration_gate_mode; /**< EPON registration gate mode. */
2600 bcmolt_epon_dba_reporting_mode reporting_mode; /**< Control for how the DBA handles received MPCP report frames. */
2601 uint16_t max_links; /**< Maximum number of links to register on the EPON NI. A value of zero indicates no fixed limit. This is an aggregate limit on the number of non-system links on a PON. This limit applies to both registered and non-registered links. This value cannot be reduced below the count of links currently allocated, nor is it valid to increase it above the sum of the per RP mac_links limits. */
2602} bcmolt_epon_logical_link_options;
2603
2604/** The list of alarms defined for an EPON NI
2605 */
2606typedef struct bcmolt_epon_ni_alarm_state
2607{
2608 bcmolt_status no_reports; /**< No Reports. */
2609} bcmolt_epon_ni_alarm_state;
2610
2611/** Encryption configuration that applies to the EPON NI as a whole.
2612 */
2613typedef struct bcmolt_epon_ni_encryption_cfg
2614{
2615 bcmolt_epon_encryption_mode downstream_encryption_mode; /**< Downstream encryption mode. */
2616 bcmolt_epon_encryption_mode upstream_encryption_mode; /**< Upstream encryption mode. */
2617} bcmolt_epon_ni_encryption_cfg;
2618
2619/** EPON ONU Upgrade Parameters.
2620 */
2621typedef struct bcmolt_epon_onu_upgrade_params
2622{
2623 bcmolt_epon_oam_extension_type oam_extension_type; /**< OAM Extension Type. */
2624 union
2625 {
2626 struct
2627 {
2628 uint32_t response_timeout_ms; /**< The length of time that the OLT will wait for the ONU to respond. */
2629 } broadcom;
2630
2631 struct
2632 {
2633 uint32_t response_timeout_ms; /**< The length of time that the OLT will wait for the ONU to respond. */
2634 } ctc;
2635
2636 struct
2637 {
2638 uint32_t response_timeout_ms; /**< The length of time that the OLT will wait for the ONU to respond. */
2639 } dasan;
2640
2641 struct
2642 {
2643 uint32_t response_timeout_ms; /**< The length of time that the OLT will wait for the ONU to respond. */
2644 } kt;
2645
2646 struct
2647 {
2648 uint32_t response_timeout_ms; /**< The length of time that the OLT will wait for the ONU to respond. */
2649 uint16_t block_size; /**< Number of byte per data block. */
2650 uint32_t final_ack_response_timeout; /**< Timeout for the final ACK response. The DPoE standard 1.0 specifies this should be at least 15 seconds. Unit is seconds. */
2651 } dpoe;
2652 } u;
2653} bcmolt_epon_onu_upgrade_params;
2654
2655/** EPON ONU Upgrade Status.
2656 */
2657typedef struct bcmolt_epon_onu_upgrade_status
2658{
2659 bcmos_mac_address onu_id; /**< ONU ID. */
2660 bcmolt_epon_onu_upgrade_return_code error_code; /**< Upgrade status. */
2661 bcmolt_epon_onu_upgrade_onu_response_code onu_return_code; /**< Response code from the ONU. */
2662} bcmolt_epon_onu_upgrade_status;
2663
2664/** Variable-length list of epon_onu_upgrade_status.
2665 */
2666typedef struct bcmolt_epon_onu_upgrade_status_list_u32
2667{
2668 uint32_t len; /**< List length. */
2669 bcmolt_epon_onu_upgrade_status *val; /**< List contents. */
2670} bcmolt_epon_onu_upgrade_status_list_u32;
2671
2672/** EPON protection switching configuration
2673 */
2674typedef struct bcmolt_epon_protection_switching_configuration
2675{
2676 bcmolt_epon_protection_switching_type protection_type; /**< Protection scheme. */
2677 bcmolt_protection_switching_detection_options protection_switching_options; /**< Protection switching options. */
2678 bcmolt_epon_protection_switching_reranging_options rerange_options; /**< Re-ranging algorithm selection */
2679 uint8_t rerange_attempts; /**< Number of times to re range during a switch */
2680 uint16_t rerange_interval; /**< Interval between re-range attempts. */
2681 uint16_t sync_gate_duration; /**< Duration of sync gate. */
2682 bcmolt_gpio_pin gpio_input; /**< Configures state on PON (working/standby) */
2683 bcmolt_gpio_polarity gpio_input_polarity; /**< GPIO Input Polarity. */
2684 bcmolt_gpio_pin gpio_output; /**< Indicates state on PON (working/standby) */
2685 bcmolt_gpio_polarity gpio_output_polarity; /**< GPIO Output Polarity. */
2686} bcmolt_epon_protection_switching_configuration;
2687
2688/** Variable-length list of U8.
2689 */
2690typedef struct bcmolt_u8_list_u16
2691{
2692 uint16_t len; /**< List length. */
2693 uint8_t *val; /**< List contents. */
2694} bcmolt_u8_list_u16;
2695
2696/** A template for an Ethernet frame of some fixed length, accompanied by a mask
2697 * vector of equal size. When used in the context of frame transmission, the
2698 * mask vector distinguishes bit regions of the template that should be
2699 * transmitted verbatim (e.g. the content of an OAM message) from bit regions
2700 * that should be filled in farther along the data path (e.g. Ethernet source
2701 * or destination addresses). When used in the context of frame reception, the
2702 * mask vector distinguishes bit regions of the template that are to be
2703 * compared with received frames (e.g. flags within OAM heartbeat messages
2704 * received from ONUs) from "don't care" bit regions (e.g. Ethernet source
2705 * addresses from those same messages).
2706 */
2707typedef struct bcmolt_ethernet_frame_masked
2708{
2709 bcmolt_u8_list_u16 frame_octets; /**< A complete Ethernet frame. For every zero bit in the mask_octets */
2710 bcmolt_u8_list_u16 mask_octets; /**< A bit vector of the same length as frame_octets. */
2711} bcmolt_ethernet_frame_masked;
2712
2713/** A complete Ethernet frame, beginning with the DA (layer 2 destination
2714 * address) and ending just before the FCS (frame check sequence). In contrast
2715 * to `masked Ethernet frames,' which see, unmasked Ethernet frames are
2716 * transmitted or interpreted/relayed verbatim.
2717 */
2718typedef struct bcmolt_ethernet_frame_unmasked
2719{
2720 bcmolt_u8_list_u16 frame_octets; /**< Complete content of the Ethernet frame, beginning with the DA (layer 2 destination */
2721} bcmolt_ethernet_frame_unmasked;
2722
2723/** Extended Guard Time.
2724 */
2725typedef struct bcmolt_extended_guard_time
2726{
2727 uint32_t additional_preburst_guard_time; /**< Additional guard time (in bytes) before all bursts for this ONU. */
2728 uint32_t additional_postburst_guard_time; /**< Additional guard time (in bytes) after all bursts for this ONU. */
2729} bcmolt_extended_guard_time;
2730
2731/** Firmware SW Version
2732 */
2733typedef struct bcmolt_firmware_sw_version
2734{
2735 uint8_t major; /**< Major . */
2736 uint8_t minor; /**< Minor. */
2737 uint8_t revision; /**< Revision. */
2738 uint32_t model; /**< Model. */
2739 char build_time[32]; /**< Firmware SW build time */
2740} bcmolt_firmware_sw_version;
2741
2742/** GEM port configuration.
2743 */
2744typedef struct bcmolt_gem_port_configuration
2745{
2746 bcmolt_gem_port_direction direction; /**< GEM port direction */
2747 bcmolt_gem_port_type type; /**< GEM port type */
2748} bcmolt_gem_port_configuration;
2749
2750/** GPON Alloc With State.
2751 */
2752typedef struct bcmolt_gpon_alloc_with_state
2753{
2754 bcmolt_gpon_alloc_id alloc_id; /**< Alloc ID. */
2755 bcmolt_alloc_state state; /**< State. */
2756} bcmolt_gpon_alloc_with_state;
2757
2758/** Variable-length list of gpon_alloc_with_state.
2759 */
2760typedef struct bcmolt_gpon_alloc_with_state_list_u16_max_32
2761{
2762 uint16_t len; /**< List length. */
2763 bcmolt_gpon_alloc_with_state *val; /**< List contents. */
2764} bcmolt_gpon_alloc_with_state_list_u16_max_32;
2765
2766/** GPON Debug Flow Config.
2767 */
2768typedef struct bcmolt_gpon_debug_flow_config
2769{
2770 bcmolt_control_state untagged_flow; /**< If enabled, this GEM port will expect upstream traffic to be untagged and downstream traffic to use a custom VLAN tag. */
2771 bcmolt_vlan_id untagged_vid; /**< The VLAN ID to use when adding MAC table entries for untagged traffic. */
2772} bcmolt_gpon_debug_flow_config;
2773
2774/** Variable-length list of gpon_gem_id.
2775 */
2776typedef struct bcmolt_gpon_gem_id_list_u8_max_16
2777{
2778 uint8_t len; /**< List length. */
2779 bcmolt_gpon_gem_id *val; /**< List contents. */
2780} bcmolt_gpon_gem_id_list_u8_max_16;
2781
2782/** GPON GEM Port With State.
2783 */
2784typedef struct bcmolt_gpon_gem_port_with_state
2785{
2786 bcmolt_gpon_gem_id gem_id; /**< GEM ID. */
2787 bcmolt_gpon_gem_port_state state; /**< State. */
2788} bcmolt_gpon_gem_port_with_state;
2789
2790/** Variable-length list of gpon_gem_port_with_state.
2791 */
2792typedef struct bcmolt_gpon_gem_port_with_state_list_u16_max_128
2793{
2794 uint16_t len; /**< List length. */
2795 bcmolt_gpon_gem_port_with_state *val; /**< List contents. */
2796} bcmolt_gpon_gem_port_with_state_list_u16_max_128;
2797
2798/** Variable-length list of gpon_gem_port_with_state.
2799 */
2800typedef struct bcmolt_gpon_gem_port_with_state_list_u16_max_256
2801{
2802 uint16_t len; /**< List length. */
2803 bcmolt_gpon_gem_port_with_state *val; /**< List contents. */
2804} bcmolt_gpon_gem_port_with_state_list_u16_max_256;
2805
2806/** Options for configuring the "untagged flow" feature.
2807 */
2808typedef struct bcmolt_gpon_iwf_debug_flow_config
2809{
2810 bcmos_bool learn_untagged_flow_vids; /**< When a MAC/VID is learned on an untagged flow, learn the received MAC address with both the untagged VID and the received VID (even though it will be invalid). */
2811 uint16_t untagged_flow_shaping_ms_per_sec; /**< If this value is greater than 0, learning events on untagged flows will only be enabled for N milliseconds every second. For example, a value of 10 would mean learning is only enabled for 1% of the total time. */
2812} bcmolt_gpon_iwf_debug_flow_config;
2813
2814/** GPON Key Exchange .
2815 */
2816typedef struct bcmolt_gpon_key_exchange
2817{
2818 uint32_t interval; /**< Key Exchange process interval in milliseconds */
2819 bcmolt_control_state control; /**< Enable\disable periodic process of Key Exchange for active ONUs */
2820 bcmolt_key_exchange_mode mode; /**< Key exchange mode */
2821 bcmolt_control_state encrypted_ports_only; /**< Perform key exchange only to ONUs with GEM ports that have downstream encryption enabled */
2822} bcmolt_gpon_key_exchange;
2823
2824/** GPON MAC table scan result for a single MAC table entry.
2825 */
2826typedef struct bcmolt_gpon_mac_table_scan_result
2827{
2828 bcmolt_vlan_id vlan; /**< The VLAN ID of the entry. */
2829 bcmolt_flow_id flow_id; /**< The flow ID assigned to traffic that matches this MAC table entry. */
2830 bcmos_bool stat; /**< Whether or not the MAC entry is static. Static entries don't age. */
2831 bcmolt_gpon_gem_id gem_port_id; /**< The GEM port ID of the traffic that created this table entry. This only applies to automatically-learned entries. Manually-added entries will have the value BCMOLT_PON_GEM_PORT_ID_INVALID. */
2832 bcmolt_gpon_onu_id onu_id; /**< The ONU ID for the traffic that created this table entry. This only valid if gem_port_id is valid. Otherwise this will be set to BCMOLT_GPON_ONU_ID_INVALID. */
2833} bcmolt_gpon_mac_table_scan_result;
2834
2835/** Variable-length list of gpon_mac_table_scan_result.
2836 */
2837typedef struct bcmolt_gpon_mac_table_scan_result_list_u16
2838{
2839 uint16_t len; /**< List length. */
2840 bcmolt_gpon_mac_table_scan_result *val; /**< List contents. */
2841} bcmolt_gpon_mac_table_scan_result_list_u16;
2842
2843/** GPON NI Debug parameters
2844 */
2845typedef struct bcmolt_gpon_ni_debug
2846{
2847 uint16_t number_of_gem_ports_per_onu; /**< Number of Gem ports per ONU */
2848} bcmolt_gpon_ni_debug;
2849
2850/** GPON ONU activation.
2851 */
2852typedef struct bcmolt_gpon_onu_activation
2853{
2854 bcmolt_control_state key_exchange; /**< Perform single key exchange during activation. */
2855 bcmolt_control_state password_authentication; /**< Perform password authentication during activation */
2856 bcmolt_control_state fail_due_to_password_authentication_failure; /**< Deactivate ONU due to password authentication failure */
2857} bcmolt_gpon_onu_activation;
2858
2859/** GPON ONU alarm status.
2860 */
2861typedef struct bcmolt_gpon_onu_alarm_state
2862{
2863 bcmolt_status losi; /**< Loss of signal. */
2864 bcmolt_status lofi; /**< Loss of frame. */
2865 bcmolt_status loami; /**< Loss of PLOAM. */
2866 bcmolt_status dgi; /**< Dying Gasp. */
2867 bcmolt_status tiwi; /**< Transmission interference Alarm. */
2868 bcmolt_status dowi; /**< Drift of Window. */
2869 bcmolt_status sufi; /**< Start UP Failure. */
2870 bcmolt_status sfi; /**< Signal Fail. */
2871 bcmolt_status sdi; /**< Signal Degraded. */
2872 bcmolt_status dfi; /**< Deactivation Failure. */
2873 bcmolt_status loai; /**< Loss of ack. */
2874 bcmolt_status loki; /**< loss of key. */
2875} bcmolt_gpon_onu_alarm_state;
2876
2877/** GPON ONU alarms.
2878 */
2879typedef struct bcmolt_gpon_onu_alarms
2880{
2881 bcmolt_status losi; /**< LOSi. */
2882 bcmolt_status lofi; /**< LOFi. */
2883 bcmolt_status loami; /**< LOAMi. */
2884} bcmolt_gpon_onu_alarms;
2885
2886/** GPON ONU alarms thresholds.
2887 */
2888typedef struct bcmolt_gpon_onu_alarms_thresholds
2889{
2890 uint8_t losi; /**< Threshold for asserting LOSi alarm */
2891 uint8_t lofi; /**< Threshold for asserting LOFi alarm */
2892 uint8_t loami; /**< Threshold for asserting LOAMi alarm */
2893} bcmolt_gpon_onu_alarms_thresholds;
2894
2895/** GPON ONU EQD.
2896 */
2897typedef struct bcmolt_gpon_onu_eqd
2898{
2899 bcmolt_gpon_onu_id onu_id; /**< ONU ID. */
2900 uint32_t eqd; /**< EQD. */
2901} bcmolt_gpon_onu_eqd;
2902
2903/** Variable-length list of gpon_onu_eqd.
2904 */
2905typedef struct bcmolt_gpon_onu_eqd_list_u32
2906{
2907 uint32_t len; /**< List length. */
2908 bcmolt_gpon_onu_eqd *val; /**< List contents. */
2909} bcmolt_gpon_onu_eqd_list_u32;
2910
2911/** Variable-length list of gpon_onu_id.
2912 */
2913typedef struct bcmolt_gpon_onu_id_list_u32_max_256
2914{
2915 uint32_t len; /**< List length. */
2916 bcmolt_gpon_onu_id *val; /**< List contents. */
2917} bcmolt_gpon_onu_id_list_u32_max_256;
2918
2919/** GPON ONU upgrade params.
2920 */
2921typedef struct bcmolt_gpon_onu_upgrade_params
2922{
2923 uint32_t response_timeout_ms; /**< The length of time that the OLT will wait for the ONU to respond. */
2924 uint8_t max_retry_count; /**< The number of retries. */
2925 bcmolt_omci_device_id omci_format; /**< Baseline (0x0A) or Extended (0x0B). */
2926 uint16_t window_size; /**< Number of sections per window. */
2927 bcmos_bool activate_commit; /**< Automatically activate the new image and commit. */
2928 uint32_t delay_for_commit_ms; /**< Delay time before COMMIT command. Unit is milliseconds. */
2929 uint8_t max_activation_attempts; /**< Maximum number of re-attempts to activate the ONU. */
2930} bcmolt_gpon_onu_upgrade_params;
2931
2932/** GPON ONU Upgrade Status.
2933 */
2934typedef struct bcmolt_gpon_onu_upgrade_status
2935{
2936 bcmolt_pon_onu_id onu_id; /**< ONU ID. */
2937 bcmolt_gpon_onu_upgrade_return_code error_code; /**< Error Code. */
2938 bcmolt_omci_result_code fail_reason; /**< Failure reason specific to the Error Code above. */
2939} bcmolt_gpon_onu_upgrade_status;
2940
2941/** Variable-length list of gpon_onu_upgrade_status.
2942 */
2943typedef struct bcmolt_gpon_onu_upgrade_status_list_u32
2944{
2945 uint32_t len; /**< List length. */
2946 bcmolt_gpon_onu_upgrade_status *val; /**< List contents. */
2947} bcmolt_gpon_onu_upgrade_status_list_u32;
2948
2949/** GPON ONU With State.
2950 */
2951typedef struct bcmolt_gpon_onu_with_state
2952{
2953 bcmolt_gpon_onu_id onu_id; /**< ONU ID. */
2954 bcmolt_onu_state state; /**< State. */
2955} bcmolt_gpon_onu_with_state;
2956
2957/** Variable-length list of gpon_onu_with_state.
2958 */
2959typedef struct bcmolt_gpon_onu_with_state_list_u16_max_128
2960{
2961 uint16_t len; /**< List length. */
2962 bcmolt_gpon_onu_with_state *val; /**< List contents. */
2963} bcmolt_gpon_onu_with_state_list_u16_max_128;
2964
2965/** gpon RSSI general configuration.
2966 */
2967typedef struct bcmolt_gpon_rssi_general_configuration
2968{
2969 uint8_t location; /**< the pattern activation location in clock cycles relative (before) to start of burst. */
2970 bcmolt_rssi_location_sign location_sign; /**< this bit determines whether the location of the RSSI in data mode (configured as RSSI pattern 1) will be before or after the burst start. */
2971 uint8_t start_pattern; /**< the value of the first cycle of the pattern (will be transmitted once). */
2972 uint8_t middle_pattern; /**< the value of the pattern that will be transmitted middle_repetition times between the start and the end of the pattern. */
2973 uint8_t last_pattern; /**< the value of the last cycle of the pattern. will be transmitted once. */
2974 uint8_t middle_repertition; /**< the number of times the middle pattern will be repeated. */
2975 uint16_t minimum_burst; /**< the minimum burst size needed measurement */
2976} bcmolt_gpon_rssi_general_configuration;
2977
2978/** GPON SN Acquisition.
2979 */
2980typedef struct bcmolt_gpon_sn_acquisition
2981{
2982 uint32_t interval; /**< SN process interval in milliseconds */
2983 bcmolt_control_state control; /**< SN process control */
2984 bcmolt_onu_post_discovery_mode onu_post_discovery_mode; /**< Automatic operation following ONU discovery */
2985} bcmolt_gpon_sn_acquisition;
2986
2987/** Host SW Version
2988 */
2989typedef struct bcmolt_host_sw_version
2990{
2991 uint8_t major; /**< Major . */
2992 uint8_t minor; /**< Minor. */
2993 uint8_t revision; /**< Revision. */
2994 uint32_t model; /**< Model. */
2995 char build_time[32]; /**< Firmware SW build time */
2996} bcmolt_host_sw_version;
2997
2998/** HW PON ID.
2999 */
3000typedef struct bcmolt_hw_pon_id
3001{
3002 uint32_t pon_id_1; /**< LSB 32 bits of PON ID. */
3003 uint32_t pon_id_2; /**< MSB 19 bits of PON ID. */
3004} bcmolt_hw_pon_id;
3005
3006/** Port Identity used in IEEE 802.1as Clock Tranport.
3007 */
3008typedef struct bcmolt_ieee_8021as_port_identity
3009{
3010 uint8_t clock_identity[8]; /**< Clock identity is a unique identifier used in IEEE 802.1as clock transport. */
3011 uint16_t port_number; /**< Port Number. */
3012} bcmolt_ieee_8021as_port_identity;
3013
3014/** Timestamp used in IEEE 802.1as clock transport.
3015 */
3016typedef struct bcmolt_ieee_8021as_timestamp
3017{
3018 uint16_t seconds_high; /**< The high 16 bits of the 48 bit seconds field as required by IEEE. */
3019 uint32_t seconds_low; /**< The low 32 bts of the 48 bit seconds field as required by IEEE. */
3020 uint32_t nanoseconds; /**< The Nanoseconds part of the timestamp. */
3021} bcmolt_ieee_8021as_timestamp;
3022
3023/** Full frame of the IEEE 802.1as time sync message used in clock transport.
3024 */
3025typedef struct bcmolt_ieee_8021as_time_sync
3026{
3027 bcmos_mac_address destination_mac; /**< Destination MAC Address. */
3028 bcmos_mac_address source_mac; /**< Source MAC Address. */
3029 uint16_t eth_type_len; /**< Type of Ethernet PDU. */
3030 uint8_t eth_subtype; /**< Slow protocol Subtype. */
3031 uint8_t ieee_oui[3]; /**< IEEE OUI. */
3032 uint16_t msg_id; /**< Message ID. */
3033 uint32_t x; /**< Reference Time. */
3034 bcmolt_ieee_8021as_timestamp tod; /**< Time of day timestamp. */
3035 bcmolt_ieee_8021as_port_identity port_identity; /**< Source port identity. */
3036 int8_t log_msg_interval; /**< Log message interval (currently unused but required by spec). */
3037 double rate_ratio; /**< Ratio of local second to grandmaster second. */
3038 uint16_t gm_time_base_indicator; /**< Grandmaster time base indicator (currently unused but required by spec). */
3039 uint8_t last_gm_phase_change[12]; /**< Time of the current grandmaster minus the time of the previous grandmaster, in units of 2^-16 ns (currently unused but required by spec). */
3040 int32_t last_frequency_change; /**< Fractional frequency offset of the current grandmaster relative to the previous grandmaster (Not currently used but required by spec). */
3041} bcmolt_ieee_8021as_time_sync;
3042
3043/** Rate limiting / shaping for the indication channel.
3044 */
3045typedef struct bcmolt_indication_shaping
3046{
3047 bcmos_bool enabled; /**< Whether or not the device will limit the rate of indications sent to the host. */
3048 uint32_t max_rate; /**< Maximum number of indications per second to be generated by the device. */
3049 uint32_t max_burst; /**< Maximum number of indications that are allowed to be sent back-to-back. */
3050} bcmolt_indication_shaping;
3051
3052/** LA resync pattern configuration.
3053 */
3054typedef struct bcmolt_la_resync_pattern_configuration
3055{
3056 bcmolt_resync_control resync_control; /**< used in normal mode */
3057 bcmolt_resync_control ranging_resync_control; /**< used in ranging mode at the beginning of each ranging cycle */
3058} bcmolt_la_resync_pattern_configuration;
3059
3060/** log buffer.
3061 */
3062typedef struct bcmolt_log_buffer
3063{
3064 char buff[2048]; /**< buff. */
3065 uint32_t msg_to_read; /**< msg_to_read. */
3066} bcmolt_log_buffer;
3067
3068/** MAC table configuration.
3069 */
3070typedef struct bcmolt_mac_table_configuration
3071{
3072 bcmolt_mac_table_miss_fallback miss_fallback; /**< Behavior for downstream traffic when MAC table lookup fails. */
3073 bcmolt_flow_id default_flow_id; /**< Flow ID assigned to upstream traffic on a MAC table miss if miss_fallback is set to default_flow. */
3074 uint32_t aging_time; /**< Aging time in seconds. If no traffic is seen for a given MAC address / VID for this length of time, the entry will age and the host will be notified via indication. */
3075 bcmolt_mac_table_learning_mode learning_mode; /**< Learning table mode. */
3076 bcmolt_control_state automatic_mac_learning; /**< If enabled, new MAC table entries are added automatically the first time a new MAC address/VID combination is seen. If disabled, no actions are taken automatically except notifying the host via indication. */
3077 bcmolt_control_state automatic_mac_aging; /**< If enabled, MAC table entries are deleted automatically when they age. If disabled, no actions are taken automatically except notifying the host via indication. */
3078 bcmolt_control_state automatic_mac_move; /**< Only applicable if learning_mode is move. If enabled, MAC table entries are automatically updated when a MAC move condition is encountered. If disabled, no actions are taken automatically except notifying the host via indication. */
3079 bcmos_bool automatic_static_mode; /**< If enabled, all MAC entries that are added automatically via automatic_mac_learning and automatic_mac_move will be treated as static (not aging). */
3080} bcmolt_mac_table_configuration;
3081
3082/** Variable-length list of MacAddress.
3083 */
3084typedef struct bcmolt_macaddress_list_u32
3085{
3086 uint32_t len; /**< List length. */
3087 bcmos_mac_address *val; /**< List contents. */
3088} bcmolt_macaddress_list_u32;
3089
3090/** Variable-length list of MacAddress.
3091 */
3092typedef struct bcmolt_macaddress_list_u32_max_2048
3093{
3094 uint32_t len; /**< List length. */
3095 bcmos_mac_address *val; /**< List contents. */
3096} bcmolt_macaddress_list_u32_max_2048;
3097
3098/** NNI Link Status.
3099 */
3100typedef struct bcmolt_nni_link_status
3101{
3102 bcmolt_trivalent link_status; /**< The local and remote partners are abled and ready to transmit/receive traffic. */
3103 bcmolt_trivalent signal_detected; /**< Serdes controller has detected energy on the line. debugging purpose. */
3104 bcmolt_trivalent pmd_locked; /**< Indicates PMD locked. debugging purpose. If this is true, but the links status is not, that means the transceiver is not enabled. */
3105} bcmolt_nni_link_status;
3106
3107/** OAM heartbeat configuration
3108 */
3109typedef struct bcmolt_oam_heartbeat_config
3110{
3111 uint16_t send_period; /**< The period at which to send OAM info frames, and expect info responses on this link (in seconds). */
3112 bcmolt_u8_list_u16 transmit_frame; /**< The OAM PDU payload from the Flags field (offset 15) to the end of the PDU (before the FCS). */
3113 bcmolt_ethernet_frame_masked ignored_receive_frame_template; /**< OAM packets matching this masked payload will be dropped rather than forwarded to the host. */
3114 uint16_t receive_timeout; /**< The time (in seconds) to report OAM timeout after the last received OAM frame. */
3115 uint16_t maximum_receive_size; /**< Maximum size of received frames. Setting this value to zero will cause all OAM frames to be dropped. */
3116} bcmolt_oam_heartbeat_config;
3117
3118/** Configuration parameters for the ONU power management feature. These should
3119 * match the parameters sent to the ONU via OMCI.
3120 */
3121typedef struct bcmolt_onu_power_management_configuration
3122{
3123 uint32_t ilowpower; /**< The maximum amount of time any ONU on this NI may spend in a low power state in units of 125us. */
3124 uint32_t iaware; /**< The minimum amount of time every ONU on his NI must spend in an aware state in units of 125us. */
3125 uint16_t itransinit; /**< The maximum amount of time required by any ONU on this NI to power up its transmitter only from a low power state in units of 125us. */
3126 uint16_t itxinit; /**< The maximum amount of time required by any ONU on this NI to power up its transceiver (transmitter + receiver) from a low power state in units of 125us. */
3127 uint32_t irxoff; /**< The maximum amount of time any ONU on this NI may spend with its receiver disabled in units of 125us. */
3128 uint16_t low_power_clobi; /**< The number of consecutive non-contiguous missing allocations to allow before raising the LOSi/LOFi/LOBi alarms on any ONU on this NI. */
3129} bcmolt_onu_power_management_configuration;
3130
3131/** onu tuning configuration.
3132 */
3133typedef struct bcmolt_onu_tuning_configuration
3134{
3135 uint32_t tsource; /**< Tsource timer in msec */
3136 uint32_t ttarget; /**< Ttarget timer in msec */
3137 bcmos_bool request_registration_required; /**< is request registration part of the tuning in process */
3138} bcmolt_onu_tuning_configuration;
3139
3140/** Identifies the TWDM channel termination within a certain domain
3141 */
3142typedef struct bcmolt_pon_id
3143{
3144 uint32_t administrative_label; /**< MSB 28 bit of the PON ID */
3145 uint8_t dwlch_id; /**< LSB 4 bits of the PON ID */
3146} bcmolt_pon_id;
3147
3148/** Operation Control
3149 */
3150typedef struct bcmolt_operation_control
3151{
3152 uint8_t re; /**< Indicates whether the Transmit Optical Level (TOL) contains the launch power of the OTL (RE=0) or of a reach extender (RE=1) */
3153 bcmolt_odn_class odn_class; /**< Identifies the nominal optical parameters of the transceiver according to the ODN Optical Path Loss (OPL) */
3154 bcmolt_control_state ds_fec_mode; /**< Enable/Disable the downstream FEC. Default is Enable. Attribute can be set only when PON NI state is Inactive. */
3155 bcmolt_tc_protocol protocol; /**< When system mode is NGPON2, this parameter Indicate the TC layer protocol: ITU-T G.989.3 or ITU-T G.987.3 */
3156 bcmolt_link_type ds_link_type; /**< Optical link type (Unspecified, A, B, Both) */
3157 bcmolt_pon_id pon_id; /**< Identifies the TWDM channel termination within a certain domain */
3158 uint8_t c; /**< Transmit optical level (TOL) reference point indicator: S/R-CG or S/R-CP */
3159} bcmolt_operation_control;
3160
3161/** Periodic Standby PON monitoring.
3162 */
3163typedef struct bcmolt_periodic_standby_pon_monitoring
3164{
3165 uint32_t interval; /**< interval in ms. */
3166 bcmolt_control_state control; /**< control. */
3167} bcmolt_periodic_standby_pon_monitoring;
3168
3169/** Port Level Shaper Configuration:.
3170 */
3171typedef struct bcmolt_pon_aggregate_shaper
3172{
3173 uint32_t bandwidth_kbps; /**< Rate in kbps, 0 is disabled, If rate is >1G then use 256kbps increments, if rate is < 1G then use 64kbps increments. */
3174 uint32_t mbs_kB; /**< Maximum Burst Size in KB : range is 2KB to 4MB in 1KB increments. */
3175} bcmolt_pon_aggregate_shaper;
3176
3177/** PON Alloc SLA.
3178 */
3179typedef struct bcmolt_pon_alloc_sla
3180{
3181 uint32_t cbr_rt_bw; /**< CBR Real Time Bandwidth which require shaping of the bandwidth allocations in a fine granularity. */
3182 uint32_t cbr_nrt_bw; /**< Fixed Bandwidth with no critical requirement of shaping */
3183 uint32_t guaranteed_bw; /**< Dynamic bandwidth which the OLT is committed to allocate upon demand */
3184 uint32_t maximum_bw; /**< Maximum allocated bandwidth allowed for this alloc ID */
3185 bcmolt_additional_bw_eligibility additional_bw_eligibility; /**< Alloc ID additional BW eligibility */
3186 bcmos_bool cbr_rt_compensation; /**< Set to True for AllocID with CBR RT Bandwidth that requires compensation for skipped allocations during quiet window */
3187 uint8_t cbr_rt_ap_index; /**< Allocation Profile index for CBR RT Bandwidth */
3188 uint8_t cbr_nrt_ap_index; /**< Allocation Profile index for CBR non-RT Bandwidth */
3189 bcmolt_alloc_type alloc_type; /**< Type of the alloc ID */
3190 uint8_t weight; /**< Alloc ID Weight used in case of Extended DBA mode */
3191 uint8_t priority; /**< Alloc ID Priority used in case of Extended DBA mode */
3192} bcmolt_pon_alloc_sla;
3193
3194/** PON available bandwidth.
3195 */
3196typedef struct bcmolt_pon_available_bandwidth
3197{
3198 uint32_t cbr_bw; /**< Total BW available for CBR real-time traffic (bytes/sec). */
3199 uint32_t total_bw; /**< Total BW available for guaranteed traffic (bytes/sec) */
3200 uint32_t next_onu_total_bw; /**< Total BW available for guaranteed traffic after new ONU is added (bytes/sec). */
3201} bcmolt_pon_available_bandwidth;
3202
3203/** PON DBA.
3204 */
3205typedef struct bcmolt_pon_dba
3206{
3207 uint8_t sr_reporting_block_size; /**< ONU status report block size in bytes */
3208 bcmolt_dba_mode dba_mode; /**< DBA mode */
3209} bcmolt_pon_dba;
3210
3211/** PON Distance.
3212 */
3213typedef struct bcmolt_pon_distance
3214{
3215 uint32_t max_log_distance; /**< Max logical distance of an ONU on the PON */
3216 uint32_t max_diff_reach; /**< Max distance between the closest and farthest ONU */
3217} bcmolt_pon_distance;
3218
3219/** PON Drift Control.
3220 */
3221typedef struct bcmolt_pon_drift_control
3222{
3223 uint32_t drift_interval; /**< Interval in milliseconds for ONU transmission drift monitoring (0 = disabled). */
3224 uint8_t drift_limit; /**< DOWi threshold in bits */
3225 uint8_t transmission_control_limit; /**< TIWi threshold in bits */
3226} bcmolt_pon_drift_control;
3227
3228/** Variable-length list of pon_onu_id.
3229 */
3230typedef struct bcmolt_pon_onu_id_list_u32
3231{
3232 uint32_t len; /**< List length. */
3233 bcmolt_pon_onu_id *val; /**< List contents. */
3234} bcmolt_pon_onu_id_list_u32;
3235
3236/** PON Power Level.
3237 */
3238typedef struct bcmolt_pon_power_level
3239{
3240 uint32_t pls_maximum_allocation_size; /**< Max allocation size for PLS transmission */
3241 uint8_t mode; /**< ONU default power level mode */
3242} bcmolt_pon_power_level;
3243
3244/** GPON protection switching configuration.
3245 */
3246typedef struct bcmolt_pon_protection_switching
3247{
3248 uint16_t timeout; /**< LOS switch over timeout in milliseconds */
3249 bcmolt_gpio_pin gpio_pin; /**< GPIO pin for input/output signal */
3250 bcmolt_pon_protection_switching_options options; /**< Options to control the protection switching process */
3251} bcmolt_pon_protection_switching;
3252
3253/** PON Status.
3254 */
3255typedef struct bcmolt_pon_status
3256{
3257 bcmolt_pon_state state; /**< state. */
3258 bcmolt_status los_status; /**< LOS status. */
3259} bcmolt_pon_status;
3260
3261/** PRBS checker config.
3262 */
3263typedef struct bcmolt_prbs_checker_config
3264{
3265 bcmolt_prbs_polynomial polynom; /**< PRBS polynom type */
3266 bcmolt_prbs_checker_mode mode; /**< PRBS LOCK state machine. */
3267 bcmos_bool data_invert; /**< Invert or no invert for received PRBS data */
3268 bcmolt_control_state control; /**< Enable\Disable the US PRBS checker */
3269} bcmolt_prbs_checker_config;
3270
3271/** PRBS Generator config.
3272 */
3273typedef struct bcmolt_prbs_generator_config
3274{
3275 bcmolt_prbs_polynomial polynom; /**< PRBS polynom type */
3276 bcmos_bool error_insert; /**< 0 to 1 transition on this signal will insert single bit error in the MSB bit of the data bus. */
3277 bcmos_bool invert; /**< Invert or no invert for transmitted PRBS data */
3278 bcmolt_control_state control; /**< Enable\Disable the DS PRBS generator */
3279} bcmolt_prbs_generator_config;
3280
3281/** That state of the PRBS test, lock state, and error counters.
3282 */
3283typedef struct bcmolt_prbs_status
3284{
3285 bcmolt_prbs_lock_state lock_state; /**< The state of the PRBS lock */
3286 uint32_t error_counts; /**< The bit errors observed during the PRBS test. This field is clear on read. */
3287} bcmolt_prbs_status;
3288
3289/** ranging control configuration.
3290 */
3291typedef struct bcmolt_ranging_control_configuration
3292{
3293 uint8_t wait_state_1_window_size; /**< wait state 1 window size. */
3294 uint8_t wait_state_2_window_size; /**< wait state 2 window size. */
3295 bcmos_bool wait_after_resync_4; /**< wait after resync 4. */
3296} bcmolt_ranging_control_configuration;
3297
3298/** ranging resync conditions.
3299 */
3300typedef struct bcmolt_ranging_resync_conditions
3301{
3302 bcmos_bool after_init; /**< after init. */
3303 bcmos_bool after_no_ed; /**< after no ed. */
3304 bcmos_bool after_ed; /**< after ed. */
3305 bcmos_bool after_no_del; /**< after no del. */
3306 bcmos_bool after_ranging_access; /**< after ranging access. */
3307 uint16_t med_val; /**< med val. */
3308} bcmolt_ranging_resync_conditions;
3309
3310/** ranging rssi control.
3311 */
3312typedef struct bcmolt_ranging_rssi_control
3313{
3314 bcmos_bool after_no_ed; /**< after no ed. */
3315 bcmos_bool after_ed; /**< after ed. */
3316 bcmos_bool after_reset_3; /**< after reset 3. */
3317} bcmolt_ranging_rssi_control;
3318
3319/** request registration status.
3320 */
3321typedef struct bcmolt_request_registration_status
3322{
3323 bcmolt_control_state request_registration_state; /**< request registration state. */
3324 bcmos_bool sma_flag; /**< is request registration is part of sma process */
3325} bcmolt_request_registration_status;
3326
3327/** Rogue Detection Special Map.
3328 */
3329typedef struct bcmolt_rogue_detection_special_map
3330{
3331 uint32_t plo_size; /**< PLO size. */
3332 bcmolt_pon_alloc_id alloc_id; /**< Alloc ID. */
3333 bcmolt_pon_onu_id onu_id; /**< ONU ID. */
3334 uint8_t access_size; /**< Access size. */
3335} bcmolt_rogue_detection_special_map;
3336
3337/** Variable-length list of rogue_detection_special_map.
3338 */
3339typedef struct bcmolt_rogue_detection_special_map_list_u32_max_8
3340{
3341 uint32_t len; /**< List length. */
3342 bcmolt_rogue_detection_special_map *val; /**< List contents. */
3343} bcmolt_rogue_detection_special_map_list_u32_max_8;
3344
3345/** Type and attributes of the rogue detection algorithm.
3346 */
3347typedef struct bcmolt_rogue_detection_algorithm
3348{
3349 bcmolt_rogue_detection_algorithm_type algorithm_type; /**< Type of the rogue detection algorithm. */
3350 union
3351 {
3352 struct
3353 {
3354 bcmolt_rogue_detection_window measurement_type; /**< Silent Window or Cut off Window */
3355 uint32_t interval; /**< Periodic process timer interval in milliseconds */
3356 bcmos_bool second_ranging_window; /**< Determines whether the second ranging window should be invoked or not. */
3357 bcmolt_alloc_type_to_scan alloc_type_to_scan; /**< Alloc type to scan during rogue detection. Unused, previously used, or all Alloc-IDs. */
3358 } early_rogue_detection;
3359
3360 struct
3361 {
3362 bcmolt_rogue_detection_special_map_list_u32_max_8 accesses; /**< Accesses. */
3363 } special_map;
3364
3365 struct
3366 {
3367 uint32_t additional_guard_time; /**< Additional guard time (in bytes) for all ONUs on this PON. */
3368 } extended_guard_time;
3369 } u;
3370} bcmolt_rogue_detection_algorithm;
3371
3372/** Configures the attributes of the rogue ONU detection periodic process.
3373 */
3374typedef struct bcmolt_rogue_onu_detection_process
3375{
3376 bcmolt_control_state control; /**< Enable/Disable the rogue ONU detection process. */
3377 bcmolt_rogue_detection_algorithm detection_algorithm; /**< Type and attributes of the rogue detection algorithm. */
3378} bcmolt_rogue_onu_detection_process;
3379
3380/** serdes configuration.
3381 */
3382typedef struct bcmolt_serdes_configuration
3383{
3384 bcmolt_serdes_ranging_mode ranging_mode; /**< Select ranging mode for GPON/XGPON */
3385 bcmos_bool multi_ed_mode; /**< Allow for multiple ED for ED mode for GPON/XGPON */
3386 uint16_t burst_enable_start_offset; /**< Start offset for stat capture on SERDES channel */
3387 uint16_t burst_enable_end_offset; /**< End offset for stat capture on SERDES channel */
3388 bcmos_bool ed_invertion; /**< ed invertion. */
3389} bcmolt_serdes_configuration;
3390
3391/** serial number.
3392 */
3393typedef struct bcmolt_serial_number
3394{
3395 uint8_t vendor_id[4]; /**< vendor id. */
3396 uint8_t vendor_specific[4]; /**< vendor specific. */
3397} bcmolt_serial_number;
3398
3399/** Solicited Scheduler.
3400 */
3401typedef struct bcmolt_solicited_scheduler
3402{
3403 bcmolt_bandwidth_Kbps bandwidth_Kbps; /**< The maximum layer 1 throughput provided by this scheduler (in Kbps). */
3404 bcmolt_time_quanta max_burst_size_tq; /**< The maximum burst size (in TQ). */
3405 uint8_t priority; /**< The priority at which this scheduler runs. This field is read-only and fixed at 0 for the MIN Shaper/Scheduler element. */
3406 bcmolt_time_quanta weight_tq; /**< The weight of this scheduler (in TQ rounded up to nearest 128). Must be greater than or equal to Grant Threshold. */
3407} bcmolt_solicited_scheduler;
3408
3409/** Statistic alarm trigger configuration.
3410 */
3411typedef struct bcmolt_stat_alarm_trigger_config
3412{
3413 bcmolt_stat_condition_type type; /**< Type of condition to trigger the alarm. */
3414 union
3415 {
3416 struct
3417 {
3418 uint64_t rising; /**< The alarm is raised if the stats delta value per second becomes greater than this threshold level. */
3419 uint64_t falling; /**< The alarm is cleared if the stats delta value per second becomes less than this threshold level. */
3420 } rate_threshold;
3421
3422 struct
3423 {
3424 uint64_t upper; /**< The alarm is raised if the stats delta value per second becomes greater than this upper level. */
3425 uint64_t lower; /**< The alarm is raised if the stats delta value per second becomes less than this lower level. */
3426 } rate_range;
3427
3428 struct
3429 {
3430 uint64_t limit; /**< The alarm is raised if the stats sample value becomes greater than this level. The alarm is cleared when the host clears the stats. */
3431 } value_threshold;
3432 } u;
3433} bcmolt_stat_alarm_trigger_config;
3434
3435/** Statistics alarm soaking configuration
3436 */
3437typedef struct bcmolt_stat_alarm_soak_config
3438{
3439 uint32_t active_soak_time; /**< If the alarm condition is raised and stays in the raised state for at least this amount of time (unit=seconds), the alarm indication is sent to the host. */
3440 uint32_t clear_soak_time; /**< After the alarm is raised, if it is cleared and stays in the cleared state for at least this amount of time (unit=seconds), the alarm indication is sent to the host. */
3441} bcmolt_stat_alarm_soak_config;
3442
3443/** Statistic alarm configuration.
3444 */
3445typedef struct bcmolt_stat_alarm_config
3446{
3447 bcmolt_stat_alarm_trigger_config trigger; /**< Statistics alarm trigger configuration. */
3448 bcmolt_stat_alarm_soak_config soak; /**< Statistics alarm soaking configuration */
3449} bcmolt_stat_alarm_config;
3450
3451/** ASCII string with max length 100.
3452 */
3453typedef struct bcmolt_str_100
3454{
3455 char str[100]; /**< String. */
3456} bcmolt_str_100;
3457
3458/** ASCII string with max length 1000.
3459 */
3460typedef struct bcmolt_str_1000
3461{
3462 char str[1000]; /**< String. */
3463} bcmolt_str_1000;
3464
3465/** ASCII string with max length 2000.
3466 */
3467typedef struct bcmolt_str_2000
3468{
3469 char str[2000]; /**< String. */
3470} bcmolt_str_2000;
3471
3472/** ASCII string with max length 256.
3473 */
3474typedef struct bcmolt_str_256
3475{
3476 char str[256]; /**< String. */
3477} bcmolt_str_256;
3478
3479/** ASCII string with max length 64.
3480 */
3481typedef struct bcmolt_str_64
3482{
3483 char str[64]; /**< String. */
3484} bcmolt_str_64;
3485
3486/** SW Error.
3487 */
3488typedef struct bcmolt_sw_error
3489{
3490 uint64_t first_error_time_us; /**< Timestamp (in us) when his error first occurred */
3491 uint64_t last_error_time_us; /**< Timestamp (in us) when his error last occurred */
3492 uint32_t line_number; /**< Line Number. */
3493 uint32_t error_counter; /**< The number of times this error has occurred */
3494 uint32_t instance; /**< Instance. */
3495 char filename[64]; /**< Filename. */
3496 char task_name[64]; /**< Task Name. */
3497} bcmolt_sw_error;
3498
3499/** System profile
3500 */
3501typedef struct bcmolt_system_profile
3502{
3503 uint32_t ng_2_sys_id; /**< 20-bit identifier of the NGPON2 system */
3504 uint8_t version; /**< System profile version. */
3505 uint8_t channel_spacing; /**< An integer indicating the channel spacing in units of 1GHz */
3506 bcmolt_us_operating_wavelength_bands us_operating_wavelength_bands; /**< Upstream operating wavelength bands */
3507 uint8_t us_mse; /**< Upstream Maximum Spectral Excursion (MSE) represented as an unsigned integer indicating the value in units of 1GHz */
3508 bcmolt_calibration_record loose_calibration_bound; /**< Spectral excursion bound below which a TWDM ONU can be considered as loosely calibrated */
3509 uint16_t fsr; /**< If a cyclic WM is used in the upstream, Free Spectral Range indicates the value in units of 0.1 GHz */
3510 uint8_t twdm_channel_count; /**< The number of Channel_Profile PLOAM messages with distinct Channel Profile indices that an ONU can expect to receive while listening to this downstream wavelength channel */
3511} bcmolt_system_profile;
3512
3513/** TRX Delimiter.
3514 */
3515typedef struct bcmolt_trx_delimiter
3516{
3517 uint8_t pattern[3]; /**< pattern. */
3518 uint8_t size; /**< Size in bytes. */
3519 uint8_t window_size; /**< Window size. */
3520} bcmolt_trx_delimiter;
3521
3522/** TRX Energy detect.
3523 */
3524typedef struct bcmolt_trx_energy_detect
3525{
3526 bcmolt_energy_detect_source ranging_ed_source; /**< Ranging ED source. */
3527 bcmolt_energy_detect_source delimiter_ed_source; /**< Delimiter ED source. */
3528 uint8_t minimum_threshold; /**< Minimum threshold. */
3529 uint8_t maximum_threshold; /**< Maximum threshold. */
3530 uint8_t ed_pattern; /**< ED pattern. */
3531 uint8_t ed_pattern_size; /**< ED pattern size. */
3532 uint8_t window_size; /**< Window size. */
3533 bcmos_bool inversion; /**< Inversion. */
3534 uint8_t no_ed_threshold; /**< no ed threshold. */
3535} bcmolt_trx_energy_detect;
3536
3537/** TRX Preamble.
3538 */
3539typedef struct bcmolt_trx_preamble
3540{
3541 uint8_t type_1_size; /**< Type 1 size. */
3542 uint8_t type_2_size; /**< Type 2 size. */
3543 uint8_t type_3_pre_ranging_size; /**< Type 3 pre ranging size. */
3544 uint8_t type_3_post_ranging_size; /**< Type 3 post ranging size. */
3545 uint8_t type_3_pattern; /**< Type 3 pattern. */
3546} bcmolt_trx_preamble;
3547
3548/** TRX RX configuration.
3549 */
3550typedef struct bcmolt_trx_rx_configuration
3551{
3552 uint8_t wait_window_size; /**< Wait Window size. */
3553 uint8_t ranging_access_window_size; /**< Ranging access window size. */
3554} bcmolt_trx_rx_configuration;
3555
3556/** Variable-length list of U32.
3557 */
3558typedef struct bcmolt_u32_list_u32_max_500_hex
3559{
3560 uint32_t len; /**< List length. */
3561 uint32_t *val; /**< List contents. */
3562} bcmolt_u32_list_u32_max_500_hex;
3563
3564/** Variable-length list of U8.
3565 */
3566typedef struct bcmolt_u8_list_u16_hex
3567{
3568 uint16_t len; /**< List length. */
3569 uint8_t *val; /**< List contents. */
3570} bcmolt_u8_list_u16_hex;
3571
3572/** Variable-length list of U8.
3573 */
3574typedef struct bcmolt_u8_list_u32
3575{
3576 uint32_t len; /**< List length. */
3577 uint8_t *val; /**< List contents. */
3578} bcmolt_u8_list_u32;
3579
3580/** Variable-length list of U8.
3581 */
3582typedef struct bcmolt_u8_list_u32_max_2048
3583{
3584 uint32_t len; /**< List length. */
3585 uint8_t *val; /**< List contents. */
3586} bcmolt_u8_list_u32_max_2048;
3587
3588/** UBD Info.
3589 */
3590typedef struct bcmolt_ubd_info
3591{
3592 uint16_t actual_polling_interval; /**< Units: 65.536us */
3593 bcmolt_time_quanta actual_grant_threshold_tq; /**< Actual Grant Threshold (TQ). */
3594 bcmolt_actual_schedulershaper actual_min_schedulershaper; /**< Actual Min Scheduler/Shaper. */
3595 bcmolt_actual_schedulershaper actual_max_schedulershaper; /**< Actual Max Scheduler/Shaper. */
3596} bcmolt_ubd_info;
3597
3598/** The upstream bandwidth distribution for this LLID.
3599 */
3600typedef struct bcmolt_upstream_bandwidth_distribution
3601{
3602 bcmolt_polling_interval polling_interval_us; /**< The amount of time between when this LLID last reported upstream data and when it will next be polled (approximate: rounded down to the nearest 65.536 us). */
3603 bcmolt_time_quanta grant_threshold_tq; /**< Used to determine the maximum grant size that will be issued to this LLID (in TQ; rounded up to the nearest 128TQ; 1TQ = 16ns = 2Bytes@1G or 20Bytes@10G). */
3604 bcmolt_solicited_scheduler min_schedulershaper; /**< Min Scheduler/Shaper. */
3605 bcmolt_solicited_scheduler max_schedulershaper; /**< Max Scheduler/Shaper. */
3606 bcmolt_time_quanta tdm_grant_size_tq; /**< Size of TDM grants (in TQ). */
3607 uint32_t tdm_grant_interval_us; /**< Interval between TDM grants (in us). */
3608} bcmolt_upstream_bandwidth_distribution;
3609
3610/** VLAN tag.
3611 */
3612typedef struct bcmolt_vlan_tag
3613{
3614 bcmolt_vlan_id vlan_id; /**< VLAN ID. */
3615 uint8_t pbit; /**< Pbit. */
3616} bcmolt_vlan_tag;
3617
3618/** XGPON Alloc With State.
3619 */
3620typedef struct bcmolt_xgpon_alloc_with_state
3621{
3622 bcmolt_xgpon_alloc_id alloc_id; /**< Alloc ID. */
3623 bcmolt_alloc_state state; /**< State. */
3624} bcmolt_xgpon_alloc_with_state;
3625
3626/** Variable-length list of xgpon_alloc_with_state.
3627 */
3628typedef struct bcmolt_xgpon_alloc_with_state_list_u16_max_32
3629{
3630 uint16_t len; /**< List length. */
3631 bcmolt_xgpon_alloc_with_state *val; /**< List contents. */
3632} bcmolt_xgpon_alloc_with_state_list_u16_max_32;
3633
3634/** xgpon ed state.
3635 */
3636typedef struct bcmolt_xgpon_ed_state
3637{
3638 bcmos_bool reset_on_ed_fail; /**< reset on ED fail. */
3639 bcmos_bool reset_on_ed_success; /**< reset on ED success. */
3640} bcmolt_xgpon_ed_state;
3641
3642/** Variable-length list of xgpon_gem_id.
3643 */
3644typedef struct bcmolt_xgpon_gem_id_list_u8_max_16
3645{
3646 uint8_t len; /**< List length. */
3647 bcmolt_xgpon_gem_id *val; /**< List contents. */
3648} bcmolt_xgpon_gem_id_list_u8_max_16;
3649
3650/** XGPON GEM Port With State.
3651 */
3652typedef struct bcmolt_xgpon_gem_port_with_state
3653{
3654 bcmolt_xgpon_gem_id gem_id; /**< GEM ID. */
3655 bcmolt_xgpon_gem_port_state state; /**< State. */
3656} bcmolt_xgpon_gem_port_with_state;
3657
3658/** Variable-length list of xgpon_gem_port_with_state.
3659 */
3660typedef struct bcmolt_xgpon_gem_port_with_state_list_u16_max_128
3661{
3662 uint16_t len; /**< List length. */
3663 bcmolt_xgpon_gem_port_with_state *val; /**< List contents. */
3664} bcmolt_xgpon_gem_port_with_state_list_u16_max_128;
3665
3666/** Variable-length list of xgpon_gem_port_with_state.
3667 */
3668typedef struct bcmolt_xgpon_gem_port_with_state_list_u16_max_256
3669{
3670 uint16_t len; /**< List length. */
3671 bcmolt_xgpon_gem_port_with_state *val; /**< List contents. */
3672} bcmolt_xgpon_gem_port_with_state_list_u16_max_256;
3673
3674/** XGPON Key Exchange.
3675 */
3676typedef struct bcmolt_xgpon_key_exchange
3677{
3678 uint32_t interval; /**< Key Exchange process interval in milliseconds */
3679 bcmolt_control_state control; /**< Enable\disable periodic process of Key Exchange for active ONUs */
3680 bcmolt_control_state encrypted_ports_only; /**< Perform key exchange only to ONUs with GEM ports that have downstream encryption enabled */
3681} bcmolt_xgpon_key_exchange;
3682
3683/** XGPON Multicast key.
3684 */
3685typedef struct bcmolt_xgpon_multicast_key
3686{
3687 bcmolt_aes_key key; /**< AES encryption key for multicsat XGEM port IDs */
3688 bcmos_bool key_control; /**< Enable\Disable encryption on multicast XGEM ports */
3689} bcmolt_xgpon_multicast_key;
3690
3691/** XGPON NI Debug parameters
3692 */
3693typedef struct bcmolt_xgpon_ni_debug
3694{
3695 bcmos_bool increase_available_cbr_bw; /**< Use increase available CBR bandwidth for better BW utilization */
3696 uint16_t inter_burst_gap_in_bytes; /**< Gap between two consecutive bursts for the same ONU */
3697 uint16_t number_of_gem_ports_per_onu; /**< Number of gem ports per onu */
3698} bcmolt_xgpon_ni_debug;
3699
3700/** XGPON ONU Activation.
3701 */
3702typedef struct bcmolt_xgpon_onu_activation
3703{
3704 bcmolt_control_state key_exchange; /**< Perform single key exchange during activation. */
3705 bcmolt_control_state fail_due_to_regis_auto_fail; /**< Deactivate ONU due to registration authentication failure */
3706} bcmolt_xgpon_onu_activation;
3707
3708/** XGPON ONU AES KEY.
3709 */
3710typedef struct bcmolt_xgpon_onu_aes_key
3711{
3712 bcmolt_aes_key encryption_key; /**< encryption key. */
3713 uint8_t key_index; /**< key index. */
3714} bcmolt_xgpon_onu_aes_key;
3715
3716/** XGPON ONU alarm status.
3717 */
3718typedef struct bcmolt_xgpon_onu_alarm_state
3719{
3720 bcmolt_status losi; /**< Loss of signal. */
3721 bcmolt_status lobi; /**< Loss of burst. */
3722 bcmolt_status lopci; /**< Loss of PLOAM channel. */
3723 bcmolt_status lopci_mic_error; /**< Mic error on ploam channel. */
3724 bcmolt_status looci; /**< Loss of OMCI channel. */
3725 bcmolt_status tiwi; /**< Transmission interference Alarm. */
3726 bcmolt_status dowi; /**< Drift of Window. */
3727 bcmolt_status sufi; /**< Start UP Failure. */
3728 bcmolt_status sfi; /**< Signal Fail. */
3729 bcmolt_status sdi; /**< Signal Degraded. */
3730 bcmolt_status dfi; /**< Deactivation Failure. */
3731 bcmolt_status dgi; /**< Dying gasp. */
3732 bcmolt_status pqsi; /**< Ploam queue status. */
3733} bcmolt_xgpon_onu_alarm_state;
3734
3735/** XGPON ONU alarms.
3736 */
3737typedef struct bcmolt_xgpon_onu_alarms
3738{
3739 bcmolt_status losi; /**< LOSi. */
3740 bcmolt_status lobi; /**< LOBi. */
3741 bcmolt_status lopci_miss; /**< LOPCi miss. */
3742 bcmolt_status lopci_mic_error; /**< LOPCi mic error. */
3743} bcmolt_xgpon_onu_alarms;
3744
3745/** XGPON ONU alarms thresholds.
3746 */
3747typedef struct bcmolt_xgpon_onu_alarms_thresholds
3748{
3749 uint8_t losi; /**< Threshold for asserting LOSi alarm. */
3750 uint8_t lobi; /**< Threshold for asserting LOBi alarm. */
3751 uint8_t looci; /**< Threshold for asserting LOOCi alarm. */
3752 uint8_t lopci; /**< Threshold for asserting LOPCi alarm. */
3753} bcmolt_xgpon_onu_alarms_thresholds;
3754
3755/** XGPON ONU EQD.
3756 */
3757typedef struct bcmolt_xgpon_onu_eqd
3758{
3759 bcmolt_xgpon_onu_id onu_id; /**< ONU ID. */
3760 uint32_t eqd; /**< EQD. */
3761} bcmolt_xgpon_onu_eqd;
3762
3763/** Variable-length list of xgpon_onu_eqd.
3764 */
3765typedef struct bcmolt_xgpon_onu_eqd_list_u32
3766{
3767 uint32_t len; /**< List length. */
3768 bcmolt_xgpon_onu_eqd *val; /**< List contents. */
3769} bcmolt_xgpon_onu_eqd_list_u32;
3770
3771/** XGPON ONU registration keys.
3772 */
3773typedef struct bcmolt_xgpon_onu_registration_keys
3774{
3775 bcmolt_aes_key ploam_ik; /**< ploam ik. */
3776 bcmolt_aes_key omci_ik; /**< omci ik. */
3777 bcmolt_aes_key omci_k1; /**< omci k1. */
3778 bcmolt_aes_key omci_k2; /**< omci k2. */
3779 bcmolt_aes_key kek; /**< kek. */
3780} bcmolt_xgpon_onu_registration_keys;
3781
3782/** XGPON ONU With State.
3783 */
3784typedef struct bcmolt_xgpon_onu_with_state
3785{
3786 bcmolt_xgpon_onu_id onu_id; /**< ONU ID. */
3787 bcmolt_onu_state state; /**< State. */
3788} bcmolt_xgpon_onu_with_state;
3789
3790/** Variable-length list of xgpon_onu_with_state.
3791 */
3792typedef struct bcmolt_xgpon_onu_with_state_list_u16_max_510
3793{
3794 uint16_t len; /**< List length. */
3795 bcmolt_xgpon_onu_with_state *val; /**< List contents. */
3796} bcmolt_xgpon_onu_with_state_list_u16_max_510;
3797
3798/** XGPON PLOAM handling.
3799 */
3800typedef struct bcmolt_xgpon_ploam_handling
3801{
3802 uint32_t ack_timeout; /**< Timeout for receiving ACK ploam */
3803 uint8_t retrans_ranging_time; /**< Number of Ranging Time ploam retransmissions in case of ACK timeout */
3804 uint8_t retrans_assign_alloc_id; /**< Number of Assign Alloc ID ploam retransmissions in case of ACK timeout */
3805 uint8_t retrans_key_control; /**< Number of Key Control ploam retransmissions in case of ACK timeout */
3806 uint8_t retrans_request_registration; /**< Number of Request Registration ploam retransmissions in case of ACK timeout */
3807} bcmolt_xgpon_ploam_handling;
3808
3809/** XGPON protection switching configuration.
3810 */
3811typedef struct bcmolt_xgpon_protection_switching
3812{
3813 uint16_t timeout; /**< LOS switch over timeout in milliseconds */
3814 bcmolt_gpio_pin gpio_pin; /**< GPIO pin for input/output signal */
3815 bcmos_bool fast_ranging; /**< fast ranging */
3816} bcmolt_xgpon_protection_switching;
3817
3818/** xgpon protection switching debug.
3819 */
3820typedef struct bcmolt_xgpon_protection_switching_debug
3821{
3822 uint16_t data_map_delay_ms; /**< delay to wait after sending ranging time delta before running the data map */
3823 bcmos_bool rerange_send_ranging_time; /**< Should the SM send the current ranging time before doing the re-ranging */
3824 uint16_t rerange_send_ranging_time_delay; /**< the delay between sending the ranging time and starting the rerange */
3825} bcmolt_xgpon_protection_switching_debug;
3826
3827/** XGPON RSSI normal configuration.
3828 */
3829typedef struct bcmolt_xgpon_rssi_normal_config
3830{
3831 bcmolt_polarity polarity; /**< RSSI signal polarity */
3832 uint8_t location; /**< RSSI signal location in words */
3833 bcmolt_sign location_sign; /**< RSSI signal location sign */
3834 uint16_t pulse_width; /**< RSSI pulse width in words */
3835 uint16_t minimum_burst; /**< Data minimum burst size in words */
3836} bcmolt_xgpon_rssi_normal_config;
3837
3838/** xgpon rssi ranging config.
3839 */
3840typedef struct bcmolt_xgpon_rssi_ranging_config
3841{
3842 bcmos_bool start_on_ed; /**< start on ED. */
3843 uint8_t frame_delay; /**< frame delay from ED */
3844 uint16_t word_delay; /**< word delay from ED */
3845 uint8_t frame_delay_after_ed; /**< frame delay from start of ranging window */
3846 uint16_t word_delay_after_ed; /**< word delay from start of ranging window */
3847} bcmolt_xgpon_rssi_ranging_config;
3848
3849/** xgpon rx ranging SM patterns.
3850 */
3851typedef struct bcmolt_xgpon_rx_ranging_sm_pattern
3852{
3853 uint32_t trx_reset_pattern_first; /**< trx reset pattern first. */
3854 uint32_t trx_reset_pattern_middle; /**< trx reset pattern middle. */
3855 uint32_t trx_reset_pattern_last; /**< trx reset pattern last. */
3856 uint8_t trx_reset_middle_repeats; /**< trx reset middle repeats. */
3857 uint8_t trx_reset_location; /**< trx reset location. */
3858 uint32_t bcdr_reset_pattern_first; /**< bcdr reset pattern first. */
3859 uint32_t bcdr_reset_pattern_middle; /**< bcdr reset pattern middle. */
3860 uint32_t bcdr_reset_pattern_last; /**< bcdr reset pattern last. */
3861 uint8_t bcdr_reset_middle_repeats; /**< bcdr reset middle repeats. */
3862 uint8_t bcdr_reset_location; /**< bcdr reset location. */
3863 bcmos_bool bcdr_reset_polarity; /**< bcdr reset polarity. */
3864} bcmolt_xgpon_rx_ranging_sm_pattern;
3865
3866/** xgpon serdes configuration.
3867 */
3868typedef struct bcmolt_xgpon_serdes_configuration
3869{
3870 bcmos_bool multi_ed_mode; /**< multi ed mode. */
3871 bcmolt_xgpon_serdes_ranging_mode ranging_mode; /**< ranging mode. */
3872} bcmolt_xgpon_serdes_configuration;
3873
3874/** XGPON SN Acquisition.
3875 */
3876typedef struct bcmolt_xgpon_sn_acquisition
3877{
3878 uint32_t interval; /**< SN process interval in milliseconds */
3879 bcmolt_control_state control; /**< SN process control */
3880 bcmolt_onu_post_discovery_mode onu_post_discovery_mode; /**< Automatic operation following ONU discovery */
3881 bcmolt_burst_profile_index burst_profile; /**< Burst profile index to use during SN acquisition window */
3882} bcmolt_xgpon_sn_acquisition;
3883
3884/** xgpon_trx_debug.
3885 */
3886typedef struct bcmolt_xgpon_trx_debug
3887{
3888 bcmolt_control_state rx_reversed_polarity; /**< transceiver reversed polarity */
3889 bcmolt_control_state neg_out_bit; /**< turn all 1 to 0 and all 0 to 1 at the output. default is not to make negative bits */
3890} bcmolt_xgpon_trx_debug;
3891
3892/** @} */
3893#endif /* BCMOLT_MODEL_DATA_H_ */