wb_engine.h (24620B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 */ 7 #ifndef _SOC_WB_ENGINE_H_ 8 #define _SOC_WB_ENGINE_H_ 9 10 11 /* scache operations */ 12 typedef enum soc_wb_engine_scache_oper_e { 13 socWbEngineScacheRetreive, 14 socWbEngineScacheCreate, 15 socWbEngineScacheRealloc, 16 socWbEngineScacheFreeCreate 17 } soc_wb_engine_scache_oper_t; 18 19 /* NOTE: changing this enum may be not ISSUable, as its members are added to 20 SOC_MODULE_WB_ENGINE_BASE to create unique scache handles */ 21 typedef enum 22 { 23 SOC_WB_ENGINE_PRIMARY = 0, 24 SOC_WB_ENGINE_PORTMOD, 25 SOC_WB_ENGINE_NOF 26 } SOC_WB_ENGINE; 27 28 /* module space: 29 * 0-79 - modules.h 30 * 80-119 - bcm_int modules 31 * 120-179 - common/wb_engine.h 32 * 180-255 - other soc modules* 33 */ 34 #define SOC_MODULE_WB_ENGINE_BASE (120) 35 36 /* consistency flags */ 37 #define SOC_WB_ENGINE_SCACHE_EXISTS_ERROR 0x00000001 38 #define SOC_WB_ENGINE_SCACHE_DOWNGRADE_INVALID 0x00000002 39 #define SOC_WB_ENGINE_SCACHE_UPGRADE_INVALID 0x00000004 40 #define SOC_WB_ENGINE_SCACHE_DEFAULT (SOC_WB_ENGINE_SCACHE_DOWNGRADE_INVALID) 41 42 #define SOC_WB_ENGINE_VAR_INITIALIZED (1) 43 #define SOC_WB_ENGINE_VAR_DYNAMIC_SIZE_UPDATED (2) 44 45 #define SOC_WB_ENGINE_ALIGN_SIZE(size) \ 46 (size) = ((size) + 3) & (~3) 47 48 #define SOC_WB_ENGINE_PRE_RELEASE (0x1) 49 #define SOC_WB_ENGINE_POST_RELEASE (0x2) 50 51 /* 52 * Upgrade function for version upgrade 53 */ 54 typedef int (*soc_wb_upgrade_func_t)( 55 int unit, 56 void* arg, 57 int recovered_version, 58 int new_version); 59 60 typedef struct soc_wb_engine_buffer_info_s { 61 uint16 buffer_name; /*unique buffer name */ 62 uint32 flags; 63 uint16 version; 64 uint8 *scache_ptr; /* internaly handled, held pointer pointing straight to data (no header)*/ 65 soc_wb_upgrade_func_t upgrade_func; 66 void* upgrade_func_arg; 67 int size; /*calculated*/ 68 int dirty; /* internaly handled*/ 69 char *buff_string; 70 uint8 is_dynamic; 71 int init_done; /* internaly handled*/ 72 uint8 is_only_copy; /* 1 if buffer holds the only copy of the data (instead of mirroring it) */ 73 uint8 is_added_after_relase; /* indicate if buffer was added on sustained branch (implications on ISSU)*/ 74 uint16 variable_num; /* variable number of the special buffer*/ 75 } soc_wb_engine_buffer_info_t; 76 77 /* 78 * this struct is meant to support single variables, 1d arrays and 2d arrays. 79 * when inserting a single variable outer_arr_length and inner_arr_length should equal 1 and outer/inner_arr_jump are meaningless. 80 * when inserting a 1d array insert its length in inner_arr_length and put outer_arr_length=1 . 81 * when inserting a 2d array insert its outer indx length in outer_arr_length and its inner indx length in inner_arr_length . 82 * the inner/outer_arr_jump are used when arrays are implicit (explicit 2d N*M array is z[N][M]), for example: . 83 * if we add variable z to the variables table and z is a member of some struct x[N].y[M].z then z is an implicit 2d array of size N*M but the . 84 * data of the array is not consecutive in memory (due to other fields of its parent struct), so we add outer_arr_jump=sizeof(x) inner_arr_jump=sizeof(y) . 85 * when array is explicit (z[][] or **z) we use the value DEFAULT for inner/outer_arr_jump . 86 */ 87 typedef struct soc_wb_engine_var_info_s { 88 uint32 buffer; /*module*/ 89 uint32 flags; 90 uint16 version_added; 91 uint16 version_removed; 92 uint32 data_size; /*in uint8s */ 93 uint8 *data_orig; 94 uint32 outer_arr_length; 95 uint32 inner_arr_length; 96 uint32 outer_arr_jump; 97 uint32 inner_arr_jump; 98 uint8 *default_value; /*pointer to a member holding the default value for the data, to be restored on ISSU when data didnt exist in the old version */ 99 uint32 offset; /*auto calculated*/ 100 char *var_string; 101 uint8 is_dynamic; 102 uint8 is_enabled; 103 uint8 init_done; /*handled internally*/ 104 } soc_wb_engine_var_info_t; 105 106 typedef struct soc_wb_engine_dynamic_var_info_s { 107 uint32 flags; 108 uint32 data_size; /*in uint8s */ 109 uint32 outer_arr_length; 110 uint32 inner_arr_length; 111 uint32 outer_arr_jump; 112 uint32 inner_arr_jump; 113 uint32 offset; /*within the buffer - auto calculated*/ 114 uint8 is_enabled; 115 } soc_wb_engine_dynamic_var_info_t; 116 117 118 /* general definitions to be included at the beginning of engine's init_tables functiom */ 119 /* these defs are later used by ADD_DYNAMIC_BUFF and ADD_DYNAMIC_VAR_WITH_FEATURES below */ 120 #define WB_ENGINE_INIT_TABLES_DEFS \ 121 soc_wb_engine_var_info_t tmp_var_info;\ 122 soc_wb_engine_dynamic_var_info_t *buffer_header = NULL;\ 123 uint8 buffer_is_dynamic = 0;\ 124 int dynamic_var_counter = 0;\ 125 soc_wb_engine_buffer_info_t tmp_buffer_info;\ 126 int buffer_init_count = 0;\ 127 int var_init_count = 0 128 129 #define SOC_WB_ENGINE_INIT_TABLES_SANITY(_rv)\ 130 if (buffer_init_count != 1 || var_init_count == 0) {\ 131 /*macros ++ the var and buffer count*/\ 132 /* exactly one buffer should be init */\ 133 /* at least one variable should be init */\ 134 _rv = SOC_E_INTERNAL;\ 135 }\ 136 137 #define SOC_WB_ENGINE_ADD_DYNAMIC_BUFF(_engine_id, _buff, _buff_string, _upgrade_func, _upgrade_func_arg, _version, _is_dynamic, _is_only_copy, _is_added_after_release)\ 138 if (_buff == buffer_id) {\ 139 buffer_is_dynamic = _is_dynamic;\ 140 tmp_buffer_info.buff_string = _buff_string;\ 141 tmp_buffer_info.buffer_name = _buff;\ 142 tmp_buffer_info.upgrade_func = _upgrade_func;\ 143 tmp_buffer_info.upgrade_func_arg = _upgrade_func_arg;\ 144 tmp_buffer_info.version = _version;\ 145 tmp_buffer_info.flags = 0;\ 146 tmp_buffer_info.dirty = 0;\ 147 tmp_buffer_info.init_done = 0;\ 148 tmp_buffer_info.size = 0;\ 149 tmp_buffer_info.is_dynamic = _is_dynamic;\ 150 tmp_buffer_info.scache_ptr = NULL;\ 151 tmp_buffer_info.is_only_copy = _is_only_copy;\ 152 tmp_buffer_info.is_added_after_relase = _is_added_after_release;\ 153 tmp_buffer_info.variable_num = 0;\ 154 rv = soc_wb_engine_add_buff(unit, _engine_id, _buff, tmp_buffer_info);\ 155 /*indicate that a var was initialized*/\ 156 buffer_init_count++;\ 157 } 158 159 #ifndef VALGRIND_CHECK 160 /* This is used from DPP to force a Valgrind memory initialized check when a wb array */ 161 /* is initialized. */ 162 /* This check makes sure that the passed array is initialized by going over it. */ 163 /* If a byte is uninitialized, then Valgrind will give an error there. */ 164 #define VALGRIND_CHECK(_orig_data_ptr, _outer_arr_length, _inner_arr_length, _outer_jump, _inner_jump, _data_size, _var) ((void)0) 165 #endif 166 167 /*most generic variable addition macro */ 168 #define SOC_WB_ENGINE_ADD_DYNAMIC_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, _outer_jump, _inner_jump, _version_added, _version_removed, _default_value, _is_dynamic) \ 169 if (_buffer == buffer_id) { \ 170 tmp_var_info.var_string = _var_string; \ 171 tmp_var_info.buffer = _buffer; \ 172 tmp_var_info.version_added = _version_added; \ 173 tmp_var_info.version_removed = _version_removed; \ 174 tmp_var_info.default_value = (_default_value); \ 175 tmp_var_info.flags = 0; \ 176 tmp_var_info.init_done = SOC_WB_ENGINE_VAR_INITIALIZED; \ 177 tmp_var_info.is_dynamic = _is_dynamic; \ 178 tmp_var_info.is_enabled = 0; \ 179 tmp_var_info.data_size = 0; /* default (to be overriden)*/ \ 180 tmp_var_info.offset = 0; \ 181 \ 182 if (!(_is_dynamic) || (SOC_WARM_BOOT(unit) && buffer_header && buffer_header[dynamic_var_counter].is_enabled)){ \ 183 VALGRIND_CHECK(_orig_data_ptr, _outer_arr_length, _inner_arr_length, _outer_jump, _inner_jump, _data_size, _var); \ 184 tmp_var_info.data_size = (_data_size)/sizeof(uint8); /* normalize size to uint8 size*/ \ 185 tmp_var_info.data_orig = (uint8 *) _orig_data_ptr; \ 186 tmp_var_info.outer_arr_length = (_outer_arr_length); \ 187 tmp_var_info.inner_arr_length = (_inner_arr_length); \ 188 if ((_outer_jump) == 0xffffffff) \ 189 { \ 190 tmp_var_info.outer_arr_jump = (_inner_arr_length) * tmp_var_info.data_size; \ 191 } \ 192 else \ 193 { \ 194 tmp_var_info.outer_arr_jump = (_outer_jump); \ 195 } \ 196 if ((_inner_jump) == 0xffffffff) \ 197 { \ 198 tmp_var_info.inner_arr_jump = tmp_var_info.data_size; \ 199 } \ 200 else \ 201 { \ 202 tmp_var_info.inner_arr_jump = (_inner_jump); \ 203 } \ 204 } \ 205 rv = soc_wb_engine_add_var(unit, _engine_id, _var,tmp_var_info); \ 206 \ 207 /*indicate that a var was initialized*/ \ 208 var_init_count++; \ 209 \ 210 if (_is_dynamic){ \ 211 dynamic_var_counter++; \ 212 } \ 213 } 214 215 /********************************/ 216 /* dynamic vars addition macros */ 217 /********************************/ 218 #define SOC_WB_ENGINE_ADD_DYNAMIC_VAR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _version_added)\ 219 SOC_WB_ENGINE_ADD_DYNAMIC_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, 1, 1, 0xffffffff, 0xffffffff, _version_added, 0xff, NULL, TRUE) 220 221 #define SOC_WB_ENGINE_ADD_DYNAMIC_ARR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _arr_length, _version_added)\ 222 SOC_WB_ENGINE_ADD_DYNAMIC_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, 1, _arr_length, 0xffffffff, 0xffffffff, _version_added, 0xff, NULL, TRUE) 223 224 #define SOC_WB_ENGINE_ADD_DYNAMIC_2D_ARR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, _version_added)\ 225 SOC_WB_ENGINE_ADD_DYNAMIC_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, 0xffffffff, 0xffffffff, _version_added, 0xff, NULL, TRUE) 226 /* removal */ 227 #define SOC_WB_ENGINE_REMOVED_DYNAMIC_VAR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _version_added, _version_removed)\ 228 SOC_WB_ENGINE_ADD_DYNAMIC_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, 1, 1, 0xffffffff, 0xffffffff, _version_added, _version_removed, NULL, TRUE) 229 230 #define SOC_WB_ENGINE_REMOVED_DYNAMIC_ARR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _arr_length, _version_added, _version_removed)\ 231 SOC_WB_ENGINE_ADD_DYNAMIC_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, 1, _arr_length, 0xffffffff, 0xffffffff, _version_added, _version_removed, NULL, TRUE) 232 233 #define SOC_WB_ENGINE_REMOVED_DYNAMIC_2D_ARR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, _version_added, _version_removed)\ 234 SOC_WB_ENGINE_ADD_DYNAMIC_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, 0xffffffff, 0xffffffff, _version_added, _version_removed, NULL, TRUE) 235 236 /********************************/ 237 /* static vars addition macros */ 238 /********************************/ 239 240 #define SOC_WB_ENGINE_ADD_BUFF(_engine_id, _buff, _buff_string, _upgrade_func, _upgrade_func_arg, _version, _is_only_copy, _is_added_after_release)\ 241 SOC_WB_ENGINE_ADD_DYNAMIC_BUFF(_engine_id, _buff, _buff_string, _upgrade_func, _upgrade_func_arg, _version, 0 /*not dynamic*/, _is_only_copy, _is_added_after_release) 242 243 #define SOC_WB_ENGINE_ADD_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, _outer_jump, _inner_jump, _version_added, _version_removed, _default_value) \ 244 SOC_WB_ENGINE_ADD_DYNAMIC_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, _outer_jump, _inner_jump, _version_added, _version_removed, _default_value, 0) 245 246 /* ---------most-usefull----------- */ 247 #define SOC_WB_ENGINE_ADD_VAR_WITH_DEFAULT(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _version_added, _default_value)\ 248 SOC_WB_ENGINE_ADD_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, 1, 1, 0xffffffff, 0xffffffff, _version_added, 0xff, _default_value) 249 250 #define SOC_WB_ENGINE_ADD_VAR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _version_added)\ 251 SOC_WB_ENGINE_ADD_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, 1, 1, 0xffffffff, 0xffffffff, _version_added, 0xff, NULL) 252 253 #define SOC_WB_ENGINE_ADD_ARR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _arr_length, _version_added)\ 254 SOC_WB_ENGINE_ADD_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, 1, _arr_length, 0xffffffff, 0xffffffff, _version_added, 0xff, NULL) 255 256 #define SOC_WB_ENGINE_ADD_2D_ARR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, _version_added)\ 257 SOC_WB_ENGINE_ADD_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, 0xffffffff, 0xffffffff, _version_added, 0xff, NULL) 258 /* -------------------------------- */ 259 260 /* --------- remove ------------- */ 261 #define SOC_WB_ENGINE_REMOVED_VAR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _version_added, _version_removed)\ 262 SOC_WB_ENGINE_ADD_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, 1, 1, 0xffffffff, 0xffffffff, _version_added, _version_removed, NULL) 263 264 #define SOC_WB_ENGINE_REMOVED_ARR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _arr_length, _version_added, _version_removed)\ 265 SOC_WB_ENGINE_ADD_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, 1, _arr_length, 0xffffffff, 0xffffffff, _version_added, _version_removed, NULL) 266 267 #define SOC_WB_ENGINE_REMOVED_2D_ARR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, _version_added, _version_removed)\ 268 SOC_WB_ENGINE_ADD_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, 0xffffffff, 0xffffffff, _version_added, _version_removed, NULL) 269 /*--------------------------------- */ 270 271 #define SOC_WB_ENGINE_ADD_ARR_WITH_OFFSET(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _arr_length, _inner_jump, _version_added) \ 272 SOC_WB_ENGINE_ADD_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, 1, _arr_length, 0xffffffff, _inner_jump, _version_added, 0xff, NULL) 273 274 /* implicit arrays */ 275 /* examle for an implicit array: 276 x[3].y.z[4] is an implicit 2d array (as opposed to w[3][4] which is an explicit 2d array) 277 these arrays require two more fields to instruct the engine how many bytes separate two consecutive array entries. 278 */ 279 #define SOC_WB_ENGINE_ADD_IMPL_ARR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _arr_length, _arr_jump, _version_added)\ 280 SOC_WB_ENGINE_ADD_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, 1, _arr_length, 0xffffffff, _arr_jump, _version_added, 0xff, NULL) 281 282 #define SOC_WB_ENGINE_ADD_IMPL_2D_ARR(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, _outer_arr_jump, _inner_arr_jump, _version_added)\ 283 SOC_WB_ENGINE_ADD_VAR_WITH_FEATURES(_engine_id, _var, _var_string, _buffer, _data_size, _orig_data_ptr, _outer_arr_length, _inner_arr_length, _outer_arr_jump, _inner_arr_jump, _version_added, 0xff, NULL) 284 285 286 /********************************************************************************************/ 287 /* set/get macros to be used to set/get vars/array entries that are handled by wb_engine */ 288 /* retun SOC_E_ERRORS */ 289 /********************************************************************************************/ 290 291 #define SOC_WB_ENGINE_SET_DBL_ARR(unit, _engine_id, _var_id, _data_ptr, _outer_idx, _inner_idx)\ 292 soc_wb_engine_var_set(unit, _engine_id, (_var_id), (_outer_idx), (_inner_idx), (uint8 *)(_data_ptr)); 293 294 #define SOC_WB_ENGINE_GET_DBL_ARR(unit, _engine_id, _var_id, _data_ptr, _outer_idx, _inner_idx)\ 295 soc_wb_engine_var_get(unit, _engine_id, _var_id, _outer_idx, _inner_idx, (uint8 *)(_data_ptr)); 296 297 #define SOC_WB_ENGINE_SET_ARR(unit, _engine_id, _var_id, _data_ptr, _idx) \ 298 SOC_WB_ENGINE_SET_DBL_ARR(unit, _engine_id, _var_id, _data_ptr, 0, _idx) 299 300 #define SOC_WB_ENGINE_GET_ARR(unit, _engine_id, _var_id, _data_ptr, _idx)\ 301 SOC_WB_ENGINE_GET_DBL_ARR(unit, _engine_id, _var_id, _data_ptr, 0, _idx) 302 303 #define SOC_WB_ENGINE_SET_VAR(unit, _engine_id, _var_id, _data_ptr)\ 304 SOC_WB_ENGINE_SET_DBL_ARR(unit, _engine_id, _var_id, _data_ptr, 0, 0) 305 306 #define SOC_WB_ENGINE_GET_VAR(unit, _engine_id, _var_id, _data_ptr)\ 307 SOC_WB_ENGINE_GET_DBL_ARR(unit, _engine_id, _var_id, _data_ptr, 0, 0) 308 309 /* set/get macros for changing multiple array entries at once */ 310 #define SOC_WB_ENGINE_MEMCPY_ARR(unit, _engine_id, _var_id, _data_ptr, _inner_idx, _cpy_length) \ 311 soc_wb_engine_array_range_set_or_get(unit, _engine_id, (_var_id), (_inner_idx), (_cpy_length), 1, (uint8 *)(_data_ptr)) 312 313 #define SOC_WB_ENGINE_MEMCPY_ARR_GET(unit, _engine_id, _var_id, _data_ptr, _inner_idx, _cpy_length) \ 314 soc_wb_engine_array_range_set_or_get(unit, _engine_id, (_var_id), (_inner_idx), (_cpy_length), 0, (uint8 *)(_data_ptr)) 315 316 317 #define SOC_WB_ENGINE_MEMSET_ARR(unit, _engine_id, _var_id, _val) \ 318 soc_wb_engine_array_set(unit, _engine_id, (_var_id), (_val)) 319 320 321 /* if not compiled with wb define control size to be 0*/ 322 #ifndef BCM_WARM_BOOT_SUPPORT 323 #define SOC_WB_SCACHE_CONTROL_SIZE (0x0) 324 #endif /* BCM_WARM_BOOT_SUPPORT */ 325 326 #ifdef BCM_WARM_BOOT_SUPPORT 327 int 328 soc_wb_engine_dump(int unit, int engine_id, int flags, uint32 var_id, uint32 buffer_id, int print_orig_data, char *file_name, char *mode); 329 330 int 331 soc_wb_engine_buffer_dynamic_vars_state_get(int unit, int engine_id, int buffer_idx, soc_wb_engine_dynamic_var_info_t **var); 332 #endif 333 334 int 335 soc_wb_engine_enable_dynamic_var(int unit, int engine_id, int var_idx, soc_wb_engine_dynamic_var_info_t var, uint8 *data_orig); 336 337 int 338 soc_wb_engine_disable_dynamic_var(int unit, int engine_id, int var_idx); 339 340 int 341 soc_wb_engine_add_var(int unit, int engine_id, int var_idx, soc_wb_engine_var_info_t var); 342 343 int 344 soc_wb_engine_add_buff(int unit, int engine_id, int buff_idx, soc_wb_engine_buffer_info_t buffer); 345 346 int 347 soc_wb_engine_update_var_info(int unit, int engine_id, int var_idx, uint32 data_size, uint32 outer_arr_length, uint32 inner_arr_length); 348 349 int 350 soc_wb_engine_init_tables(int unit, int engine_id, int nof_buffers, int nof_vars); 351 352 int 353 soc_wb_engine_deinit_tables(int unit, int engine_id); 354 355 int 356 soc_wb_engine_sync(int unit, int engine_id); 357 358 int 359 soc_wb_engine_init_buffer(int unit, int engine_id, int buffer_id, uint8 is_reinit); 360 361 int 362 soc_wb_engine_var_set(int unit, int engine_id, int var_ndx, uint32 outer_arr_ndx, uint32 inner_arr_ndx, CONST uint8 *var); 363 364 /* sets all array with value */ 365 int 366 soc_wb_engine_array_set(int unit, int engine_id, int var_ndx, uint8 value); 367 368 /* sets sub-array with src_arr */ 369 int 370 soc_wb_engine_array_range_set_or_get(int unit, int engine_id, int var_ndx, uint32 arr_ndx, uint32 range_length, uint8 set_get, uint8 *src_arr); 371 372 int 373 soc_wb_engine_var_get(int unit, int engine_id, int var_ndx, uint32 outer_arr_ndx, uint32 inner_arr_ndx, uint8 *var); 374 375 #endif /*_SOC_WB_ENGINE_H_*/ 376