|
36 | 36 | */ |
37 | 37 |
|
38 | 38 | /** |
39 | | - * @brief Attribute ID for meter bucket |
| 39 | + * @brief Attribute data for #SAI_METER_BUCKET_ENTRY_ATTR_ACTION |
40 | 40 | */ |
41 | | -typedef enum _sai_meter_bucket_attr_t |
| 41 | +typedef enum _sai_meter_bucket_entry_action_t |
| 42 | +{ |
| 43 | + SAI_METER_BUCKET_ENTRY_ACTION_UPDATE_METER_BUCKET, |
| 44 | + |
| 45 | +} sai_meter_bucket_entry_action_t; |
| 46 | + |
| 47 | +/** |
| 48 | + * @brief Entry for meter_bucket_entry |
| 49 | + */ |
| 50 | +typedef struct _sai_meter_bucket_entry_t |
42 | 51 | { |
43 | 52 | /** |
44 | | - * @brief Start of attributes |
| 53 | + * @brief Switch ID |
| 54 | + * |
| 55 | + * @objects SAI_OBJECT_TYPE_SWITCH |
45 | 56 | */ |
46 | | - SAI_METER_BUCKET_ATTR_START, |
| 57 | + sai_object_id_t switch_id; |
47 | 58 |
|
48 | 59 | /** |
49 | 60 | * @brief Exact matched key eni_id |
50 | 61 | * |
51 | | - * @type sai_object_id_t |
52 | | - * @flags MANDATORY_ON_CREATE | CREATE_ONLY |
53 | 62 | * @objects SAI_OBJECT_TYPE_ENI |
54 | 63 | */ |
55 | | - SAI_METER_BUCKET_ATTR_ENI_ID = SAI_METER_BUCKET_ATTR_START, |
| 64 | + sai_object_id_t eni_id; |
56 | 65 |
|
57 | 66 | /** |
58 | 67 | * @brief Exact matched key meter_class |
| 68 | + */ |
| 69 | + sai_uint32_t meter_class; |
| 70 | + |
| 71 | +} sai_meter_bucket_entry_t; |
| 72 | + |
| 73 | +/** |
| 74 | + * @brief Attribute ID for meter bucket entry |
| 75 | + */ |
| 76 | +typedef enum _sai_meter_bucket_entry_attr_t |
| 77 | +{ |
| 78 | + /** |
| 79 | + * @brief Start of attributes |
| 80 | + */ |
| 81 | + SAI_METER_BUCKET_ENTRY_ATTR_START, |
| 82 | + |
| 83 | + /** |
| 84 | + * @brief Action |
59 | 85 | * |
60 | | - * @type sai_uint32_t |
61 | | - * @flags MANDATORY_ON_CREATE | CREATE_ONLY |
| 86 | + * @type sai_meter_bucket_entry_action_t |
| 87 | + * @flags CREATE_AND_SET |
| 88 | + * @default SAI_METER_BUCKET_ENTRY_ACTION_UPDATE_METER_BUCKET |
62 | 89 | */ |
63 | | - SAI_METER_BUCKET_ATTR_METER_CLASS, |
| 90 | + SAI_METER_BUCKET_ENTRY_ATTR_ACTION = SAI_METER_BUCKET_ENTRY_ATTR_START, |
64 | 91 |
|
65 | 92 | /** |
66 | 93 | * @brief End of attributes |
67 | 94 | */ |
68 | | - SAI_METER_BUCKET_ATTR_END, |
| 95 | + SAI_METER_BUCKET_ENTRY_ATTR_END, |
69 | 96 |
|
70 | 97 | /** Custom range base value */ |
71 | | - SAI_METER_BUCKET_ATTR_CUSTOM_RANGE_START = 0x10000000, |
| 98 | + SAI_METER_BUCKET_ENTRY_ATTR_CUSTOM_RANGE_START = 0x10000000, |
72 | 99 |
|
73 | 100 | /** End of custom range base */ |
74 | | - SAI_METER_BUCKET_ATTR_CUSTOM_RANGE_END, |
| 101 | + SAI_METER_BUCKET_ENTRY_ATTR_CUSTOM_RANGE_END, |
75 | 102 |
|
76 | | -} sai_meter_bucket_attr_t; |
| 103 | +} sai_meter_bucket_entry_attr_t; |
77 | 104 |
|
78 | 105 | /** |
79 | | - * @brief Counter IDs for METER BUCKET |
| 106 | + * @brief Counter IDs for meter bucket entry |
80 | 107 | */ |
81 | | -typedef enum _sai_meter_bucket_stat_t |
| 108 | +typedef enum _sai_meter_bucket_entry_stat_t |
82 | 109 | { |
83 | | - /** DASH METER_BUCKET OUTBOUND_BYTES stat count */ |
84 | | - SAI_METER_BUCKET_STAT_OUTBOUND_BYTES, |
| 110 | + /** DASH METER_BUCKET_ENTRY OUTBOUND_BYTES stat count */ |
| 111 | + SAI_METER_BUCKET_ENTRY_STAT_OUTBOUND_BYTES, |
85 | 112 |
|
86 | | - /** DASH METER_BUCKET INBOUND_BYTES stat count */ |
87 | | - SAI_METER_BUCKET_STAT_INBOUND_BYTES, |
| 113 | + /** DASH METER_BUCKET_ENTRY INBOUND_BYTES stat count */ |
| 114 | + SAI_METER_BUCKET_ENTRY_STAT_INBOUND_BYTES, |
88 | 115 |
|
89 | | -} sai_meter_bucket_stat_t; |
| 116 | +} sai_meter_bucket_entry_stat_t; |
90 | 117 |
|
91 | 118 | /** |
92 | 119 | * @brief Attribute ID for meter policy |
@@ -197,105 +224,148 @@ typedef enum _sai_meter_rule_attr_t |
197 | 224 | } sai_meter_rule_attr_t; |
198 | 225 |
|
199 | 226 | /** |
200 | | - * @brief Create meter bucket |
| 227 | + * @brief Create meter bucket entry |
201 | 228 | * |
202 | | - * @param[out] meter_bucket_id Entry id |
203 | | - * @param[in] switch_id Switch id |
| 229 | + * @param[in] meter_bucket_entry Entry |
204 | 230 | * @param[in] attr_count Number of attributes |
205 | 231 | * @param[in] attr_list Array of attributes |
206 | 232 | * |
207 | 233 | * @return #SAI_STATUS_SUCCESS on success Failure status code on error |
208 | 234 | */ |
209 | | -typedef sai_status_t (*sai_create_meter_bucket_fn)( |
210 | | - _Out_ sai_object_id_t *meter_bucket_id, |
211 | | - _In_ sai_object_id_t switch_id, |
| 235 | +typedef sai_status_t (*sai_create_meter_bucket_entry_fn)( |
| 236 | + _In_ const sai_meter_bucket_entry_t *meter_bucket_entry, |
212 | 237 | _In_ uint32_t attr_count, |
213 | 238 | _In_ const sai_attribute_t *attr_list); |
214 | 239 |
|
215 | 240 | /** |
216 | | - * @brief Remove meter bucket |
| 241 | + * @brief Remove meter bucket entry |
217 | 242 | * |
218 | | - * @param[in] meter_bucket_id Entry id |
| 243 | + * @param[in] meter_bucket_entry Entry |
219 | 244 | * |
220 | 245 | * @return #SAI_STATUS_SUCCESS on success Failure status code on error |
221 | 246 | */ |
222 | | -typedef sai_status_t (*sai_remove_meter_bucket_fn)( |
223 | | - _In_ sai_object_id_t meter_bucket_id); |
| 247 | +typedef sai_status_t (*sai_remove_meter_bucket_entry_fn)( |
| 248 | + _In_ const sai_meter_bucket_entry_t *meter_bucket_entry); |
224 | 249 |
|
225 | 250 | /** |
226 | | - * @brief Set attribute for meter bucket |
| 251 | + * @brief Set attribute for meter bucket entry |
227 | 252 | * |
228 | | - * @param[in] meter_bucket_id Entry id |
| 253 | + * @param[in] meter_bucket_entry Entry |
229 | 254 | * @param[in] attr Attribute |
230 | 255 | * |
231 | 256 | * @return #SAI_STATUS_SUCCESS on success Failure status code on error |
232 | 257 | */ |
233 | | -typedef sai_status_t (*sai_set_meter_bucket_attribute_fn)( |
234 | | - _In_ sai_object_id_t meter_bucket_id, |
| 258 | +typedef sai_status_t (*sai_set_meter_bucket_entry_attribute_fn)( |
| 259 | + _In_ const sai_meter_bucket_entry_t *meter_bucket_entry, |
235 | 260 | _In_ const sai_attribute_t *attr); |
236 | 261 |
|
237 | 262 | /** |
238 | | - * @brief Get attribute for meter bucket |
| 263 | + * @brief Get attribute for meter bucket entry |
239 | 264 | * |
240 | | - * @param[in] meter_bucket_id Entry id |
| 265 | + * @param[in] meter_bucket_entry Entry |
241 | 266 | * @param[in] attr_count Number of attributes |
242 | 267 | * @param[inout] attr_list Array of attributes |
243 | 268 | * |
244 | 269 | * @return #SAI_STATUS_SUCCESS on success Failure status code on error |
245 | 270 | */ |
246 | | -typedef sai_status_t (*sai_get_meter_bucket_attribute_fn)( |
247 | | - _In_ sai_object_id_t meter_bucket_id, |
| 271 | +typedef sai_status_t (*sai_get_meter_bucket_entry_attribute_fn)( |
| 272 | + _In_ const sai_meter_bucket_entry_t *meter_bucket_entry, |
248 | 273 | _In_ uint32_t attr_count, |
249 | 274 | _Inout_ sai_attribute_t *attr_list); |
250 | 275 |
|
251 | 276 | /** |
252 | | - * @brief Get METER_BUCKET statistics counters. Deprecated for backward compatibility. |
| 277 | + * @brief Get METER_BUCKET_ENTRY statistics counters. Deprecated for backward compatibility. |
253 | 278 | * |
254 | | - * @param[in] meter_bucket_id Entry id |
| 279 | + * @param[in] meter_bucket_entry Entry |
255 | 280 | * @param[in] number_of_counters Number of counters in the array |
256 | 281 | * @param[in] counter_ids Specifies the array of counter ids |
257 | 282 | * @param[out] counters Array of resulting counter values. |
258 | 283 | * |
259 | 284 | * @return #SAI_STATUS_SUCCESS on success, failure status code on error |
260 | 285 | */ |
261 | | -typedef sai_status_t (*sai_get_meter_bucket_stats_fn)( |
262 | | - _In_ sai_object_id_t meter_bucket_id, |
| 286 | +typedef sai_status_t (*sai_get_meter_bucket_entry_stats_fn)( |
| 287 | + _In_ const sai_meter_bucket_entry_t *meter_bucket_entry, |
263 | 288 | _In_ uint32_t number_of_counters, |
264 | 289 | _In_ const sai_stat_id_t *counter_ids, |
265 | 290 | _Out_ uint64_t *counters); |
266 | 291 |
|
267 | 292 | /** |
268 | | - * @brief Get METER_BUCKET statistics counters extended. |
| 293 | + * @brief Get METER_BUCKET_ENTRY statistics counters extended. |
269 | 294 | * |
270 | | - * @param[in] meter_bucket_id Entry id |
| 295 | + * @param[in] meter_bucket_entry Entry |
271 | 296 | * @param[in] number_of_counters Number of counters in the array |
272 | 297 | * @param[in] counter_ids Specifies the array of counter ids |
273 | 298 | * @param[in] mode Statistics mode |
274 | 299 | * @param[out] counters Array of resulting counter values. |
275 | 300 | * |
276 | 301 | * @return #SAI_STATUS_SUCCESS on success, failure status code on error |
277 | 302 | */ |
278 | | -typedef sai_status_t (*sai_get_meter_bucket_stats_ext_fn)( |
279 | | - _In_ sai_object_id_t meter_bucket_id, |
| 303 | +typedef sai_status_t (*sai_get_meter_bucket_entry_stats_ext_fn)( |
| 304 | + _In_ const sai_meter_bucket_entry_t *meter_bucket_entry, |
280 | 305 | _In_ uint32_t number_of_counters, |
281 | 306 | _In_ const sai_stat_id_t *counter_ids, |
282 | 307 | _In_ sai_stats_mode_t mode, |
283 | 308 | _Out_ uint64_t *counters); |
284 | 309 |
|
285 | 310 | /** |
286 | | - * @brief Clear METER_BUCKET statistics counters. |
| 311 | + * @brief Clear METER_BUCKET_ENTRY statistics counters. |
287 | 312 | * |
288 | | - * @param[in] meter_bucket_id Entry id |
| 313 | + * @param[in] meter_bucket_entry Entry |
289 | 314 | * @param[in] number_of_counters Number of counters in the array |
290 | 315 | * @param[in] counter_ids Specifies the array of counter ids |
291 | 316 | * |
292 | 317 | * @return #SAI_STATUS_SUCCESS on success, failure status code on error |
293 | 318 | */ |
294 | | -typedef sai_status_t (*sai_clear_meter_bucket_stats_fn)( |
295 | | - _In_ sai_object_id_t meter_bucket_id, |
| 319 | +typedef sai_status_t (*sai_clear_meter_bucket_entry_stats_fn)( |
| 320 | + _In_ const sai_meter_bucket_entry_t *meter_bucket_entry, |
296 | 321 | _In_ uint32_t number_of_counters, |
297 | 322 | _In_ const sai_stat_id_t *counter_ids); |
298 | 323 |
|
| 324 | +/** |
| 325 | + * @brief Bulk create meter bucket entry |
| 326 | + * |
| 327 | + * @param[in] object_count Number of objects to create |
| 328 | + * @param[in] meter_bucket_entry List of object to create |
| 329 | + * @param[in] attr_count List of attr_count. Caller passes the number |
| 330 | + * of attribute for each object to create. |
| 331 | + * @param[in] attr_list List of attributes for every object. |
| 332 | + * @param[in] mode Bulk operation error handling mode. |
| 333 | + * @param[out] object_statuses List of status for every object. Caller needs to |
| 334 | + * allocate the buffer |
| 335 | + * |
| 336 | + * @return #SAI_STATUS_SUCCESS on success when all objects are created or |
| 337 | + * #SAI_STATUS_FAILURE when any of the objects fails to create. When there is |
| 338 | + * failure, Caller is expected to go through the list of returned statuses to |
| 339 | + * find out which fails and which succeeds. |
| 340 | + */ |
| 341 | +typedef sai_status_t (*sai_bulk_create_meter_bucket_entry_fn)( |
| 342 | + _In_ uint32_t object_count, |
| 343 | + _In_ const sai_meter_bucket_entry_t *meter_bucket_entry, |
| 344 | + _In_ const uint32_t *attr_count, |
| 345 | + _In_ const sai_attribute_t **attr_list, |
| 346 | + _In_ sai_bulk_op_error_mode_t mode, |
| 347 | + _Out_ sai_status_t *object_statuses); |
| 348 | + |
| 349 | +/** |
| 350 | + * @brief Bulk remove meter bucket entry |
| 351 | + * |
| 352 | + * @param[in] object_count Number of objects to remove |
| 353 | + * @param[in] meter_bucket_entry List of objects to remove |
| 354 | + * @param[in] mode Bulk operation error handling mode. |
| 355 | + * @param[out] object_statuses List of status for every object. Caller needs to |
| 356 | + * allocate the buffer |
| 357 | + * |
| 358 | + * @return #SAI_STATUS_SUCCESS on success when all objects are removed or |
| 359 | + * #SAI_STATUS_FAILURE when any of the objects fails to remove. When there is |
| 360 | + * failure, Caller is expected to go through the list of returned statuses to |
| 361 | + * find out which fails and which succeeds. |
| 362 | + */ |
| 363 | +typedef sai_status_t (*sai_bulk_remove_meter_bucket_entry_fn)( |
| 364 | + _In_ uint32_t object_count, |
| 365 | + _In_ const sai_meter_bucket_entry_t *meter_bucket_entry, |
| 366 | + _In_ sai_bulk_op_error_mode_t mode, |
| 367 | + _Out_ sai_status_t *object_statuses); |
| 368 | + |
299 | 369 | /** |
300 | 370 | * @brief Create meter policy |
301 | 371 | * |
@@ -402,29 +472,29 @@ typedef sai_status_t (*sai_get_meter_rule_attribute_fn)( |
402 | 472 |
|
403 | 473 | typedef struct _sai_dash_meter_api_t |
404 | 474 | { |
405 | | - sai_create_meter_bucket_fn create_meter_bucket; |
406 | | - sai_remove_meter_bucket_fn remove_meter_bucket; |
407 | | - sai_set_meter_bucket_attribute_fn set_meter_bucket_attribute; |
408 | | - sai_get_meter_bucket_attribute_fn get_meter_bucket_attribute; |
409 | | - sai_get_meter_bucket_stats_fn get_meter_bucket_stats; |
410 | | - sai_get_meter_bucket_stats_ext_fn get_meter_bucket_stats_ext; |
411 | | - sai_clear_meter_bucket_stats_fn clear_meter_bucket_stats; |
412 | | - sai_bulk_object_create_fn create_meter_buckets; |
413 | | - sai_bulk_object_remove_fn remove_meter_buckets; |
414 | | - |
415 | | - sai_create_meter_policy_fn create_meter_policy; |
416 | | - sai_remove_meter_policy_fn remove_meter_policy; |
417 | | - sai_set_meter_policy_attribute_fn set_meter_policy_attribute; |
418 | | - sai_get_meter_policy_attribute_fn get_meter_policy_attribute; |
419 | | - sai_bulk_object_create_fn create_meter_policys; |
420 | | - sai_bulk_object_remove_fn remove_meter_policys; |
421 | | - |
422 | | - sai_create_meter_rule_fn create_meter_rule; |
423 | | - sai_remove_meter_rule_fn remove_meter_rule; |
424 | | - sai_set_meter_rule_attribute_fn set_meter_rule_attribute; |
425 | | - sai_get_meter_rule_attribute_fn get_meter_rule_attribute; |
426 | | - sai_bulk_object_create_fn create_meter_rules; |
427 | | - sai_bulk_object_remove_fn remove_meter_rules; |
| 475 | + sai_create_meter_bucket_entry_fn create_meter_bucket_entry; |
| 476 | + sai_remove_meter_bucket_entry_fn remove_meter_bucket_entry; |
| 477 | + sai_set_meter_bucket_entry_attribute_fn set_meter_bucket_entry_attribute; |
| 478 | + sai_get_meter_bucket_entry_attribute_fn get_meter_bucket_entry_attribute; |
| 479 | + sai_get_meter_bucket_entry_stats_fn get_meter_bucket_entry_stats; |
| 480 | + sai_get_meter_bucket_entry_stats_ext_fn get_meter_bucket_entry_stats_ext; |
| 481 | + sai_clear_meter_bucket_entry_stats_fn clear_meter_bucket_entry_stats; |
| 482 | + sai_bulk_create_meter_bucket_entry_fn create_meter_bucket_entries; |
| 483 | + sai_bulk_remove_meter_bucket_entry_fn remove_meter_bucket_entries; |
| 484 | + |
| 485 | + sai_create_meter_policy_fn create_meter_policy; |
| 486 | + sai_remove_meter_policy_fn remove_meter_policy; |
| 487 | + sai_set_meter_policy_attribute_fn set_meter_policy_attribute; |
| 488 | + sai_get_meter_policy_attribute_fn get_meter_policy_attribute; |
| 489 | + sai_bulk_object_create_fn create_meter_policys; |
| 490 | + sai_bulk_object_remove_fn remove_meter_policys; |
| 491 | + |
| 492 | + sai_create_meter_rule_fn create_meter_rule; |
| 493 | + sai_remove_meter_rule_fn remove_meter_rule; |
| 494 | + sai_set_meter_rule_attribute_fn set_meter_rule_attribute; |
| 495 | + sai_get_meter_rule_attribute_fn get_meter_rule_attribute; |
| 496 | + sai_bulk_object_create_fn create_meter_rules; |
| 497 | + sai_bulk_object_remove_fn remove_meter_rules; |
428 | 498 |
|
429 | 499 | } sai_dash_meter_api_t; |
430 | 500 |
|
|
0 commit comments