blob: af683fc6f14dc69844d3faeb9a25d9347487b30a [file] [log] [blame]
Shad Ansari2f7f9be2017-06-07 13:34:53 -07001#ifndef BAL_MODEL_TYPES
2#define BAL_MODEL_TYPES
3
4#include <bcmos_system.h>
5#include "bal_obj.h"
6
7/** \defgroup object_model_data_types BAL Object Model Data Types
8 * @{
9 */
10typedef uint32_t bcmbal_access_id; /**< bcmbal_access_id: typed alias for a 32-bit unsigned integer. */
11typedef uint16_t bcmbal_aggregation_port_id; /**< bcmbal_aggregation_port_id: typed alias for a 16-bit unsigned integer. */
12typedef uint64_t bcmbal_cookie; /**< bcmbal_cookie: typed alias for a 64-bit unsigned integer. */
13typedef uint32_t bcmbal_intf_id; /**< bcmbal_intf_id: typed alias for a 32-bit unsigned integer. */
14typedef uint32_t bcmbal_sub_id; /**< bcmbal_sub_id: typed alias for a 32-bit unsigned integer. */
15#define BCMBAL_SUB_ID_UNKNOWN ((bcmbal_sub_id) 65535UL)
16typedef uint32_t bcmbal_flow_id; /**< bcmbal_flow_id: typed alias for a 32-bit unsigned integer. */
17typedef uint32_t bcmbal_group_id; /**< bcmbal_group_id: typed alias for a 32-bit unsigned integer. */
18typedef uint16_t bcmbal_service_port_id; /**< bcmbal_service_port_id: typed alias for a 16-bit unsigned integer. */
19typedef uint32_t bcmbal_tm_sched_id; /**< bcmbal_tm_sched_id: typed alias for a 32-bit unsigned integer. */
20#define BCMBAL_TM_SCHED_ID_UNKNOWN ((bcmbal_tm_sched_id) 65535UL)
21typedef uint8_t bcmbal_tm_queue_id; /**< bcmbal_tm_queue_id: typed alias for a 8-bit unsigned integer. */
22typedef uint8_t bcmbal_percent; /**< bcmbal_percent: typed alias for a 8-bit unsigned integer. */
23typedef uint8_t bcmbal_tm_priority; /**< bcmbal_tm_priority: typed alias for a 8-bit unsigned integer. */
24typedef uint16_t bcmbal_tm_sched_id_index; /**< bcmbal_tm_sched_id_index: typed alias for a 16-bit unsigned integer. */
25typedef uint8_t bcmbal_tm_weight; /**< bcmbal_tm_weight: typed alias for a 8-bit unsigned integer. */
26
27/** action ID.
28 */
29typedef enum bcmbal_action_id
30{
31 BCMBAL_ACTION_ID_NONE = 0,
32 BCMBAL_ACTION_ID_CMDS_BITMASK = 0x0001, /**< Commands bitmask. */
33 BCMBAL_ACTION_ID_O_VID = 0x0002, /**< Outer vid. */
34 BCMBAL_ACTION_ID_O_PBITS = 0x0004, /**< Outer pbits. */
35 BCMBAL_ACTION_ID_O_TPID = 0x0008, /**< Outer tpid. */
36 BCMBAL_ACTION_ID_I_VID = 0x0010, /**< Inner vid. */
37 BCMBAL_ACTION_ID_I_PBITS = 0x0020, /**< Inner pbits. */
38 BCMBAL_ACTION_ID_I_TPID = 0x0040, /**< Inner tpid. */
39 BCMBAL_ACTION_ID_ALL = 0x007F /**< All fields */
40} bcmbal_action_id;
41
42/** action_cmd_id.
43 */
44typedef enum bcmbal_action_cmd_id
45{
46 BCMBAL_ACTION_CMD_ID_NONE = 0,
47 BCMBAL_ACTION_CMD_ID_ADD_OUTER_TAG = 0x0001, /**< Add outer tag. */
48 BCMBAL_ACTION_CMD_ID_REMOVE_OUTER_TAG = 0x0002, /**< Remove outer tag. */
49 BCMBAL_ACTION_CMD_ID_XLATE_OUTER_TAG = 0x0004, /**< Translate outer tag. */
50 BCMBAL_ACTION_CMD_ID_XLATE_TWO_TAGS = 0x0008, /**< Translate two tags. */
51 BCMBAL_ACTION_CMD_ID_DISCARD_DS_BCAST = 0x0010, /**< Used to satisfy TR-156 Issue 3 R-111 */
52 BCMBAL_ACTION_CMD_ID_DISCARD_DS_UNKNOWN = 0x0020, /**< Used to satisfy TR-156 Issue 3 R-109 */
53 BCMBAL_ACTION_CMD_ID_ADD_TWO_TAGS = 0x0040, /**< Add two tags. */
54 BCMBAL_ACTION_CMD_ID_REMOVE_TWO_TAGS = 0x0080, /**< Remove two tags. */
55 BCMBAL_ACTION_CMD_ID_REMARK_PBITS = 0x0100, /**< Set the outer tag pbits */
56 BCMBAL_ACTION_CMD_ID_COPY_PBITS = 0x0200, /**< Copy the inner pbits to outer pbits */
57 BCMBAL_ACTION_CMD_ID_REVERSE_COPY_PBITS = 0x0400, /**< Copy the outer pbits to inner pbits */
58 BCMBAL_ACTION_CMD_ID_DSCP_TO_PBITS = 0x0800, /**< Copy the L4 DSCP to outer pbits */
59 BCMBAL_ACTION_CMD_ID_TRAP_TO_HOST = 0x1000 /**< Not a valid action for a group object member */
60} bcmbal_action_cmd_id;
61
62/** classifier ID.
63 */
64typedef enum bcmbal_classifier_id
65{
66 BCMBAL_CLASSIFIER_ID_NONE = 0,
67 BCMBAL_CLASSIFIER_ID_O_TPID = 0x0001, /**< Outer TPID of the packet to be classified */
68 BCMBAL_CLASSIFIER_ID_O_VID = 0x0002, /**< Outer VID of the packet to be classified */
69 BCMBAL_CLASSIFIER_ID_I_TPID = 0x0004, /**< Inner TPID of the packet to be classified */
70 BCMBAL_CLASSIFIER_ID_I_VID = 0x0008, /**< Inner VID of the packet to be classified */
71 BCMBAL_CLASSIFIER_ID_O_PBITS = 0x0010, /**< Outer PBITS of the packet to be classified */
72 BCMBAL_CLASSIFIER_ID_I_PBITS = 0x0020, /**< Inner PBITS of the packet to be classified */
73 BCMBAL_CLASSIFIER_ID_ETHER_TYPE = 0x0040, /**< Ethertype of the packet to be classified */
74 BCMBAL_CLASSIFIER_ID_DST_MAC = 0x0080, /**< Destination MAC address of the packet to be classified */
75 BCMBAL_CLASSIFIER_ID_SRC_MAC = 0x0100, /**< Source MAC address of the packet to be classified */
76 BCMBAL_CLASSIFIER_ID_IP_PROTO = 0x0200, /**< IP protocol of the packet to be classified */
77 BCMBAL_CLASSIFIER_ID_DST_IP = 0x0400, /**< Destination IP address of the packet to be classified */
78 BCMBAL_CLASSIFIER_ID_SRC_IP = 0x0800, /**< Source IP address of the packet to be classified */
79 BCMBAL_CLASSIFIER_ID_SRC_PORT = 0x1000, /**< Source port of the packet to be classified */
80 BCMBAL_CLASSIFIER_ID_DST_PORT = 0x2000, /**< Destination port of the packet to be classified */
81 BCMBAL_CLASSIFIER_ID_PKT_TAG_TYPE = 0x4000, /**< The tag type of the ingress packets */
82 BCMBAL_CLASSIFIER_ID_ALL = 0x7FFF /**< All fields */
83} bcmbal_classifier_id;
84
85/** Packet tag type.
86 */
87typedef enum bcmbal_pkt_tag_type
88{
89 BCMBAL_PKT_TAG_TYPE_NONE = 0,
90 BCMBAL_PKT_TAG_TYPE_UNTAGGED = 0x0001, /**< Untagged. */
91 BCMBAL_PKT_TAG_TYPE_SINGLE_TAG = 0x0002, /**< Single tag. */
92 BCMBAL_PKT_TAG_TYPE_DOUBLE_TAG = 0x0004 /**< Double tag. */
93} bcmbal_pkt_tag_type;
94
95/** Generic enable/disable enumeration
96 */
97typedef enum bcmbal_control
98{
99 BCMBAL_CONTROL_DISABLE = 0, /**< disable. */
100 BCMBAL_CONTROL_ENABLE = 1, /**< enable. */
101 BCMBAL_CONTROL__NUM_OF /**< Number of enum entries, not an entry itself. */
102} bcmbal_control;
103
104/** Destination type.
105 */
106typedef enum bcmbal_dest_type
107{
108 BCMBAL_DEST_TYPE_NNI = 1, /**< for packets being sent to the NNI */
109 BCMBAL_DEST_TYPE_SUB_TERM = 2, /**< for packets being sent to a subscriber terminal */
110 BCMBAL_DEST_TYPE_HOST = 3 /**< for packet indications received from NNI or SUB_TERM and being sent to the host */
111} bcmbal_dest_type;
112
113/** Downstrean action for unknown packets.
114 */
115typedef enum bcmbal_ds_miss_mode
116{
117 BCMBAL_DS_MISS_MODE_DISCARD = 0, /**< Discard. */
118 BCMBAL_DS_MISS_MODE_BROADCAST = 1, /**< Broadcast. */
119 BCMBAL_DS_MISS_MODE_VID = 2, /**< Vid. */
120 BCMBAL_DS_MISS_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
121} bcmbal_ds_miss_mode;
122
123/** Extra BW Eligibility Type
124 */
125typedef enum bcmbal_extra_bw_eligibility_type
126{
127 BCMBAL_EXTRA_BW_ELIGIBILITY_TYPE_NONE = 0, /**< None */
128 BCMBAL_EXTRA_BW_ELIGIBILITY_TYPE_NOT_ASSURED= 1, /**< Not assured */
129 BCMBAL_EXTRA_BW_ELIGIBILITY_TYPE_BEST_EFFORT= 2, /**< Best effort */
130 BCMBAL_EXTRA_BW_ELIGIBILITY_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
131} bcmbal_extra_bw_eligibility_type;
132
133/** Flow Type.
134 */
135typedef enum bcmbal_flow_type
136{
137 BCMBAL_FLOW_TYPE_UPSTREAM = 1, /**< Upstream flow */
138 BCMBAL_FLOW_TYPE_DOWNSTREAM = 2, /**< Downstream Flow */
139 BCMBAL_FLOW_TYPE_BROADCAST = 3, /**< Broadcast Flow */
140 BCMBAL_FLOW_TYPE_MULTICAST = 4 /**< Multicast Flow */
141} bcmbal_flow_type;
142
143/** Member operation type.
144 */
145typedef enum bcmbal_group_member_cmd
146{
147 BCMBAL_GROUP_MEMBER_CMD_ADD_MEMBERS = 1, /**< Add new members. */
148 BCMBAL_GROUP_MEMBER_CMD_REM_MEMBERS = 2, /**< Remove existing members. */
149 BCMBAL_GROUP_MEMBER_CMD_SET_MEMBERS = 3 /**< Replace members with new set. */
150} bcmbal_group_member_cmd;
151
152/** owner of the group
153 */
154typedef enum bcmbal_group_owner
155{
156 BCMBAL_GROUP_OWNER_NONE = 0, /**< no owner */
157 BCMBAL_GROUP_OWNER_MULTICAST = 1, /**< used as multicast group */
158 BCMBAL_GROUP_OWNER_UNICAST = 2, /**< used as unicast group */
159 BCMBAL_GROUP_OWNER__NUM_OF /**< Number of enum entries, not an entry itself. */
160} bcmbal_group_owner;
161
162/** Interface type.
163 */
164typedef enum bcmbal_intf_type
165{
166 BCMBAL_INTF_TYPE_NNI = 0, /**< NNI Interface. */
167 BCMBAL_INTF_TYPE_PON = 1, /**< POIN Interface. */
168 BCMBAL_INTF_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
169} bcmbal_intf_type;
170
171/** Interworking Function Mode.
172 */
173typedef enum bcmbal_iwf_mode
174{
175 BCMBAL_IWF_MODE_DIRECT_MAPPING = 0, /**< Direct mapping. */
176 BCMBAL_IWF_MODE_PER_FLOW = 1, /**< Per flow . */
177 BCMBAL_IWF_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
178} bcmbal_iwf_mode;
179
180/** SLA ID.
181 */
182typedef enum bcmbal_sla_id
183{
184 BCMBAL_SLA_ID_NONE = 0,
185 BCMBAL_SLA_ID_MIN_RATE = 0x0001, /**< The minimal rate for this flow, in kilobits per second (optional) */
186 BCMBAL_SLA_ID_MAX_RATE = 0x0002, /**< The maximum rate for this flow, in kilobits per second (optional) */
187 BCMBAL_SLA_ID_ALL = 0x0003 /**< All fields */
188} bcmbal_sla_id;
189
190/** Admin state values for access terminal object
191 */
192typedef enum bcmbal_state
193{
194 BCMBAL_STATE_UP = 1, /**< Admin state up */
195 BCMBAL_STATE_DOWN = 2, /**< Admin state down */
196 BCMBAL_STATE_TESTING = 3 /**< Admin state testing */
197} bcmbal_state;
198
199/** Oper status values
200 */
201typedef enum bcmbal_status
202{
203 BCMBAL_STATUS_UP = 1, /**< Oper status up */
204 BCMBAL_STATUS_DOWN = 2, /**< Oper status down */
205 BCMBAL_STATUS_TESTING = 3, /**< Oper status testing */
206 BCMBAL_STATUS_NOT_PRESENT = 4, /**< Oper status not present */
207 BCMBAL_STATUS_LOWER_LAYER_DOWN = 5, /**< Oper status lower layer down */
208 BCMBAL_STATUS_UNKNOWN = 6 /**< Oper status unknown */
209} bcmbal_status;
210
211/** Buffer Admission Control Type
212 */
213typedef enum bcmbal_tm_bac_type
214{
215 BCMBAL_TM_BAC_TYPE_TAILDROP = 0, /**< Taildrop */
216 BCMBAL_TM_BAC_TYPE_WTAILDROP = 1, /**< Weighted taildrop */
217 BCMBAL_TM_BAC_TYPE_RED = 2, /**< Random Early Discard */
218 BCMBAL_TM_BAC_TYPE_WRED = 3, /**< Weighted Random Early Discard */
219 BCMBAL_TM_BAC_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
220} bcmbal_tm_bac_type;
221
222/** TM Creation Mode
223 */
224typedef enum bcmbal_tm_creation_mode
225{
226 BCMBAL_TM_CREATION_MODE_MANUAL = 0, /**< tm object created manually */
227 BCMBAL_TM_CREATION_MODE_AUTO = 1, /**< tm object created automatically */
228 BCMBAL_TM_CREATION_MODE__NUM_OF /**< Number of enum entries, not an entry itself. */
229} bcmbal_tm_creation_mode;
230
231/** Scheduling Level for the Children TM
232 */
233typedef enum bcmbal_tm_sched_child_type
234{
235 BCMBAL_TM_SCHED_CHILD_TYPE_QUEUE = 0, /**< Queue-level scheduler */
236 BCMBAL_TM_SCHED_CHILD_TYPE_SCHED = 1, /**< Scheduler-level scheduler */
237 BCMBAL_TM_SCHED_CHILD_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
238} bcmbal_tm_sched_child_type;
239
240/** Traffic Direction
241 */
242typedef enum bcmbal_tm_sched_dir
243{
244 BCMBAL_TM_SCHED_DIR_US = 1, /**< Upstream */
245 BCMBAL_TM_SCHED_DIR_DS = 2 /**< Downstream */
246} bcmbal_tm_sched_dir;
247
248/** TM Scheduler Owner Type
249 */
250typedef enum bcmbal_tm_sched_owner_type
251{
252 BCMBAL_TM_SCHED_OWNER_TYPE_UNDEFINED = 0, /**< Undefined */
253 BCMBAL_TM_SCHED_OWNER_TYPE_INTERFACE = 1, /**< Interface */
254 BCMBAL_TM_SCHED_OWNER_TYPE_SUB_TERM = 2, /**< Subscriber terminal */
255 BCMBAL_TM_SCHED_OWNER_TYPE_AGG_PORT = 3, /**< TM scheduler is owned by aggregation port */
256 BCMBAL_TM_SCHED_OWNER_TYPE_UNI = 4, /**< TM scheduler is owned by UNI port */
257 BCMBAL_TM_SCHED_OWNER_TYPE_VIRTUAL = 5, /**< Other unspecified owner */
258 BCMBAL_TM_SCHED_OWNER_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
259} bcmbal_tm_sched_owner_type;
260
261/** tm_sched_owner agg_port ID.
262 */
263typedef enum bcmbal_tm_sched_owner_agg_port_id
264{
265 BCMBAL_TM_SCHED_OWNER_AGG_PORT_ID_NONE = 0,
266 BCMBAL_TM_SCHED_OWNER_AGG_PORT_ID_INTF_ID = 0x0001, /**< PON interface id */
267 BCMBAL_TM_SCHED_OWNER_AGG_PORT_ID_SUB_TERM_ID = 0x0002, /**< Subscriber terminal id */
268 BCMBAL_TM_SCHED_OWNER_AGG_PORT_ID_AGG_PORT_ID = 0x0004, /**< Aggregation port id */
269 BCMBAL_TM_SCHED_OWNER_AGG_PORT_ID_ALL = 0x0007 /**< All fields */
270} bcmbal_tm_sched_owner_agg_port_id;
271
272/** tm_sched_parent ID.
273 */
274typedef enum bcmbal_tm_sched_parent_id
275{
276 BCMBAL_TM_SCHED_PARENT_ID_NONE = 0,
277 BCMBAL_TM_SCHED_PARENT_ID_SCHED_ID = 0x0001, /**< Parent scheduler id */
278 BCMBAL_TM_SCHED_PARENT_ID_PRIORITY = 0x0002, /**< Priority */
279 BCMBAL_TM_SCHED_PARENT_ID_WEIGHT = 0x0004, /**< Weight */
280 BCMBAL_TM_SCHED_PARENT_ID_ALL = 0x0007 /**< All fields */
281} bcmbal_tm_sched_parent_id;
282
283/** Scheduler Type
284 */
285typedef enum bcmbal_tm_sched_type
286{
287 BCMBAL_TM_SCHED_TYPE_NONE = 0, /**< NO scheduling */
288 BCMBAL_TM_SCHED_TYPE_WFQ = 1, /**< Weighted Fair Queue */
289 BCMBAL_TM_SCHED_TYPE_SP = 2, /**< Strict Priority */
290 BCMBAL_TM_SCHED_TYPE_SP_WFQ = 3, /**< Hybrid SP + WFQ */
291 BCMBAL_TM_SCHED_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
292} bcmbal_tm_sched_type;
293
294/** tm_shaping ID.
295 */
296typedef enum bcmbal_tm_shaping_id
297{
298 BCMBAL_TM_SHAPING_ID_NONE = 0,
299 BCMBAL_TM_SHAPING_ID_SBR = 0x0001, /**< Sustained Bit Rate (kbps) */
300 BCMBAL_TM_SHAPING_ID_PBR = 0x0002, /**< Peak Bit Rate (kbps) */
301 BCMBAL_TM_SHAPING_ID_BURST = 0x0004, /**< Max Burst Bytes at Peak Bit Rate */
302 BCMBAL_TM_SHAPING_ID_ALL = 0x0007 /**< All fields */
303} bcmbal_tm_shaping_id;
304
305/** tm_tcont_sla ID.
306 */
307typedef enum bcmbal_tm_tcont_sla_id
308{
309 BCMBAL_TM_TCONT_SLA_ID_NONE = 0,
310 BCMBAL_TM_TCONT_SLA_ID_EXTRA_BW_ELIG = 0x0001, /**< Extra BW eligibility type */
311 BCMBAL_TM_TCONT_SLA_ID_NRT_CBR = 0x0002, /**< NRT CBR */
312 BCMBAL_TM_TCONT_SLA_ID_RT_CBR = 0x0004, /**< RT_CBR */
313 BCMBAL_TM_TCONT_SLA_ID_RT_PROFILE = 0x0008, /**< RT Profile */
314 BCMBAL_TM_TCONT_SLA_ID_NRT_PROFILE = 0x0010, /**< NRT Profile */
315 BCMBAL_TM_TCONT_SLA_ID_ALL = 0x001F /**< All fields */
316} bcmbal_tm_tcont_sla_id;
317
318/** Transceiver types
319 */
320typedef enum bcmbal_trx_type
321{
322 BCMBAL_TRX_TYPE_GPON_SPS_43_48 = 0, /**< gpon_sps_43_48. */
323 BCMBAL_TRX_TYPE_GPON_SPS_SOG_4321 = 1, /**< gpon_sps_sog_4321. */
324 BCMBAL_TRX_TYPE_GPON_LTE_3680_M = 2, /**< gpon_lte_3680_m. */
325 BCMBAL_TRX_TYPE_GPON_SOURCE_PHOTONICS = 3, /**< gpon_source_photonics. */
326 BCMBAL_TRX_TYPE_GPON_LTE_3680_P = 4, /**< gpon_lte_3680_p. */
327 BCMBAL_TRX_TYPE_XGPON_LTH_7222_PC = 5, /**< xgpon_lth_7222_pc. */
328 BCMBAL_TRX_TYPE_XGPON_LTH_7226_PC = 6, /**< xgpon_lth_7226_pc. */
329 BCMBAL_TRX_TYPE_XGPON_LTH_5302_PC = 7, /**< xgpon_lth_5302_pc. */
330 BCMBAL_TRX_TYPE__NUM_OF /**< Number of enum entries, not an entry itself. */
331} bcmbal_trx_type;
332
333#define bcmbal_action_id_none BCMBAL_ACTION_ID_NONE
334#define bcmbal_action_id_cmds_bitmask BCMBAL_ACTION_ID_CMDS_BITMASK
335#define bcmbal_action_id_o_vid BCMBAL_ACTION_ID_O_VID
336#define bcmbal_action_id_o_pbits BCMBAL_ACTION_ID_O_PBITS
337#define bcmbal_action_id_o_tpid BCMBAL_ACTION_ID_O_TPID
338#define bcmbal_action_id_i_vid BCMBAL_ACTION_ID_I_VID
339#define bcmbal_action_id_i_pbits BCMBAL_ACTION_ID_I_PBITS
340#define bcmbal_action_id_i_tpid BCMBAL_ACTION_ID_I_TPID
341#define bcmbal_action_id_all BCMBAL_ACTION_ID_ALL
342#define bcmbal_classifier_id_none BCMBAL_CLASSIFIER_ID_NONE
343#define bcmbal_classifier_id_o_tpid BCMBAL_CLASSIFIER_ID_O_TPID
344#define bcmbal_classifier_id_o_vid BCMBAL_CLASSIFIER_ID_O_VID
345#define bcmbal_classifier_id_i_tpid BCMBAL_CLASSIFIER_ID_I_TPID
346#define bcmbal_classifier_id_i_vid BCMBAL_CLASSIFIER_ID_I_VID
347#define bcmbal_classifier_id_o_pbits BCMBAL_CLASSIFIER_ID_O_PBITS
348#define bcmbal_classifier_id_i_pbits BCMBAL_CLASSIFIER_ID_I_PBITS
349#define bcmbal_classifier_id_ether_type BCMBAL_CLASSIFIER_ID_ETHER_TYPE
350#define bcmbal_classifier_id_dst_mac BCMBAL_CLASSIFIER_ID_DST_MAC
351#define bcmbal_classifier_id_src_mac BCMBAL_CLASSIFIER_ID_SRC_MAC
352#define bcmbal_classifier_id_ip_proto BCMBAL_CLASSIFIER_ID_IP_PROTO
353#define bcmbal_classifier_id_dst_ip BCMBAL_CLASSIFIER_ID_DST_IP
354#define bcmbal_classifier_id_src_ip BCMBAL_CLASSIFIER_ID_SRC_IP
355#define bcmbal_classifier_id_src_port BCMBAL_CLASSIFIER_ID_SRC_PORT
356#define bcmbal_classifier_id_dst_port BCMBAL_CLASSIFIER_ID_DST_PORT
357#define bcmbal_classifier_id_pkt_tag_type BCMBAL_CLASSIFIER_ID_PKT_TAG_TYPE
358#define bcmbal_classifier_id_all BCMBAL_CLASSIFIER_ID_ALL
359#define bcmbal_sla_id_none BCMBAL_SLA_ID_NONE
360#define bcmbal_sla_id_min_rate BCMBAL_SLA_ID_MIN_RATE
361#define bcmbal_sla_id_max_rate BCMBAL_SLA_ID_MAX_RATE
362#define bcmbal_sla_id_all BCMBAL_SLA_ID_ALL
363#define bcmbal_tm_sched_owner_agg_port_id_none BCMBAL_TM_SCHED_OWNER_AGG_PORT_ID_NONE
364#define bcmbal_tm_sched_owner_agg_port_id_intf_id BCMBAL_TM_SCHED_OWNER_AGG_PORT_ID_INTF_ID
365#define bcmbal_tm_sched_owner_agg_port_id_sub_term_id BCMBAL_TM_SCHED_OWNER_AGG_PORT_ID_SUB_TERM_ID
366#define bcmbal_tm_sched_owner_agg_port_id_agg_port_id BCMBAL_TM_SCHED_OWNER_AGG_PORT_ID_AGG_PORT_ID
367#define bcmbal_tm_sched_owner_agg_port_id_all BCMBAL_TM_SCHED_OWNER_AGG_PORT_ID_ALL
368#define bcmbal_tm_sched_parent_id_none BCMBAL_TM_SCHED_PARENT_ID_NONE
369#define bcmbal_tm_sched_parent_id_sched_id BCMBAL_TM_SCHED_PARENT_ID_SCHED_ID
370#define bcmbal_tm_sched_parent_id_priority BCMBAL_TM_SCHED_PARENT_ID_PRIORITY
371#define bcmbal_tm_sched_parent_id_weight BCMBAL_TM_SCHED_PARENT_ID_WEIGHT
372#define bcmbal_tm_sched_parent_id_all BCMBAL_TM_SCHED_PARENT_ID_ALL
373#define bcmbal_tm_shaping_id_none BCMBAL_TM_SHAPING_ID_NONE
374#define bcmbal_tm_shaping_id_sbr BCMBAL_TM_SHAPING_ID_SBR
375#define bcmbal_tm_shaping_id_pbr BCMBAL_TM_SHAPING_ID_PBR
376#define bcmbal_tm_shaping_id_burst BCMBAL_TM_SHAPING_ID_BURST
377#define bcmbal_tm_shaping_id_all BCMBAL_TM_SHAPING_ID_ALL
378#define bcmbal_tm_tcont_sla_id_none BCMBAL_TM_TCONT_SLA_ID_NONE
379#define bcmbal_tm_tcont_sla_id_extra_bw_elig BCMBAL_TM_TCONT_SLA_ID_EXTRA_BW_ELIG
380#define bcmbal_tm_tcont_sla_id_nrt_cbr BCMBAL_TM_TCONT_SLA_ID_NRT_CBR
381#define bcmbal_tm_tcont_sla_id_rt_cbr BCMBAL_TM_TCONT_SLA_ID_RT_CBR
382#define bcmbal_tm_tcont_sla_id_rt_profile BCMBAL_TM_TCONT_SLA_ID_RT_PROFILE
383#define bcmbal_tm_tcont_sla_id_nrt_profile BCMBAL_TM_TCONT_SLA_ID_NRT_PROFILE
384#define bcmbal_tm_tcont_sla_id_all BCMBAL_TM_TCONT_SLA_ID_ALL
385
386/** action.
387 */
388typedef struct bcmbal_action
389{
390 bcmbal_action_id presence_mask; /**< Presence Mask. */
391 bcmbal_action_cmd_id cmds_bitmask; /**< Commands bitmask. */
392 uint16_t o_vid; /**< Outer vid. */
393 uint8_t o_pbits; /**< Outer pbits. */
394 uint16_t o_tpid; /**< Outer tpid. */
395 uint16_t i_vid; /**< Inner vid. */
396 uint8_t i_pbits; /**< Inner pbits. */
397 uint16_t i_tpid; /**< Inner tpid. */
398} bcmbal_action;
399
400/** Variable-length list of aggregation_port_id.
401 */
402typedef struct bcmbal_aggregation_port_id_list_u8
403{
404 uint8_t len; /**< List length. */
405 bcmbal_aggregation_port_id *val; /**< List contents. */
406} bcmbal_aggregation_port_id_list_u8;
407
408/** classifier.
409 */
410typedef struct bcmbal_classifier
411{
412 bcmbal_classifier_id presence_mask; /**< Presence Mask. */
413 uint16_t o_tpid; /**< Outer TPID of the packet to be classified */
414 uint16_t o_vid; /**< Outer VID of the packet to be classified */
415 uint16_t i_tpid; /**< Inner TPID of the packet to be classified */
416 uint16_t i_vid; /**< Inner VID of the packet to be classified */
417 uint8_t o_pbits; /**< Outer PBITS of the packet to be classified */
418 uint8_t i_pbits; /**< Inner PBITS of the packet to be classified */
419 uint16_t ether_type; /**< Ethertype of the packet to be classified */
420 bcmos_mac_address dst_mac; /**< Destination MAC address of the packet to be classified */
421 bcmos_mac_address src_mac; /**< Source MAC address of the packet to be classified */
422 uint8_t ip_proto; /**< IP protocol of the packet to be classified */
423 bcmos_ipv4_address dst_ip; /**< Destination IP address of the packet to be classified */
424 bcmos_ipv4_address src_ip; /**< Source IP address of the packet to be classified */
425 uint16_t src_port; /**< Source port of the packet to be classified */
426 uint16_t dst_port; /**< Destination port of the packet to be classified */
427 bcmbal_pkt_tag_type pkt_tag_type; /**< The tag type of the ingress packets */
428} bcmbal_classifier;
429
430/** Packet destination.
431 */
432typedef struct bcmbal_dest
433{
434 bcmbal_dest_type type; /**< packet destination. */
435 union
436 {
437 struct
438 {
439 bcmbal_intf_id int_id; /**< Interface ID. */
440 } nni;
441
442 struct
443 {
444 bcmbal_sub_id sub_term_id; /**< Subscriber terminal ID. */
445 uint16_t sub_term_uni; /**< Subscriber terminal UNI. */
446 uint16_t int_id; /**< Interface ID. */
447 } sub_term;
448 } u;
449} bcmbal_dest;
450
451/** Variable-length list of flow_id.
452 */
453typedef struct bcmbal_flow_id_list_u32
454{
455 uint32_t len; /**< List length. */
456 bcmbal_flow_id *val; /**< List contents. */
457} bcmbal_flow_id_list_u32;
458
459/** Queue Reference
460 */
461typedef struct bcmbal_tm_queue_ref
462{
463 bcmbal_tm_sched_id sched_id; /**< Scheduler (tm_sched) ID */
464 bcmbal_tm_queue_id queue_id; /**< Queue ID */
465} bcmbal_tm_queue_ref;
466
467/** Group Member Info.
468 */
469typedef struct bcmbal_group_member_info
470{
471 bcmbal_intf_id intf_id; /**< Access interface id for this member */
472 bcmbal_service_port_id svc_port_id; /**< The multicast "GEM" for this member */
473 bcmbal_action action; /**< VLAN actions */
474 bcmbal_tm_queue_ref queue; /**< Egress queue */
475} bcmbal_group_member_info;
476
477/** Variable-length list of group_member_info.
478 */
479typedef struct bcmbal_group_member_info_list_u16
480{
481 uint16_t len; /**< List length. */
482 bcmbal_group_member_info *val; /**< List contents. */
483} bcmbal_group_member_info_list_u16;
484
485/** Password.
486 */
487typedef struct bcmbal_password
488{
489 uint8_t arr[10]; /**< Array. */
490} bcmbal_password;
491
492/** Registration id.
493 */
494typedef struct bcmbal_registration_id
495{
496 uint8_t arr[36]; /**< ONU registration ID */
497} bcmbal_registration_id;
498
499/** Serial number.
500 */
501typedef struct bcmbal_serial_number
502{
503 uint8_t vendor_id[4]; /**< vendor id. */
504 uint8_t vendor_specific[4]; /**< vendor specific. */
505} bcmbal_serial_number;
506
507/** Variable-length list of service_port_id.
508 */
509typedef struct bcmbal_service_port_id_list_u8
510{
511 uint8_t len; /**< List length. */
512 bcmbal_service_port_id *val; /**< List contents. */
513} bcmbal_service_port_id_list_u8;
514
515/** SLA.
516 */
517typedef struct bcmbal_sla
518{
519 bcmbal_sla_id presence_mask; /**< Presence Mask. */
520 uint32_t min_rate; /**< The minimal rate for this flow, in kilobits per second (optional) */
521 uint32_t max_rate; /**< The maximum rate for this flow, in kilobits per second (optional) */
522} bcmbal_sla;
523
524/** Variable-length list of sub_id.
525 */
526typedef struct bcmbal_sub_id_list_u16
527{
528 uint16_t len; /**< List length. */
529 bcmbal_sub_id *val; /**< List contents. */
530} bcmbal_sub_id_list_u16;
531
532/** Random Early Discard Configuration
533 */
534typedef struct bcmbal_tm_red
535{
536 bcmbal_percent min_threshold; /**< Min threshold in percent of max queue size */
537 bcmbal_percent max_threshold; /**< Max threshold in percent of max queue size */
538 bcmbal_percent max_probability; /**< Discard probability for occupancy between min_threshold and max_threshold */
539} bcmbal_tm_red;
540
541/** Queue Buffer Admission Control
542 */
543typedef struct bcmbal_tm_bac
544{
545 bcmbal_tm_bac_type type; /**< Buffer Admission Control Type */
546 union
547 {
548 struct
549 {
550 uint32_t max_size; /**< max number of packets in the queue */
551 } taildrop;
552
553 struct
554 {
555 bcmbal_tm_red red; /**< Random Early Discard configuration */
556 } red;
557
558 struct
559 {
560 bcmbal_tm_red green; /**< Green Random Early Discard Configuration */
561 bcmbal_tm_red yellow; /**< Yellow Random Early Discard Configuration */
562 bcmbal_tm_red red; /**< Red Random Early Discard Configuration */
563 } wred;
564 } u;
565} bcmbal_tm_bac;
566
567/** Variable-length list of tm_queue_id.
568 */
569typedef struct bcmbal_tm_queue_id_list_u8
570{
571 uint8_t len; /**< List length. */
572 bcmbal_tm_queue_id *val; /**< List contents. */
573} bcmbal_tm_queue_id_list_u8;
574
575/** Variable-length list of tm_sched_id.
576 */
577typedef struct bcmbal_tm_sched_id_list_u8
578{
579 uint8_t len; /**< List length. */
580 bcmbal_tm_sched_id *val; /**< List contents. */
581} bcmbal_tm_sched_id_list_u8;
582
583/** TM Scheduler Owner
584 */
585typedef struct bcmbal_tm_sched_owner
586{
587 bcmbal_tm_sched_owner_type type; /**< Owner type */
588 union
589 {
590 struct
591 {
592 bcmbal_intf_type intf_type; /**< Interface Type */
593 bcmbal_intf_id intf_id; /**< Interface ID */
594 } interface;
595
596 struct
597 {
598 bcmbal_intf_id intf_id; /**< PON interface id */
599 bcmbal_sub_id sub_term_id; /**< Subscriber terminal ID */
600 } sub_term;
601
602 struct
603 {
604 bcmbal_tm_sched_owner_agg_port_id presence_mask; /**< Presence Mask. */
605 uint8_t intf_id; /**< PON interface id */
606 bcmbal_sub_id sub_term_id; /**< Subscriber terminal id */
607 bcmbal_aggregation_port_id agg_port_id; /**< Aggregation port id */
608 } agg_port;
609
610 struct
611 {
612 uint8_t intf_id; /**< PON interface id */
613 bcmbal_sub_id sub_term_id; /**< Subscriber terminal id */
614 uint8_t idx; /**< Index at subscriber terminal */
615 } uni;
616
617 struct
618 {
619 uint32_t idx; /**< Owner index */
620 } virtual;
621 } u;
622} bcmbal_tm_sched_owner;
623
624/** Scheduling Parent Connect Point
625 */
626typedef struct bcmbal_tm_sched_parent
627{
628 bcmbal_tm_sched_parent_id presence_mask; /**< Presence Mask. */
629 bcmbal_tm_sched_id sched_id; /**< Parent scheduler id */
630 bcmbal_tm_priority priority; /**< Priority */
631 bcmbal_tm_weight weight; /**< Weight */
632} bcmbal_tm_sched_parent;
633
634/** Shaping Parameters
635 */
636typedef struct bcmbal_tm_shaping
637{
638 bcmbal_tm_shaping_id presence_mask; /**< Presence Mask. */
639 uint32_t sbr; /**< Sustained Bit Rate (kbps) */
640 uint32_t pbr; /**< Peak Bit Rate (kbps) */
641 uint32_t burst; /**< Max Burst Bytes at Peak Bit Rate */
642} bcmbal_tm_shaping;
643
644/** ITU-PON Extended SLA Parameters
645 */
646typedef struct bcmbal_tm_tcont_sla
647{
648 bcmbal_tm_tcont_sla_id presence_mask; /**< Presence Mask. */
649 bcmbal_extra_bw_eligibility_type extra_bw_elig; /**< Extra BW eligibility type */
650 uint8_t nrt_cbr; /**< NRT CBR */
651 uint8_t rt_cbr; /**< RT_CBR */
652 uint8_t rt_profile; /**< RT Profile */
653 uint8_t nrt_profile; /**< NRT Profile */
654} bcmbal_tm_tcont_sla;
655
656/** Variable-length list of U8.
657 */
658typedef struct bcmbal_u8_list_u32
659{
660 uint32_t len; /**< List length. */
661 uint8_t *val; /**< List contents. */
662} bcmbal_u8_list_u32;
663
664/** Structure definition for the "key" group of the "access_terminal" object.
665 */
666typedef struct bcmbal_access_terminal_key
667{
668 bcmbal_access_id access_term_id; /**< Reserved (set to 0) */
669} bcmbal_access_terminal_key;
670
671/** Structure definition for the "cfg" group of the "access_terminal" object.
672 */
673typedef struct bcmbal_access_terminal_cfg_data
674{
675 bcmbal_state admin_state; /**< Administrative state */
676 bcmbal_status oper_status; /**< Operational status */
677 bcmbal_iwf_mode iwf_mode; /**< The interworking mode */
678} bcmbal_access_terminal_cfg_data;
679
680/** Transport message definition for "cfg" group of "access_terminal" object.
681 */
682typedef struct bcmbal_access_terminal_cfg
683{
684 bcmbal_cfg hdr; /**< Transport header. */
685 bcmbal_access_terminal_key key; /**< Object key. */
686 bcmbal_access_terminal_cfg_data data; /**< All properties that must be set by the user. */
687} bcmbal_access_terminal_cfg;
688
689/** Structure definition for the "ind" group of the "access_terminal" object.
690 */
691typedef struct bcmbal_access_terminal_ind_data
692{
693 bcmbal_state admin_state; /**< Current administrative state */
694 bcmbal_status oper_status; /**< Current operational status */
695 bcmbal_iwf_mode iwf_mode; /**< The interworking mode */
696} bcmbal_access_terminal_ind_data;
697
698/** Transport message definition for "ind" group of "access_terminal" object.
699 */
700typedef struct bcmbal_access_terminal_ind
701{
702 bcmbal_auto hdr; /**< Transport header. */
703 bcmbal_access_terminal_key key; /**< Object key. */
704 bcmbal_access_terminal_ind_data data; /**< All properties that must be set by the user. */
705} bcmbal_access_terminal_ind;
706
707/** Structure definition for the "key" group of the "flow" object.
708 */
709typedef struct bcmbal_flow_key
710{
711 bcmbal_flow_id flow_id; /**< The ID of the flow object instance being referenced */
712 bcmbal_flow_type flow_type; /**< The type of the flow, Upstream, Downstream, Broadcast or Multicast */
713} bcmbal_flow_key;
714
715/** Structure definition for the "cfg" group of the "flow" object.
716 */
717typedef struct bcmbal_flow_cfg_data
718{
719 bcmbal_state admin_state; /**< Administrative state */
720 bcmbal_status oper_status; /**< Operational status */
721 bcmbal_intf_id access_int_id; /**< The ID of the subscriber side interface; i.e. PON */
722 bcmbal_intf_id network_int_id; /**< The ID of the network side interface; i.e. NNI */
723 bcmbal_sub_id sub_term_id; /**< The ID of the subsccriber terminal device */
724 uint8_t sub_term_uni_idx; /**< The index of the subsccriber terminal uni port the flow is related to */
725 bcmbal_service_port_id svc_port_id; /**< The ID of the service port (for GPON/XGPON - GEM ID) */
726 bcmbal_aggregation_port_id agg_port_id; /**< The ID of the aggregate port (for GPON/XGPON - ALLOC ID) */
727 bcmos_bool resolve_mac; /**< A flag indicating if the MAC address table should be used in DS GEM resolution */
728 bcmbal_classifier classifier; /**< The classifier for this flow */
729 bcmbal_action action; /**< The action associated with the flow */
730 bcmbal_sla sla; /**< SLA parameters for this flow */
731 bcmbal_cookie cookie; /**< Application cookie */
732 uint16_t priority; /**< Priority for this flow in case of multiple match. */
733 bcmbal_group_id group_id; /**< RW - The multicast group associated with this flow, valid for type MULTICAST only */
734 bcmbal_tm_queue_ref queue; /**< Egress queue */
735} bcmbal_flow_cfg_data;
736
737/** Transport message definition for "cfg" group of "flow" object.
738 */
739typedef struct bcmbal_flow_cfg
740{
741 bcmbal_cfg hdr; /**< Transport header. */
742 bcmbal_flow_key key; /**< Object key. */
743 bcmbal_flow_cfg_data data; /**< All properties that must be set by the user. */
744} bcmbal_flow_cfg;
745
746/** Structure definition for the "stat" group of the "flow" object.
747 */
748typedef struct bcmbal_flow_stat_data
749{
750 uint64_t rx_packets; /**< Received packets. */
751 uint64_t rx_bytes; /**< Received bytes. */
752 uint64_t tx_packets; /**< Transmitted packets. */
753 uint64_t tx_bytes; /**< Transmitted bytes. */
754} bcmbal_flow_stat_data;
755
756/** Transport message definition for "stat" group of "flow" object.
757 */
758typedef struct bcmbal_flow_stat
759{
760 bcmbal_stat hdr; /**< Transport header. */
761 bcmbal_flow_key key; /**< Object key. */
762 bcmbal_flow_stat_data data; /**< All properties that must be set by the user. */
763} bcmbal_flow_stat;
764
765/** Structure definition for the "ind" group of the "flow" object.
766 */
767typedef struct bcmbal_flow_ind_data
768{
769 bcmbal_state admin_state; /**< Administrative state */
770 bcmbal_status oper_status; /**< Operational Status */
771 uint16_t access_int_id; /**< The ID of the subscriber side interface; i.e. PON */
772 uint16_t network_int_id; /**< The ID of the network side interface; i.e. NNI */
773 uint32_t sub_term_id; /**< The ID of the subsccriber terminal device */
774 uint16_t svc_port_id; /**< The ID of the service port (for GPON/XGPON - GEM ID) */
775 uint16_t agg_port_id; /**< The ID of the aggregate port (for GPON/XGPON - ALLOC ID) */
776 bcmos_bool resolve_mac; /**< A flag indicating if the MAC address table should be used in DS GEM resolution */
777 uint16_t base_tc_id; /**< The base index of the TC object(s) to be used for this flow */
778 bcmbal_classifier classifier; /**< The classifier for this flow */
779 bcmbal_action action; /**< The action associated with the flow */
780 bcmbal_sla sla; /**< SLA parameters for this flow */
781 uint32_t cookie; /**< Application cookie */
782 uint16_t priority; /**< Priority for this flow in case of multiple match. */
783} bcmbal_flow_ind_data;
784
785/** Transport message definition for "ind" group of "flow" object.
786 */
787typedef struct bcmbal_flow_ind
788{
789 bcmbal_auto hdr; /**< Transport header. */
790 bcmbal_flow_key key; /**< Object key. */
791 bcmbal_flow_ind_data data; /**< All properties that must be set by the user. */
792} bcmbal_flow_ind;
793
794/** Structure definition for the "key" group of the "group" object.
795 */
796typedef struct bcmbal_group_key
797{
798 bcmbal_group_id group_id; /**< The ID of the group object instance being referenced */
799} bcmbal_group_key;
800
801/** Structure definition for the "cfg" group of the "group" object.
802 */
803typedef struct bcmbal_group_cfg_data
804{
805 bcmbal_group_member_cmd members_cmd; /**< Membership operation commands. */
806 bcmbal_group_member_info_list_u16 members; /**< The list of members associated with this group */
807 bcmbal_cookie cookie; /**< Application cookie */
808 bcmbal_flow_id_list_u32 flows; /**< List of flows associated with this group */
809 bcmbal_group_owner owner; /**< Owner of the group. */
810} bcmbal_group_cfg_data;
811
812/** Transport message definition for "cfg" group of "group" object.
813 */
814typedef struct bcmbal_group_cfg
815{
816 bcmbal_cfg hdr; /**< Transport header. */
817 bcmbal_group_key key; /**< Object key. */
818 bcmbal_group_cfg_data data; /**< All properties that must be set by the user. */
819} bcmbal_group_cfg;
820
821/** Structure definition for the "key" group of the "interface" object.
822 */
823typedef struct bcmbal_interface_key
824{
825 uint32_t intf_id; /**< intf_id. */
826 bcmbal_intf_type intf_type; /**< intf_type. */
827} bcmbal_interface_key;
828
829/** Structure definition for the "cfg" group of the "interface" object.
830 */
831typedef struct bcmbal_interface_cfg_data
832{
833 bcmbal_state admin_state; /**< Administrative state */
834 bcmbal_status oper_status; /**< Operational status */
835 bcmbal_aggregation_port_id min_data_agg_port_id; /**< The minimum agg_port_id that is allowed in the system */
836 bcmbal_service_port_id min_data_svc_port_id; /**< The minimum svc_port_id that is allowed in the system */
837 bcmbal_trx_type transceiver_type; /**< The transceiver type used on an interface */
838 bcmbal_ds_miss_mode ds_miss_mode; /**< Defines the action to take for unknown downstream packets */
839 uint16_t mtu; /**< The MTU for an interface */
840 bcmbal_control flow_control; /**< Flow control enable or disable */
841 bcmbal_tm_sched_id ds_tm; /**< Downstream scheduler and shaper */
842 bcmbal_tm_sched_id us_tm; /**< Upstream scheduler and shaper */
843 bcmbal_sub_id_list_u16 sub_term_id_list; /**< A list of subscriber terminal ids configured on this interface */
844} bcmbal_interface_cfg_data;
845
846/** Transport message definition for "cfg" group of "interface" object.
847 */
848typedef struct bcmbal_interface_cfg
849{
850 bcmbal_cfg hdr; /**< Transport header. */
851 bcmbal_interface_key key; /**< Object key. */
852 bcmbal_interface_cfg_data data; /**< All properties that must be set by the user. */
853} bcmbal_interface_cfg;
854
855/** Structure definition for the "stat" group of the "interface" object.
856 */
857typedef struct bcmbal_interface_stat_data
858{
859 uint64_t rx_packets; /**< Recieved packets. */
860 uint64_t rx_bytes; /**< Received bytes. */
861 uint64_t tx_packets; /**< Transmitted packets. */
862 uint64_t tx_bytes; /**< Transmitted bytes. */
863} bcmbal_interface_stat_data;
864
865/** Transport message definition for "stat" group of "interface" object.
866 */
867typedef struct bcmbal_interface_stat
868{
869 bcmbal_stat hdr; /**< Transport header. */
870 bcmbal_interface_key key; /**< Object key. */
871 bcmbal_interface_stat_data data; /**< All properties that must be set by the user. */
872} bcmbal_interface_stat;
873
874/** Structure definition for the "ind" group of the "interface" object.
875 */
876typedef struct bcmbal_interface_ind_data
877{
878 bcmbal_state admin_state; /**< Current administrative state */
879 bcmbal_status oper_status; /**< Current operational state */
880 uint16_t min_data_agg_port_id; /**< The minimum agg_port_id that is allowed in the system */
881 uint16_t min_data_svc_port_id; /**< The minimum svc_port_id that is allowed in the system */
882 bcmbal_trx_type transceiver_type; /**< The transceiver type used on an interface */
883 bcmbal_ds_miss_mode ds_miss_mode; /**< Defines the action to take for DS unknown packets */
884 uint16_t mtu; /**< The MTU for an interface */
885 bcmbal_control flow_control; /**< Flow control enable or disable */
886 bcmbal_tm_sched_id ds_tm; /**< Downstream scheduler and shaper */
887 bcmbal_tm_sched_id us_tm; /**< Upstream scheduler and shaper */
888} bcmbal_interface_ind_data;
889
890/** Transport message definition for "ind" group of "interface" object.
891 */
892typedef struct bcmbal_interface_ind
893{
894 bcmbal_auto hdr; /**< Transport header. */
895 bcmbal_interface_key key; /**< Object key. */
896 bcmbal_interface_ind_data data; /**< All properties that must be set by the user. */
897} bcmbal_interface_ind;
898
899/** Structure definition for the "key" group of the "packet" object.
900 */
901typedef struct bcmbal_packet_key
902{
903 uint32_t reserved; /**< Reserved key field. */
904 bcmbal_dest packet_send_dest; /**< Packet destination. */
905} bcmbal_packet_key;
906
907/** Structure definition for the "cfg" group of the "packet" object.
908 */
909typedef struct bcmbal_packet_cfg_data
910{
911 bcmbal_flow_id flow_id; /**< N/A for sending a packet */
912 bcmbal_flow_type flow_type; /**< Flow Type. */
913 bcmbal_intf_id intf_id; /**< Interface ID. */
914 bcmbal_intf_type intf_type; /**< Interface Type. */
915 bcmbal_service_port_id svc_port; /**< N/A for sending a packet */
916 bcmbal_cookie flow_cookie; /**< N/A for sending a packet */
917 bcmbal_u8_list_u32 pkt; /**< Packet Data. */
918} bcmbal_packet_cfg_data;
919
920/** Transport message definition for "cfg" group of "packet" object.
921 */
922typedef struct bcmbal_packet_cfg
923{
924 bcmbal_cfg hdr; /**< Transport header. */
925 bcmbal_packet_key key; /**< Object key. */
926 bcmbal_packet_cfg_data data; /**< All properties that must be set by the user. */
927} bcmbal_packet_cfg;
928
929/** Structure definition for the "ind" group of the "packet" object.
930 */
931typedef struct bcmbal_packet_ind_data
932{
933 bcmbal_flow_id flow_id; /**< N/A for sending a packet */
934 bcmbal_flow_type flow_type; /**< Flow Type. */
935 bcmbal_intf_id intf_id; /**< Interface ID. */
936 bcmbal_intf_type intf_type; /**< Interface Type. */
937 bcmbal_service_port_id svc_port; /**< N/A for sending a packet */
938 bcmbal_cookie flow_cookie; /**< N/A for sending a packet */
939 bcmbal_u8_list_u32 pkt; /**< Packet Data. */
940} bcmbal_packet_ind_data;
941
942/** Transport message definition for "ind" group of "packet" object.
943 */
944typedef struct bcmbal_packet_ind
945{
946 bcmbal_auto hdr; /**< Transport header. */
947 bcmbal_packet_key key; /**< Object key. */
948 bcmbal_packet_ind_data data; /**< All properties that must be set by the user. */
949} bcmbal_packet_ind;
950
951/** Structure definition for the "key" group of the "subscriber_terminal"
952 * object.
953 */
954typedef struct bcmbal_subscriber_terminal_key
955{
956 bcmbal_sub_id sub_term_id; /**< sub_term_id. */
957 bcmbal_intf_id intf_id; /**< intf_id. */
958} bcmbal_subscriber_terminal_key;
959
960/** Structure definition for the "cfg" group of the "subscriber_terminal"
961 * object.
962 */
963typedef struct bcmbal_subscriber_terminal_cfg_data
964{
965 bcmbal_state admin_state; /**< Administrative state */
966 bcmbal_status oper_status; /**< Operational status */
967 bcmbal_serial_number serial_number; /**< The serial number of an ITU PON (GPON/XG-PON1/XGS-PON/NG-PON2) subscriber terminal */
968 bcmbal_password password; /**< The password of a GPON subscriber terminal */
969 bcmbal_registration_id registration_id; /**< ONU registration ID of an ITU PON (XG-PON1/XGS-PON/NG-PON2) subscriber terminal */
970 bcmbal_service_port_id svc_port_id; /**< The management service port ID (for PON, the ONU ID) */
971 bcmos_mac_address mac_address; /**< The Ethernet MAC address of an EPON subscriber terminal */
972 bcmbal_tm_sched_id ds_tm; /**< Downstream scheduler and shaper */
973 bcmbal_tm_sched_id us_tm; /**< Upstream scheduler and shaper */
974 bcmbal_service_port_id_list_u8 svc_port_id_list; /**< A list of bearer traffic svc_port_ids associated with this subscriber terminal */
975 bcmbal_aggregation_port_id_list_u8 agg_port_id_list; /**< A list of aggr_port_ids associated with this subscriber terminal */
976} bcmbal_subscriber_terminal_cfg_data;
977
978/** Transport message definition for "cfg" group of "subscriber_terminal"
979 * object.
980 */
981typedef struct bcmbal_subscriber_terminal_cfg
982{
983 bcmbal_cfg hdr; /**< Transport header. */
984 bcmbal_subscriber_terminal_key key; /**< Object key. */
985 bcmbal_subscriber_terminal_cfg_data data; /**< All properties that must be set by the user. */
986} bcmbal_subscriber_terminal_cfg;
987
988/** Structure definition for the "stat" group of the "subscriber_terminal"
989 * object.
990 */
991typedef struct bcmbal_subscriber_terminal_stat_data
992{
993 uint64_t rx_packets; /**< Received packets on specified object */
994 uint64_t rx_bytes; /**< Received bytes on specified object */
995 uint64_t tx_packets; /**< Transmitted packets on specified object */
996 uint64_t tx_bytes; /**< Transmittted bytes on specified object */
997} bcmbal_subscriber_terminal_stat_data;
998
999/** Transport message definition for "stat" group of "subscriber_terminal"
1000 * object.
1001 */
1002typedef struct bcmbal_subscriber_terminal_stat
1003{
1004 bcmbal_stat hdr; /**< Transport header. */
1005 bcmbal_subscriber_terminal_key key; /**< Object key. */
1006 bcmbal_subscriber_terminal_stat_data data; /**< All properties that must be set by the user. */
1007} bcmbal_subscriber_terminal_stat;
1008
1009/** Structure definition for the "ind" group of the "subscriber_terminal"
1010 * object.
1011 */
1012typedef struct bcmbal_subscriber_terminal_ind_data
1013{
1014 bcmbal_state admin_state; /**< Current administrative state */
1015 bcmbal_status oper_status; /**< Current operational status */
1016 bcmbal_serial_number serial_number; /**< The serial number of an ITU PON (GPON/XG-PON1/XGS-PON/NG-PON2) subscriber terminal */
1017 bcmbal_password password; /**< The password of a GPON subscriber terminal */
1018 bcmbal_registration_id registration_id; /**< ONU registration ID of an ITU PON (XG-PON1/XGS-PON/NG-PON2) subscriber terminal */
1019 uint16_t svc_port_id; /**< The service port ID (for PON, the ONU ID) */
1020 bcmos_mac_address mac_address; /**< The Ethernet MAC address of an epon subscriber terminal */
1021 bcmbal_tm_sched_id ds_tm; /**< Downstream scheduler and shaper */
1022 bcmbal_tm_sched_id us_tm; /**< Upstream scheduler and shaper */
1023} bcmbal_subscriber_terminal_ind_data;
1024
1025/** Transport message definition for "ind" group of "subscriber_terminal"
1026 * object.
1027 */
1028typedef struct bcmbal_subscriber_terminal_ind
1029{
1030 bcmbal_auto hdr; /**< Transport header. */
1031 bcmbal_subscriber_terminal_key key; /**< Object key. */
1032 bcmbal_subscriber_terminal_ind_data data; /**< All properties that must be set by the user. */
1033} bcmbal_subscriber_terminal_ind;
1034
1035/** Structure definition for the "key" group of the "tm_queue" object.
1036 */
1037typedef struct bcmbal_tm_queue_key
1038{
1039 bcmbal_tm_sched_id sched_id; /**< Scheduler that owns the queue */
1040 bcmbal_tm_sched_dir sched_dir; /**< sched dir. */
1041 bcmbal_tm_queue_id id; /**< Queue id */
1042} bcmbal_tm_queue_key;
1043
1044/** Structure definition for the "cfg" group of the "tm_queue" object.
1045 */
1046typedef struct bcmbal_tm_queue_cfg_data
1047{
1048 bcmbal_tm_priority priority; /**< Scheduling priority */
1049 bcmbal_tm_weight weight; /**< Scheduling weight */
1050 bcmbal_tm_shaping rate; /**< Rate shaping parameters */
1051 bcmbal_tm_bac bac; /**< Buffer admission control */
1052 bcmbal_tm_creation_mode creation_mode; /**< Creation mode */
1053 uint8_t ref_count; /**< reference count (flows) */
1054} bcmbal_tm_queue_cfg_data;
1055
1056/** Transport message definition for "cfg" group of "tm_queue" object.
1057 */
1058typedef struct bcmbal_tm_queue_cfg
1059{
1060 bcmbal_cfg hdr; /**< Transport header. */
1061 bcmbal_tm_queue_key key; /**< Object key. */
1062 bcmbal_tm_queue_cfg_data data; /**< All properties that must be set by the user. */
1063} bcmbal_tm_queue_cfg;
1064
1065/** Structure definition for the "stat" group of the "tm_queue" object.
1066 */
1067typedef struct bcmbal_tm_queue_stat_data
1068{
1069 uint64_t packets_ok; /**< Packets transmitted succewssfully */
1070 uint64_t bytes_ok; /**< Bytes transmitted successfully */
1071 uint64_t packets_discarded; /**< Packets discarded */
1072 uint64_t bytes_discarded; /**< Bytes discarded */
1073} bcmbal_tm_queue_stat_data;
1074
1075/** Transport message definition for "stat" group of "tm_queue" object.
1076 */
1077typedef struct bcmbal_tm_queue_stat
1078{
1079 bcmbal_stat hdr; /**< Transport header. */
1080 bcmbal_tm_queue_key key; /**< Object key. */
1081 bcmbal_tm_queue_stat_data data; /**< All properties that must be set by the user. */
1082} bcmbal_tm_queue_stat;
1083
1084/** Structure definition for the "ind" group of the "tm_queue" object.
1085 *
1086 * Tm Queue Indication
1087 */
1088typedef struct bcmbal_tm_queue_ind_data
1089{
1090 uint32_t ret; /**< ret */
1091} bcmbal_tm_queue_ind_data;
1092
1093/** Transport message definition for "ind" group of "tm_queue" object.
1094 */
1095typedef struct bcmbal_tm_queue_ind
1096{
1097 bcmbal_auto hdr; /**< Transport header. */
1098 bcmbal_tm_queue_key key; /**< Object key. */
1099 bcmbal_tm_queue_ind_data data; /**< All properties that must be set by the user. */
1100} bcmbal_tm_queue_ind;
1101
1102/** Structure definition for the "key" group of the "tm_sched" object.
1103 */
1104typedef struct bcmbal_tm_sched_key
1105{
1106 bcmbal_tm_sched_dir dir; /**< Traffic direction */
1107 bcmbal_tm_sched_id id; /**< ID */
1108} bcmbal_tm_sched_key;
1109
1110/** Structure definition for the "cfg" group of the "tm_sched" object.
1111 */
1112typedef struct bcmbal_tm_sched_cfg_data
1113{
1114 bcmbal_tm_sched_owner owner; /**< owner. */
1115 bcmbal_tm_sched_type sched_type; /**< Scheduler type */
1116 bcmbal_tm_sched_parent sched_parent; /**< Scheduling parameters for parent scheduler */
1117 bcmbal_tm_sched_child_type sched_child_type; /**< Scheduling level for children tm */
1118 bcmbal_tm_shaping rate; /**< Rate shaping parameters */
1119 bcmbal_tm_tcont_sla tcont_sla; /**< Additional SLA parameters for agg_port owner */
1120 bcmbal_tm_creation_mode creation_mode; /**< Creation mode */
1121 bcmbal_tm_queue_id_list_u8 queues; /**< Subsidiary queues */
1122 bcmbal_tm_sched_id_list_u8 sub_scheds; /**< Subsidiary schedulers */
1123 uint8_t num_priorities; /**< Max number of strict priority scheduling elements */
1124} bcmbal_tm_sched_cfg_data;
1125
1126/** Transport message definition for "cfg" group of "tm_sched" object.
1127 */
1128typedef struct bcmbal_tm_sched_cfg
1129{
1130 bcmbal_cfg hdr; /**< Transport header. */
1131 bcmbal_tm_sched_key key; /**< Object key. */
1132 bcmbal_tm_sched_cfg_data data; /**< All properties that must be set by the user. */
1133} bcmbal_tm_sched_cfg;
1134
1135/** Structure definition for the "ind" group of the "tm_sched" object.
1136 *
1137 * Tm Sched Indication
1138 */
1139typedef struct bcmbal_tm_sched_ind_data
1140{
1141 uint32_t ret; /**< ret */
1142} bcmbal_tm_sched_ind_data;
1143
1144/** Transport message definition for "ind" group of "tm_sched" object.
1145 */
1146typedef struct bcmbal_tm_sched_ind
1147{
1148 bcmbal_auto hdr; /**< Transport header. */
1149 bcmbal_tm_sched_key key; /**< Object key. */
1150 bcmbal_tm_sched_ind_data data; /**< All properties that must be set by the user. */
1151} bcmbal_tm_sched_ind;
1152
1153/** @} */
1154#endif /* BAL_MODEL_TYPES */