cprimod_dispatch.c (345671B)
1 /* 2 * 3 * 4 * 5 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 6 * 7 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 8 * 9 * 10 * DO NOT EDIT THIS FILE! 11 */ 12 13 #include <soc/types.h> 14 #include <soc/error.h> 15 #include <soc/cprimod/cprimod_internal.h> 16 #include <soc/cprimod/cprimod.h> 17 #include <soc/cprimod/cprimod_dispatch.h> 18 19 20 21 #ifdef _ERR_MSG_MODULE_NAME 22 #error "_ERR_MSG_MODULE_NAME redefined" 23 #endif 24 #define _ERR_MSG_MODULE_NAME BSL_LS_SOC_PORT 25 #ifdef CPRIMOD_SUPPORT 26 27 #ifdef CPRIMOD_CPRI_FALCON_SUPPORT 28 extern __cprimod__dispatch__t__ cprimod_cprif_driver; 29 #endif 30 31 __cprimod__dispatch__t__* __cprimod__dispatch__[cprimodDispatchTypeCount] = { 32 #ifdef CPRIMOD_CPRI_FALCON_SUPPORT 33 &cprimod_cprif_driver, 34 #endif 35 36 }; 37 38 int cprimod_dispatch_type_t_validate(cprimod_dispatch_type_t cprimod_dispatch_type) 39 { 40 SOC_INIT_FUNC_DEFS; 41 if(cprimod_dispatch_type >= cprimodDispatchTypeCount) { 42 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 43 } 44 45 exit: 46 SOC_FUNC_RETURN; 47 48 } 49 50 int cprimod_test_api_dispatch(int unit, int port, int* value) 51 { 52 53 cprimod_dispatch_type_t __type__; 54 int __rv__; 55 SOC_INIT_FUNC_DEFS; 56 57 if(value == NULL) { 58 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("value NULL parameter")); 59 } 60 /* Dispatch */ 61 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 62 if(__type__ >= cprimodDispatchTypeCount) { 63 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 64 } 65 66 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_test_api_dispatch) { 67 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_test_api_dispatch(unit, port, value); 68 _SOC_IF_ERR_EXIT(__rv__); 69 } else { 70 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_test_api_dispatch isn't implemented for driver type")); 71 } 72 73 exit: 74 SOC_FUNC_RETURN; 75 76 } 77 78 79 int cprimod_basic_frame_table_id_t_validate(cprimod_basic_frame_table_id_t cprimod_basic_frame_table_id) 80 { 81 SOC_INIT_FUNC_DEFS; 82 if(cprimod_basic_frame_table_id >= cprimod_basic_frame_table_Count) { 83 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 84 } 85 86 exit: 87 SOC_FUNC_RETURN; 88 89 } 90 91 int cprimod_basic_frame_usage_entry_t_validate(const cprimod_basic_frame_usage_entry_t* cprimod_basic_frame_usage_entry) 92 { 93 SOC_INIT_FUNC_DEFS; 94 if(cprimod_basic_frame_usage_entry == NULL) { 95 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 96 } 97 98 99 100 exit: 101 SOC_FUNC_RETURN; 102 103 } 104 105 int cprimod_basic_frame_usage_entry_t_init(cprimod_basic_frame_usage_entry_t* cprimod_basic_frame_usage_entry) 106 { 107 SOC_INIT_FUNC_DEFS; 108 109 if(cprimod_basic_frame_usage_entry == NULL){ 110 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_basic_frame_usage_entry NULL parameter")); 111 } 112 sal_memset(cprimod_basic_frame_usage_entry, 0, sizeof(cprimod_basic_frame_usage_entry_t)); 113 cprimod_basic_frame_usage_entry->axc_id = 0; 114 cprimod_basic_frame_usage_entry->start_bit = 0; 115 cprimod_basic_frame_usage_entry->num_bits = 0; 116 117 118 exit: 119 SOC_FUNC_RETURN; 120 121 } 122 123 int cprimod_basic_frame_parser_active_table_set(int unit, int port, cprimod_basic_frame_table_id_t table, int sync_enable) 124 { 125 126 cprimod_dispatch_type_t __type__; 127 int __rv__; 128 SOC_INIT_FUNC_DEFS; 129 130 if(SOC_E_NONE != cprimod_basic_frame_table_id_t_validate(table)) { 131 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table validation failed")); 132 } 133 134 /* Dispatch */ 135 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 136 if(__type__ >= cprimodDispatchTypeCount) { 137 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 138 } 139 140 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_parser_active_table_set) { 141 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_parser_active_table_set(unit, port, table, sync_enable); 142 _SOC_IF_ERR_EXIT(__rv__); 143 } else { 144 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_basic_frame_parser_active_table_set isn't implemented for driver type")); 145 } 146 147 exit: 148 SOC_FUNC_RETURN; 149 150 } 151 152 153 int cprimod_basic_frame_parser_active_table_get(int unit, int port, cprimod_basic_frame_table_id_t* table) 154 { 155 156 cprimod_dispatch_type_t __type__; 157 int __rv__; 158 SOC_INIT_FUNC_DEFS; 159 160 if(table == NULL) { 161 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table NULL parameter")); 162 } 163 /* Dispatch */ 164 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 165 if(__type__ >= cprimodDispatchTypeCount) { 166 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 167 } 168 169 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_parser_active_table_get) { 170 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_parser_active_table_get(unit, port, table); 171 _SOC_IF_ERR_EXIT(__rv__); 172 } else { 173 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_basic_frame_parser_active_table_get isn't implemented for driver type")); 174 } 175 176 exit: 177 SOC_FUNC_RETURN; 178 179 } 180 181 182 int cprimod_basic_frame_parser_table_num_entries_set(int unit, int port, cprimod_basic_frame_table_id_t table, uint32 num_entries) 183 { 184 185 cprimod_dispatch_type_t __type__; 186 int __rv__; 187 SOC_INIT_FUNC_DEFS; 188 189 if(SOC_E_NONE != cprimod_basic_frame_table_id_t_validate(table)) { 190 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table validation failed")); 191 } 192 193 /* Dispatch */ 194 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 195 if(__type__ >= cprimodDispatchTypeCount) { 196 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 197 } 198 199 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_parser_table_num_entries_set) { 200 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_parser_table_num_entries_set(unit, port, table, num_entries); 201 _SOC_IF_ERR_EXIT(__rv__); 202 } else { 203 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_basic_frame_parser_table_num_entries_set isn't implemented for driver type")); 204 } 205 206 exit: 207 SOC_FUNC_RETURN; 208 209 } 210 211 212 int cprimod_basic_frame_parser_table_num_entries_get(int unit, int port, cprimod_basic_frame_table_id_t table, uint32* num_entries) 213 { 214 215 cprimod_dispatch_type_t __type__; 216 int __rv__; 217 SOC_INIT_FUNC_DEFS; 218 219 if(SOC_E_NONE != cprimod_basic_frame_table_id_t_validate(table)) { 220 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table validation failed")); 221 } 222 223 if(num_entries == NULL) { 224 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("num_entries NULL parameter")); 225 } 226 /* Dispatch */ 227 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 228 if(__type__ >= cprimodDispatchTypeCount) { 229 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 230 } 231 232 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_parser_table_num_entries_get) { 233 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_parser_table_num_entries_get(unit, port, table, num_entries); 234 _SOC_IF_ERR_EXIT(__rv__); 235 } else { 236 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_basic_frame_parser_table_num_entries_get isn't implemented for driver type")); 237 } 238 239 exit: 240 SOC_FUNC_RETURN; 241 242 } 243 244 245 int cprimod_basic_frame_assembly_active_table_set(int unit, int port, cprimod_basic_frame_table_id_t table, int sync_enable) 246 { 247 248 cprimod_dispatch_type_t __type__; 249 int __rv__; 250 SOC_INIT_FUNC_DEFS; 251 252 if(SOC_E_NONE != cprimod_basic_frame_table_id_t_validate(table)) { 253 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table validation failed")); 254 } 255 256 /* Dispatch */ 257 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 258 if(__type__ >= cprimodDispatchTypeCount) { 259 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 260 } 261 262 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_assembly_active_table_set) { 263 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_assembly_active_table_set(unit, port, table, sync_enable); 264 _SOC_IF_ERR_EXIT(__rv__); 265 } else { 266 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_basic_frame_assembly_active_table_set isn't implemented for driver type")); 267 } 268 269 exit: 270 SOC_FUNC_RETURN; 271 272 } 273 274 275 int cprimod_basic_frame_assembly_active_table_get(int unit, int port, cprimod_basic_frame_table_id_t* table) 276 { 277 278 cprimod_dispatch_type_t __type__; 279 int __rv__; 280 SOC_INIT_FUNC_DEFS; 281 282 if(table == NULL) { 283 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table NULL parameter")); 284 } 285 /* Dispatch */ 286 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 287 if(__type__ >= cprimodDispatchTypeCount) { 288 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 289 } 290 291 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_assembly_active_table_get) { 292 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_assembly_active_table_get(unit, port, table); 293 _SOC_IF_ERR_EXIT(__rv__); 294 } else { 295 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_basic_frame_assembly_active_table_get isn't implemented for driver type")); 296 } 297 298 exit: 299 SOC_FUNC_RETURN; 300 301 } 302 303 304 int cprimod_basic_frame_assembly_table_num_entries_set(int unit, int port, cprimod_basic_frame_table_id_t table, uint32 num_entries) 305 { 306 307 cprimod_dispatch_type_t __type__; 308 int __rv__; 309 SOC_INIT_FUNC_DEFS; 310 311 if(SOC_E_NONE != cprimod_basic_frame_table_id_t_validate(table)) { 312 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table validation failed")); 313 } 314 315 /* Dispatch */ 316 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 317 if(__type__ >= cprimodDispatchTypeCount) { 318 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 319 } 320 321 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_assembly_table_num_entries_set) { 322 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_assembly_table_num_entries_set(unit, port, table, num_entries); 323 _SOC_IF_ERR_EXIT(__rv__); 324 } else { 325 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_basic_frame_assembly_table_num_entries_set isn't implemented for driver type")); 326 } 327 328 exit: 329 SOC_FUNC_RETURN; 330 331 } 332 333 334 int cprimod_basic_frame_assembly_table_num_entries_get(int unit, int port, cprimod_basic_frame_table_id_t table, uint32* num_entries) 335 { 336 337 cprimod_dispatch_type_t __type__; 338 int __rv__; 339 SOC_INIT_FUNC_DEFS; 340 341 if(SOC_E_NONE != cprimod_basic_frame_table_id_t_validate(table)) { 342 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table validation failed")); 343 } 344 345 if(num_entries == NULL) { 346 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("num_entries NULL parameter")); 347 } 348 /* Dispatch */ 349 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 350 if(__type__ >= cprimodDispatchTypeCount) { 351 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 352 } 353 354 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_assembly_table_num_entries_get) { 355 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_assembly_table_num_entries_get(unit, port, table, num_entries); 356 _SOC_IF_ERR_EXIT(__rv__); 357 } else { 358 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_basic_frame_assembly_table_num_entries_get isn't implemented for driver type")); 359 } 360 361 exit: 362 SOC_FUNC_RETURN; 363 364 } 365 366 367 int cprimod_basic_frame_parser_switch_active_table(int unit, int port) 368 { 369 370 cprimod_dispatch_type_t __type__; 371 int __rv__; 372 SOC_INIT_FUNC_DEFS; 373 374 /* Dispatch */ 375 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 376 if(__type__ >= cprimodDispatchTypeCount) { 377 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 378 } 379 380 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_parser_switch_active_table) { 381 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_parser_switch_active_table(unit, port); 382 _SOC_IF_ERR_EXIT(__rv__); 383 } else { 384 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_basic_frame_parser_switch_active_table isn't implemented for driver type")); 385 } 386 387 exit: 388 SOC_FUNC_RETURN; 389 390 } 391 392 393 int cprimod_basic_frame_assembly_switch_active_table(int unit, int port) 394 { 395 396 cprimod_dispatch_type_t __type__; 397 int __rv__; 398 SOC_INIT_FUNC_DEFS; 399 400 /* Dispatch */ 401 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 402 if(__type__ >= cprimodDispatchTypeCount) { 403 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 404 } 405 406 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_assembly_switch_active_table) { 407 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_assembly_switch_active_table(unit, port); 408 _SOC_IF_ERR_EXIT(__rv__); 409 } else { 410 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_basic_frame_assembly_switch_active_table isn't implemented for driver type")); 411 } 412 413 exit: 414 SOC_FUNC_RETURN; 415 416 } 417 418 419 int cprimod_rx_axc_basic_frame_add(int unit, int port, uint32 axc_id, uint32 start_bit, uint32 num_bit) 420 { 421 422 cprimod_dispatch_type_t __type__; 423 int __rv__; 424 SOC_INIT_FUNC_DEFS; 425 426 /* Dispatch */ 427 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 428 if(__type__ >= cprimodDispatchTypeCount) { 429 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 430 } 431 432 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rx_axc_basic_frame_add) { 433 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rx_axc_basic_frame_add(unit, port, axc_id, start_bit, num_bit); 434 _SOC_IF_ERR_EXIT(__rv__); 435 } else { 436 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rx_axc_basic_frame_add isn't implemented for driver type")); 437 } 438 439 exit: 440 SOC_FUNC_RETURN; 441 442 } 443 444 445 int cprimod_rx_axc_basic_frame_delete(int unit, int port, uint32 axc_id) 446 { 447 448 cprimod_dispatch_type_t __type__; 449 int __rv__; 450 SOC_INIT_FUNC_DEFS; 451 452 /* Dispatch */ 453 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 454 if(__type__ >= cprimodDispatchTypeCount) { 455 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 456 } 457 458 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rx_axc_basic_frame_delete) { 459 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rx_axc_basic_frame_delete(unit, port, axc_id); 460 _SOC_IF_ERR_EXIT(__rv__); 461 } else { 462 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rx_axc_basic_frame_delete isn't implemented for driver type")); 463 } 464 465 exit: 466 SOC_FUNC_RETURN; 467 468 } 469 470 471 int cprimod_rx_axc_basic_frame_clear(int unit, int port) 472 { 473 474 cprimod_dispatch_type_t __type__; 475 int __rv__; 476 SOC_INIT_FUNC_DEFS; 477 478 /* Dispatch */ 479 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 480 if(__type__ >= cprimodDispatchTypeCount) { 481 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 482 } 483 484 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rx_axc_basic_frame_clear) { 485 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rx_axc_basic_frame_clear(unit, port); 486 _SOC_IF_ERR_EXIT(__rv__); 487 } else { 488 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rx_axc_basic_frame_clear isn't implemented for driver type")); 489 } 490 491 exit: 492 SOC_FUNC_RETURN; 493 494 } 495 496 497 int cprimod_rx_axc_basic_frame_get(int unit, int port, uint32 axc_id, cprimod_basic_frame_table_id_t table, cprimod_basic_frame_usage_entry_t* usage_table, int* num_entries) 498 { 499 500 cprimod_dispatch_type_t __type__; 501 int __rv__; 502 SOC_INIT_FUNC_DEFS; 503 504 if(SOC_E_NONE != cprimod_basic_frame_table_id_t_validate(table)) { 505 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table validation failed")); 506 } 507 508 if(usage_table == NULL) { 509 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("usage_table NULL parameter")); 510 } 511 if(SOC_E_NONE != cprimod_basic_frame_usage_entry_t_init(usage_table)) { 512 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("usage_table initialization failed")); 513 } 514 515 if(num_entries == NULL) { 516 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("num_entries NULL parameter")); 517 } 518 /* Dispatch */ 519 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 520 if(__type__ >= cprimodDispatchTypeCount) { 521 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 522 } 523 524 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rx_axc_basic_frame_get) { 525 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rx_axc_basic_frame_get(unit, port, axc_id, table, usage_table, num_entries); 526 _SOC_IF_ERR_EXIT(__rv__); 527 } else { 528 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rx_axc_basic_frame_get isn't implemented for driver type")); 529 } 530 531 exit: 532 SOC_FUNC_RETURN; 533 534 } 535 536 537 int cprimod_tx_axc_basic_frame_add(int unit, int port, uint32 axc_id, uint32 start_bit, uint32 num_bit) 538 { 539 540 cprimod_dispatch_type_t __type__; 541 int __rv__; 542 SOC_INIT_FUNC_DEFS; 543 544 /* Dispatch */ 545 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 546 if(__type__ >= cprimodDispatchTypeCount) { 547 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 548 } 549 550 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_axc_basic_frame_add) { 551 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_axc_basic_frame_add(unit, port, axc_id, start_bit, num_bit); 552 _SOC_IF_ERR_EXIT(__rv__); 553 } else { 554 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_axc_basic_frame_add isn't implemented for driver type")); 555 } 556 557 exit: 558 SOC_FUNC_RETURN; 559 560 } 561 562 563 int cprimod_tx_axc_basic_frame_delete(int unit, int port, uint32 axc_id) 564 { 565 566 cprimod_dispatch_type_t __type__; 567 int __rv__; 568 SOC_INIT_FUNC_DEFS; 569 570 /* Dispatch */ 571 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 572 if(__type__ >= cprimodDispatchTypeCount) { 573 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 574 } 575 576 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_axc_basic_frame_delete) { 577 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_axc_basic_frame_delete(unit, port, axc_id); 578 _SOC_IF_ERR_EXIT(__rv__); 579 } else { 580 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_axc_basic_frame_delete isn't implemented for driver type")); 581 } 582 583 exit: 584 SOC_FUNC_RETURN; 585 586 } 587 588 589 int cprimod_tx_axc_basic_frame_clear(int unit, int port) 590 { 591 592 cprimod_dispatch_type_t __type__; 593 int __rv__; 594 SOC_INIT_FUNC_DEFS; 595 596 /* Dispatch */ 597 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 598 if(__type__ >= cprimodDispatchTypeCount) { 599 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 600 } 601 602 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_axc_basic_frame_clear) { 603 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_axc_basic_frame_clear(unit, port); 604 _SOC_IF_ERR_EXIT(__rv__); 605 } else { 606 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_axc_basic_frame_clear isn't implemented for driver type")); 607 } 608 609 exit: 610 SOC_FUNC_RETURN; 611 612 } 613 614 615 int cprimod_tx_axc_basic_frame_get(int unit, int port, uint32 axc_id, cprimod_basic_frame_table_id_t table, cprimod_basic_frame_usage_entry_t* usage_table, int* num_entries) 616 { 617 618 cprimod_dispatch_type_t __type__; 619 int __rv__; 620 SOC_INIT_FUNC_DEFS; 621 622 if(SOC_E_NONE != cprimod_basic_frame_table_id_t_validate(table)) { 623 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table validation failed")); 624 } 625 626 if(usage_table == NULL) { 627 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("usage_table NULL parameter")); 628 } 629 if(SOC_E_NONE != cprimod_basic_frame_usage_entry_t_init(usage_table)) { 630 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("usage_table initialization failed")); 631 } 632 633 if(num_entries == NULL) { 634 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("num_entries NULL parameter")); 635 } 636 /* Dispatch */ 637 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 638 if(__type__ >= cprimodDispatchTypeCount) { 639 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 640 } 641 642 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_axc_basic_frame_get) { 643 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_axc_basic_frame_get(unit, port, axc_id, table, usage_table, num_entries); 644 _SOC_IF_ERR_EXIT(__rv__); 645 } else { 646 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_axc_basic_frame_get isn't implemented for driver type")); 647 } 648 649 exit: 650 SOC_FUNC_RETURN; 651 652 } 653 654 655 int cprimod_basic_frame_debug(int unit, int port, uint32 axc_id, cprimod_basic_frame_table_id_t rx_table, cprimod_basic_frame_table_id_t tx_table, uint32 flags) 656 { 657 658 cprimod_dispatch_type_t __type__; 659 int __rv__; 660 SOC_INIT_FUNC_DEFS; 661 662 if(SOC_E_NONE != cprimod_basic_frame_table_id_t_validate(rx_table)) { 663 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("rx_table validation failed")); 664 } 665 666 if(SOC_E_NONE != cprimod_basic_frame_table_id_t_validate(tx_table)) { 667 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tx_table validation failed")); 668 } 669 670 /* Dispatch */ 671 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 672 if(__type__ >= cprimodDispatchTypeCount) { 673 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 674 } 675 676 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_debug) { 677 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_basic_frame_debug(unit, port, axc_id, rx_table, tx_table, flags); 678 _SOC_IF_ERR_EXIT(__rv__); 679 } else { 680 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_basic_frame_debug isn't implemented for driver type")); 681 } 682 683 exit: 684 SOC_FUNC_RETURN; 685 686 } 687 688 689 int cprimod_cpri_frame_map_method_t_validate(cprimod_cpri_frame_map_method_t cprimod_cpri_frame_map_method) 690 { 691 SOC_INIT_FUNC_DEFS; 692 if(cprimod_cpri_frame_map_method >= cprimod_cpri_frame_map_method_Count) { 693 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 694 } 695 696 exit: 697 SOC_FUNC_RETURN; 698 699 } 700 701 int cprimod_cpri_container_config_t_validate(const cprimod_cpri_container_config_t* cprimod_cpri_container_config) 702 { 703 SOC_INIT_FUNC_DEFS; 704 if(cprimod_cpri_container_config == NULL) { 705 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 706 } 707 708 if(SOC_E_NONE != cprimod_cpri_frame_map_method_t_validate(cprimod_cpri_container_config->map_method)) { 709 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("map_method validation failed")); 710 } 711 712 713 714 exit: 715 SOC_FUNC_RETURN; 716 717 } 718 719 int cprimod_cpri_container_config_t_init(cprimod_cpri_container_config_t* cprimod_cpri_container_config) 720 { 721 SOC_INIT_FUNC_DEFS; 722 723 if(cprimod_cpri_container_config == NULL){ 724 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_container_config NULL parameter")); 725 } 726 sal_memset(cprimod_cpri_container_config, 0, sizeof(cprimod_cpri_container_config_t)); 727 cprimod_cpri_container_config->map_method = 0; 728 cprimod_cpri_container_config->Naxc = 0; 729 cprimod_cpri_container_config->K = 0; 730 cprimod_cpri_container_config->Nst = 0; 731 cprimod_cpri_container_config->Na = 0; 732 cprimod_cpri_container_config->Nc = 0; 733 cprimod_cpri_container_config->Nv = 0; 734 cprimod_cpri_container_config->frame_sync_mode = 0; 735 cprimod_cpri_container_config->basic_frame_offset = 0; 736 cprimod_cpri_container_config->radio_frame_offset = 0; 737 cprimod_cpri_container_config->hyper_frame_offset = 0; 738 cprimod_cpri_container_config->cblk_cnt = 0; 739 740 741 exit: 742 SOC_FUNC_RETURN; 743 744 } 745 746 int cprimod_rsvd4_container_config_t_validate(const cprimod_rsvd4_container_config_t* cprimod_rsvd4_container_config) 747 { 748 SOC_INIT_FUNC_DEFS; 749 if(cprimod_rsvd4_container_config == NULL) { 750 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 751 } 752 753 754 755 exit: 756 SOC_FUNC_RETURN; 757 758 } 759 760 int cprimod_rsvd4_container_config_t_init(cprimod_rsvd4_container_config_t* cprimod_rsvd4_container_config) 761 { 762 SOC_INIT_FUNC_DEFS; 763 764 if(cprimod_rsvd4_container_config == NULL){ 765 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_rsvd4_container_config NULL parameter")); 766 } 767 sal_memset(cprimod_rsvd4_container_config, 0, sizeof(cprimod_rsvd4_container_config_t)); 768 cprimod_rsvd4_container_config->stuffing_cnt = 0; 769 cprimod_rsvd4_container_config->msg_ts_mode = 0; 770 cprimod_rsvd4_container_config->msg_ts_cnt = 0; 771 cprimod_rsvd4_container_config->frame_sync_mode = 0; 772 cprimod_rsvd4_container_config->master_frame_offset = 0; 773 cprimod_rsvd4_container_config->message_number_offset = 0; 774 cprimod_rsvd4_container_config->container_block_cnt = 0; 775 cprimod_rsvd4_container_config->use_ts_dbm = 0; 776 cprimod_rsvd4_container_config->ts_dbm_prof_num = 0; 777 cprimod_rsvd4_container_config->num_active_slots = 0; 778 cprimod_rsvd4_container_config->msg_addr = 0; 779 cprimod_rsvd4_container_config->msg_type = 0; 780 cprimod_rsvd4_container_config->msg_ts_offset = 0; 781 782 783 exit: 784 SOC_FUNC_RETURN; 785 786 } 787 788 int cprimod_cpri_rx_axc_container_config_set(int unit, int port, uint32 axc_id, const cprimod_cpri_container_config_t* config_info) 789 { 790 791 cprimod_dispatch_type_t __type__; 792 int __rv__; 793 SOC_INIT_FUNC_DEFS; 794 795 if(SOC_E_NONE != cprimod_cpri_container_config_t_validate(config_info)) { 796 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 797 } 798 799 /* Dispatch */ 800 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 801 if(__type__ >= cprimodDispatchTypeCount) { 802 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 803 } 804 805 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_axc_container_config_set) { 806 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_axc_container_config_set(unit, port, axc_id, config_info); 807 _SOC_IF_ERR_EXIT(__rv__); 808 } else { 809 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_rx_axc_container_config_set isn't implemented for driver type")); 810 } 811 812 exit: 813 SOC_FUNC_RETURN; 814 815 } 816 817 818 int cprimod_cpri_rx_axc_container_config_get(int unit, int port, uint32 axc_id, cprimod_cpri_container_config_t* config_info) 819 { 820 821 cprimod_dispatch_type_t __type__; 822 int __rv__; 823 SOC_INIT_FUNC_DEFS; 824 825 if(config_info == NULL) { 826 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 827 } 828 if(SOC_E_NONE != cprimod_cpri_container_config_t_init(config_info)) { 829 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 830 } 831 832 /* Dispatch */ 833 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 834 if(__type__ >= cprimodDispatchTypeCount) { 835 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 836 } 837 838 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_axc_container_config_get) { 839 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_axc_container_config_get(unit, port, axc_id, config_info); 840 _SOC_IF_ERR_EXIT(__rv__); 841 } else { 842 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_rx_axc_container_config_get isn't implemented for driver type")); 843 } 844 845 exit: 846 SOC_FUNC_RETURN; 847 848 } 849 850 851 int cprimod_cpri_tx_axc_container_config_set(int unit, int port, uint32 axc_id, const cprimod_cpri_container_config_t* config_info) 852 { 853 854 cprimod_dispatch_type_t __type__; 855 int __rv__; 856 SOC_INIT_FUNC_DEFS; 857 858 if(SOC_E_NONE != cprimod_cpri_container_config_t_validate(config_info)) { 859 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 860 } 861 862 /* Dispatch */ 863 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 864 if(__type__ >= cprimodDispatchTypeCount) { 865 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 866 } 867 868 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_tx_axc_container_config_set) { 869 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_tx_axc_container_config_set(unit, port, axc_id, config_info); 870 _SOC_IF_ERR_EXIT(__rv__); 871 } else { 872 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_tx_axc_container_config_set isn't implemented for driver type")); 873 } 874 875 exit: 876 SOC_FUNC_RETURN; 877 878 } 879 880 881 int cprimod_cpri_tx_axc_container_config_get(int unit, int port, uint32 axc_id, cprimod_cpri_container_config_t* config_info) 882 { 883 884 cprimod_dispatch_type_t __type__; 885 int __rv__; 886 SOC_INIT_FUNC_DEFS; 887 888 if(config_info == NULL) { 889 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 890 } 891 if(SOC_E_NONE != cprimod_cpri_container_config_t_init(config_info)) { 892 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 893 } 894 895 /* Dispatch */ 896 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 897 if(__type__ >= cprimodDispatchTypeCount) { 898 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 899 } 900 901 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_tx_axc_container_config_get) { 902 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_tx_axc_container_config_get(unit, port, axc_id, config_info); 903 _SOC_IF_ERR_EXIT(__rv__); 904 } else { 905 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_tx_axc_container_config_get isn't implemented for driver type")); 906 } 907 908 exit: 909 SOC_FUNC_RETURN; 910 911 } 912 913 914 int cprimod_rsvd4_rx_axc_container_config_set(int unit, int port, uint32 flow_id, const cprimod_rsvd4_container_config_t* config_info) 915 { 916 917 cprimod_dispatch_type_t __type__; 918 int __rv__; 919 SOC_INIT_FUNC_DEFS; 920 921 if(SOC_E_NONE != cprimod_rsvd4_container_config_t_validate(config_info)) { 922 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 923 } 924 925 /* Dispatch */ 926 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 927 if(__type__ >= cprimodDispatchTypeCount) { 928 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 929 } 930 931 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_axc_container_config_set) { 932 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_axc_container_config_set(unit, port, flow_id, config_info); 933 _SOC_IF_ERR_EXIT(__rv__); 934 } else { 935 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_rx_axc_container_config_set isn't implemented for driver type")); 936 } 937 938 exit: 939 SOC_FUNC_RETURN; 940 941 } 942 943 944 int cprimod_rsvd4_rx_axc_container_config_get(int unit, int port, uint32 flow_id, cprimod_rsvd4_container_config_t* config_info) 945 { 946 947 cprimod_dispatch_type_t __type__; 948 int __rv__; 949 SOC_INIT_FUNC_DEFS; 950 951 if(config_info == NULL) { 952 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 953 } 954 if(SOC_E_NONE != cprimod_rsvd4_container_config_t_init(config_info)) { 955 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 956 } 957 958 /* Dispatch */ 959 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 960 if(__type__ >= cprimodDispatchTypeCount) { 961 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 962 } 963 964 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_axc_container_config_get) { 965 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_axc_container_config_get(unit, port, flow_id, config_info); 966 _SOC_IF_ERR_EXIT(__rv__); 967 } else { 968 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_rx_axc_container_config_get isn't implemented for driver type")); 969 } 970 971 exit: 972 SOC_FUNC_RETURN; 973 974 } 975 976 977 int cprimod_rsvd4_tx_axc_container_config_set(int unit, int port, uint32 flow_id, const cprimod_rsvd4_container_config_t* config_info) 978 { 979 980 cprimod_dispatch_type_t __type__; 981 int __rv__; 982 SOC_INIT_FUNC_DEFS; 983 984 if(SOC_E_NONE != cprimod_rsvd4_container_config_t_validate(config_info)) { 985 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 986 } 987 988 /* Dispatch */ 989 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 990 if(__type__ >= cprimodDispatchTypeCount) { 991 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 992 } 993 994 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_axc_container_config_set) { 995 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_axc_container_config_set(unit, port, flow_id, config_info); 996 _SOC_IF_ERR_EXIT(__rv__); 997 } else { 998 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_axc_container_config_set isn't implemented for driver type")); 999 } 1000 1001 exit: 1002 SOC_FUNC_RETURN; 1003 1004 } 1005 1006 1007 int cprimod_rsvd4_tx_axc_container_config_get(int unit, int port, uint32 flow_id, cprimod_rsvd4_container_config_t* config_info) 1008 { 1009 1010 cprimod_dispatch_type_t __type__; 1011 int __rv__; 1012 SOC_INIT_FUNC_DEFS; 1013 1014 if(config_info == NULL) { 1015 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 1016 } 1017 if(SOC_E_NONE != cprimod_rsvd4_container_config_t_init(config_info)) { 1018 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 1019 } 1020 1021 /* Dispatch */ 1022 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1023 if(__type__ >= cprimodDispatchTypeCount) { 1024 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1025 } 1026 1027 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_axc_container_config_get) { 1028 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_axc_container_config_get(unit, port, flow_id, config_info); 1029 _SOC_IF_ERR_EXIT(__rv__); 1030 } else { 1031 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_axc_container_config_get isn't implemented for driver type")); 1032 } 1033 1034 exit: 1035 SOC_FUNC_RETURN; 1036 1037 } 1038 1039 1040 int cprimod_payload_size_info_t_validate(const cprimod_payload_size_info_t* cprimod_payload_size_info) 1041 { 1042 SOC_INIT_FUNC_DEFS; 1043 if(cprimod_payload_size_info == NULL) { 1044 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 1045 } 1046 1047 1048 1049 exit: 1050 SOC_FUNC_RETURN; 1051 1052 } 1053 1054 int cprimod_payload_size_info_t_init(cprimod_payload_size_info_t* cprimod_payload_size_info) 1055 { 1056 SOC_INIT_FUNC_DEFS; 1057 1058 if(cprimod_payload_size_info == NULL){ 1059 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_payload_size_info NULL parameter")); 1060 } 1061 sal_memset(cprimod_payload_size_info, 0, sizeof(cprimod_payload_size_info_t)); 1062 cprimod_payload_size_info->packet_size = 0; 1063 cprimod_payload_size_info->last_packet_num = 0; 1064 cprimod_payload_size_info->last_packet_size = 0; 1065 1066 1067 exit: 1068 SOC_FUNC_RETURN; 1069 1070 } 1071 1072 int cprimod_rx_roe_payload_size_set(int unit, int port, uint32 axc_id, const cprimod_payload_size_info_t* config_info) 1073 { 1074 1075 cprimod_dispatch_type_t __type__; 1076 int __rv__; 1077 SOC_INIT_FUNC_DEFS; 1078 1079 if(SOC_E_NONE != cprimod_payload_size_info_t_validate(config_info)) { 1080 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 1081 } 1082 1083 /* Dispatch */ 1084 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1085 if(__type__ >= cprimodDispatchTypeCount) { 1086 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1087 } 1088 1089 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rx_roe_payload_size_set) { 1090 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rx_roe_payload_size_set(unit, port, axc_id, config_info); 1091 _SOC_IF_ERR_EXIT(__rv__); 1092 } else { 1093 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rx_roe_payload_size_set isn't implemented for driver type")); 1094 } 1095 1096 exit: 1097 SOC_FUNC_RETURN; 1098 1099 } 1100 1101 1102 int cprimod_rx_roe_payload_size_get(int unit, int port, uint32 axc_id, cprimod_payload_size_info_t* config_info) 1103 { 1104 1105 cprimod_dispatch_type_t __type__; 1106 int __rv__; 1107 SOC_INIT_FUNC_DEFS; 1108 1109 if(config_info == NULL) { 1110 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 1111 } 1112 if(SOC_E_NONE != cprimod_payload_size_info_t_init(config_info)) { 1113 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 1114 } 1115 1116 /* Dispatch */ 1117 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1118 if(__type__ >= cprimodDispatchTypeCount) { 1119 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1120 } 1121 1122 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rx_roe_payload_size_get) { 1123 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rx_roe_payload_size_get(unit, port, axc_id, config_info); 1124 _SOC_IF_ERR_EXIT(__rv__); 1125 } else { 1126 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rx_roe_payload_size_get isn't implemented for driver type")); 1127 } 1128 1129 exit: 1130 SOC_FUNC_RETURN; 1131 1132 } 1133 1134 1135 int cprimod_tx_roe_payload_size_set(int unit, int port, uint32 axc_id, const cprimod_payload_size_info_t* config_info) 1136 { 1137 1138 cprimod_dispatch_type_t __type__; 1139 int __rv__; 1140 SOC_INIT_FUNC_DEFS; 1141 1142 if(SOC_E_NONE != cprimod_payload_size_info_t_validate(config_info)) { 1143 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 1144 } 1145 1146 /* Dispatch */ 1147 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1148 if(__type__ >= cprimodDispatchTypeCount) { 1149 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1150 } 1151 1152 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_roe_payload_size_set) { 1153 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_roe_payload_size_set(unit, port, axc_id, config_info); 1154 _SOC_IF_ERR_EXIT(__rv__); 1155 } else { 1156 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_roe_payload_size_set isn't implemented for driver type")); 1157 } 1158 1159 exit: 1160 SOC_FUNC_RETURN; 1161 1162 } 1163 1164 1165 int cprimod_tx_roe_payload_size_get(int unit, int port, uint32 axc_id, cprimod_payload_size_info_t* config_info) 1166 { 1167 1168 cprimod_dispatch_type_t __type__; 1169 int __rv__; 1170 SOC_INIT_FUNC_DEFS; 1171 1172 if(config_info == NULL) { 1173 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 1174 } 1175 if(SOC_E_NONE != cprimod_payload_size_info_t_init(config_info)) { 1176 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 1177 } 1178 1179 /* Dispatch */ 1180 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1181 if(__type__ >= cprimodDispatchTypeCount) { 1182 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1183 } 1184 1185 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_roe_payload_size_get) { 1186 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_roe_payload_size_get(unit, port, axc_id, config_info); 1187 _SOC_IF_ERR_EXIT(__rv__); 1188 } else { 1189 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_roe_payload_size_get isn't implemented for driver type")); 1190 } 1191 1192 exit: 1193 SOC_FUNC_RETURN; 1194 1195 } 1196 1197 1198 int cprimod_compression_type_t_validate(cprimod_compression_type_t cprimod_compression_type) 1199 { 1200 SOC_INIT_FUNC_DEFS; 1201 if(cprimod_compression_type >= cprimod_Count) { 1202 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 1203 } 1204 1205 exit: 1206 SOC_FUNC_RETURN; 1207 1208 } 1209 1210 int cprimod_truncation_type_t_validate(cprimod_truncation_type_t cprimod_truncation_type) 1211 { 1212 SOC_INIT_FUNC_DEFS; 1213 if(cprimod_truncation_type >= cprimod_truncation_type_Count) { 1214 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 1215 } 1216 1217 exit: 1218 SOC_FUNC_RETURN; 1219 1220 } 1221 1222 int cprimod_encap_decap_data_config_t_validate(const cprimod_encap_decap_data_config_t* cprimod_encap_decap_data_config) 1223 { 1224 SOC_INIT_FUNC_DEFS; 1225 if(cprimod_encap_decap_data_config == NULL) { 1226 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 1227 } 1228 1229 if(SOC_E_NONE != cprimod_truncation_type_t_validate(cprimod_encap_decap_data_config->truncation_type)) { 1230 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("truncation_type validation failed")); 1231 } 1232 1233 if(SOC_E_NONE != cprimod_compression_type_t_validate(cprimod_encap_decap_data_config->compression_type)) { 1234 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("compression_type validation failed")); 1235 } 1236 1237 1238 1239 exit: 1240 SOC_FUNC_RETURN; 1241 1242 } 1243 1244 int cprimod_encap_decap_data_config_t_init(cprimod_encap_decap_data_config_t* cprimod_encap_decap_data_config) 1245 { 1246 SOC_INIT_FUNC_DEFS; 1247 1248 if(cprimod_encap_decap_data_config == NULL){ 1249 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_encap_decap_data_config NULL parameter")); 1250 } 1251 sal_memset(cprimod_encap_decap_data_config, 0, sizeof(cprimod_encap_decap_data_config_t)); 1252 cprimod_encap_decap_data_config->sample_size = 0; 1253 cprimod_encap_decap_data_config->truncation_enable = 0; 1254 cprimod_encap_decap_data_config->truncation_type = 0; 1255 cprimod_encap_decap_data_config->compression_type = cprimod_no_compress; 1256 cprimod_encap_decap_data_config->mux_enable = 0; 1257 cprimod_encap_decap_data_config->bit_reversal = 0; 1258 cprimod_encap_decap_data_config->buffer_size = 0; 1259 cprimod_encap_decap_data_config->priority = 0; 1260 cprimod_encap_decap_data_config->cycle_size = 0; 1261 cprimod_encap_decap_data_config->is_agnostic = 0; 1262 1263 1264 exit: 1265 SOC_FUNC_RETURN; 1266 1267 } 1268 1269 int cprimod_cpri_encap_data_config_set(int unit, int port, uint32 queue_num, const cprimod_encap_decap_data_config_t* config_info) 1270 { 1271 1272 cprimod_dispatch_type_t __type__; 1273 int __rv__; 1274 SOC_INIT_FUNC_DEFS; 1275 1276 if(SOC_E_NONE != cprimod_encap_decap_data_config_t_validate(config_info)) { 1277 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 1278 } 1279 1280 /* Dispatch */ 1281 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1282 if(__type__ >= cprimodDispatchTypeCount) { 1283 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1284 } 1285 1286 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_encap_data_config_set) { 1287 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_encap_data_config_set(unit, port, queue_num, config_info); 1288 _SOC_IF_ERR_EXIT(__rv__); 1289 } else { 1290 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_encap_data_config_set isn't implemented for driver type")); 1291 } 1292 1293 exit: 1294 SOC_FUNC_RETURN; 1295 1296 } 1297 1298 1299 int cprimod_cpri_encap_data_config_get(int unit, int port, uint32 queue_num, cprimod_encap_decap_data_config_t* config_info) 1300 { 1301 1302 cprimod_dispatch_type_t __type__; 1303 int __rv__; 1304 SOC_INIT_FUNC_DEFS; 1305 1306 if(config_info == NULL) { 1307 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 1308 } 1309 if(SOC_E_NONE != cprimod_encap_decap_data_config_t_init(config_info)) { 1310 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 1311 } 1312 1313 /* Dispatch */ 1314 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1315 if(__type__ >= cprimodDispatchTypeCount) { 1316 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1317 } 1318 1319 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_encap_data_config_get) { 1320 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_encap_data_config_get(unit, port, queue_num, config_info); 1321 _SOC_IF_ERR_EXIT(__rv__); 1322 } else { 1323 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_encap_data_config_get isn't implemented for driver type")); 1324 } 1325 1326 exit: 1327 SOC_FUNC_RETURN; 1328 1329 } 1330 1331 1332 int cprimod_cpri_decap_data_config_set(int unit, int port, uint32 queue_num, const cprimod_encap_decap_data_config_t* config_info) 1333 { 1334 1335 cprimod_dispatch_type_t __type__; 1336 int __rv__; 1337 SOC_INIT_FUNC_DEFS; 1338 1339 if(SOC_E_NONE != cprimod_encap_decap_data_config_t_validate(config_info)) { 1340 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 1341 } 1342 1343 /* Dispatch */ 1344 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1345 if(__type__ >= cprimodDispatchTypeCount) { 1346 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1347 } 1348 1349 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_decap_data_config_set) { 1350 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_decap_data_config_set(unit, port, queue_num, config_info); 1351 _SOC_IF_ERR_EXIT(__rv__); 1352 } else { 1353 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_decap_data_config_set isn't implemented for driver type")); 1354 } 1355 1356 exit: 1357 SOC_FUNC_RETURN; 1358 1359 } 1360 1361 1362 int cprimod_cpri_decap_data_config_get(int unit, int port, uint32 queue_num, cprimod_encap_decap_data_config_t* config_info) 1363 { 1364 1365 cprimod_dispatch_type_t __type__; 1366 int __rv__; 1367 SOC_INIT_FUNC_DEFS; 1368 1369 if(config_info == NULL) { 1370 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 1371 } 1372 if(SOC_E_NONE != cprimod_encap_decap_data_config_t_init(config_info)) { 1373 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 1374 } 1375 1376 /* Dispatch */ 1377 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1378 if(__type__ >= cprimodDispatchTypeCount) { 1379 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1380 } 1381 1382 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_decap_data_config_get) { 1383 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_decap_data_config_get(unit, port, queue_num, config_info); 1384 _SOC_IF_ERR_EXIT(__rv__); 1385 } else { 1386 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_decap_data_config_get isn't implemented for driver type")); 1387 } 1388 1389 exit: 1390 SOC_FUNC_RETURN; 1391 1392 } 1393 1394 1395 int cprimod_rsvd4_encap_data_config_t_validate(const cprimod_rsvd4_encap_data_config_t* cprimod_rsvd4_encap_data_config) 1396 { 1397 SOC_INIT_FUNC_DEFS; 1398 if(cprimod_rsvd4_encap_data_config == NULL) { 1399 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 1400 } 1401 1402 1403 1404 exit: 1405 SOC_FUNC_RETURN; 1406 1407 } 1408 1409 int cprimod_rsvd4_encap_data_config_t_init(cprimod_rsvd4_encap_data_config_t* cprimod_rsvd4_encap_data_config) 1410 { 1411 SOC_INIT_FUNC_DEFS; 1412 1413 if(cprimod_rsvd4_encap_data_config == NULL){ 1414 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_rsvd4_encap_data_config NULL parameter")); 1415 } 1416 sal_memset(cprimod_rsvd4_encap_data_config, 0, sizeof(cprimod_rsvd4_encap_data_config_t)); 1417 cprimod_rsvd4_encap_data_config->buffer_size = 0; 1418 cprimod_rsvd4_encap_data_config->priority = 0; 1419 cprimod_rsvd4_encap_data_config->gsm_pad_size = 0; 1420 cprimod_rsvd4_encap_data_config->gsm_extra_pad_size = 0; 1421 cprimod_rsvd4_encap_data_config->gsm_pad_enable = 0; 1422 cprimod_rsvd4_encap_data_config->gsm_control_location = 0; 1423 cprimod_rsvd4_encap_data_config->bit_reversal = 0; 1424 1425 1426 exit: 1427 SOC_FUNC_RETURN; 1428 1429 } 1430 1431 int cprimod_rsvd4_decap_data_config_t_validate(const cprimod_rsvd4_decap_data_config_t* cprimod_rsvd4_decap_data_config) 1432 { 1433 SOC_INIT_FUNC_DEFS; 1434 if(cprimod_rsvd4_decap_data_config == NULL) { 1435 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 1436 } 1437 1438 1439 1440 exit: 1441 SOC_FUNC_RETURN; 1442 1443 } 1444 1445 int cprimod_rsvd4_decap_data_config_t_init(cprimod_rsvd4_decap_data_config_t* cprimod_rsvd4_decap_data_config) 1446 { 1447 SOC_INIT_FUNC_DEFS; 1448 1449 if(cprimod_rsvd4_decap_data_config == NULL){ 1450 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_rsvd4_decap_data_config NULL parameter")); 1451 } 1452 sal_memset(cprimod_rsvd4_decap_data_config, 0, sizeof(cprimod_rsvd4_decap_data_config_t)); 1453 cprimod_rsvd4_decap_data_config->buffer_size = 0; 1454 cprimod_rsvd4_decap_data_config->cycle_size = 0; 1455 cprimod_rsvd4_decap_data_config->gsm_pad_size = 0; 1456 cprimod_rsvd4_decap_data_config->gsm_extra_pad_size = 0; 1457 cprimod_rsvd4_decap_data_config->gsm_pad_enable = 0; 1458 cprimod_rsvd4_decap_data_config->gsm_control_location = 0; 1459 cprimod_rsvd4_decap_data_config->bit_reversal = 0; 1460 1461 1462 exit: 1463 SOC_FUNC_RETURN; 1464 1465 } 1466 1467 int cprimod_rsvd4_encap_data_config_set(int unit, int port, uint32 queue_num, const cprimod_rsvd4_encap_data_config_t* config_info) 1468 { 1469 1470 cprimod_dispatch_type_t __type__; 1471 int __rv__; 1472 SOC_INIT_FUNC_DEFS; 1473 1474 if(SOC_E_NONE != cprimod_rsvd4_encap_data_config_t_validate(config_info)) { 1475 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 1476 } 1477 1478 /* Dispatch */ 1479 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1480 if(__type__ >= cprimodDispatchTypeCount) { 1481 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1482 } 1483 1484 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_encap_data_config_set) { 1485 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_encap_data_config_set(unit, port, queue_num, config_info); 1486 _SOC_IF_ERR_EXIT(__rv__); 1487 } else { 1488 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_encap_data_config_set isn't implemented for driver type")); 1489 } 1490 1491 exit: 1492 SOC_FUNC_RETURN; 1493 1494 } 1495 1496 1497 int cprimod_rsvd4_encap_data_config_get(int unit, int port, uint32 queue_num, cprimod_rsvd4_encap_data_config_t* config_info) 1498 { 1499 1500 cprimod_dispatch_type_t __type__; 1501 int __rv__; 1502 SOC_INIT_FUNC_DEFS; 1503 1504 if(config_info == NULL) { 1505 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 1506 } 1507 if(SOC_E_NONE != cprimod_rsvd4_encap_data_config_t_init(config_info)) { 1508 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 1509 } 1510 1511 /* Dispatch */ 1512 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1513 if(__type__ >= cprimodDispatchTypeCount) { 1514 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1515 } 1516 1517 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_encap_data_config_get) { 1518 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_encap_data_config_get(unit, port, queue_num, config_info); 1519 _SOC_IF_ERR_EXIT(__rv__); 1520 } else { 1521 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_encap_data_config_get isn't implemented for driver type")); 1522 } 1523 1524 exit: 1525 SOC_FUNC_RETURN; 1526 1527 } 1528 1529 1530 int cprimod_rsvd4_decap_data_config_set(int unit, int port, uint32 queue_num, const cprimod_rsvd4_decap_data_config_t* config_info) 1531 { 1532 1533 cprimod_dispatch_type_t __type__; 1534 int __rv__; 1535 SOC_INIT_FUNC_DEFS; 1536 1537 if(SOC_E_NONE != cprimod_rsvd4_decap_data_config_t_validate(config_info)) { 1538 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 1539 } 1540 1541 /* Dispatch */ 1542 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1543 if(__type__ >= cprimodDispatchTypeCount) { 1544 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1545 } 1546 1547 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_decap_data_config_set) { 1548 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_decap_data_config_set(unit, port, queue_num, config_info); 1549 _SOC_IF_ERR_EXIT(__rv__); 1550 } else { 1551 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_decap_data_config_set isn't implemented for driver type")); 1552 } 1553 1554 exit: 1555 SOC_FUNC_RETURN; 1556 1557 } 1558 1559 1560 int cprimod_rsvd4_decap_data_config_get(int unit, int port, uint32 queue_num, cprimod_rsvd4_decap_data_config_t* config_info) 1561 { 1562 1563 cprimod_dispatch_type_t __type__; 1564 int __rv__; 1565 SOC_INIT_FUNC_DEFS; 1566 1567 if(config_info == NULL) { 1568 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 1569 } 1570 if(SOC_E_NONE != cprimod_rsvd4_decap_data_config_t_init(config_info)) { 1571 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 1572 } 1573 1574 /* Dispatch */ 1575 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1576 if(__type__ >= cprimodDispatchTypeCount) { 1577 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1578 } 1579 1580 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_decap_data_config_get) { 1581 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_decap_data_config_get(unit, port, queue_num, config_info); 1582 _SOC_IF_ERR_EXIT(__rv__); 1583 } else { 1584 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_decap_data_config_get isn't implemented for driver type")); 1585 } 1586 1587 exit: 1588 SOC_FUNC_RETURN; 1589 1590 } 1591 1592 1593 int cprimod_hdr_encap_type_t_validate(cprimod_hdr_encap_type_t cprimod_hdr_encap_type) 1594 { 1595 SOC_INIT_FUNC_DEFS; 1596 if(cprimod_hdr_encap_type >= cprimod_hdr_encap_type_Count) { 1597 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 1598 } 1599 1600 exit: 1601 SOC_FUNC_RETURN; 1602 1603 } 1604 1605 int cprimod_hdr_vlan_type_t_validate(cprimod_hdr_vlan_type_t cprimod_hdr_vlan_type) 1606 { 1607 SOC_INIT_FUNC_DEFS; 1608 if(cprimod_hdr_vlan_type >= cprimodHdrVlanTypeCount) { 1609 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 1610 } 1611 1612 exit: 1613 SOC_FUNC_RETURN; 1614 1615 } 1616 1617 int cprimod_encap_header_config_t_validate(const cprimod_encap_header_config_t* cprimod_encap_header_config) 1618 { 1619 SOC_INIT_FUNC_DEFS; 1620 if(cprimod_encap_header_config == NULL) { 1621 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 1622 } 1623 1624 if(SOC_E_NONE != cprimod_hdr_encap_type_t_validate(cprimod_encap_header_config->header_type)) { 1625 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("header_type validation failed")); 1626 } 1627 1628 if(SOC_E_NONE != cprimod_hdr_vlan_type_t_validate(cprimod_encap_header_config->vlan_type)) { 1629 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("vlan_type validation failed")); 1630 } 1631 1632 1633 1634 exit: 1635 SOC_FUNC_RETURN; 1636 1637 } 1638 1639 int cprimod_encap_header_config_t_init(cprimod_encap_header_config_t* cprimod_encap_header_config) 1640 { 1641 SOC_INIT_FUNC_DEFS; 1642 1643 if(cprimod_encap_header_config == NULL){ 1644 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_encap_header_config NULL parameter")); 1645 } 1646 sal_memset(cprimod_encap_header_config, 0, sizeof(cprimod_encap_header_config_t)); 1647 cprimod_encap_header_config->header_type = cprimod_hdr_encap_type_roe; 1648 cprimod_encap_header_config->flow_id = 0xFF; 1649 cprimod_encap_header_config->roe_subtype = 0; 1650 cprimod_encap_header_config->ordering_info_index = 0; 1651 cprimod_encap_header_config->mac_da_index = 0; 1652 cprimod_encap_header_config->mac_sa_index = 0; 1653 cprimod_encap_header_config->vlan_type = cprimodHdrVlanTypeUntagged; 1654 cprimod_encap_header_config->vlan_id_0_index = 0; 1655 cprimod_encap_header_config->vlan_id_1_index = 0; 1656 cprimod_encap_header_config->vlan_0_priority = 0; 1657 cprimod_encap_header_config->vlan_1_priority = 0; 1658 cprimod_encap_header_config->vlan_eth_type_index = 0; 1659 cprimod_encap_header_config->use_tagid_for_vlan = 0; 1660 cprimod_encap_header_config->use_tagid_for_flowid = 0; 1661 cprimod_encap_header_config->use_opcode = 0; 1662 cprimod_encap_header_config->roe_opcode = 0; 1663 cprimod_encap_header_config->version = 0; 1664 cprimod_encap_header_config->roe_frame_format = CPRIMOD_CPRI_ROE_FRAME_FORMAT_IEEE1914; 1665 cprimod_encap_header_config->ecpri_pc_id = 0; 1666 cprimod_encap_header_config->ecpri_msg_type = 0; 1667 1668 1669 exit: 1670 SOC_FUNC_RETURN; 1671 1672 } 1673 1674 int cprimod_encap_header_config_set(int unit, int port, uint32 queue_num, const cprimod_encap_header_config_t* config_info) 1675 { 1676 1677 cprimod_dispatch_type_t __type__; 1678 int __rv__; 1679 SOC_INIT_FUNC_DEFS; 1680 1681 if(SOC_E_NONE != cprimod_encap_header_config_t_validate(config_info)) { 1682 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 1683 } 1684 1685 /* Dispatch */ 1686 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1687 if(__type__ >= cprimodDispatchTypeCount) { 1688 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1689 } 1690 1691 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_header_config_set) { 1692 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_header_config_set(unit, port, queue_num, config_info); 1693 _SOC_IF_ERR_EXIT(__rv__); 1694 } else { 1695 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_header_config_set isn't implemented for driver type")); 1696 } 1697 1698 exit: 1699 SOC_FUNC_RETURN; 1700 1701 } 1702 1703 1704 int cprimod_encap_header_config_get(int unit, int port, uint32 queue_num, cprimod_encap_header_config_t* config_info) 1705 { 1706 1707 cprimod_dispatch_type_t __type__; 1708 int __rv__; 1709 SOC_INIT_FUNC_DEFS; 1710 1711 if(config_info == NULL) { 1712 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 1713 } 1714 if(SOC_E_NONE != cprimod_encap_header_config_t_init(config_info)) { 1715 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 1716 } 1717 1718 /* Dispatch */ 1719 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1720 if(__type__ >= cprimodDispatchTypeCount) { 1721 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1722 } 1723 1724 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_header_config_get) { 1725 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_header_config_get(unit, port, queue_num, config_info); 1726 _SOC_IF_ERR_EXIT(__rv__); 1727 } else { 1728 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_header_config_get isn't implemented for driver type")); 1729 } 1730 1731 exit: 1732 SOC_FUNC_RETURN; 1733 1734 } 1735 1736 1737 int cprimod_rx_rsvd4_gsm_tsn_bitmap_set(int unit, int port, uint32 queue_num, uint32 tsn_bitmap) 1738 { 1739 1740 cprimod_dispatch_type_t __type__; 1741 int __rv__; 1742 SOC_INIT_FUNC_DEFS; 1743 1744 /* Dispatch */ 1745 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1746 if(__type__ >= cprimodDispatchTypeCount) { 1747 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1748 } 1749 1750 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rx_rsvd4_gsm_tsn_bitmap_set) { 1751 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rx_rsvd4_gsm_tsn_bitmap_set(unit, port, queue_num, tsn_bitmap); 1752 _SOC_IF_ERR_EXIT(__rv__); 1753 } else { 1754 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rx_rsvd4_gsm_tsn_bitmap_set isn't implemented for driver type")); 1755 } 1756 1757 exit: 1758 SOC_FUNC_RETURN; 1759 1760 } 1761 1762 1763 int cprimod_rx_rsvd4_gsm_tsn_bitmap_get(int unit, int port, uint32 queue_num, uint32* tsn_bitmap) 1764 { 1765 1766 cprimod_dispatch_type_t __type__; 1767 int __rv__; 1768 SOC_INIT_FUNC_DEFS; 1769 1770 if(tsn_bitmap == NULL) { 1771 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tsn_bitmap NULL parameter")); 1772 } 1773 /* Dispatch */ 1774 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1775 if(__type__ >= cprimodDispatchTypeCount) { 1776 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1777 } 1778 1779 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rx_rsvd4_gsm_tsn_bitmap_get) { 1780 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rx_rsvd4_gsm_tsn_bitmap_get(unit, port, queue_num, tsn_bitmap); 1781 _SOC_IF_ERR_EXIT(__rv__); 1782 } else { 1783 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rx_rsvd4_gsm_tsn_bitmap_get isn't implemented for driver type")); 1784 } 1785 1786 exit: 1787 SOC_FUNC_RETURN; 1788 1789 } 1790 1791 1792 int cprimod_ordering_info_type_t_validate(cprimod_ordering_info_type_t cprimod_ordering_info_type) 1793 { 1794 SOC_INIT_FUNC_DEFS; 1795 if(cprimod_ordering_info_type >= cprimod_ordering_info_type_Count) { 1796 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 1797 } 1798 1799 exit: 1800 SOC_FUNC_RETURN; 1801 1802 } 1803 1804 int cprimod_ordering_info_prop_t_validate(cprimod_ordering_info_prop_t cprimod_ordering_info_prop) 1805 { 1806 SOC_INIT_FUNC_DEFS; 1807 if(cprimod_ordering_info_prop >= cprimod_ordering_info_prop_Count) { 1808 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 1809 } 1810 1811 exit: 1812 SOC_FUNC_RETURN; 1813 1814 } 1815 1816 int cprimod_encap_ordering_info_entry_t_validate(const cprimod_encap_ordering_info_entry_t* cprimod_encap_ordering_info_entry) 1817 { 1818 SOC_INIT_FUNC_DEFS; 1819 if(cprimod_encap_ordering_info_entry == NULL) { 1820 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 1821 } 1822 1823 if(SOC_E_NONE != cprimod_ordering_info_type_t_validate(cprimod_encap_ordering_info_entry->type)) { 1824 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("type validation failed")); 1825 } 1826 1827 if(SOC_E_NONE != cprimod_ordering_info_prop_t_validate(cprimod_encap_ordering_info_entry->pcnt_prop)) { 1828 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pcnt_prop validation failed")); 1829 } 1830 1831 if(SOC_E_NONE != cprimod_ordering_info_prop_t_validate(cprimod_encap_ordering_info_entry->qcnt_prop)) { 1832 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("qcnt_prop validation failed")); 1833 } 1834 1835 1836 1837 exit: 1838 SOC_FUNC_RETURN; 1839 1840 } 1841 1842 int cprimod_encap_ordering_info_entry_t_init(cprimod_encap_ordering_info_entry_t* cprimod_encap_ordering_info_entry) 1843 { 1844 SOC_INIT_FUNC_DEFS; 1845 1846 if(cprimod_encap_ordering_info_entry == NULL){ 1847 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_encap_ordering_info_entry NULL parameter")); 1848 } 1849 sal_memset(cprimod_encap_ordering_info_entry, 0, sizeof(cprimod_encap_ordering_info_entry_t)); 1850 cprimod_encap_ordering_info_entry->type = cprimod_ordering_info_type_roe_sequence; 1851 cprimod_encap_ordering_info_entry->pcnt_prop = cprimod_ordering_info_prop_increment_by_constant; 1852 cprimod_encap_ordering_info_entry->pcnt_size = 1; 1853 cprimod_encap_ordering_info_entry->pcnt_increment = 0; 1854 cprimod_encap_ordering_info_entry->pcnt_max = 0; 1855 cprimod_encap_ordering_info_entry->qcnt_prop = cprimod_ordering_info_prop_increment_by_constant; 1856 cprimod_encap_ordering_info_entry->qcnt_size = 1; 1857 cprimod_encap_ordering_info_entry->qcnt_increment = 0; 1858 cprimod_encap_ordering_info_entry->qcnt_max = 0; 1859 cprimod_encap_ordering_info_entry->seq_reserve_value = 0; 1860 1861 1862 exit: 1863 SOC_FUNC_RETURN; 1864 1865 } 1866 1867 int cprimod_decap_ordering_info_entry_t_validate(const cprimod_decap_ordering_info_entry_t* cprimod_decap_ordering_info_entry) 1868 { 1869 SOC_INIT_FUNC_DEFS; 1870 if(cprimod_decap_ordering_info_entry == NULL) { 1871 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 1872 } 1873 1874 if(SOC_E_NONE != cprimod_ordering_info_type_t_validate(cprimod_decap_ordering_info_entry->type)) { 1875 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("type validation failed")); 1876 } 1877 1878 1879 1880 exit: 1881 SOC_FUNC_RETURN; 1882 1883 } 1884 1885 int cprimod_decap_ordering_info_entry_t_init(cprimod_decap_ordering_info_entry_t* cprimod_decap_ordering_info_entry) 1886 { 1887 SOC_INIT_FUNC_DEFS; 1888 1889 if(cprimod_decap_ordering_info_entry == NULL){ 1890 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_decap_ordering_info_entry NULL parameter")); 1891 } 1892 sal_memset(cprimod_decap_ordering_info_entry, 0, sizeof(cprimod_decap_ordering_info_entry_t)); 1893 cprimod_decap_ordering_info_entry->type = cprimod_ordering_info_type_roe_sequence; 1894 cprimod_decap_ordering_info_entry->pcnt_extended = 0; 1895 cprimod_decap_ordering_info_entry->pcnt_pkt_count = 0; 1896 cprimod_decap_ordering_info_entry->pcnt_size = 1; 1897 cprimod_decap_ordering_info_entry->pcnt_increment = 0; 1898 cprimod_decap_ordering_info_entry->pcnt_max = 0; 1899 cprimod_decap_ordering_info_entry->pcnt_bias = 0; 1900 cprimod_decap_ordering_info_entry->pcnt_increment_p2 = 0; 1901 cprimod_decap_ordering_info_entry->qcnt_size = 1; 1902 cprimod_decap_ordering_info_entry->qcnt_increment = 0; 1903 cprimod_decap_ordering_info_entry->qcnt_max = 0; 1904 cprimod_decap_ordering_info_entry->qcnt_bias = 0; 1905 cprimod_decap_ordering_info_entry->qcnt_increment_p2 = 0; 1906 cprimod_decap_ordering_info_entry->modulo_2 = 0; 1907 cprimod_decap_ordering_info_entry->gsm_tsn_bitmap = 0; 1908 cprimod_decap_ordering_info_entry->seq_reserve_value = 0; 1909 1910 1911 exit: 1912 SOC_FUNC_RETURN; 1913 1914 } 1915 1916 int cprimod_encap_ordering_info_entry_set(int unit, int port, uint32 index, const cprimod_encap_ordering_info_entry_t* user_entry) 1917 { 1918 1919 cprimod_dispatch_type_t __type__; 1920 int __rv__; 1921 SOC_INIT_FUNC_DEFS; 1922 1923 if(SOC_E_NONE != cprimod_encap_ordering_info_entry_t_validate(user_entry)) { 1924 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("user_entry validation failed")); 1925 } 1926 1927 /* Dispatch */ 1928 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1929 if(__type__ >= cprimodDispatchTypeCount) { 1930 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1931 } 1932 1933 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_ordering_info_entry_set) { 1934 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_ordering_info_entry_set(unit, port, index, user_entry); 1935 _SOC_IF_ERR_EXIT(__rv__); 1936 } else { 1937 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_ordering_info_entry_set isn't implemented for driver type")); 1938 } 1939 1940 exit: 1941 SOC_FUNC_RETURN; 1942 1943 } 1944 1945 1946 int cprimod_encap_ordering_info_entry_get(int unit, int port, uint32 index, cprimod_encap_ordering_info_entry_t* user_entry) 1947 { 1948 1949 cprimod_dispatch_type_t __type__; 1950 int __rv__; 1951 SOC_INIT_FUNC_DEFS; 1952 1953 if(user_entry == NULL) { 1954 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("user_entry NULL parameter")); 1955 } 1956 if(SOC_E_NONE != cprimod_encap_ordering_info_entry_t_init(user_entry)) { 1957 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("user_entry initialization failed")); 1958 } 1959 1960 /* Dispatch */ 1961 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1962 if(__type__ >= cprimodDispatchTypeCount) { 1963 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1964 } 1965 1966 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_ordering_info_entry_get) { 1967 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_ordering_info_entry_get(unit, port, index, user_entry); 1968 _SOC_IF_ERR_EXIT(__rv__); 1969 } else { 1970 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_ordering_info_entry_get isn't implemented for driver type")); 1971 } 1972 1973 exit: 1974 SOC_FUNC_RETURN; 1975 1976 } 1977 1978 1979 int cprimod_decap_ordering_info_entry_set(int unit, int port, uint32 index, const cprimod_decap_ordering_info_entry_t* user_entry) 1980 { 1981 1982 cprimod_dispatch_type_t __type__; 1983 int __rv__; 1984 SOC_INIT_FUNC_DEFS; 1985 1986 if(SOC_E_NONE != cprimod_decap_ordering_info_entry_t_validate(user_entry)) { 1987 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("user_entry validation failed")); 1988 } 1989 1990 /* Dispatch */ 1991 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 1992 if(__type__ >= cprimodDispatchTypeCount) { 1993 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 1994 } 1995 1996 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_ordering_info_entry_set) { 1997 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_ordering_info_entry_set(unit, port, index, user_entry); 1998 _SOC_IF_ERR_EXIT(__rv__); 1999 } else { 2000 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_ordering_info_entry_set isn't implemented for driver type")); 2001 } 2002 2003 exit: 2004 SOC_FUNC_RETURN; 2005 2006 } 2007 2008 2009 int cprimod_decap_ordering_info_entry_get(int unit, int port, uint32 index, cprimod_decap_ordering_info_entry_t* user_entry) 2010 { 2011 2012 cprimod_dispatch_type_t __type__; 2013 int __rv__; 2014 SOC_INIT_FUNC_DEFS; 2015 2016 if(user_entry == NULL) { 2017 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("user_entry NULL parameter")); 2018 } 2019 if(SOC_E_NONE != cprimod_decap_ordering_info_entry_t_init(user_entry)) { 2020 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("user_entry initialization failed")); 2021 } 2022 2023 /* Dispatch */ 2024 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2025 if(__type__ >= cprimodDispatchTypeCount) { 2026 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2027 } 2028 2029 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_ordering_info_entry_get) { 2030 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_ordering_info_entry_get(unit, port, index, user_entry); 2031 _SOC_IF_ERR_EXIT(__rv__); 2032 } else { 2033 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_ordering_info_entry_get isn't implemented for driver type")); 2034 } 2035 2036 exit: 2037 SOC_FUNC_RETURN; 2038 2039 } 2040 2041 2042 int cprimod_cpri_ordering_info_offset_t_validate(const cprimod_cpri_ordering_info_offset_t* cprimod_cpri_ordering_info_offset) 2043 { 2044 SOC_INIT_FUNC_DEFS; 2045 if(cprimod_cpri_ordering_info_offset == NULL) { 2046 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 2047 } 2048 2049 2050 2051 exit: 2052 SOC_FUNC_RETURN; 2053 2054 } 2055 2056 int cprimod_cpri_ordering_info_offset_t_init(cprimod_cpri_ordering_info_offset_t* cprimod_cpri_ordering_info_offset) 2057 { 2058 SOC_INIT_FUNC_DEFS; 2059 2060 if(cprimod_cpri_ordering_info_offset == NULL){ 2061 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_ordering_info_offset NULL parameter")); 2062 } 2063 sal_memset(cprimod_cpri_ordering_info_offset, 0, sizeof(cprimod_cpri_ordering_info_offset_t)); 2064 cprimod_cpri_ordering_info_offset->p_size = 1; 2065 cprimod_cpri_ordering_info_offset->p_offset = 0; 2066 cprimod_cpri_ordering_info_offset->q_size = 0; 2067 cprimod_cpri_ordering_info_offset->q_offset = 0; 2068 2069 2070 exit: 2071 SOC_FUNC_RETURN; 2072 2073 } 2074 2075 int cprimod_encap_ordering_info_sequence_offset_set(int unit, int port, uint32 queue, uint32 control, const cprimod_cpri_ordering_info_offset_t* offset_entry) 2076 { 2077 2078 cprimod_dispatch_type_t __type__; 2079 int __rv__; 2080 SOC_INIT_FUNC_DEFS; 2081 2082 if(SOC_E_NONE != cprimod_cpri_ordering_info_offset_t_validate(offset_entry)) { 2083 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("offset_entry validation failed")); 2084 } 2085 2086 /* Dispatch */ 2087 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2088 if(__type__ >= cprimodDispatchTypeCount) { 2089 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2090 } 2091 2092 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_ordering_info_sequence_offset_set) { 2093 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_ordering_info_sequence_offset_set(unit, port, queue, control, offset_entry); 2094 _SOC_IF_ERR_EXIT(__rv__); 2095 } else { 2096 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_ordering_info_sequence_offset_set isn't implemented for driver type")); 2097 } 2098 2099 exit: 2100 SOC_FUNC_RETURN; 2101 2102 } 2103 2104 2105 int cprimod_encap_ordering_info_sequence_offset_get(int unit, int port, uint32 queue, uint32 control, uint32 pcnt_size, uint32 qcnt_size, cprimod_cpri_ordering_info_offset_t* offset_entry) 2106 { 2107 2108 cprimod_dispatch_type_t __type__; 2109 int __rv__; 2110 SOC_INIT_FUNC_DEFS; 2111 2112 if(offset_entry == NULL) { 2113 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("offset_entry NULL parameter")); 2114 } 2115 if(SOC_E_NONE != cprimod_cpri_ordering_info_offset_t_init(offset_entry)) { 2116 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("offset_entry initialization failed")); 2117 } 2118 2119 /* Dispatch */ 2120 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2121 if(__type__ >= cprimodDispatchTypeCount) { 2122 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2123 } 2124 2125 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_ordering_info_sequence_offset_get) { 2126 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_ordering_info_sequence_offset_get(unit, port, queue, control, pcnt_size, qcnt_size, offset_entry); 2127 _SOC_IF_ERR_EXIT(__rv__); 2128 } else { 2129 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_ordering_info_sequence_offset_get isn't implemented for driver type")); 2130 } 2131 2132 exit: 2133 SOC_FUNC_RETURN; 2134 2135 } 2136 2137 2138 int cprimod_decap_ordering_info_sequence_offset_set(int unit, int port, uint32 queue, const cprimod_cpri_ordering_info_offset_t* offset_entry) 2139 { 2140 2141 cprimod_dispatch_type_t __type__; 2142 int __rv__; 2143 SOC_INIT_FUNC_DEFS; 2144 2145 if(SOC_E_NONE != cprimod_cpri_ordering_info_offset_t_validate(offset_entry)) { 2146 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("offset_entry validation failed")); 2147 } 2148 2149 /* Dispatch */ 2150 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2151 if(__type__ >= cprimodDispatchTypeCount) { 2152 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2153 } 2154 2155 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_ordering_info_sequence_offset_set) { 2156 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_ordering_info_sequence_offset_set(unit, port, queue, offset_entry); 2157 _SOC_IF_ERR_EXIT(__rv__); 2158 } else { 2159 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_ordering_info_sequence_offset_set isn't implemented for driver type")); 2160 } 2161 2162 exit: 2163 SOC_FUNC_RETURN; 2164 2165 } 2166 2167 2168 int cprimod_decap_ordering_info_sequence_offset_get(int unit, int port, uint32 queue, uint32 pcnt_size, uint32 qcnt_size, cprimod_cpri_ordering_info_offset_t* offset_entry) 2169 { 2170 2171 cprimod_dispatch_type_t __type__; 2172 int __rv__; 2173 SOC_INIT_FUNC_DEFS; 2174 2175 if(offset_entry == NULL) { 2176 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("offset_entry NULL parameter")); 2177 } 2178 if(SOC_E_NONE != cprimod_cpri_ordering_info_offset_t_init(offset_entry)) { 2179 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("offset_entry initialization failed")); 2180 } 2181 2182 /* Dispatch */ 2183 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2184 if(__type__ >= cprimodDispatchTypeCount) { 2185 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2186 } 2187 2188 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_ordering_info_sequence_offset_get) { 2189 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_ordering_info_sequence_offset_get(unit, port, queue, pcnt_size, qcnt_size, offset_entry); 2190 _SOC_IF_ERR_EXIT(__rv__); 2191 } else { 2192 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_ordering_info_sequence_offset_get isn't implemented for driver type")); 2193 } 2194 2195 exit: 2196 SOC_FUNC_RETURN; 2197 2198 } 2199 2200 2201 int cprimod_encap_mac_da_entry_set(int unit, int port, uint32 index, cprimod_mac_addr_t addr) 2202 { 2203 2204 cprimod_dispatch_type_t __type__; 2205 int __rv__; 2206 SOC_INIT_FUNC_DEFS; 2207 2208 /* Dispatch */ 2209 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2210 if(__type__ >= cprimodDispatchTypeCount) { 2211 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2212 } 2213 2214 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_mac_da_entry_set) { 2215 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_mac_da_entry_set(unit, port, index, addr); 2216 _SOC_IF_ERR_EXIT(__rv__); 2217 } else { 2218 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_mac_da_entry_set isn't implemented for driver type")); 2219 } 2220 2221 exit: 2222 SOC_FUNC_RETURN; 2223 2224 } 2225 2226 2227 int cprimod_encap_mac_da_entry_get(int unit, int port, uint32 index, cprimod_mac_addr_t addr) 2228 { 2229 2230 cprimod_dispatch_type_t __type__; 2231 int __rv__; 2232 SOC_INIT_FUNC_DEFS; 2233 2234 /* Dispatch */ 2235 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2236 if(__type__ >= cprimodDispatchTypeCount) { 2237 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2238 } 2239 2240 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_mac_da_entry_get) { 2241 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_mac_da_entry_get(unit, port, index, addr); 2242 _SOC_IF_ERR_EXIT(__rv__); 2243 } else { 2244 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_mac_da_entry_get isn't implemented for driver type")); 2245 } 2246 2247 exit: 2248 SOC_FUNC_RETURN; 2249 2250 } 2251 2252 2253 int cprimod_encap_mac_sa_entry_set(int unit, int port, uint32 index, cprimod_mac_addr_t addr) 2254 { 2255 2256 cprimod_dispatch_type_t __type__; 2257 int __rv__; 2258 SOC_INIT_FUNC_DEFS; 2259 2260 /* Dispatch */ 2261 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2262 if(__type__ >= cprimodDispatchTypeCount) { 2263 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2264 } 2265 2266 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_mac_sa_entry_set) { 2267 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_mac_sa_entry_set(unit, port, index, addr); 2268 _SOC_IF_ERR_EXIT(__rv__); 2269 } else { 2270 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_mac_sa_entry_set isn't implemented for driver type")); 2271 } 2272 2273 exit: 2274 SOC_FUNC_RETURN; 2275 2276 } 2277 2278 2279 int cprimod_encap_mac_sa_entry_get(int unit, int port, uint32 index, cprimod_mac_addr_t addr) 2280 { 2281 2282 cprimod_dispatch_type_t __type__; 2283 int __rv__; 2284 SOC_INIT_FUNC_DEFS; 2285 2286 /* Dispatch */ 2287 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2288 if(__type__ >= cprimodDispatchTypeCount) { 2289 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2290 } 2291 2292 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_mac_sa_entry_get) { 2293 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_mac_sa_entry_get(unit, port, index, addr); 2294 _SOC_IF_ERR_EXIT(__rv__); 2295 } else { 2296 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_mac_sa_entry_get isn't implemented for driver type")); 2297 } 2298 2299 exit: 2300 SOC_FUNC_RETURN; 2301 2302 } 2303 2304 2305 int cprimod_vlan_table_id_t_validate(cprimod_vlan_table_id_t cprimod_vlan_table_id) 2306 { 2307 SOC_INIT_FUNC_DEFS; 2308 if(cprimod_vlan_table_id >= cprimodVlanTableCount) { 2309 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 2310 } 2311 2312 exit: 2313 SOC_FUNC_RETURN; 2314 2315 } 2316 2317 int cprimod_encap_vlan_id_entry_set(int unit, int port, cprimod_vlan_table_id_t table_id, uint32 index, uint32 vlan_id) 2318 { 2319 2320 cprimod_dispatch_type_t __type__; 2321 int __rv__; 2322 SOC_INIT_FUNC_DEFS; 2323 2324 if(SOC_E_NONE != cprimod_vlan_table_id_t_validate(table_id)) { 2325 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table_id validation failed")); 2326 } 2327 2328 /* Dispatch */ 2329 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2330 if(__type__ >= cprimodDispatchTypeCount) { 2331 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2332 } 2333 2334 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_vlan_id_entry_set) { 2335 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_vlan_id_entry_set(unit, port, table_id, index, vlan_id); 2336 _SOC_IF_ERR_EXIT(__rv__); 2337 } else { 2338 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_vlan_id_entry_set isn't implemented for driver type")); 2339 } 2340 2341 exit: 2342 SOC_FUNC_RETURN; 2343 2344 } 2345 2346 2347 int cprimod_encap_vlan_id_entry_get(int unit, int port, cprimod_vlan_table_id_t table_id, uint32 index, uint32* vlan_id) 2348 { 2349 2350 cprimod_dispatch_type_t __type__; 2351 int __rv__; 2352 SOC_INIT_FUNC_DEFS; 2353 2354 if(SOC_E_NONE != cprimod_vlan_table_id_t_validate(table_id)) { 2355 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table_id validation failed")); 2356 } 2357 2358 if(vlan_id == NULL) { 2359 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("vlan_id NULL parameter")); 2360 } 2361 /* Dispatch */ 2362 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2363 if(__type__ >= cprimodDispatchTypeCount) { 2364 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2365 } 2366 2367 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_vlan_id_entry_get) { 2368 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_vlan_id_entry_get(unit, port, table_id, index, vlan_id); 2369 _SOC_IF_ERR_EXIT(__rv__); 2370 } else { 2371 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_vlan_id_entry_get isn't implemented for driver type")); 2372 } 2373 2374 exit: 2375 SOC_FUNC_RETURN; 2376 2377 } 2378 2379 2380 int cprimod_ethertype_t_validate(cprimod_ethertype_t cprimod_ethertype) 2381 { 2382 SOC_INIT_FUNC_DEFS; 2383 if(cprimod_ethertype >= cprimodEthertypeCount) { 2384 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 2385 } 2386 2387 exit: 2388 SOC_FUNC_RETURN; 2389 2390 } 2391 2392 int cprimod_decap_ethertype_config_set(int unit, int port, cprimod_ethertype_t type_id, uint16 ethertype) 2393 { 2394 2395 cprimod_dispatch_type_t __type__; 2396 int __rv__; 2397 SOC_INIT_FUNC_DEFS; 2398 2399 if(SOC_E_NONE != cprimod_ethertype_t_validate(type_id)) { 2400 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("type_id validation failed")); 2401 } 2402 2403 /* Dispatch */ 2404 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2405 if(__type__ >= cprimodDispatchTypeCount) { 2406 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2407 } 2408 2409 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_ethertype_config_set) { 2410 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_ethertype_config_set(unit, port, type_id, ethertype); 2411 _SOC_IF_ERR_EXIT(__rv__); 2412 } else { 2413 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_ethertype_config_set isn't implemented for driver type")); 2414 } 2415 2416 exit: 2417 SOC_FUNC_RETURN; 2418 2419 } 2420 2421 2422 int cprimod_decap_ethertype_config_get(int unit, int port, cprimod_ethertype_t type_id, uint16* ethertype) 2423 { 2424 2425 cprimod_dispatch_type_t __type__; 2426 int __rv__; 2427 SOC_INIT_FUNC_DEFS; 2428 2429 if(SOC_E_NONE != cprimod_ethertype_t_validate(type_id)) { 2430 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("type_id validation failed")); 2431 } 2432 2433 if(ethertype == NULL) { 2434 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("ethertype NULL parameter")); 2435 } 2436 /* Dispatch */ 2437 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2438 if(__type__ >= cprimodDispatchTypeCount) { 2439 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2440 } 2441 2442 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_ethertype_config_get) { 2443 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_ethertype_config_get(unit, port, type_id, ethertype); 2444 _SOC_IF_ERR_EXIT(__rv__); 2445 } else { 2446 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_ethertype_config_get isn't implemented for driver type")); 2447 } 2448 2449 exit: 2450 SOC_FUNC_RETURN; 2451 2452 } 2453 2454 2455 int cprimod_encap_ethertype_config_set(int unit, int port, cprimod_ethertype_t type_id, uint16 ethertype) 2456 { 2457 2458 cprimod_dispatch_type_t __type__; 2459 int __rv__; 2460 SOC_INIT_FUNC_DEFS; 2461 2462 if(SOC_E_NONE != cprimod_ethertype_t_validate(type_id)) { 2463 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("type_id validation failed")); 2464 } 2465 2466 /* Dispatch */ 2467 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2468 if(__type__ >= cprimodDispatchTypeCount) { 2469 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2470 } 2471 2472 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_ethertype_config_set) { 2473 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_ethertype_config_set(unit, port, type_id, ethertype); 2474 _SOC_IF_ERR_EXIT(__rv__); 2475 } else { 2476 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_ethertype_config_set isn't implemented for driver type")); 2477 } 2478 2479 exit: 2480 SOC_FUNC_RETURN; 2481 2482 } 2483 2484 2485 int cprimod_encap_ethertype_config_get(int unit, int port, cprimod_ethertype_t type_id, uint16* ethertype) 2486 { 2487 2488 cprimod_dispatch_type_t __type__; 2489 int __rv__; 2490 SOC_INIT_FUNC_DEFS; 2491 2492 if(SOC_E_NONE != cprimod_ethertype_t_validate(type_id)) { 2493 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("type_id validation failed")); 2494 } 2495 2496 if(ethertype == NULL) { 2497 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("ethertype NULL parameter")); 2498 } 2499 /* Dispatch */ 2500 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2501 if(__type__ >= cprimodDispatchTypeCount) { 2502 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2503 } 2504 2505 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_ethertype_config_get) { 2506 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_ethertype_config_get(unit, port, type_id, ethertype); 2507 _SOC_IF_ERR_EXIT(__rv__); 2508 } else { 2509 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_ethertype_config_get isn't implemented for driver type")); 2510 } 2511 2512 exit: 2513 SOC_FUNC_RETURN; 2514 2515 } 2516 2517 2518 int cprimod_encap_memory_clear(int unit, int port, int queue_num) 2519 { 2520 2521 cprimod_dispatch_type_t __type__; 2522 int __rv__; 2523 SOC_INIT_FUNC_DEFS; 2524 2525 /* Dispatch */ 2526 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2527 if(__type__ >= cprimodDispatchTypeCount) { 2528 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2529 } 2530 2531 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_memory_clear) { 2532 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_memory_clear(unit, port, queue_num); 2533 _SOC_IF_ERR_EXIT(__rv__); 2534 } else { 2535 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_memory_clear isn't implemented for driver type")); 2536 } 2537 2538 exit: 2539 SOC_FUNC_RETURN; 2540 2541 } 2542 2543 2544 int cprimod_cpri_rx_framer_state_clear(int unit, int port, int queue_num) 2545 { 2546 2547 cprimod_dispatch_type_t __type__; 2548 int __rv__; 2549 SOC_INIT_FUNC_DEFS; 2550 2551 /* Dispatch */ 2552 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2553 if(__type__ >= cprimodDispatchTypeCount) { 2554 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2555 } 2556 2557 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_framer_state_clear) { 2558 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_framer_state_clear(unit, port, queue_num); 2559 _SOC_IF_ERR_EXIT(__rv__); 2560 } else { 2561 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_rx_framer_state_clear isn't implemented for driver type")); 2562 } 2563 2564 exit: 2565 SOC_FUNC_RETURN; 2566 2567 } 2568 2569 2570 int cprimod_decap_memory_clear(int unit, int port, int queue_num) 2571 { 2572 2573 cprimod_dispatch_type_t __type__; 2574 int __rv__; 2575 SOC_INIT_FUNC_DEFS; 2576 2577 /* Dispatch */ 2578 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2579 if(__type__ >= cprimodDispatchTypeCount) { 2580 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2581 } 2582 2583 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_memory_clear) { 2584 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_memory_clear(unit, port, queue_num); 2585 _SOC_IF_ERR_EXIT(__rv__); 2586 } else { 2587 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_memory_clear isn't implemented for driver type")); 2588 } 2589 2590 exit: 2591 SOC_FUNC_RETURN; 2592 2593 } 2594 2595 2596 int cprimod_cpri_tx_framer_state_clear(int unit, int port, int queue_num) 2597 { 2598 2599 cprimod_dispatch_type_t __type__; 2600 int __rv__; 2601 SOC_INIT_FUNC_DEFS; 2602 2603 /* Dispatch */ 2604 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2605 if(__type__ >= cprimodDispatchTypeCount) { 2606 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2607 } 2608 2609 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_tx_framer_state_clear) { 2610 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_tx_framer_state_clear(unit, port, queue_num); 2611 _SOC_IF_ERR_EXIT(__rv__); 2612 } else { 2613 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_tx_framer_state_clear isn't implemented for driver type")); 2614 } 2615 2616 exit: 2617 SOC_FUNC_RETURN; 2618 2619 } 2620 2621 2622 int cprimod_cls_option_t_validate(cprimod_cls_option_t cprimod_cls_option) 2623 { 2624 SOC_INIT_FUNC_DEFS; 2625 if(cprimod_cls_option >= cprimodClsOptionCount) { 2626 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 2627 } 2628 2629 exit: 2630 SOC_FUNC_RETURN; 2631 2632 } 2633 2634 int cprimod_cls_flow_type_t_validate(cprimod_cls_flow_type_t cprimod_cls_flow_type) 2635 { 2636 SOC_INIT_FUNC_DEFS; 2637 if(cprimod_cls_flow_type >= cprimodClsFlowTypeCount) { 2638 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 2639 } 2640 2641 exit: 2642 SOC_FUNC_RETURN; 2643 2644 } 2645 2646 int cprimod_decap_flow_classification_config_set(int unit, int port, uint8 subtype, uint32 queue_num, cprimod_cls_option_t cls_option, cprimod_cls_flow_type_t flow_type) 2647 { 2648 2649 cprimod_dispatch_type_t __type__; 2650 int __rv__; 2651 SOC_INIT_FUNC_DEFS; 2652 2653 if(SOC_E_NONE != cprimod_cls_option_t_validate(cls_option)) { 2654 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cls_option validation failed")); 2655 } 2656 2657 if(SOC_E_NONE != cprimod_cls_flow_type_t_validate(flow_type)) { 2658 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("flow_type validation failed")); 2659 } 2660 2661 /* Dispatch */ 2662 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2663 if(__type__ >= cprimodDispatchTypeCount) { 2664 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2665 } 2666 2667 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_flow_classification_config_set) { 2668 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_flow_classification_config_set(unit, port, subtype, queue_num, cls_option, flow_type); 2669 _SOC_IF_ERR_EXIT(__rv__); 2670 } else { 2671 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_flow_classification_config_set isn't implemented for driver type")); 2672 } 2673 2674 exit: 2675 SOC_FUNC_RETURN; 2676 2677 } 2678 2679 2680 int cprimod_decap_flow_classification_config_get(int unit, int port, uint8 subtype, uint32* queue_num, cprimod_cls_option_t* cls_option, cprimod_cls_flow_type_t* flow_type) 2681 { 2682 2683 cprimod_dispatch_type_t __type__; 2684 int __rv__; 2685 SOC_INIT_FUNC_DEFS; 2686 2687 if(queue_num == NULL) { 2688 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("queue_num NULL parameter")); 2689 } 2690 if(cls_option == NULL) { 2691 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cls_option NULL parameter")); 2692 } 2693 if(flow_type == NULL) { 2694 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("flow_type NULL parameter")); 2695 } 2696 /* Dispatch */ 2697 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2698 if(__type__ >= cprimodDispatchTypeCount) { 2699 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2700 } 2701 2702 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_flow_classification_config_get) { 2703 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_flow_classification_config_get(unit, port, subtype, queue_num, cls_option, flow_type); 2704 _SOC_IF_ERR_EXIT(__rv__); 2705 } else { 2706 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_flow_classification_config_get isn't implemented for driver type")); 2707 } 2708 2709 exit: 2710 SOC_FUNC_RETURN; 2711 2712 } 2713 2714 2715 int cprimod_decap_flow_to_queue_mapping_set(int unit, int port, uint32 flow_id, uint32 queue_num) 2716 { 2717 2718 cprimod_dispatch_type_t __type__; 2719 int __rv__; 2720 SOC_INIT_FUNC_DEFS; 2721 2722 /* Dispatch */ 2723 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2724 if(__type__ >= cprimodDispatchTypeCount) { 2725 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2726 } 2727 2728 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_flow_to_queue_mapping_set) { 2729 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_flow_to_queue_mapping_set(unit, port, flow_id, queue_num); 2730 _SOC_IF_ERR_EXIT(__rv__); 2731 } else { 2732 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_flow_to_queue_mapping_set isn't implemented for driver type")); 2733 } 2734 2735 exit: 2736 SOC_FUNC_RETURN; 2737 2738 } 2739 2740 2741 int cprimod_decap_flow_to_queue_mapping_get(int unit, int port, uint32 flow_id, uint32* queue_num) 2742 { 2743 2744 cprimod_dispatch_type_t __type__; 2745 int __rv__; 2746 SOC_INIT_FUNC_DEFS; 2747 2748 if(queue_num == NULL) { 2749 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("queue_num NULL parameter")); 2750 } 2751 /* Dispatch */ 2752 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2753 if(__type__ >= cprimodDispatchTypeCount) { 2754 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2755 } 2756 2757 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_flow_to_queue_mapping_get) { 2758 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_flow_to_queue_mapping_get(unit, port, flow_id, queue_num); 2759 _SOC_IF_ERR_EXIT(__rv__); 2760 } else { 2761 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_flow_to_queue_mapping_get isn't implemented for driver type")); 2762 } 2763 2764 exit: 2765 SOC_FUNC_RETURN; 2766 2767 } 2768 2769 2770 int cprimod_decap_queue_to_ordering_info_index_mapping_set(int unit, int port, uint32 queue_num, uint32 ordering_info_index) 2771 { 2772 2773 cprimod_dispatch_type_t __type__; 2774 int __rv__; 2775 SOC_INIT_FUNC_DEFS; 2776 2777 /* Dispatch */ 2778 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2779 if(__type__ >= cprimodDispatchTypeCount) { 2780 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2781 } 2782 2783 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_queue_to_ordering_info_index_mapping_set) { 2784 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_queue_to_ordering_info_index_mapping_set(unit, port, queue_num, ordering_info_index); 2785 _SOC_IF_ERR_EXIT(__rv__); 2786 } else { 2787 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_queue_to_ordering_info_index_mapping_set isn't implemented for driver type")); 2788 } 2789 2790 exit: 2791 SOC_FUNC_RETURN; 2792 2793 } 2794 2795 2796 int cprimod_decap_queue_to_ordering_info_index_mapping_get(int unit, int port, uint32 queue_num, uint32* ordering_info_index) 2797 { 2798 2799 cprimod_dispatch_type_t __type__; 2800 int __rv__; 2801 SOC_INIT_FUNC_DEFS; 2802 2803 if(ordering_info_index == NULL) { 2804 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("ordering_info_index NULL parameter")); 2805 } 2806 /* Dispatch */ 2807 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2808 if(__type__ >= cprimodDispatchTypeCount) { 2809 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2810 } 2811 2812 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_queue_to_ordering_info_index_mapping_get) { 2813 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_queue_to_ordering_info_index_mapping_get(unit, port, queue_num, ordering_info_index); 2814 _SOC_IF_ERR_EXIT(__rv__); 2815 } else { 2816 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_queue_to_ordering_info_index_mapping_get isn't implemented for driver type")); 2817 } 2818 2819 exit: 2820 SOC_FUNC_RETURN; 2821 2822 } 2823 2824 2825 int cprimod_tx_framer_tgen_tick_set(int unit, int port, uint32 divider, uint32 basic_frame_tick, uint32 tick_bitmap, uint32 tick_bitmap_size) 2826 { 2827 2828 cprimod_dispatch_type_t __type__; 2829 int __rv__; 2830 SOC_INIT_FUNC_DEFS; 2831 2832 /* Dispatch */ 2833 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2834 if(__type__ >= cprimodDispatchTypeCount) { 2835 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2836 } 2837 2838 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_tick_set) { 2839 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_tick_set(unit, port, divider, basic_frame_tick, tick_bitmap, tick_bitmap_size); 2840 _SOC_IF_ERR_EXIT(__rv__); 2841 } else { 2842 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_tgen_tick_set isn't implemented for driver type")); 2843 } 2844 2845 exit: 2846 SOC_FUNC_RETURN; 2847 2848 } 2849 2850 2851 int cprimod_tx_framer_tgen_tick_get(int unit, int port, uint32* divider, uint32* basic_frame_tick, uint32* tick_bitmap, uint32* tick_bitmap_size) 2852 { 2853 2854 cprimod_dispatch_type_t __type__; 2855 int __rv__; 2856 SOC_INIT_FUNC_DEFS; 2857 2858 if(divider == NULL) { 2859 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("divider NULL parameter")); 2860 } 2861 if(basic_frame_tick == NULL) { 2862 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("basic_frame_tick NULL parameter")); 2863 } 2864 if(tick_bitmap == NULL) { 2865 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tick_bitmap NULL parameter")); 2866 } 2867 if(tick_bitmap_size == NULL) { 2868 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tick_bitmap_size NULL parameter")); 2869 } 2870 /* Dispatch */ 2871 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2872 if(__type__ >= cprimodDispatchTypeCount) { 2873 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2874 } 2875 2876 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_tick_get) { 2877 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_tick_get(unit, port, divider, basic_frame_tick, tick_bitmap, tick_bitmap_size); 2878 _SOC_IF_ERR_EXIT(__rv__); 2879 } else { 2880 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_tgen_tick_get isn't implemented for driver type")); 2881 } 2882 2883 exit: 2884 SOC_FUNC_RETURN; 2885 2886 } 2887 2888 2889 int cprimod_tx_framer_tgen_enable(int unit, int port, uint8 enable) 2890 { 2891 2892 cprimod_dispatch_type_t __type__; 2893 int __rv__; 2894 SOC_INIT_FUNC_DEFS; 2895 2896 /* Dispatch */ 2897 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2898 if(__type__ >= cprimodDispatchTypeCount) { 2899 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2900 } 2901 2902 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_enable) { 2903 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_enable(unit, port, enable); 2904 _SOC_IF_ERR_EXIT(__rv__); 2905 } else { 2906 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_tgen_enable isn't implemented for driver type")); 2907 } 2908 2909 exit: 2910 SOC_FUNC_RETURN; 2911 2912 } 2913 2914 2915 int cprimod_tx_framer_tgen_offset_set(int unit, int port, uint64 timestamp_offset) 2916 { 2917 2918 cprimod_dispatch_type_t __type__; 2919 int __rv__; 2920 SOC_INIT_FUNC_DEFS; 2921 2922 /* Dispatch */ 2923 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2924 if(__type__ >= cprimodDispatchTypeCount) { 2925 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2926 } 2927 2928 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_offset_set) { 2929 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_offset_set(unit, port, timestamp_offset); 2930 _SOC_IF_ERR_EXIT(__rv__); 2931 } else { 2932 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_tgen_offset_set isn't implemented for driver type")); 2933 } 2934 2935 exit: 2936 SOC_FUNC_RETURN; 2937 2938 } 2939 2940 2941 int cprimod_tx_framer_tgen_offset_get(int unit, int port, uint64* timestamp_offset) 2942 { 2943 2944 cprimod_dispatch_type_t __type__; 2945 int __rv__; 2946 SOC_INIT_FUNC_DEFS; 2947 2948 if(timestamp_offset == NULL) { 2949 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("timestamp_offset NULL parameter")); 2950 } 2951 /* Dispatch */ 2952 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2953 if(__type__ >= cprimodDispatchTypeCount) { 2954 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2955 } 2956 2957 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_offset_get) { 2958 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_offset_get(unit, port, timestamp_offset); 2959 _SOC_IF_ERR_EXIT(__rv__); 2960 } else { 2961 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_tgen_offset_get isn't implemented for driver type")); 2962 } 2963 2964 exit: 2965 SOC_FUNC_RETURN; 2966 2967 } 2968 2969 2970 int cprimod_tx_framer_tgen_next_bfn_config_set(int unit, int port, uint32 tgen_bfn) 2971 { 2972 2973 cprimod_dispatch_type_t __type__; 2974 int __rv__; 2975 SOC_INIT_FUNC_DEFS; 2976 2977 /* Dispatch */ 2978 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 2979 if(__type__ >= cprimodDispatchTypeCount) { 2980 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 2981 } 2982 2983 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_next_bfn_config_set) { 2984 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_next_bfn_config_set(unit, port, tgen_bfn); 2985 _SOC_IF_ERR_EXIT(__rv__); 2986 } else { 2987 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_tgen_next_bfn_config_set isn't implemented for driver type")); 2988 } 2989 2990 exit: 2991 SOC_FUNC_RETURN; 2992 2993 } 2994 2995 2996 int cprimod_tx_framer_tgen_next_bfn_config_get(int unit, int port, uint32* tgen_bfn) 2997 { 2998 2999 cprimod_dispatch_type_t __type__; 3000 int __rv__; 3001 SOC_INIT_FUNC_DEFS; 3002 3003 if(tgen_bfn == NULL) { 3004 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tgen_bfn NULL parameter")); 3005 } 3006 /* Dispatch */ 3007 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3008 if(__type__ >= cprimodDispatchTypeCount) { 3009 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3010 } 3011 3012 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_next_bfn_config_get) { 3013 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_next_bfn_config_get(unit, port, tgen_bfn); 3014 _SOC_IF_ERR_EXIT(__rv__); 3015 } else { 3016 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_tgen_next_bfn_config_get isn't implemented for driver type")); 3017 } 3018 3019 exit: 3020 SOC_FUNC_RETURN; 3021 3022 } 3023 3024 3025 int cprimod_tx_framer_tgen_next_hfn_config_set(int unit, int port, uint32 tgen_hfn) 3026 { 3027 3028 cprimod_dispatch_type_t __type__; 3029 int __rv__; 3030 SOC_INIT_FUNC_DEFS; 3031 3032 /* Dispatch */ 3033 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3034 if(__type__ >= cprimodDispatchTypeCount) { 3035 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3036 } 3037 3038 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_next_hfn_config_set) { 3039 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_next_hfn_config_set(unit, port, tgen_hfn); 3040 _SOC_IF_ERR_EXIT(__rv__); 3041 } else { 3042 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_tgen_next_hfn_config_set isn't implemented for driver type")); 3043 } 3044 3045 exit: 3046 SOC_FUNC_RETURN; 3047 3048 } 3049 3050 3051 int cprimod_tx_framer_tgen_next_hfn_config_get(int unit, int port, uint32* tgen_hfn) 3052 { 3053 3054 cprimod_dispatch_type_t __type__; 3055 int __rv__; 3056 SOC_INIT_FUNC_DEFS; 3057 3058 if(tgen_hfn == NULL) { 3059 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tgen_hfn NULL parameter")); 3060 } 3061 /* Dispatch */ 3062 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3063 if(__type__ >= cprimodDispatchTypeCount) { 3064 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3065 } 3066 3067 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_next_hfn_config_get) { 3068 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_next_hfn_config_get(unit, port, tgen_hfn); 3069 _SOC_IF_ERR_EXIT(__rv__); 3070 } else { 3071 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_tgen_next_hfn_config_get isn't implemented for driver type")); 3072 } 3073 3074 exit: 3075 SOC_FUNC_RETURN; 3076 3077 } 3078 3079 3080 int cprimod_tx_framer_next_bfn_get(int unit, int port, uint32* tgen_bfn) 3081 { 3082 3083 cprimod_dispatch_type_t __type__; 3084 int __rv__; 3085 SOC_INIT_FUNC_DEFS; 3086 3087 if(tgen_bfn == NULL) { 3088 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tgen_bfn NULL parameter")); 3089 } 3090 /* Dispatch */ 3091 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3092 if(__type__ >= cprimodDispatchTypeCount) { 3093 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3094 } 3095 3096 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_next_bfn_get) { 3097 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_next_bfn_get(unit, port, tgen_bfn); 3098 _SOC_IF_ERR_EXIT(__rv__); 3099 } else { 3100 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_next_bfn_get isn't implemented for driver type")); 3101 } 3102 3103 exit: 3104 SOC_FUNC_RETURN; 3105 3106 } 3107 3108 3109 int cprimod_tx_framer_next_hfn_get(int unit, int port, uint32* tgen_hfn) 3110 { 3111 3112 cprimod_dispatch_type_t __type__; 3113 int __rv__; 3114 SOC_INIT_FUNC_DEFS; 3115 3116 if(tgen_hfn == NULL) { 3117 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tgen_hfn NULL parameter")); 3118 } 3119 /* Dispatch */ 3120 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3121 if(__type__ >= cprimodDispatchTypeCount) { 3122 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3123 } 3124 3125 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_next_hfn_get) { 3126 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_next_hfn_get(unit, port, tgen_hfn); 3127 _SOC_IF_ERR_EXIT(__rv__); 3128 } else { 3129 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_next_hfn_get isn't implemented for driver type")); 3130 } 3131 3132 exit: 3133 SOC_FUNC_RETURN; 3134 3135 } 3136 3137 3138 int cprimod_tgen_counter_select_t_validate(cprimod_tgen_counter_select_t cprimod_tgen_counter_select) 3139 { 3140 SOC_INIT_FUNC_DEFS; 3141 if(cprimod_tgen_counter_select >= cprimodTgenCounterSelectCount) { 3142 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 3143 } 3144 3145 exit: 3146 SOC_FUNC_RETURN; 3147 3148 } 3149 3150 int cprimod_tx_framer_tgen_select_counter_set(int unit, int port, cprimod_tgen_counter_select_t tgen_counter_select) 3151 { 3152 3153 cprimod_dispatch_type_t __type__; 3154 int __rv__; 3155 SOC_INIT_FUNC_DEFS; 3156 3157 if(SOC_E_NONE != cprimod_tgen_counter_select_t_validate(tgen_counter_select)) { 3158 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tgen_counter_select validation failed")); 3159 } 3160 3161 /* Dispatch */ 3162 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3163 if(__type__ >= cprimodDispatchTypeCount) { 3164 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3165 } 3166 3167 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_select_counter_set) { 3168 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_select_counter_set(unit, port, tgen_counter_select); 3169 _SOC_IF_ERR_EXIT(__rv__); 3170 } else { 3171 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_tgen_select_counter_set isn't implemented for driver type")); 3172 } 3173 3174 exit: 3175 SOC_FUNC_RETURN; 3176 3177 } 3178 3179 3180 int cprimod_tx_framer_tgen_select_counter_get(int unit, int port, cprimod_tgen_counter_select_t* tgen_counter_select) 3181 { 3182 3183 cprimod_dispatch_type_t __type__; 3184 int __rv__; 3185 SOC_INIT_FUNC_DEFS; 3186 3187 if(tgen_counter_select == NULL) { 3188 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tgen_counter_select NULL parameter")); 3189 } 3190 /* Dispatch */ 3191 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3192 if(__type__ >= cprimodDispatchTypeCount) { 3193 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3194 } 3195 3196 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_select_counter_get) { 3197 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_tx_framer_tgen_select_counter_get(unit, port, tgen_counter_select); 3198 _SOC_IF_ERR_EXIT(__rv__); 3199 } else { 3200 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_tx_framer_tgen_select_counter_get isn't implemented for driver type")); 3201 } 3202 3203 exit: 3204 SOC_FUNC_RETURN; 3205 3206 } 3207 3208 3209 int cprimod_flow_type_t_validate(cprimod_flow_type_t cprimod_flow_type) 3210 { 3211 SOC_INIT_FUNC_DEFS; 3212 if(cprimod_flow_type >= cprimodFlowTypeCount) { 3213 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 3214 } 3215 3216 exit: 3217 SOC_FUNC_RETURN; 3218 3219 } 3220 3221 int cprimod_header_compare_entry_t_validate(const cprimod_header_compare_entry_t* cprimod_header_compare_entry) 3222 { 3223 SOC_INIT_FUNC_DEFS; 3224 if(cprimod_header_compare_entry == NULL) { 3225 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 3226 } 3227 3228 if(SOC_E_NONE != cprimod_flow_type_t_validate(cprimod_header_compare_entry->flow_type)) { 3229 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("flow_type validation failed")); 3230 } 3231 3232 3233 3234 exit: 3235 SOC_FUNC_RETURN; 3236 3237 } 3238 3239 int cprimod_header_compare_entry_t_init(cprimod_header_compare_entry_t* cprimod_header_compare_entry) 3240 { 3241 SOC_INIT_FUNC_DEFS; 3242 3243 if(cprimod_header_compare_entry == NULL){ 3244 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_header_compare_entry NULL parameter")); 3245 } 3246 sal_memset(cprimod_header_compare_entry, 0, sizeof(cprimod_header_compare_entry_t)); 3247 cprimod_header_compare_entry->valid = 0; 3248 cprimod_header_compare_entry->match_data = 0; 3249 cprimod_header_compare_entry->mask = 0; 3250 cprimod_header_compare_entry->flow_id = 0; 3251 cprimod_header_compare_entry->flow_type = 0; 3252 3253 3254 exit: 3255 SOC_FUNC_RETURN; 3256 3257 } 3258 3259 int cprimod_header_compare_entry_add(int unit, int port, const cprimod_header_compare_entry_t* compare_entry) 3260 { 3261 3262 cprimod_dispatch_type_t __type__; 3263 int __rv__; 3264 SOC_INIT_FUNC_DEFS; 3265 3266 if(SOC_E_NONE != cprimod_header_compare_entry_t_validate(compare_entry)) { 3267 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("compare_entry validation failed")); 3268 } 3269 3270 /* Dispatch */ 3271 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3272 if(__type__ >= cprimodDispatchTypeCount) { 3273 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3274 } 3275 3276 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_header_compare_entry_add) { 3277 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_header_compare_entry_add(unit, port, compare_entry); 3278 _SOC_IF_ERR_EXIT(__rv__); 3279 } else { 3280 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_header_compare_entry_add isn't implemented for driver type")); 3281 } 3282 3283 exit: 3284 SOC_FUNC_RETURN; 3285 3286 } 3287 3288 3289 int cprimod_header_compare_entry_delete(int unit, int port, const cprimod_header_compare_entry_t* compare_entry) 3290 { 3291 3292 cprimod_dispatch_type_t __type__; 3293 int __rv__; 3294 SOC_INIT_FUNC_DEFS; 3295 3296 if(SOC_E_NONE != cprimod_header_compare_entry_t_validate(compare_entry)) { 3297 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("compare_entry validation failed")); 3298 } 3299 3300 /* Dispatch */ 3301 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3302 if(__type__ >= cprimodDispatchTypeCount) { 3303 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3304 } 3305 3306 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_header_compare_entry_delete) { 3307 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_header_compare_entry_delete(unit, port, compare_entry); 3308 _SOC_IF_ERR_EXIT(__rv__); 3309 } else { 3310 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_header_compare_entry_delete isn't implemented for driver type")); 3311 } 3312 3313 exit: 3314 SOC_FUNC_RETURN; 3315 3316 } 3317 3318 3319 int cprimod_header_compare_entry_for_flow_delete(int unit, int port, uint8 flow_id, cprimod_flow_type_t flow_type) 3320 { 3321 3322 cprimod_dispatch_type_t __type__; 3323 int __rv__; 3324 SOC_INIT_FUNC_DEFS; 3325 3326 if(SOC_E_NONE != cprimod_flow_type_t_validate(flow_type)) { 3327 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("flow_type validation failed")); 3328 } 3329 3330 /* Dispatch */ 3331 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3332 if(__type__ >= cprimodDispatchTypeCount) { 3333 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3334 } 3335 3336 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_header_compare_entry_for_flow_delete) { 3337 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_header_compare_entry_for_flow_delete(unit, port, flow_id, flow_type); 3338 _SOC_IF_ERR_EXIT(__rv__); 3339 } else { 3340 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_header_compare_entry_for_flow_delete isn't implemented for driver type")); 3341 } 3342 3343 exit: 3344 SOC_FUNC_RETURN; 3345 3346 } 3347 3348 3349 int cprimod_transmission_rule_type_t_validate(cprimod_transmission_rule_type_t cprimod_transmission_rule_type) 3350 { 3351 SOC_INIT_FUNC_DEFS; 3352 if(cprimod_transmission_rule_type >= cprimodTxRuleTypeCount) { 3353 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 3354 } 3355 3356 exit: 3357 SOC_FUNC_RETURN; 3358 3359 } 3360 3361 int cprimod_modulo_rule_mod_t_validate(cprimod_modulo_rule_mod_t cprimod_modulo_rule_mod) 3362 { 3363 SOC_INIT_FUNC_DEFS; 3364 if(cprimod_modulo_rule_mod >= cprimodModuloRuleModCount) { 3365 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 3366 } 3367 3368 exit: 3369 SOC_FUNC_RETURN; 3370 3371 } 3372 3373 int cprimod_modulo_rule_entry_t_validate(const cprimod_modulo_rule_entry_t* cprimod_modulo_rule_entry) 3374 { 3375 SOC_INIT_FUNC_DEFS; 3376 if(cprimod_modulo_rule_entry == NULL) { 3377 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 3378 } 3379 3380 if(SOC_E_NONE != cprimod_modulo_rule_mod_t_validate(cprimod_modulo_rule_entry->modulo_value)) { 3381 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("modulo_value validation failed")); 3382 } 3383 3384 if(SOC_E_NONE != cprimod_flow_type_t_validate(cprimod_modulo_rule_entry->flow_type)) { 3385 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("flow_type validation failed")); 3386 } 3387 3388 3389 3390 exit: 3391 SOC_FUNC_RETURN; 3392 3393 } 3394 3395 int cprimod_modulo_rule_entry_t_init(cprimod_modulo_rule_entry_t* cprimod_modulo_rule_entry) 3396 { 3397 SOC_INIT_FUNC_DEFS; 3398 3399 if(cprimod_modulo_rule_entry == NULL){ 3400 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_modulo_rule_entry NULL parameter")); 3401 } 3402 sal_memset(cprimod_modulo_rule_entry, 0, sizeof(cprimod_modulo_rule_entry_t)); 3403 cprimod_modulo_rule_entry->active = 0; 3404 cprimod_modulo_rule_entry->modulo_value = cprimodModuloRuleMod1; 3405 cprimod_modulo_rule_entry->modulo_index = 0; 3406 cprimod_modulo_rule_entry->dbm_enable = 0; 3407 cprimod_modulo_rule_entry->flow_dbm_id = 0; 3408 cprimod_modulo_rule_entry->flow_type = 0; 3409 3410 3411 exit: 3412 SOC_FUNC_RETURN; 3413 3414 } 3415 3416 int cprimod_modulo_rule_entry_set(int unit, int port, uint8 modulo_rule_num, cprimod_transmission_rule_type_t modulo_rule_type, const cprimod_modulo_rule_entry_t* modulo_rule) 3417 { 3418 3419 cprimod_dispatch_type_t __type__; 3420 int __rv__; 3421 SOC_INIT_FUNC_DEFS; 3422 3423 if(SOC_E_NONE != cprimod_transmission_rule_type_t_validate(modulo_rule_type)) { 3424 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("modulo_rule_type validation failed")); 3425 } 3426 3427 if(SOC_E_NONE != cprimod_modulo_rule_entry_t_validate(modulo_rule)) { 3428 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("modulo_rule validation failed")); 3429 } 3430 3431 /* Dispatch */ 3432 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3433 if(__type__ >= cprimodDispatchTypeCount) { 3434 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3435 } 3436 3437 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_modulo_rule_entry_set) { 3438 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_modulo_rule_entry_set(unit, port, modulo_rule_num, modulo_rule_type, modulo_rule); 3439 _SOC_IF_ERR_EXIT(__rv__); 3440 } else { 3441 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_modulo_rule_entry_set isn't implemented for driver type")); 3442 } 3443 3444 exit: 3445 SOC_FUNC_RETURN; 3446 3447 } 3448 3449 3450 int cprimod_modulo_rule_entry_get(int unit, int port, uint8 modulo_rule_num, cprimod_transmission_rule_type_t modulo_rule_type, cprimod_modulo_rule_entry_t* modulo_rule) 3451 { 3452 3453 cprimod_dispatch_type_t __type__; 3454 int __rv__; 3455 SOC_INIT_FUNC_DEFS; 3456 3457 if(SOC_E_NONE != cprimod_transmission_rule_type_t_validate(modulo_rule_type)) { 3458 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("modulo_rule_type validation failed")); 3459 } 3460 3461 if(modulo_rule == NULL) { 3462 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("modulo_rule NULL parameter")); 3463 } 3464 if(SOC_E_NONE != cprimod_modulo_rule_entry_t_init(modulo_rule)) { 3465 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("modulo_rule initialization failed")); 3466 } 3467 3468 /* Dispatch */ 3469 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3470 if(__type__ >= cprimodDispatchTypeCount) { 3471 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3472 } 3473 3474 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_modulo_rule_entry_get) { 3475 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_modulo_rule_entry_get(unit, port, modulo_rule_num, modulo_rule_type, modulo_rule); 3476 _SOC_IF_ERR_EXIT(__rv__); 3477 } else { 3478 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_modulo_rule_entry_get isn't implemented for driver type")); 3479 } 3480 3481 exit: 3482 SOC_FUNC_RETURN; 3483 3484 } 3485 3486 3487 int cprimod_dbm_rule_pos_index_t_validate(cprimod_dbm_rule_pos_index_t cprimod_dbm_rule_pos_index) 3488 { 3489 SOC_INIT_FUNC_DEFS; 3490 if(cprimod_dbm_rule_pos_index >= cprimodDbmRulePosIndexCount) { 3491 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 3492 } 3493 3494 exit: 3495 SOC_FUNC_RETURN; 3496 3497 } 3498 3499 int cprimod_dbm_rule_pos_grp_size_t_validate(cprimod_dbm_rule_pos_grp_size_t cprimod_dbm_rule_pos_grp_size) 3500 { 3501 SOC_INIT_FUNC_DEFS; 3502 if(cprimod_dbm_rule_pos_grp_size >= cprimodDbmRulePosGrpSizeCount) { 3503 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 3504 } 3505 3506 exit: 3507 SOC_FUNC_RETURN; 3508 3509 } 3510 3511 int cprimod_dbm_rule_entry_t_validate(const cprimod_dbm_rule_entry_t* cprimod_dbm_rule_entry) 3512 { 3513 SOC_INIT_FUNC_DEFS; 3514 if(cprimod_dbm_rule_entry == NULL) { 3515 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 3516 } 3517 3518 if(SOC_E_NONE != cprimod_dbm_rule_pos_index_t_validate(cprimod_dbm_rule_entry->pos_grp_index)) { 3519 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pos_grp_index validation failed")); 3520 } 3521 3522 if(SOC_E_NONE != cprimod_dbm_rule_pos_grp_size_t_validate(cprimod_dbm_rule_entry->pos_grp_size)) { 3523 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pos_grp_size validation failed")); 3524 } 3525 3526 3527 3528 exit: 3529 SOC_FUNC_RETURN; 3530 3531 } 3532 3533 int cprimod_dbm_rule_entry_t_init(cprimod_dbm_rule_entry_t* cprimod_dbm_rule_entry) 3534 { 3535 int _array_iter; 3536 3537 SOC_INIT_FUNC_DEFS; 3538 3539 if(cprimod_dbm_rule_entry == NULL){ 3540 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_dbm_rule_entry NULL parameter")); 3541 } 3542 sal_memset(cprimod_dbm_rule_entry, 0, sizeof(cprimod_dbm_rule_entry_t)); 3543 cprimod_dbm_rule_entry->bm1_mult = 0; 3544 for(_array_iter = 0 ; _array_iter < 3 ; _array_iter++){ cprimod_dbm_rule_entry->bm1[_array_iter] = 0; 3545 } cprimod_dbm_rule_entry->bm1_size = 0; 3546 for(_array_iter = 0 ; _array_iter < 2 ; _array_iter++){ cprimod_dbm_rule_entry->bm2[_array_iter] = 0; 3547 } cprimod_dbm_rule_entry->bm2_size = 0; 3548 cprimod_dbm_rule_entry->num_slots = 0; 3549 cprimod_dbm_rule_entry->pos_grp_index = 0; 3550 cprimod_dbm_rule_entry->pos_grp_size = 0; 3551 3552 3553 exit: 3554 SOC_FUNC_RETURN; 3555 3556 } 3557 3558 int cprimod_dual_bitmap_rule_entry_set(int unit, int port, uint8 dbm_rule_num, const cprimod_dbm_rule_entry_t* dbm_rule) 3559 { 3560 3561 cprimod_dispatch_type_t __type__; 3562 int __rv__; 3563 SOC_INIT_FUNC_DEFS; 3564 3565 if(SOC_E_NONE != cprimod_dbm_rule_entry_t_validate(dbm_rule)) { 3566 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("dbm_rule validation failed")); 3567 } 3568 3569 /* Dispatch */ 3570 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3571 if(__type__ >= cprimodDispatchTypeCount) { 3572 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3573 } 3574 3575 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_dual_bitmap_rule_entry_set) { 3576 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_dual_bitmap_rule_entry_set(unit, port, dbm_rule_num, dbm_rule); 3577 _SOC_IF_ERR_EXIT(__rv__); 3578 } else { 3579 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_dual_bitmap_rule_entry_set isn't implemented for driver type")); 3580 } 3581 3582 exit: 3583 SOC_FUNC_RETURN; 3584 3585 } 3586 3587 3588 int cprimod_dual_bitmap_rule_entry_get(int unit, int port, uint8 dbm_rule_num, cprimod_dbm_rule_entry_t* dbm_rule) 3589 { 3590 3591 cprimod_dispatch_type_t __type__; 3592 int __rv__; 3593 SOC_INIT_FUNC_DEFS; 3594 3595 if(dbm_rule == NULL) { 3596 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("dbm_rule NULL parameter")); 3597 } 3598 if(SOC_E_NONE != cprimod_dbm_rule_entry_t_init(dbm_rule)) { 3599 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("dbm_rule initialization failed")); 3600 } 3601 3602 /* Dispatch */ 3603 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3604 if(__type__ >= cprimodDispatchTypeCount) { 3605 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3606 } 3607 3608 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_dual_bitmap_rule_entry_get) { 3609 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_dual_bitmap_rule_entry_get(unit, port, dbm_rule_num, dbm_rule); 3610 _SOC_IF_ERR_EXIT(__rv__); 3611 } else { 3612 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_dual_bitmap_rule_entry_get isn't implemented for driver type")); 3613 } 3614 3615 exit: 3616 SOC_FUNC_RETURN; 3617 3618 } 3619 3620 3621 int cprimod_secondary_dbm_rule_entry_t_validate(const cprimod_secondary_dbm_rule_entry_t* cprimod_secondary_dbm_rule_entry) 3622 { 3623 SOC_INIT_FUNC_DEFS; 3624 if(cprimod_secondary_dbm_rule_entry == NULL) { 3625 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 3626 } 3627 3628 3629 3630 exit: 3631 SOC_FUNC_RETURN; 3632 3633 } 3634 3635 int cprimod_secondary_dbm_rule_entry_t_init(cprimod_secondary_dbm_rule_entry_t* cprimod_secondary_dbm_rule_entry) 3636 { 3637 SOC_INIT_FUNC_DEFS; 3638 3639 if(cprimod_secondary_dbm_rule_entry == NULL){ 3640 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_secondary_dbm_rule_entry NULL parameter")); 3641 } 3642 sal_memset(cprimod_secondary_dbm_rule_entry, 0, sizeof(cprimod_secondary_dbm_rule_entry_t)); 3643 cprimod_secondary_dbm_rule_entry->bm1_mult = 0; 3644 cprimod_secondary_dbm_rule_entry->bm1 = 0; 3645 cprimod_secondary_dbm_rule_entry->bm1_size = 0; 3646 cprimod_secondary_dbm_rule_entry->bm2 = 0; 3647 cprimod_secondary_dbm_rule_entry->bm2_size = 0; 3648 cprimod_secondary_dbm_rule_entry->num_slots = 0; 3649 3650 3651 exit: 3652 SOC_FUNC_RETURN; 3653 3654 } 3655 3656 int cprimod_secondary_dual_bitmap_rule_entry_set(int unit, int port, uint8 dbm_rule_num, const cprimod_secondary_dbm_rule_entry_t* dbm_rule) 3657 { 3658 3659 cprimod_dispatch_type_t __type__; 3660 int __rv__; 3661 SOC_INIT_FUNC_DEFS; 3662 3663 if(SOC_E_NONE != cprimod_secondary_dbm_rule_entry_t_validate(dbm_rule)) { 3664 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("dbm_rule validation failed")); 3665 } 3666 3667 /* Dispatch */ 3668 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3669 if(__type__ >= cprimodDispatchTypeCount) { 3670 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3671 } 3672 3673 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_secondary_dual_bitmap_rule_entry_set) { 3674 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_secondary_dual_bitmap_rule_entry_set(unit, port, dbm_rule_num, dbm_rule); 3675 _SOC_IF_ERR_EXIT(__rv__); 3676 } else { 3677 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_secondary_dual_bitmap_rule_entry_set isn't implemented for driver type")); 3678 } 3679 3680 exit: 3681 SOC_FUNC_RETURN; 3682 3683 } 3684 3685 3686 int cprimod_secondary_dual_bitmap_rule_entry_get(int unit, int port, uint8 dbm_rule_num, cprimod_secondary_dbm_rule_entry_t* dbm_rule) 3687 { 3688 3689 cprimod_dispatch_type_t __type__; 3690 int __rv__; 3691 SOC_INIT_FUNC_DEFS; 3692 3693 if(dbm_rule == NULL) { 3694 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("dbm_rule NULL parameter")); 3695 } 3696 if(SOC_E_NONE != cprimod_secondary_dbm_rule_entry_t_init(dbm_rule)) { 3697 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("dbm_rule initialization failed")); 3698 } 3699 3700 /* Dispatch */ 3701 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3702 if(__type__ >= cprimodDispatchTypeCount) { 3703 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3704 } 3705 3706 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_secondary_dual_bitmap_rule_entry_get) { 3707 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_secondary_dual_bitmap_rule_entry_get(unit, port, dbm_rule_num, dbm_rule); 3708 _SOC_IF_ERR_EXIT(__rv__); 3709 } else { 3710 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_secondary_dual_bitmap_rule_entry_get isn't implemented for driver type")); 3711 } 3712 3713 exit: 3714 SOC_FUNC_RETURN; 3715 3716 } 3717 3718 3719 int cprimod_dbm_pos_table_entry_t_validate(const cprimod_dbm_pos_table_entry_t* cprimod_dbm_pos_table_entry) 3720 { 3721 SOC_INIT_FUNC_DEFS; 3722 if(cprimod_dbm_pos_table_entry == NULL) { 3723 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 3724 } 3725 3726 if(SOC_E_NONE != cprimod_flow_type_t_validate(cprimod_dbm_pos_table_entry->flow_type)) { 3727 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("flow_type validation failed")); 3728 } 3729 3730 3731 3732 exit: 3733 SOC_FUNC_RETURN; 3734 3735 } 3736 3737 int cprimod_dbm_pos_table_entry_t_init(cprimod_dbm_pos_table_entry_t* cprimod_dbm_pos_table_entry) 3738 { 3739 SOC_INIT_FUNC_DEFS; 3740 3741 if(cprimod_dbm_pos_table_entry == NULL){ 3742 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_dbm_pos_table_entry NULL parameter")); 3743 } 3744 sal_memset(cprimod_dbm_pos_table_entry, 0, sizeof(cprimod_dbm_pos_table_entry_t)); 3745 cprimod_dbm_pos_table_entry->valid = 0; 3746 cprimod_dbm_pos_table_entry->flow_id = 0; 3747 cprimod_dbm_pos_table_entry->flow_type = 0; 3748 cprimod_dbm_pos_table_entry->index = 0; 3749 3750 3751 exit: 3752 SOC_FUNC_RETURN; 3753 3754 } 3755 3756 int cprimod_dbm_position_entry_set(int unit, int port, uint8 index, const cprimod_dbm_pos_table_entry_t* pos_entry) 3757 { 3758 3759 cprimod_dispatch_type_t __type__; 3760 int __rv__; 3761 SOC_INIT_FUNC_DEFS; 3762 3763 if(SOC_E_NONE != cprimod_dbm_pos_table_entry_t_validate(pos_entry)) { 3764 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pos_entry validation failed")); 3765 } 3766 3767 /* Dispatch */ 3768 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3769 if(__type__ >= cprimodDispatchTypeCount) { 3770 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3771 } 3772 3773 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_dbm_position_entry_set) { 3774 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_dbm_position_entry_set(unit, port, index, pos_entry); 3775 _SOC_IF_ERR_EXIT(__rv__); 3776 } else { 3777 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_dbm_position_entry_set isn't implemented for driver type")); 3778 } 3779 3780 exit: 3781 SOC_FUNC_RETURN; 3782 3783 } 3784 3785 3786 int cprimod_dbm_position_entry_get(int unit, int port, uint8 index, cprimod_dbm_pos_table_entry_t* pos_entry) 3787 { 3788 3789 cprimod_dispatch_type_t __type__; 3790 int __rv__; 3791 SOC_INIT_FUNC_DEFS; 3792 3793 if(pos_entry == NULL) { 3794 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pos_entry NULL parameter")); 3795 } 3796 if(SOC_E_NONE != cprimod_dbm_pos_table_entry_t_init(pos_entry)) { 3797 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pos_entry initialization failed")); 3798 } 3799 3800 /* Dispatch */ 3801 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3802 if(__type__ >= cprimodDispatchTypeCount) { 3803 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3804 } 3805 3806 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_dbm_position_entry_get) { 3807 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_dbm_position_entry_get(unit, port, index, pos_entry); 3808 _SOC_IF_ERR_EXIT(__rv__); 3809 } else { 3810 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_dbm_position_entry_get isn't implemented for driver type")); 3811 } 3812 3813 exit: 3814 SOC_FUNC_RETURN; 3815 3816 } 3817 3818 3819 int cprimod_cpri_pcs_mode_t_validate(cprimod_cpri_pcs_mode_t cprimod_cpri_pcs_mode) 3820 { 3821 SOC_INIT_FUNC_DEFS; 3822 if(cprimod_cpri_pcs_mode >= cprimodCpriPcsModeCount) { 3823 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 3824 } 3825 3826 exit: 3827 SOC_FUNC_RETURN; 3828 3829 } 3830 3831 int cprimod_port_speed_t_validate(cprimod_port_speed_t cprimod_port_speed) 3832 { 3833 SOC_INIT_FUNC_DEFS; 3834 if(cprimod_port_speed >= cprimodSpdCount) { 3835 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 3836 } 3837 3838 exit: 3839 SOC_FUNC_RETURN; 3840 3841 } 3842 3843 int cprimod_supported_port_speed_t_validate(cprimod_supported_port_speed_t cprimod_supported_port_speed) 3844 { 3845 SOC_INIT_FUNC_DEFS; 3846 if(cprimod_supported_port_speed >= cprimodSupportedSpdCount) { 3847 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 3848 } 3849 3850 exit: 3851 SOC_FUNC_RETURN; 3852 3853 } 3854 3855 int cprimod_pll_num_in_use_t_validate(cprimod_pll_num_in_use_t cprimod_pll_num_in_use) 3856 { 3857 SOC_INIT_FUNC_DEFS; 3858 if(cprimod_pll_num_in_use >= cprimodInUseCount) { 3859 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 3860 } 3861 3862 exit: 3863 SOC_FUNC_RETURN; 3864 3865 } 3866 3867 int cprimod_port_interface_type_t_validate(cprimod_port_interface_type_t cprimod_port_interface_type) 3868 { 3869 SOC_INIT_FUNC_DEFS; 3870 if(cprimod_port_interface_type >= cprimodCount) { 3871 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 3872 } 3873 3874 exit: 3875 SOC_FUNC_RETURN; 3876 3877 } 3878 3879 int cprimod_port_interface_config_t_validate(const cprimod_port_interface_config_t* cprimod_port_interface_config) 3880 { 3881 SOC_INIT_FUNC_DEFS; 3882 if(cprimod_port_interface_config == NULL) { 3883 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 3884 } 3885 3886 if(SOC_E_NONE != cprimod_port_speed_t_validate(cprimod_port_interface_config->speed)) { 3887 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("speed validation failed")); 3888 } 3889 3890 if(SOC_E_NONE != cprimod_port_interface_type_t_validate(cprimod_port_interface_config->interface)) { 3891 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("interface validation failed")); 3892 } 3893 3894 3895 3896 exit: 3897 SOC_FUNC_RETURN; 3898 3899 } 3900 3901 int cprimod_port_interface_config_t_init(cprimod_port_interface_config_t* cprimod_port_interface_config) 3902 { 3903 SOC_INIT_FUNC_DEFS; 3904 3905 if(cprimod_port_interface_config == NULL){ 3906 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_port_interface_config NULL parameter")); 3907 } 3908 sal_memset(cprimod_port_interface_config, 0, sizeof(cprimod_port_interface_config_t)); 3909 cprimod_port_interface_config->speed = 0; 3910 cprimod_port_interface_config->interface = 0; 3911 3912 3913 exit: 3914 SOC_FUNC_RETURN; 3915 3916 } 3917 3918 int cprimod_port_rsvd4_speed_mult_t_validate(cprimod_port_rsvd4_speed_mult_t cprimod_port_rsvd4_speed_mult) 3919 { 3920 SOC_INIT_FUNC_DEFS; 3921 if(cprimod_port_rsvd4_speed_mult >= cprimodRsvd4SpdMultCount) { 3922 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 3923 } 3924 3925 exit: 3926 SOC_FUNC_RETURN; 3927 3928 } 3929 3930 int cprimod_port_rsvd4_config_t_validate(const cprimod_port_rsvd4_config_t* cprimod_port_rsvd4_config) 3931 { 3932 SOC_INIT_FUNC_DEFS; 3933 if(cprimod_port_rsvd4_config == NULL) { 3934 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 3935 } 3936 3937 if(SOC_E_NONE != cprimod_port_rsvd4_speed_mult_t_validate(cprimod_port_rsvd4_config->speed)) { 3938 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("speed validation failed")); 3939 } 3940 3941 if(SOC_E_NONE != cprimod_port_interface_type_t_validate(cprimod_port_rsvd4_config->interface)) { 3942 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("interface validation failed")); 3943 } 3944 3945 3946 3947 exit: 3948 SOC_FUNC_RETURN; 3949 3950 } 3951 3952 int cprimod_port_rsvd4_config_t_init(cprimod_port_rsvd4_config_t* cprimod_port_rsvd4_config) 3953 { 3954 SOC_INIT_FUNC_DEFS; 3955 3956 if(cprimod_port_rsvd4_config == NULL){ 3957 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_port_rsvd4_config NULL parameter")); 3958 } 3959 sal_memset(cprimod_port_rsvd4_config, 0, sizeof(cprimod_port_rsvd4_config_t)); 3960 cprimod_port_rsvd4_config->speed = 0; 3961 cprimod_port_rsvd4_config->interface = 0; 3962 3963 3964 exit: 3965 SOC_FUNC_RETURN; 3966 3967 } 3968 3969 int cprimod_port_rx_interface_config_set(int unit, int port, const phymod_phy_access_t* phy, const cprimod_port_interface_config_t* config) 3970 { 3971 3972 cprimod_dispatch_type_t __type__; 3973 int __rv__; 3974 SOC_INIT_FUNC_DEFS; 3975 3976 if(SOC_E_NONE != cprimod_port_interface_config_t_validate(config)) { 3977 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config validation failed")); 3978 } 3979 3980 /* Dispatch */ 3981 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 3982 if(__type__ >= cprimodDispatchTypeCount) { 3983 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 3984 } 3985 3986 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rx_interface_config_set) { 3987 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rx_interface_config_set(unit, port, phy, config); 3988 _SOC_IF_ERR_EXIT(__rv__); 3989 } else { 3990 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rx_interface_config_set isn't implemented for driver type")); 3991 } 3992 3993 exit: 3994 SOC_FUNC_RETURN; 3995 3996 } 3997 3998 3999 int cprimod_port_rx_interface_config_get(int unit, int port, cprimod_port_interface_config_t* config) 4000 { 4001 4002 cprimod_dispatch_type_t __type__; 4003 int __rv__; 4004 SOC_INIT_FUNC_DEFS; 4005 4006 if(config == NULL) { 4007 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config NULL parameter")); 4008 } 4009 if(SOC_E_NONE != cprimod_port_interface_config_t_init(config)) { 4010 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config initialization failed")); 4011 } 4012 4013 /* Dispatch */ 4014 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4015 if(__type__ >= cprimodDispatchTypeCount) { 4016 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4017 } 4018 4019 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rx_interface_config_get) { 4020 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rx_interface_config_get(unit, port, config); 4021 _SOC_IF_ERR_EXIT(__rv__); 4022 } else { 4023 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rx_interface_config_get isn't implemented for driver type")); 4024 } 4025 4026 exit: 4027 SOC_FUNC_RETURN; 4028 4029 } 4030 4031 4032 int cprimod_port_tx_interface_config_set(int unit, int port, const phymod_phy_access_t* phy, const cprimod_port_interface_config_t* config) 4033 { 4034 4035 cprimod_dispatch_type_t __type__; 4036 int __rv__; 4037 SOC_INIT_FUNC_DEFS; 4038 4039 if(SOC_E_NONE != cprimod_port_interface_config_t_validate(config)) { 4040 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config validation failed")); 4041 } 4042 4043 /* Dispatch */ 4044 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4045 if(__type__ >= cprimodDispatchTypeCount) { 4046 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4047 } 4048 4049 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_tx_interface_config_set) { 4050 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_tx_interface_config_set(unit, port, phy, config); 4051 _SOC_IF_ERR_EXIT(__rv__); 4052 } else { 4053 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_tx_interface_config_set isn't implemented for driver type")); 4054 } 4055 4056 exit: 4057 SOC_FUNC_RETURN; 4058 4059 } 4060 4061 4062 int cprimod_port_tx_interface_config_get(int unit, int port, cprimod_port_interface_config_t* config) 4063 { 4064 4065 cprimod_dispatch_type_t __type__; 4066 int __rv__; 4067 SOC_INIT_FUNC_DEFS; 4068 4069 if(config == NULL) { 4070 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config NULL parameter")); 4071 } 4072 if(SOC_E_NONE != cprimod_port_interface_config_t_init(config)) { 4073 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config initialization failed")); 4074 } 4075 4076 /* Dispatch */ 4077 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4078 if(__type__ >= cprimodDispatchTypeCount) { 4079 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4080 } 4081 4082 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_tx_interface_config_get) { 4083 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_tx_interface_config_get(unit, port, config); 4084 _SOC_IF_ERR_EXIT(__rv__); 4085 } else { 4086 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_tx_interface_config_get isn't implemented for driver type")); 4087 } 4088 4089 exit: 4090 SOC_FUNC_RETURN; 4091 4092 } 4093 4094 4095 int cprimod_port_rsvd4_rx_config_set(int unit, int port, const cprimod_port_rsvd4_config_t* config) 4096 { 4097 4098 cprimod_dispatch_type_t __type__; 4099 int __rv__; 4100 SOC_INIT_FUNC_DEFS; 4101 4102 if(SOC_E_NONE != cprimod_port_rsvd4_config_t_validate(config)) { 4103 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config validation failed")); 4104 } 4105 4106 /* Dispatch */ 4107 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4108 if(__type__ >= cprimodDispatchTypeCount) { 4109 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4110 } 4111 4112 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_config_set) { 4113 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_config_set(unit, port, config); 4114 _SOC_IF_ERR_EXIT(__rv__); 4115 } else { 4116 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_rx_config_set isn't implemented for driver type")); 4117 } 4118 4119 exit: 4120 SOC_FUNC_RETURN; 4121 4122 } 4123 4124 4125 int cprimod_port_rsvd4_rx_config_get(int unit, int port, cprimod_port_rsvd4_config_t* config) 4126 { 4127 4128 cprimod_dispatch_type_t __type__; 4129 int __rv__; 4130 SOC_INIT_FUNC_DEFS; 4131 4132 if(config == NULL) { 4133 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config NULL parameter")); 4134 } 4135 if(SOC_E_NONE != cprimod_port_rsvd4_config_t_init(config)) { 4136 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config initialization failed")); 4137 } 4138 4139 /* Dispatch */ 4140 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4141 if(__type__ >= cprimodDispatchTypeCount) { 4142 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4143 } 4144 4145 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_config_get) { 4146 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_config_get(unit, port, config); 4147 _SOC_IF_ERR_EXIT(__rv__); 4148 } else { 4149 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_rx_config_get isn't implemented for driver type")); 4150 } 4151 4152 exit: 4153 SOC_FUNC_RETURN; 4154 4155 } 4156 4157 4158 int cprimod_port_rsvd4_tx_config_set(int unit, int port, const cprimod_port_rsvd4_config_t* config) 4159 { 4160 4161 cprimod_dispatch_type_t __type__; 4162 int __rv__; 4163 SOC_INIT_FUNC_DEFS; 4164 4165 if(SOC_E_NONE != cprimod_port_rsvd4_config_t_validate(config)) { 4166 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config validation failed")); 4167 } 4168 4169 /* Dispatch */ 4170 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4171 if(__type__ >= cprimodDispatchTypeCount) { 4172 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4173 } 4174 4175 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_config_set) { 4176 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_config_set(unit, port, config); 4177 _SOC_IF_ERR_EXIT(__rv__); 4178 } else { 4179 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_tx_config_set isn't implemented for driver type")); 4180 } 4181 4182 exit: 4183 SOC_FUNC_RETURN; 4184 4185 } 4186 4187 4188 int cprimod_port_rsvd4_tx_config_get(int unit, int port, cprimod_port_rsvd4_config_t* config) 4189 { 4190 4191 cprimod_dispatch_type_t __type__; 4192 int __rv__; 4193 SOC_INIT_FUNC_DEFS; 4194 4195 if(config == NULL) { 4196 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config NULL parameter")); 4197 } 4198 if(SOC_E_NONE != cprimod_port_rsvd4_config_t_init(config)) { 4199 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config initialization failed")); 4200 } 4201 4202 /* Dispatch */ 4203 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4204 if(__type__ >= cprimodDispatchTypeCount) { 4205 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4206 } 4207 4208 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_config_get) { 4209 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_config_get(unit, port, config); 4210 _SOC_IF_ERR_EXIT(__rv__); 4211 } else { 4212 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_tx_config_get isn't implemented for driver type")); 4213 } 4214 4215 exit: 4216 SOC_FUNC_RETURN; 4217 4218 } 4219 4220 4221 int cprimod_rsvd4_rx_config_field_t_validate(cprimod_rsvd4_rx_config_field_t cprimod_rsvd4_rx_config_field) 4222 { 4223 SOC_INIT_FUNC_DEFS; 4224 if(cprimod_rsvd4_rx_config_field >= cprimodRsvd4RxConfigCount) { 4225 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 4226 } 4227 4228 exit: 4229 SOC_FUNC_RETURN; 4230 4231 } 4232 4233 int cprimod_rx_config_field_t_validate(cprimod_rx_config_field_t cprimod_rx_config_field) 4234 { 4235 SOC_INIT_FUNC_DEFS; 4236 if(cprimod_rx_config_field >= cprimodRxConfigCount) { 4237 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 4238 } 4239 4240 exit: 4241 SOC_FUNC_RETURN; 4242 4243 } 4244 4245 int cprimod_rsvd4_rx_fsm_state_t_validate(cprimod_rsvd4_rx_fsm_state_t cprimod_rsvd4_rx_fsm_state) 4246 { 4247 SOC_INIT_FUNC_DEFS; 4248 if(cprimod_rsvd4_rx_fsm_state >= cprimodRsvd4RxFsmStateCount) { 4249 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 4250 } 4251 4252 exit: 4253 SOC_FUNC_RETURN; 4254 4255 } 4256 4257 int cprimod_rsvd4_rx_overide_t_validate(cprimod_rsvd4_rx_overide_t cprimod_rsvd4_rx_overide) 4258 { 4259 SOC_INIT_FUNC_DEFS; 4260 if(cprimod_rsvd4_rx_overide >= cprimodRsvd4RxOverideCount) { 4261 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 4262 } 4263 4264 exit: 4265 SOC_FUNC_RETURN; 4266 4267 } 4268 4269 int cprimod_rsvd4_tx_config_field_t_validate(cprimod_rsvd4_tx_config_field_t cprimod_rsvd4_tx_config_field) 4270 { 4271 SOC_INIT_FUNC_DEFS; 4272 if(cprimod_rsvd4_tx_config_field >= cprimodRsvd4TxConfigCount) { 4273 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 4274 } 4275 4276 exit: 4277 SOC_FUNC_RETURN; 4278 4279 } 4280 4281 int cprimod_tx_config_field_t_validate(cprimod_tx_config_field_t cprimod_tx_config_field) 4282 { 4283 SOC_INIT_FUNC_DEFS; 4284 if(cprimod_tx_config_field >= cprimodTxConfigCount) { 4285 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 4286 } 4287 4288 exit: 4289 SOC_FUNC_RETURN; 4290 4291 } 4292 4293 int cprimod_rsvd4_tx_fsm_state_t_validate(cprimod_rsvd4_tx_fsm_state_t cprimod_rsvd4_tx_fsm_state) 4294 { 4295 SOC_INIT_FUNC_DEFS; 4296 if(cprimod_rsvd4_tx_fsm_state >= cprimodRsvd4TxFsmStateCount) { 4297 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 4298 } 4299 4300 exit: 4301 SOC_FUNC_RETURN; 4302 4303 } 4304 4305 int cprimod_rsvd4_tx_overide_t_validate(cprimod_rsvd4_tx_overide_t cprimod_rsvd4_tx_overide) 4306 { 4307 SOC_INIT_FUNC_DEFS; 4308 if(cprimod_rsvd4_tx_overide >= cprimodRsvd4TxOverideCount) { 4309 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 4310 } 4311 4312 exit: 4313 SOC_FUNC_RETURN; 4314 4315 } 4316 4317 int cprimod_rx_pcs_status_t_validate(cprimod_rx_pcs_status_t cprimod_rx_pcs_status) 4318 { 4319 SOC_INIT_FUNC_DEFS; 4320 if(cprimod_rx_pcs_status >= cprimodRxPcsStatusCount) { 4321 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 4322 } 4323 4324 exit: 4325 SOC_FUNC_RETURN; 4326 4327 } 4328 4329 int cprimod_port_rx_frame_optional_config_set(int unit, int port, cprimod_rx_config_field_t field, int value) 4330 { 4331 4332 cprimod_dispatch_type_t __type__; 4333 int __rv__; 4334 SOC_INIT_FUNC_DEFS; 4335 4336 if(SOC_E_NONE != cprimod_rx_config_field_t_validate(field)) { 4337 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("field validation failed")); 4338 } 4339 4340 /* Dispatch */ 4341 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4342 if(__type__ >= cprimodDispatchTypeCount) { 4343 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4344 } 4345 4346 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rx_frame_optional_config_set) { 4347 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rx_frame_optional_config_set(unit, port, field, value); 4348 _SOC_IF_ERR_EXIT(__rv__); 4349 } else { 4350 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rx_frame_optional_config_set isn't implemented for driver type")); 4351 } 4352 4353 exit: 4354 SOC_FUNC_RETURN; 4355 4356 } 4357 4358 4359 int cprimod_port_rx_frame_optional_config_get(int unit, int port, cprimod_rx_config_field_t field, int* value) 4360 { 4361 4362 cprimod_dispatch_type_t __type__; 4363 int __rv__; 4364 SOC_INIT_FUNC_DEFS; 4365 4366 if(SOC_E_NONE != cprimod_rx_config_field_t_validate(field)) { 4367 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("field validation failed")); 4368 } 4369 4370 if(value == NULL) { 4371 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("value NULL parameter")); 4372 } 4373 /* Dispatch */ 4374 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4375 if(__type__ >= cprimodDispatchTypeCount) { 4376 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4377 } 4378 4379 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rx_frame_optional_config_get) { 4380 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rx_frame_optional_config_get(unit, port, field, value); 4381 _SOC_IF_ERR_EXIT(__rv__); 4382 } else { 4383 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rx_frame_optional_config_get isn't implemented for driver type")); 4384 } 4385 4386 exit: 4387 SOC_FUNC_RETURN; 4388 4389 } 4390 4391 4392 int cprimod_port_tx_frame_optional_config_set(int unit, int port, cprimod_tx_config_field_t field, uint32 value) 4393 { 4394 4395 cprimod_dispatch_type_t __type__; 4396 int __rv__; 4397 SOC_INIT_FUNC_DEFS; 4398 4399 if(SOC_E_NONE != cprimod_tx_config_field_t_validate(field)) { 4400 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("field validation failed")); 4401 } 4402 4403 /* Dispatch */ 4404 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4405 if(__type__ >= cprimodDispatchTypeCount) { 4406 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4407 } 4408 4409 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_tx_frame_optional_config_set) { 4410 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_tx_frame_optional_config_set(unit, port, field, value); 4411 _SOC_IF_ERR_EXIT(__rv__); 4412 } else { 4413 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_tx_frame_optional_config_set isn't implemented for driver type")); 4414 } 4415 4416 exit: 4417 SOC_FUNC_RETURN; 4418 4419 } 4420 4421 4422 int cprimod_port_tx_frame_optional_config_get(int unit, int port, cprimod_tx_config_field_t field, uint32* value) 4423 { 4424 4425 cprimod_dispatch_type_t __type__; 4426 int __rv__; 4427 SOC_INIT_FUNC_DEFS; 4428 4429 if(SOC_E_NONE != cprimod_tx_config_field_t_validate(field)) { 4430 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("field validation failed")); 4431 } 4432 4433 if(value == NULL) { 4434 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("value NULL parameter")); 4435 } 4436 /* Dispatch */ 4437 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4438 if(__type__ >= cprimodDispatchTypeCount) { 4439 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4440 } 4441 4442 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_tx_frame_optional_config_get) { 4443 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_tx_frame_optional_config_get(unit, port, field, value); 4444 _SOC_IF_ERR_EXIT(__rv__); 4445 } else { 4446 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_tx_frame_optional_config_get isn't implemented for driver type")); 4447 } 4448 4449 exit: 4450 SOC_FUNC_RETURN; 4451 4452 } 4453 4454 4455 int cprimod_port_rsvd4_rx_frame_optional_config_set(int unit, int port, cprimod_rsvd4_rx_config_field_t field, int value) 4456 { 4457 4458 cprimod_dispatch_type_t __type__; 4459 int __rv__; 4460 SOC_INIT_FUNC_DEFS; 4461 4462 if(SOC_E_NONE != cprimod_rsvd4_rx_config_field_t_validate(field)) { 4463 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("field validation failed")); 4464 } 4465 4466 /* Dispatch */ 4467 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4468 if(__type__ >= cprimodDispatchTypeCount) { 4469 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4470 } 4471 4472 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_frame_optional_config_set) { 4473 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_frame_optional_config_set(unit, port, field, value); 4474 _SOC_IF_ERR_EXIT(__rv__); 4475 } else { 4476 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_rx_frame_optional_config_set isn't implemented for driver type")); 4477 } 4478 4479 exit: 4480 SOC_FUNC_RETURN; 4481 4482 } 4483 4484 4485 int cprimod_port_rsvd4_rx_frame_optional_config_get(int unit, int port, cprimod_rsvd4_rx_config_field_t field, int* value) 4486 { 4487 4488 cprimod_dispatch_type_t __type__; 4489 int __rv__; 4490 SOC_INIT_FUNC_DEFS; 4491 4492 if(SOC_E_NONE != cprimod_rsvd4_rx_config_field_t_validate(field)) { 4493 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("field validation failed")); 4494 } 4495 4496 if(value == NULL) { 4497 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("value NULL parameter")); 4498 } 4499 /* Dispatch */ 4500 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4501 if(__type__ >= cprimodDispatchTypeCount) { 4502 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4503 } 4504 4505 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_frame_optional_config_get) { 4506 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_frame_optional_config_get(unit, port, field, value); 4507 _SOC_IF_ERR_EXIT(__rv__); 4508 } else { 4509 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_rx_frame_optional_config_get isn't implemented for driver type")); 4510 } 4511 4512 exit: 4513 SOC_FUNC_RETURN; 4514 4515 } 4516 4517 4518 int cprimod_port_rsvd4_rx_speed_set(int unit, int port, const phymod_phy_access_t* phy, cprimod_port_rsvd4_speed_mult_t speed) 4519 { 4520 4521 cprimod_dispatch_type_t __type__; 4522 int __rv__; 4523 SOC_INIT_FUNC_DEFS; 4524 4525 if(SOC_E_NONE != cprimod_port_rsvd4_speed_mult_t_validate(speed)) { 4526 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("speed validation failed")); 4527 } 4528 4529 /* Dispatch */ 4530 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4531 if(__type__ >= cprimodDispatchTypeCount) { 4532 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4533 } 4534 4535 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_speed_set) { 4536 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_speed_set(unit, port, phy, speed); 4537 _SOC_IF_ERR_EXIT(__rv__); 4538 } else { 4539 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_rx_speed_set isn't implemented for driver type")); 4540 } 4541 4542 exit: 4543 SOC_FUNC_RETURN; 4544 4545 } 4546 4547 4548 int cprimod_port_rsvd4_rx_speed_get(int unit, int port, cprimod_port_rsvd4_speed_mult_t* speed) 4549 { 4550 4551 cprimod_dispatch_type_t __type__; 4552 int __rv__; 4553 SOC_INIT_FUNC_DEFS; 4554 4555 if(speed == NULL) { 4556 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("speed NULL parameter")); 4557 } 4558 /* Dispatch */ 4559 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4560 if(__type__ >= cprimodDispatchTypeCount) { 4561 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4562 } 4563 4564 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_speed_get) { 4565 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_speed_get(unit, port, speed); 4566 _SOC_IF_ERR_EXIT(__rv__); 4567 } else { 4568 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_rx_speed_get isn't implemented for driver type")); 4569 } 4570 4571 exit: 4572 SOC_FUNC_RETURN; 4573 4574 } 4575 4576 4577 int cprimod_port_rsvd4_tx_speed_set(int unit, int port, const phymod_phy_access_t* phy, cprimod_port_rsvd4_speed_mult_t speed) 4578 { 4579 4580 cprimod_dispatch_type_t __type__; 4581 int __rv__; 4582 SOC_INIT_FUNC_DEFS; 4583 4584 if(SOC_E_NONE != cprimod_port_rsvd4_speed_mult_t_validate(speed)) { 4585 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("speed validation failed")); 4586 } 4587 4588 /* Dispatch */ 4589 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4590 if(__type__ >= cprimodDispatchTypeCount) { 4591 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4592 } 4593 4594 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_speed_set) { 4595 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_speed_set(unit, port, phy, speed); 4596 _SOC_IF_ERR_EXIT(__rv__); 4597 } else { 4598 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_tx_speed_set isn't implemented for driver type")); 4599 } 4600 4601 exit: 4602 SOC_FUNC_RETURN; 4603 4604 } 4605 4606 4607 int cprimod_port_rsvd4_tx_speed_get(int unit, int port, cprimod_port_rsvd4_speed_mult_t* speed) 4608 { 4609 4610 cprimod_dispatch_type_t __type__; 4611 int __rv__; 4612 SOC_INIT_FUNC_DEFS; 4613 4614 if(speed == NULL) { 4615 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("speed NULL parameter")); 4616 } 4617 /* Dispatch */ 4618 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4619 if(__type__ >= cprimodDispatchTypeCount) { 4620 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4621 } 4622 4623 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_speed_get) { 4624 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_speed_get(unit, port, speed); 4625 _SOC_IF_ERR_EXIT(__rv__); 4626 } else { 4627 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_tx_speed_get isn't implemented for driver type")); 4628 } 4629 4630 exit: 4631 SOC_FUNC_RETURN; 4632 4633 } 4634 4635 4636 int cprimod_port_rsvd4_rx_fsm_state_set(int unit, int port, cprimod_rsvd4_rx_fsm_state_t state) 4637 { 4638 4639 cprimod_dispatch_type_t __type__; 4640 int __rv__; 4641 SOC_INIT_FUNC_DEFS; 4642 4643 if(SOC_E_NONE != cprimod_rsvd4_rx_fsm_state_t_validate(state)) { 4644 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("state validation failed")); 4645 } 4646 4647 /* Dispatch */ 4648 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4649 if(__type__ >= cprimodDispatchTypeCount) { 4650 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4651 } 4652 4653 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_fsm_state_set) { 4654 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_fsm_state_set(unit, port, state); 4655 _SOC_IF_ERR_EXIT(__rv__); 4656 } else { 4657 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_rx_fsm_state_set isn't implemented for driver type")); 4658 } 4659 4660 exit: 4661 SOC_FUNC_RETURN; 4662 4663 } 4664 4665 4666 int cprimod_port_rsvd4_rx_fsm_state_get(int unit, int port, cprimod_rsvd4_rx_fsm_state_t* state) 4667 { 4668 4669 cprimod_dispatch_type_t __type__; 4670 int __rv__; 4671 SOC_INIT_FUNC_DEFS; 4672 4673 if(state == NULL) { 4674 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("state NULL parameter")); 4675 } 4676 /* Dispatch */ 4677 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4678 if(__type__ >= cprimodDispatchTypeCount) { 4679 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4680 } 4681 4682 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_fsm_state_get) { 4683 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_fsm_state_get(unit, port, state); 4684 _SOC_IF_ERR_EXIT(__rv__); 4685 } else { 4686 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_rx_fsm_state_get isn't implemented for driver type")); 4687 } 4688 4689 exit: 4690 SOC_FUNC_RETURN; 4691 4692 } 4693 4694 4695 int cprimod_port_rsvd4_rx_overide_set(int unit, int port, cprimod_rsvd4_rx_overide_t parameter, int enable, int value) 4696 { 4697 4698 cprimod_dispatch_type_t __type__; 4699 int __rv__; 4700 SOC_INIT_FUNC_DEFS; 4701 4702 if(SOC_E_NONE != cprimod_rsvd4_rx_overide_t_validate(parameter)) { 4703 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("parameter validation failed")); 4704 } 4705 4706 /* Dispatch */ 4707 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4708 if(__type__ >= cprimodDispatchTypeCount) { 4709 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4710 } 4711 4712 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_overide_set) { 4713 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_overide_set(unit, port, parameter, enable, value); 4714 _SOC_IF_ERR_EXIT(__rv__); 4715 } else { 4716 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_rx_overide_set isn't implemented for driver type")); 4717 } 4718 4719 exit: 4720 SOC_FUNC_RETURN; 4721 4722 } 4723 4724 4725 int cprimod_port_rsvd4_rx_overide_get(int unit, int port, cprimod_rsvd4_rx_overide_t parameter, int* enable, int* value) 4726 { 4727 4728 cprimod_dispatch_type_t __type__; 4729 int __rv__; 4730 SOC_INIT_FUNC_DEFS; 4731 4732 if(SOC_E_NONE != cprimod_rsvd4_rx_overide_t_validate(parameter)) { 4733 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("parameter validation failed")); 4734 } 4735 4736 if(enable == NULL) { 4737 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("enable NULL parameter")); 4738 } 4739 if(value == NULL) { 4740 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("value NULL parameter")); 4741 } 4742 /* Dispatch */ 4743 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4744 if(__type__ >= cprimodDispatchTypeCount) { 4745 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4746 } 4747 4748 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_overide_get) { 4749 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_rx_overide_get(unit, port, parameter, enable, value); 4750 _SOC_IF_ERR_EXIT(__rv__); 4751 } else { 4752 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_rx_overide_get isn't implemented for driver type")); 4753 } 4754 4755 exit: 4756 SOC_FUNC_RETURN; 4757 4758 } 4759 4760 4761 int cprimod_port_rsvd4_tx_frame_optional_config_set(int unit, int port, cprimod_rsvd4_tx_config_field_t field, int value) 4762 { 4763 4764 cprimod_dispatch_type_t __type__; 4765 int __rv__; 4766 SOC_INIT_FUNC_DEFS; 4767 4768 if(SOC_E_NONE != cprimod_rsvd4_tx_config_field_t_validate(field)) { 4769 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("field validation failed")); 4770 } 4771 4772 /* Dispatch */ 4773 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4774 if(__type__ >= cprimodDispatchTypeCount) { 4775 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4776 } 4777 4778 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_frame_optional_config_set) { 4779 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_frame_optional_config_set(unit, port, field, value); 4780 _SOC_IF_ERR_EXIT(__rv__); 4781 } else { 4782 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_tx_frame_optional_config_set isn't implemented for driver type")); 4783 } 4784 4785 exit: 4786 SOC_FUNC_RETURN; 4787 4788 } 4789 4790 4791 int cprimod_port_rsvd4_tx_frame_optional_config_get(int unit, int port, cprimod_rsvd4_tx_config_field_t field, int* value) 4792 { 4793 4794 cprimod_dispatch_type_t __type__; 4795 int __rv__; 4796 SOC_INIT_FUNC_DEFS; 4797 4798 if(SOC_E_NONE != cprimod_rsvd4_tx_config_field_t_validate(field)) { 4799 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("field validation failed")); 4800 } 4801 4802 if(value == NULL) { 4803 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("value NULL parameter")); 4804 } 4805 /* Dispatch */ 4806 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4807 if(__type__ >= cprimodDispatchTypeCount) { 4808 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4809 } 4810 4811 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_frame_optional_config_get) { 4812 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_frame_optional_config_get(unit, port, field, value); 4813 _SOC_IF_ERR_EXIT(__rv__); 4814 } else { 4815 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_tx_frame_optional_config_get isn't implemented for driver type")); 4816 } 4817 4818 exit: 4819 SOC_FUNC_RETURN; 4820 4821 } 4822 4823 4824 int cprimod_port_rsvd4_tx_fsm_state_set(int unit, int port, cprimod_rsvd4_tx_fsm_state_t state) 4825 { 4826 4827 cprimod_dispatch_type_t __type__; 4828 int __rv__; 4829 SOC_INIT_FUNC_DEFS; 4830 4831 if(SOC_E_NONE != cprimod_rsvd4_tx_fsm_state_t_validate(state)) { 4832 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("state validation failed")); 4833 } 4834 4835 /* Dispatch */ 4836 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4837 if(__type__ >= cprimodDispatchTypeCount) { 4838 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4839 } 4840 4841 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_fsm_state_set) { 4842 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_fsm_state_set(unit, port, state); 4843 _SOC_IF_ERR_EXIT(__rv__); 4844 } else { 4845 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_tx_fsm_state_set isn't implemented for driver type")); 4846 } 4847 4848 exit: 4849 SOC_FUNC_RETURN; 4850 4851 } 4852 4853 4854 int cprimod_port_rsvd4_tx_fsm_state_get(int unit, int port, cprimod_rsvd4_tx_fsm_state_t* state) 4855 { 4856 4857 cprimod_dispatch_type_t __type__; 4858 int __rv__; 4859 SOC_INIT_FUNC_DEFS; 4860 4861 if(state == NULL) { 4862 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("state NULL parameter")); 4863 } 4864 /* Dispatch */ 4865 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4866 if(__type__ >= cprimodDispatchTypeCount) { 4867 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4868 } 4869 4870 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_fsm_state_get) { 4871 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_fsm_state_get(unit, port, state); 4872 _SOC_IF_ERR_EXIT(__rv__); 4873 } else { 4874 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_tx_fsm_state_get isn't implemented for driver type")); 4875 } 4876 4877 exit: 4878 SOC_FUNC_RETURN; 4879 4880 } 4881 4882 4883 int cprimod_port_rsvd4_tx_overide_set(int unit, int port, cprimod_rsvd4_tx_overide_t parameter, int enable, int value) 4884 { 4885 4886 cprimod_dispatch_type_t __type__; 4887 int __rv__; 4888 SOC_INIT_FUNC_DEFS; 4889 4890 if(SOC_E_NONE != cprimod_rsvd4_tx_overide_t_validate(parameter)) { 4891 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("parameter validation failed")); 4892 } 4893 4894 /* Dispatch */ 4895 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4896 if(__type__ >= cprimodDispatchTypeCount) { 4897 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4898 } 4899 4900 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_overide_set) { 4901 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_overide_set(unit, port, parameter, enable, value); 4902 _SOC_IF_ERR_EXIT(__rv__); 4903 } else { 4904 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_tx_overide_set isn't implemented for driver type")); 4905 } 4906 4907 exit: 4908 SOC_FUNC_RETURN; 4909 4910 } 4911 4912 4913 int cprimod_port_rsvd4_tx_overide_get(int unit, int port, cprimod_rsvd4_tx_overide_t parameter, int* enable, int* value) 4914 { 4915 4916 cprimod_dispatch_type_t __type__; 4917 int __rv__; 4918 SOC_INIT_FUNC_DEFS; 4919 4920 if(SOC_E_NONE != cprimod_rsvd4_tx_overide_t_validate(parameter)) { 4921 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("parameter validation failed")); 4922 } 4923 4924 if(enable == NULL) { 4925 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("enable NULL parameter")); 4926 } 4927 if(value == NULL) { 4928 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("value NULL parameter")); 4929 } 4930 /* Dispatch */ 4931 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4932 if(__type__ >= cprimodDispatchTypeCount) { 4933 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4934 } 4935 4936 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_overide_get) { 4937 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rsvd4_tx_overide_get(unit, port, parameter, enable, value); 4938 _SOC_IF_ERR_EXIT(__rv__); 4939 } else { 4940 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rsvd4_tx_overide_get isn't implemented for driver type")); 4941 } 4942 4943 exit: 4944 SOC_FUNC_RETURN; 4945 4946 } 4947 4948 4949 int cprimod_port_rx_pcs_status_get(int unit, int port, cprimod_rx_pcs_status_t status, uint32* value) 4950 { 4951 4952 cprimod_dispatch_type_t __type__; 4953 int __rv__; 4954 SOC_INIT_FUNC_DEFS; 4955 4956 if(SOC_E_NONE != cprimod_rx_pcs_status_t_validate(status)) { 4957 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("status validation failed")); 4958 } 4959 4960 if(value == NULL) { 4961 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("value NULL parameter")); 4962 } 4963 /* Dispatch */ 4964 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 4965 if(__type__ >= cprimodDispatchTypeCount) { 4966 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 4967 } 4968 4969 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_rx_pcs_status_get) { 4970 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_rx_pcs_status_get(unit, port, status, value); 4971 _SOC_IF_ERR_EXIT(__rv__); 4972 } else { 4973 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_rx_pcs_status_get isn't implemented for driver type")); 4974 } 4975 4976 exit: 4977 SOC_FUNC_RETURN; 4978 4979 } 4980 4981 4982 int cprimod_polarity_t_validate(const cprimod_polarity_t* cprimod_polarity) 4983 { 4984 SOC_INIT_FUNC_DEFS; 4985 if(cprimod_polarity == NULL) { 4986 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 4987 } 4988 4989 4990 4991 exit: 4992 SOC_FUNC_RETURN; 4993 4994 } 4995 4996 int cprimod_polarity_t_init(cprimod_polarity_t* cprimod_polarity) 4997 { 4998 SOC_INIT_FUNC_DEFS; 4999 5000 if(cprimod_polarity == NULL){ 5001 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_polarity NULL parameter")); 5002 } 5003 sal_memset(cprimod_polarity, 0, sizeof(cprimod_polarity_t)); 5004 cprimod_polarity->rx_polarity = 0x0; 5005 cprimod_polarity->tx_polarity = 0x0; 5006 5007 5008 exit: 5009 SOC_FUNC_RETURN; 5010 5011 } 5012 5013 int cprimod_lane_map_t_validate(const cprimod_lane_map_t* cprimod_lane_map) 5014 { 5015 SOC_INIT_FUNC_DEFS; 5016 if(cprimod_lane_map == NULL) { 5017 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 5018 } 5019 5020 5021 5022 exit: 5023 SOC_FUNC_RETURN; 5024 5025 } 5026 5027 int cprimod_lane_map_t_init(cprimod_lane_map_t* cprimod_lane_map) 5028 { 5029 SOC_INIT_FUNC_DEFS; 5030 5031 if(cprimod_lane_map == NULL){ 5032 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_lane_map NULL parameter")); 5033 } 5034 sal_memset(cprimod_lane_map, 0, sizeof(cprimod_lane_map_t)); 5035 cprimod_lane_map->num_of_lanes = 0; 5036 5037 5038 exit: 5039 SOC_FUNC_RETURN; 5040 5041 } 5042 5043 int cprimod_firmware_core_config_t_validate(const cprimod_firmware_core_config_t* cprimod_firmware_core_config) 5044 { 5045 SOC_INIT_FUNC_DEFS; 5046 if(cprimod_firmware_core_config == NULL) { 5047 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 5048 } 5049 5050 5051 5052 exit: 5053 SOC_FUNC_RETURN; 5054 5055 } 5056 5057 int cprimod_firmware_core_config_t_init(cprimod_firmware_core_config_t* cprimod_firmware_core_config) 5058 { 5059 SOC_INIT_FUNC_DEFS; 5060 5061 if(cprimod_firmware_core_config == NULL){ 5062 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_firmware_core_config NULL parameter")); 5063 } 5064 sal_memset(cprimod_firmware_core_config, 0, sizeof(cprimod_firmware_core_config_t)); 5065 cprimod_firmware_core_config->CoreConfigFromPCS = 0x0; 5066 cprimod_firmware_core_config->VcoRate = 0; 5067 cprimod_firmware_core_config->disable_write_pll_iqp = 0; 5068 5069 5070 exit: 5071 SOC_FUNC_RETURN; 5072 5073 } 5074 5075 int cprimod_firmware_load_force_t_validate(cprimod_firmware_load_force_t cprimod_firmware_load_force) 5076 { 5077 SOC_INIT_FUNC_DEFS; 5078 if(cprimod_firmware_load_force >= cprimodFirmwareLoadCount) { 5079 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 5080 } 5081 5082 exit: 5083 SOC_FUNC_RETURN; 5084 5085 } 5086 5087 int cprimod_firmware_load_method_t_validate(cprimod_firmware_load_method_t cprimod_firmware_load_method) 5088 { 5089 SOC_INIT_FUNC_DEFS; 5090 if(cprimod_firmware_load_method >= cprimodFirmwareLoadMethodCount) { 5091 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 5092 } 5093 5094 exit: 5095 SOC_FUNC_RETURN; 5096 5097 } 5098 5099 int cprimod_tx_input_voltage_t_validate(cprimod_tx_input_voltage_t cprimod_tx_input_voltage) 5100 { 5101 SOC_INIT_FUNC_DEFS; 5102 if(cprimod_tx_input_voltage >= cprimodTxInputVoltageCount) { 5103 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 5104 } 5105 5106 exit: 5107 SOC_FUNC_RETURN; 5108 5109 } 5110 5111 int cprimod_afe_pll_t_validate(const cprimod_afe_pll_t* cprimod_afe_pll) 5112 { 5113 SOC_INIT_FUNC_DEFS; 5114 if(cprimod_afe_pll == NULL) { 5115 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 5116 } 5117 5118 5119 5120 exit: 5121 SOC_FUNC_RETURN; 5122 5123 } 5124 5125 int cprimod_afe_pll_t_init(cprimod_afe_pll_t* cprimod_afe_pll) 5126 { 5127 SOC_INIT_FUNC_DEFS; 5128 5129 if(cprimod_afe_pll == NULL){ 5130 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_afe_pll NULL parameter")); 5131 } 5132 sal_memset(cprimod_afe_pll, 0, sizeof(cprimod_afe_pll_t)); 5133 cprimod_afe_pll->afe_pll_change_default = 0; 5134 cprimod_afe_pll->ams_pll_iqp = 0xf; 5135 cprimod_afe_pll->ams_pll_en_hrz = 0; 5136 5137 5138 exit: 5139 SOC_FUNC_RETURN; 5140 5141 } 5142 5143 int cprimod_pll_parm_t_validate(const cprimod_pll_parm_t* cprimod_pll_parm) 5144 { 5145 SOC_INIT_FUNC_DEFS; 5146 if(cprimod_pll_parm == NULL) { 5147 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 5148 } 5149 5150 if(SOC_E_NONE != cprimod_afe_pll_t_validate(&cprimod_pll_parm->afe_pll)) { 5151 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("afe_pll validation failed")); 5152 } 5153 5154 5155 5156 exit: 5157 SOC_FUNC_RETURN; 5158 5159 } 5160 5161 int cprimod_pll_parm_t_init(cprimod_pll_parm_t* cprimod_pll_parm) 5162 { 5163 SOC_INIT_FUNC_DEFS; 5164 5165 if(cprimod_pll_parm == NULL){ 5166 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_pll_parm NULL parameter")); 5167 } 5168 sal_memset(cprimod_pll_parm, 0, sizeof(cprimod_pll_parm_t)); 5169 cprimod_pll_parm->change_pll = 0xf; 5170 cprimod_pll_parm->vcoRate = 0xf; 5171 cprimod_pll_parm->div2 = 0; 5172 cprimod_pll_parm->div4 = 0; 5173 if(SOC_E_NONE != cprimod_afe_pll_t_init(&cprimod_pll_parm->afe_pll)) { 5174 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("afe_pll initialization failed")); 5175 } 5176 5177 5178 5179 exit: 5180 SOC_FUNC_RETURN; 5181 5182 } 5183 5184 int cprimod_core_init_config_t_validate(const cprimod_core_init_config_t* cprimod_core_init_config) 5185 { 5186 SOC_INIT_FUNC_DEFS; 5187 if(cprimod_core_init_config == NULL) { 5188 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 5189 } 5190 5191 if(SOC_E_NONE != cprimod_lane_map_t_validate(&cprimod_core_init_config->lane_map)) { 5192 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("lane_map validation failed")); 5193 } 5194 5195 if(SOC_E_NONE != cprimod_firmware_load_method_t_validate(cprimod_core_init_config->firmware_load_method)) { 5196 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("firmware_load_method validation failed")); 5197 } 5198 5199 if(SOC_E_NONE != cprimod_firmware_core_config_t_validate(&cprimod_core_init_config->firmware_core_config)) { 5200 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("firmware_core_config validation failed")); 5201 } 5202 5203 if(SOC_E_NONE != cprimod_tx_input_voltage_t_validate(cprimod_core_init_config->tx_input_voltage)) { 5204 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tx_input_voltage validation failed")); 5205 } 5206 5207 if(SOC_E_NONE != cprimod_pll_parm_t_validate(&cprimod_core_init_config->pll0)) { 5208 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pll0 validation failed")); 5209 } 5210 5211 if(SOC_E_NONE != cprimod_pll_parm_t_validate(&cprimod_core_init_config->pll1)) { 5212 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pll1 validation failed")); 5213 } 5214 5215 5216 5217 exit: 5218 SOC_FUNC_RETURN; 5219 5220 } 5221 5222 int cprimod_core_init_config_t_init(cprimod_core_init_config_t* cprimod_core_init_config) 5223 { 5224 SOC_INIT_FUNC_DEFS; 5225 5226 if(cprimod_core_init_config == NULL){ 5227 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_core_init_config NULL parameter")); 5228 } 5229 sal_memset(cprimod_core_init_config, 0, sizeof(cprimod_core_init_config_t)); 5230 if(SOC_E_NONE != cprimod_lane_map_t_init(&cprimod_core_init_config->lane_map)) { 5231 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("lane_map initialization failed")); 5232 } 5233 5234 cprimod_core_init_config->firmware_load_method = cprimodFirmwareLoadMethodInternal; 5235 cprimod_core_init_config->firmware_loader = NULL; 5236 if(SOC_E_NONE != cprimod_firmware_core_config_t_init(&cprimod_core_init_config->firmware_core_config)) { 5237 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("firmware_core_config initialization failed")); 5238 } 5239 5240 cprimod_core_init_config->flags = 0; 5241 if(SOC_E_NONE != cprimod_pll_parm_t_init(&cprimod_core_init_config->pll0)) { 5242 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pll0 initialization failed")); 5243 } 5244 5245 if(SOC_E_NONE != cprimod_pll_parm_t_init(&cprimod_core_init_config->pll1)) { 5246 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pll1 initialization failed")); 5247 } 5248 5249 5250 5251 exit: 5252 SOC_FUNC_RETURN; 5253 5254 } 5255 5256 int cprimod_core_status_t_validate(const cprimod_core_status_t* cprimod_core_status) 5257 { 5258 SOC_INIT_FUNC_DEFS; 5259 if(cprimod_core_status == NULL) { 5260 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 5261 } 5262 5263 5264 5265 exit: 5266 SOC_FUNC_RETURN; 5267 5268 } 5269 5270 int cprimod_core_status_t_init(cprimod_core_status_t* cprimod_core_status) 5271 { 5272 SOC_INIT_FUNC_DEFS; 5273 5274 if(cprimod_core_status == NULL){ 5275 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_core_status NULL parameter")); 5276 } 5277 sal_memset(cprimod_core_status, 0, sizeof(cprimod_core_status_t)); 5278 5279 5280 exit: 5281 SOC_FUNC_RETURN; 5282 5283 } 5284 5285 int cprimod_core_init(int unit, int port, const phymod_core_access_t* phy, const phymod_core_init_config_t* init_config, phymod_core_status_t* core_status) 5286 { 5287 5288 cprimod_dispatch_type_t __type__; 5289 int __rv__; 5290 SOC_INIT_FUNC_DEFS; 5291 5292 if(core_status == NULL) { 5293 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("core_status NULL parameter")); 5294 } 5295 /* Dispatch */ 5296 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5297 if(__type__ >= cprimodDispatchTypeCount) { 5298 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5299 } 5300 5301 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_core_init) { 5302 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_core_init(unit, port, phy, init_config, core_status); 5303 _SOC_IF_ERR_EXIT(__rv__); 5304 } else { 5305 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_core_init isn't implemented for driver type")); 5306 } 5307 5308 exit: 5309 SOC_FUNC_RETURN; 5310 5311 } 5312 5313 5314 int cprimod_port_init_config_t_validate(const cprimod_port_init_config_t* cprimod_port_init_config) 5315 { 5316 SOC_INIT_FUNC_DEFS; 5317 if(cprimod_port_init_config == NULL) { 5318 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 5319 } 5320 5321 if(SOC_E_NONE != cprimod_port_interface_type_t_validate(cprimod_port_init_config->interface)) { 5322 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("interface validation failed")); 5323 } 5324 5325 if(SOC_E_NONE != cprimod_port_speed_t_validate(cprimod_port_init_config->tx_cpri_speed)) { 5326 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tx_cpri_speed validation failed")); 5327 } 5328 5329 if(SOC_E_NONE != cprimod_port_speed_t_validate(cprimod_port_init_config->rx_cpri_speed)) { 5330 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("rx_cpri_speed validation failed")); 5331 } 5332 5333 if(SOC_E_NONE != cprimod_port_rsvd4_speed_mult_t_validate(cprimod_port_init_config->tx_rsvd4_speed)) { 5334 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("tx_rsvd4_speed validation failed")); 5335 } 5336 5337 if(SOC_E_NONE != cprimod_port_rsvd4_speed_mult_t_validate(cprimod_port_init_config->rx_rsvd4_speed)) { 5338 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("rx_rsvd4_speed validation failed")); 5339 } 5340 5341 if(SOC_E_NONE != cprimod_pll_num_in_use_t_validate(cprimod_port_init_config->pll_in_use)) { 5342 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pll_in_use validation failed")); 5343 } 5344 5345 5346 5347 exit: 5348 SOC_FUNC_RETURN; 5349 5350 } 5351 5352 int cprimod_port_init_config_t_init(cprimod_port_init_config_t* cprimod_port_init_config) 5353 { 5354 SOC_INIT_FUNC_DEFS; 5355 5356 if(cprimod_port_init_config == NULL){ 5357 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_port_init_config NULL parameter")); 5358 } 5359 sal_memset(cprimod_port_init_config, 0, sizeof(cprimod_port_init_config_t)); 5360 cprimod_port_init_config->tx_params_user_config = 0; 5361 cprimod_port_init_config->parity_enable = 0; 5362 5363 5364 exit: 5365 SOC_FUNC_RETURN; 5366 5367 } 5368 5369 int cprimod_port_init(int unit, int port, const phymod_phy_access_t* phy, const cprimod_port_init_config_t* port_config) 5370 { 5371 5372 cprimod_dispatch_type_t __type__; 5373 int __rv__; 5374 SOC_INIT_FUNC_DEFS; 5375 5376 if(SOC_E_NONE != cprimod_port_init_config_t_validate(port_config)) { 5377 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("port_config validation failed")); 5378 } 5379 5380 /* Dispatch */ 5381 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5382 if(__type__ >= cprimodDispatchTypeCount) { 5383 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5384 } 5385 5386 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_init) { 5387 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_init(unit, port, phy, port_config); 5388 _SOC_IF_ERR_EXIT(__rv__); 5389 } else { 5390 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_init isn't implemented for driver type")); 5391 } 5392 5393 exit: 5394 SOC_FUNC_RETURN; 5395 5396 } 5397 5398 5399 int cprimod_rsvd4_rx_master_frame_sync_config_set(int unit, int port, uint32 master_frame_number, uint64 master_frame_start_time) 5400 { 5401 5402 cprimod_dispatch_type_t __type__; 5403 int __rv__; 5404 SOC_INIT_FUNC_DEFS; 5405 5406 /* Dispatch */ 5407 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5408 if(__type__ >= cprimodDispatchTypeCount) { 5409 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5410 } 5411 5412 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_master_frame_sync_config_set) { 5413 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_master_frame_sync_config_set(unit, port, master_frame_number, master_frame_start_time); 5414 _SOC_IF_ERR_EXIT(__rv__); 5415 } else { 5416 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_rx_master_frame_sync_config_set isn't implemented for driver type")); 5417 } 5418 5419 exit: 5420 SOC_FUNC_RETURN; 5421 5422 } 5423 5424 5425 int cprimod_rsvd4_rx_master_frame_sync_config_get(int unit, int port, uint32* master_frame_number, uint64* master_frame_start_time) 5426 { 5427 5428 cprimod_dispatch_type_t __type__; 5429 int __rv__; 5430 SOC_INIT_FUNC_DEFS; 5431 5432 if(master_frame_number == NULL) { 5433 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("master_frame_number NULL parameter")); 5434 } 5435 if(master_frame_start_time == NULL) { 5436 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("master_frame_start_time NULL parameter")); 5437 } 5438 /* Dispatch */ 5439 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5440 if(__type__ >= cprimodDispatchTypeCount) { 5441 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5442 } 5443 5444 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_master_frame_sync_config_get) { 5445 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_master_frame_sync_config_get(unit, port, master_frame_number, master_frame_start_time); 5446 _SOC_IF_ERR_EXIT(__rv__); 5447 } else { 5448 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_rx_master_frame_sync_config_get isn't implemented for driver type")); 5449 } 5450 5451 exit: 5452 SOC_FUNC_RETURN; 5453 5454 } 5455 5456 5457 int cprimod_cpri_rx_control_word_sync_info_get(int unit, int port, uint32* hyper_frame_num, uint32* radio_frame_num) 5458 { 5459 5460 cprimod_dispatch_type_t __type__; 5461 int __rv__; 5462 SOC_INIT_FUNC_DEFS; 5463 5464 if(hyper_frame_num == NULL) { 5465 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("hyper_frame_num NULL parameter")); 5466 } 5467 if(radio_frame_num == NULL) { 5468 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("radio_frame_num NULL parameter")); 5469 } 5470 /* Dispatch */ 5471 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5472 if(__type__ >= cprimodDispatchTypeCount) { 5473 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5474 } 5475 5476 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_control_word_sync_info_get) { 5477 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_control_word_sync_info_get(unit, port, hyper_frame_num, radio_frame_num); 5478 _SOC_IF_ERR_EXIT(__rv__); 5479 } else { 5480 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_rx_control_word_sync_info_get isn't implemented for driver type")); 5481 } 5482 5483 exit: 5484 SOC_FUNC_RETURN; 5485 5486 } 5487 5488 5489 int cprimod_cpri_rx_control_word_l1_signal_info_get(int unit, int port, cprimod_cpri_cw_l1_protocol_info_t* l1_info) 5490 { 5491 5492 cprimod_dispatch_type_t __type__; 5493 int __rv__; 5494 SOC_INIT_FUNC_DEFS; 5495 5496 if(l1_info == NULL) { 5497 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("l1_info NULL parameter")); 5498 } 5499 /* Dispatch */ 5500 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5501 if(__type__ >= cprimodDispatchTypeCount) { 5502 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5503 } 5504 5505 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_control_word_l1_signal_info_get) { 5506 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_control_word_l1_signal_info_get(unit, port, l1_info); 5507 _SOC_IF_ERR_EXIT(__rv__); 5508 } else { 5509 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_rx_control_word_l1_signal_info_get isn't implemented for driver type")); 5510 } 5511 5512 exit: 5513 SOC_FUNC_RETURN; 5514 5515 } 5516 5517 5518 int cprimod_cpri_rx_control_word_l1_signal_signal_protection_set(int unit, int port, uint32 signal_map, uint32 enable) 5519 { 5520 5521 cprimod_dispatch_type_t __type__; 5522 int __rv__; 5523 SOC_INIT_FUNC_DEFS; 5524 5525 /* Dispatch */ 5526 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5527 if(__type__ >= cprimodDispatchTypeCount) { 5528 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5529 } 5530 5531 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_control_word_l1_signal_signal_protection_set) { 5532 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_control_word_l1_signal_signal_protection_set(unit, port, signal_map, enable); 5533 _SOC_IF_ERR_EXIT(__rv__); 5534 } else { 5535 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_rx_control_word_l1_signal_signal_protection_set isn't implemented for driver type")); 5536 } 5537 5538 exit: 5539 SOC_FUNC_RETURN; 5540 5541 } 5542 5543 5544 int cprimod_cpri_rx_control_word_l1_signal_signal_protection_get(int unit, int port, uint32 signal_map, uint32* enable) 5545 { 5546 5547 cprimod_dispatch_type_t __type__; 5548 int __rv__; 5549 SOC_INIT_FUNC_DEFS; 5550 5551 if(enable == NULL) { 5552 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("enable NULL parameter")); 5553 } 5554 /* Dispatch */ 5555 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5556 if(__type__ >= cprimodDispatchTypeCount) { 5557 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5558 } 5559 5560 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_control_word_l1_signal_signal_protection_get) { 5561 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_rx_control_word_l1_signal_signal_protection_get(unit, port, signal_map, enable); 5562 _SOC_IF_ERR_EXIT(__rv__); 5563 } else { 5564 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_rx_control_word_l1_signal_signal_protection_get isn't implemented for driver type")); 5565 } 5566 5567 exit: 5568 SOC_FUNC_RETURN; 5569 5570 } 5571 5572 5573 int cprimod_hdlc_crc_byte_order_t_validate(cprimod_hdlc_crc_byte_order_t cprimod_hdlc_crc_byte_order) 5574 { 5575 SOC_INIT_FUNC_DEFS; 5576 if(cprimod_hdlc_crc_byte_order >= cprimodHdlcCrcByteOrderCount) { 5577 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 5578 } 5579 5580 exit: 5581 SOC_FUNC_RETURN; 5582 5583 } 5584 5585 int cprimod_hdlc_fcs_err_check_t_validate(cprimod_hdlc_fcs_err_check_t cprimod_hdlc_fcs_err_check) 5586 { 5587 SOC_INIT_FUNC_DEFS; 5588 if(cprimod_hdlc_fcs_err_check >= cprimodHdlcFcsErrCount) { 5589 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 5590 } 5591 5592 exit: 5593 SOC_FUNC_RETURN; 5594 5595 } 5596 5597 int cprimod_slow_hdlc_config_info_t_validate(const cprimod_slow_hdlc_config_info_t* cprimod_slow_hdlc_config_info) 5598 { 5599 SOC_INIT_FUNC_DEFS; 5600 if(cprimod_slow_hdlc_config_info == NULL) { 5601 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 5602 } 5603 5604 5605 5606 exit: 5607 SOC_FUNC_RETURN; 5608 5609 } 5610 5611 int cprimod_slow_hdlc_config_info_t_init(cprimod_slow_hdlc_config_info_t* cprimod_slow_hdlc_config_info) 5612 { 5613 SOC_INIT_FUNC_DEFS; 5614 5615 if(cprimod_slow_hdlc_config_info == NULL){ 5616 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_slow_hdlc_config_info NULL parameter")); 5617 } 5618 sal_memset(cprimod_slow_hdlc_config_info, 0, sizeof(cprimod_slow_hdlc_config_info_t)); 5619 cprimod_slow_hdlc_config_info->tx_crc_mode = 0; 5620 cprimod_slow_hdlc_config_info->tx_flag_size = 0; 5621 cprimod_slow_hdlc_config_info->tx_filling_flag_pattern = 0; 5622 cprimod_slow_hdlc_config_info->crc_init_val = 0; 5623 cprimod_slow_hdlc_config_info->fcs_size = 0; 5624 5625 5626 exit: 5627 SOC_FUNC_RETURN; 5628 5629 } 5630 5631 int cprimod_cpri_port_cw_slow_hdlc_config_set(int unit, int port, const cprimod_slow_hdlc_config_info_t* config_info) 5632 { 5633 5634 cprimod_dispatch_type_t __type__; 5635 int __rv__; 5636 SOC_INIT_FUNC_DEFS; 5637 5638 if(SOC_E_NONE != cprimod_slow_hdlc_config_info_t_validate(config_info)) { 5639 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 5640 } 5641 5642 /* Dispatch */ 5643 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5644 if(__type__ >= cprimodDispatchTypeCount) { 5645 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5646 } 5647 5648 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_cw_slow_hdlc_config_set) { 5649 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_cw_slow_hdlc_config_set(unit, port, config_info); 5650 _SOC_IF_ERR_EXIT(__rv__); 5651 } else { 5652 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_cw_slow_hdlc_config_set isn't implemented for driver type")); 5653 } 5654 5655 exit: 5656 SOC_FUNC_RETURN; 5657 5658 } 5659 5660 5661 int cprimod_cpri_port_cw_slow_hdlc_config_get(int unit, int port, cprimod_slow_hdlc_config_info_t* config_info) 5662 { 5663 5664 cprimod_dispatch_type_t __type__; 5665 int __rv__; 5666 SOC_INIT_FUNC_DEFS; 5667 5668 if(config_info == NULL) { 5669 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 5670 } 5671 if(SOC_E_NONE != cprimod_slow_hdlc_config_info_t_init(config_info)) { 5672 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 5673 } 5674 5675 /* Dispatch */ 5676 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5677 if(__type__ >= cprimodDispatchTypeCount) { 5678 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5679 } 5680 5681 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_cw_slow_hdlc_config_get) { 5682 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_cw_slow_hdlc_config_get(unit, port, config_info); 5683 _SOC_IF_ERR_EXIT(__rv__); 5684 } else { 5685 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_cw_slow_hdlc_config_get isn't implemented for driver type")); 5686 } 5687 5688 exit: 5689 SOC_FUNC_RETURN; 5690 5691 } 5692 5693 5694 int cprimod_fast_eth_config_info_t_validate(const cprimod_fast_eth_config_info_t* cprimod_fast_eth_config_info) 5695 { 5696 SOC_INIT_FUNC_DEFS; 5697 if(cprimod_fast_eth_config_info == NULL) { 5698 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 5699 } 5700 5701 5702 5703 exit: 5704 SOC_FUNC_RETURN; 5705 5706 } 5707 5708 int cprimod_fast_eth_config_info_t_init(cprimod_fast_eth_config_info_t* cprimod_fast_eth_config_info) 5709 { 5710 SOC_INIT_FUNC_DEFS; 5711 5712 if(cprimod_fast_eth_config_info == NULL){ 5713 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_fast_eth_config_info NULL parameter")); 5714 } 5715 sal_memset(cprimod_fast_eth_config_info, 0, sizeof(cprimod_fast_eth_config_info_t)); 5716 cprimod_fast_eth_config_info->tx_crc_mode = 0; 5717 5718 5719 exit: 5720 SOC_FUNC_RETURN; 5721 5722 } 5723 5724 int cprimod_cpri_port_cw_fast_eth_config_set(int unit, int port, const cprimod_fast_eth_config_info_t* config_info) 5725 { 5726 5727 cprimod_dispatch_type_t __type__; 5728 int __rv__; 5729 SOC_INIT_FUNC_DEFS; 5730 5731 if(SOC_E_NONE != cprimod_fast_eth_config_info_t_validate(config_info)) { 5732 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 5733 } 5734 5735 /* Dispatch */ 5736 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5737 if(__type__ >= cprimodDispatchTypeCount) { 5738 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5739 } 5740 5741 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_cw_fast_eth_config_set) { 5742 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_cw_fast_eth_config_set(unit, port, config_info); 5743 _SOC_IF_ERR_EXIT(__rv__); 5744 } else { 5745 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_cw_fast_eth_config_set isn't implemented for driver type")); 5746 } 5747 5748 exit: 5749 SOC_FUNC_RETURN; 5750 5751 } 5752 5753 5754 int cprimod_cpri_port_cw_fast_eth_config_get(int unit, int port, cprimod_fast_eth_config_info_t* config_info) 5755 { 5756 5757 cprimod_dispatch_type_t __type__; 5758 int __rv__; 5759 SOC_INIT_FUNC_DEFS; 5760 5761 if(config_info == NULL) { 5762 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 5763 } 5764 if(SOC_E_NONE != cprimod_fast_eth_config_info_t_init(config_info)) { 5765 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 5766 } 5767 5768 /* Dispatch */ 5769 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5770 if(__type__ >= cprimodDispatchTypeCount) { 5771 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5772 } 5773 5774 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_cw_fast_eth_config_get) { 5775 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_cw_fast_eth_config_get(unit, port, config_info); 5776 _SOC_IF_ERR_EXIT(__rv__); 5777 } else { 5778 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_cw_fast_eth_config_get isn't implemented for driver type")); 5779 } 5780 5781 exit: 5782 SOC_FUNC_RETURN; 5783 5784 } 5785 5786 5787 int cprimod_cpri_rx_vsd_config_info_t_validate(const cprimod_cpri_rx_vsd_config_info_t* cprimod_cpri_rx_vsd_config_info) 5788 { 5789 SOC_INIT_FUNC_DEFS; 5790 if(cprimod_cpri_rx_vsd_config_info == NULL) { 5791 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 5792 } 5793 5794 5795 5796 exit: 5797 SOC_FUNC_RETURN; 5798 5799 } 5800 5801 int cprimod_cpri_rx_vsd_config_info_t_init(cprimod_cpri_rx_vsd_config_info_t* cprimod_cpri_rx_vsd_config_info) 5802 { 5803 SOC_INIT_FUNC_DEFS; 5804 5805 if(cprimod_cpri_rx_vsd_config_info == NULL){ 5806 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_rx_vsd_config_info NULL parameter")); 5807 } 5808 sal_memset(cprimod_cpri_rx_vsd_config_info, 0, sizeof(cprimod_cpri_rx_vsd_config_info_t)); 5809 cprimod_cpri_rx_vsd_config_info->subchan_size = 0; 5810 cprimod_cpri_rx_vsd_config_info->subchan_bytes = 0; 5811 cprimod_cpri_rx_vsd_config_info->flow_bytes = 0; 5812 5813 5814 exit: 5815 SOC_FUNC_RETURN; 5816 5817 } 5818 5819 int cprimod_cpri_port_rx_vsd_cw_config_set(int unit, int port, const cprimod_cpri_rx_vsd_config_info_t* config_info) 5820 { 5821 5822 cprimod_dispatch_type_t __type__; 5823 int __rv__; 5824 SOC_INIT_FUNC_DEFS; 5825 5826 if(SOC_E_NONE != cprimod_cpri_rx_vsd_config_info_t_validate(config_info)) { 5827 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 5828 } 5829 5830 /* Dispatch */ 5831 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5832 if(__type__ >= cprimodDispatchTypeCount) { 5833 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5834 } 5835 5836 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_cw_config_set) { 5837 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_cw_config_set(unit, port, config_info); 5838 _SOC_IF_ERR_EXIT(__rv__); 5839 } else { 5840 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_vsd_cw_config_set isn't implemented for driver type")); 5841 } 5842 5843 exit: 5844 SOC_FUNC_RETURN; 5845 5846 } 5847 5848 5849 int cprimod_cpri_port_rx_vsd_cw_config_get(int unit, int port, cprimod_cpri_rx_vsd_config_info_t* config_info) 5850 { 5851 5852 cprimod_dispatch_type_t __type__; 5853 int __rv__; 5854 SOC_INIT_FUNC_DEFS; 5855 5856 if(config_info == NULL) { 5857 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 5858 } 5859 if(SOC_E_NONE != cprimod_cpri_rx_vsd_config_info_t_init(config_info)) { 5860 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 5861 } 5862 5863 /* Dispatch */ 5864 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5865 if(__type__ >= cprimodDispatchTypeCount) { 5866 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5867 } 5868 5869 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_cw_config_get) { 5870 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_cw_config_get(unit, port, config_info); 5871 _SOC_IF_ERR_EXIT(__rv__); 5872 } else { 5873 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_vsd_cw_config_get isn't implemented for driver type")); 5874 } 5875 5876 exit: 5877 SOC_FUNC_RETURN; 5878 5879 } 5880 5881 5882 int cprimod_cpri_rx_vsd_ctrl_flow_config_xxx_t_validate(const cprimod_cpri_rx_vsd_ctrl_flow_config_xxx_t* cprimod_cpri_rx_vsd_ctrl_flow_config_xxx) 5883 { 5884 SOC_INIT_FUNC_DEFS; 5885 if(cprimod_cpri_rx_vsd_ctrl_flow_config_xxx == NULL) { 5886 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 5887 } 5888 5889 5890 5891 exit: 5892 SOC_FUNC_RETURN; 5893 5894 } 5895 5896 int cprimod_cpri_rx_vsd_ctrl_flow_config_xxx_t_init(cprimod_cpri_rx_vsd_ctrl_flow_config_xxx_t* cprimod_cpri_rx_vsd_ctrl_flow_config_xxx) 5897 { 5898 SOC_INIT_FUNC_DEFS; 5899 5900 if(cprimod_cpri_rx_vsd_ctrl_flow_config_xxx == NULL){ 5901 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_rx_vsd_ctrl_flow_config_xxx NULL parameter")); 5902 } 5903 sal_memset(cprimod_cpri_rx_vsd_ctrl_flow_config_xxx, 0, sizeof(cprimod_cpri_rx_vsd_ctrl_flow_config_xxx_t)); 5904 5905 5906 exit: 5907 SOC_FUNC_RETURN; 5908 5909 } 5910 5911 int cprimod_cpri_port_rx_vsd_ctrl_flow_add(int unit, int port, uint32 group_id, const cprimod_cpri_rx_vsd_flow_info_t* config_info) 5912 { 5913 5914 cprimod_dispatch_type_t __type__; 5915 int __rv__; 5916 SOC_INIT_FUNC_DEFS; 5917 5918 /* Dispatch */ 5919 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5920 if(__type__ >= cprimodDispatchTypeCount) { 5921 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5922 } 5923 5924 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_ctrl_flow_add) { 5925 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_ctrl_flow_add(unit, port, group_id, config_info); 5926 _SOC_IF_ERR_EXIT(__rv__); 5927 } else { 5928 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_vsd_ctrl_flow_add isn't implemented for driver type")); 5929 } 5930 5931 exit: 5932 SOC_FUNC_RETURN; 5933 5934 } 5935 5936 5937 int cprimod_cpri_port_rx_vsd_ctrl_flow_delete(int unit, int port, uint32 group_id) 5938 { 5939 5940 cprimod_dispatch_type_t __type__; 5941 int __rv__; 5942 SOC_INIT_FUNC_DEFS; 5943 5944 /* Dispatch */ 5945 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5946 if(__type__ >= cprimodDispatchTypeCount) { 5947 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5948 } 5949 5950 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_ctrl_flow_delete) { 5951 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_ctrl_flow_delete(unit, port, group_id); 5952 _SOC_IF_ERR_EXIT(__rv__); 5953 } else { 5954 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_vsd_ctrl_flow_delete isn't implemented for driver type")); 5955 } 5956 5957 exit: 5958 SOC_FUNC_RETURN; 5959 5960 } 5961 5962 5963 int cprimod_cpri_port_rx_vsd_ctrl_flow_get(int unit, int port, uint32 group_id, cprimod_cpri_rx_vsd_flow_info_t* config_info) 5964 { 5965 5966 cprimod_dispatch_type_t __type__; 5967 int __rv__; 5968 SOC_INIT_FUNC_DEFS; 5969 5970 if(config_info == NULL) { 5971 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 5972 } 5973 /* Dispatch */ 5974 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 5975 if(__type__ >= cprimodDispatchTypeCount) { 5976 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 5977 } 5978 5979 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_ctrl_flow_get) { 5980 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_ctrl_flow_get(unit, port, group_id, config_info); 5981 _SOC_IF_ERR_EXIT(__rv__); 5982 } else { 5983 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_vsd_ctrl_flow_get isn't implemented for driver type")); 5984 } 5985 5986 exit: 5987 SOC_FUNC_RETURN; 5988 5989 } 5990 5991 5992 int cprimod_encap_control_queue_tag_to_flow_id_map_set(int unit, int port, uint32 tag_id, uint32 flow_id) 5993 { 5994 5995 cprimod_dispatch_type_t __type__; 5996 int __rv__; 5997 SOC_INIT_FUNC_DEFS; 5998 5999 /* Dispatch */ 6000 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6001 if(__type__ >= cprimodDispatchTypeCount) { 6002 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6003 } 6004 6005 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_control_queue_tag_to_flow_id_map_set) { 6006 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_control_queue_tag_to_flow_id_map_set(unit, port, tag_id, flow_id); 6007 _SOC_IF_ERR_EXIT(__rv__); 6008 } else { 6009 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_control_queue_tag_to_flow_id_map_set isn't implemented for driver type")); 6010 } 6011 6012 exit: 6013 SOC_FUNC_RETURN; 6014 6015 } 6016 6017 6018 int cprimod_encap_control_queue_tag_to_flow_id_map_get(int unit, int port, uint32 tag_id, uint32* flow_id) 6019 { 6020 6021 cprimod_dispatch_type_t __type__; 6022 int __rv__; 6023 SOC_INIT_FUNC_DEFS; 6024 6025 if(flow_id == NULL) { 6026 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("flow_id NULL parameter")); 6027 } 6028 /* Dispatch */ 6029 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6030 if(__type__ >= cprimodDispatchTypeCount) { 6031 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6032 } 6033 6034 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_control_queue_tag_to_flow_id_map_get) { 6035 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_control_queue_tag_to_flow_id_map_get(unit, port, tag_id, flow_id); 6036 _SOC_IF_ERR_EXIT(__rv__); 6037 } else { 6038 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_control_queue_tag_to_flow_id_map_get isn't implemented for driver type")); 6039 } 6040 6041 exit: 6042 SOC_FUNC_RETURN; 6043 6044 } 6045 6046 6047 int cprimod_cpri_tx_vsd_config_info_t_validate(const cprimod_cpri_tx_vsd_config_info_t* cprimod_cpri_tx_vsd_config_info) 6048 { 6049 SOC_INIT_FUNC_DEFS; 6050 if(cprimod_cpri_tx_vsd_config_info == NULL) { 6051 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 6052 } 6053 6054 6055 6056 exit: 6057 SOC_FUNC_RETURN; 6058 6059 } 6060 6061 int cprimod_cpri_tx_vsd_config_info_t_init(cprimod_cpri_tx_vsd_config_info_t* cprimod_cpri_tx_vsd_config_info) 6062 { 6063 SOC_INIT_FUNC_DEFS; 6064 6065 if(cprimod_cpri_tx_vsd_config_info == NULL){ 6066 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_tx_vsd_config_info NULL parameter")); 6067 } 6068 sal_memset(cprimod_cpri_tx_vsd_config_info, 0, sizeof(cprimod_cpri_tx_vsd_config_info_t)); 6069 cprimod_cpri_tx_vsd_config_info->subchan_size = 0; 6070 cprimod_cpri_tx_vsd_config_info->subchan_bytes = 0; 6071 cprimod_cpri_tx_vsd_config_info->flow_bytes = 0; 6072 6073 6074 exit: 6075 SOC_FUNC_RETURN; 6076 6077 } 6078 6079 int cprimod_cpri_port_tx_vsd_cw_config_set(int unit, int port, const cprimod_cpri_tx_vsd_config_info_t* config_info) 6080 { 6081 6082 cprimod_dispatch_type_t __type__; 6083 int __rv__; 6084 SOC_INIT_FUNC_DEFS; 6085 6086 if(SOC_E_NONE != cprimod_cpri_tx_vsd_config_info_t_validate(config_info)) { 6087 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 6088 } 6089 6090 /* Dispatch */ 6091 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6092 if(__type__ >= cprimodDispatchTypeCount) { 6093 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6094 } 6095 6096 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_cw_config_set) { 6097 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_cw_config_set(unit, port, config_info); 6098 _SOC_IF_ERR_EXIT(__rv__); 6099 } else { 6100 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_vsd_cw_config_set isn't implemented for driver type")); 6101 } 6102 6103 exit: 6104 SOC_FUNC_RETURN; 6105 6106 } 6107 6108 6109 int cprimod_cpri_port_tx_vsd_cw_config_get(int unit, int port, cprimod_cpri_tx_vsd_config_info_t* config_info) 6110 { 6111 6112 cprimod_dispatch_type_t __type__; 6113 int __rv__; 6114 SOC_INIT_FUNC_DEFS; 6115 6116 if(config_info == NULL) { 6117 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 6118 } 6119 if(SOC_E_NONE != cprimod_cpri_tx_vsd_config_info_t_init(config_info)) { 6120 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 6121 } 6122 6123 /* Dispatch */ 6124 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6125 if(__type__ >= cprimodDispatchTypeCount) { 6126 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6127 } 6128 6129 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_cw_config_get) { 6130 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_cw_config_get(unit, port, config_info); 6131 _SOC_IF_ERR_EXIT(__rv__); 6132 } else { 6133 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_vsd_cw_config_get isn't implemented for driver type")); 6134 } 6135 6136 exit: 6137 SOC_FUNC_RETURN; 6138 6139 } 6140 6141 6142 int cprimod_cpri_tx_vsd_flow_config_info_t_validate(const cprimod_cpri_tx_vsd_flow_config_info_t* cprimod_cpri_tx_vsd_flow_config_info) 6143 { 6144 SOC_INIT_FUNC_DEFS; 6145 if(cprimod_cpri_tx_vsd_flow_config_info == NULL) { 6146 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 6147 } 6148 6149 6150 6151 exit: 6152 SOC_FUNC_RETURN; 6153 6154 } 6155 6156 int cprimod_cpri_tx_vsd_flow_config_info_t_init(cprimod_cpri_tx_vsd_flow_config_info_t* cprimod_cpri_tx_vsd_flow_config_info) 6157 { 6158 SOC_INIT_FUNC_DEFS; 6159 6160 if(cprimod_cpri_tx_vsd_flow_config_info == NULL){ 6161 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_tx_vsd_flow_config_info NULL parameter")); 6162 } 6163 sal_memset(cprimod_cpri_tx_vsd_flow_config_info, 0, sizeof(cprimod_cpri_tx_vsd_flow_config_info_t)); 6164 6165 6166 exit: 6167 SOC_FUNC_RETURN; 6168 6169 } 6170 6171 int cprimod_cpri_port_tx_vsd_ctrl_flow_add(int unit, int port, uint32 group_id, uint32* group_list, const cprimod_cpri_tx_vsd_flow_info_t* config_info) 6172 { 6173 6174 cprimod_dispatch_type_t __type__; 6175 int __rv__; 6176 SOC_INIT_FUNC_DEFS; 6177 6178 if(group_list == NULL) { 6179 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("group_list NULL parameter")); 6180 } 6181 /* Dispatch */ 6182 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6183 if(__type__ >= cprimodDispatchTypeCount) { 6184 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6185 } 6186 6187 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_ctrl_flow_add) { 6188 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_ctrl_flow_add(unit, port, group_id, group_list, config_info); 6189 _SOC_IF_ERR_EXIT(__rv__); 6190 } else { 6191 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_vsd_ctrl_flow_add isn't implemented for driver type")); 6192 } 6193 6194 exit: 6195 SOC_FUNC_RETURN; 6196 6197 } 6198 6199 6200 int cprimod_cpri_port_tx_vsd_ctrl_flow_delete(int unit, int port, uint32 group_id, uint32* group_list) 6201 { 6202 6203 cprimod_dispatch_type_t __type__; 6204 int __rv__; 6205 SOC_INIT_FUNC_DEFS; 6206 6207 if(group_list == NULL) { 6208 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("group_list NULL parameter")); 6209 } 6210 /* Dispatch */ 6211 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6212 if(__type__ >= cprimodDispatchTypeCount) { 6213 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6214 } 6215 6216 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_ctrl_flow_delete) { 6217 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_ctrl_flow_delete(unit, port, group_id, group_list); 6218 _SOC_IF_ERR_EXIT(__rv__); 6219 } else { 6220 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_vsd_ctrl_flow_delete isn't implemented for driver type")); 6221 } 6222 6223 exit: 6224 SOC_FUNC_RETURN; 6225 6226 } 6227 6228 6229 int cprimod_cpri_port_tx_vsd_ctrl_flow_get(int unit, int port, uint32 group_id, uint32* group_list, cprimod_cpri_tx_vsd_flow_info_t* config_info) 6230 { 6231 6232 cprimod_dispatch_type_t __type__; 6233 int __rv__; 6234 SOC_INIT_FUNC_DEFS; 6235 6236 if(group_list == NULL) { 6237 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("group_list NULL parameter")); 6238 } 6239 if(config_info == NULL) { 6240 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 6241 } 6242 /* Dispatch */ 6243 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6244 if(__type__ >= cprimodDispatchTypeCount) { 6245 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6246 } 6247 6248 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_ctrl_flow_get) { 6249 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_ctrl_flow_get(unit, port, group_id, group_list, config_info); 6250 _SOC_IF_ERR_EXIT(__rv__); 6251 } else { 6252 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_vsd_ctrl_flow_get isn't implemented for driver type")); 6253 } 6254 6255 exit: 6256 SOC_FUNC_RETURN; 6257 6258 } 6259 6260 6261 int cprimod_cw_filter_mode_t_validate(cprimod_cw_filter_mode_t cprimod_cw_filter_mode) 6262 { 6263 SOC_INIT_FUNC_DEFS; 6264 if(cprimod_cw_filter_mode >= cprimodCwFilterCount) { 6265 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 6266 } 6267 6268 exit: 6269 SOC_FUNC_RETURN; 6270 6271 } 6272 6273 int cprimod_cpri_rx_vsd_raw_config_t_validate(const cprimod_cpri_rx_vsd_raw_config_t* cprimod_cpri_rx_vsd_raw_config) 6274 { 6275 SOC_INIT_FUNC_DEFS; 6276 if(cprimod_cpri_rx_vsd_raw_config == NULL) { 6277 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 6278 } 6279 6280 6281 6282 exit: 6283 SOC_FUNC_RETURN; 6284 6285 } 6286 6287 int cprimod_cpri_rx_vsd_raw_config_t_init(cprimod_cpri_rx_vsd_raw_config_t* cprimod_cpri_rx_vsd_raw_config) 6288 { 6289 SOC_INIT_FUNC_DEFS; 6290 6291 if(cprimod_cpri_rx_vsd_raw_config == NULL){ 6292 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_rx_vsd_raw_config NULL parameter")); 6293 } 6294 sal_memset(cprimod_cpri_rx_vsd_raw_config, 0, sizeof(cprimod_cpri_rx_vsd_raw_config_t)); 6295 cprimod_cpri_rx_vsd_raw_config->filter_mode = 0; 6296 6297 6298 exit: 6299 SOC_FUNC_RETURN; 6300 6301 } 6302 6303 int cprimod_cpri_port_rx_vsd_raw_config_set(int unit, int port, uint32 index, const cprimod_cpri_rx_vsd_raw_config_t* config_info) 6304 { 6305 6306 cprimod_dispatch_type_t __type__; 6307 int __rv__; 6308 SOC_INIT_FUNC_DEFS; 6309 6310 if(SOC_E_NONE != cprimod_cpri_rx_vsd_raw_config_t_validate(config_info)) { 6311 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 6312 } 6313 6314 /* Dispatch */ 6315 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6316 if(__type__ >= cprimodDispatchTypeCount) { 6317 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6318 } 6319 6320 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_raw_config_set) { 6321 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_raw_config_set(unit, port, index, config_info); 6322 _SOC_IF_ERR_EXIT(__rv__); 6323 } else { 6324 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_vsd_raw_config_set isn't implemented for driver type")); 6325 } 6326 6327 exit: 6328 SOC_FUNC_RETURN; 6329 6330 } 6331 6332 6333 int cprimod_cpri_port_rx_vsd_raw_config_get(int unit, int port, uint32 index, cprimod_cpri_rx_vsd_raw_config_t* config_info) 6334 { 6335 6336 cprimod_dispatch_type_t __type__; 6337 int __rv__; 6338 SOC_INIT_FUNC_DEFS; 6339 6340 if(config_info == NULL) { 6341 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 6342 } 6343 if(SOC_E_NONE != cprimod_cpri_rx_vsd_raw_config_t_init(config_info)) { 6344 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 6345 } 6346 6347 /* Dispatch */ 6348 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6349 if(__type__ >= cprimodDispatchTypeCount) { 6350 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6351 } 6352 6353 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_raw_config_get) { 6354 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_vsd_raw_config_get(unit, port, index, config_info); 6355 _SOC_IF_ERR_EXIT(__rv__); 6356 } else { 6357 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_vsd_raw_config_get isn't implemented for driver type")); 6358 } 6359 6360 exit: 6361 SOC_FUNC_RETURN; 6362 6363 } 6364 6365 6366 int cprimod_vsd_raw_map_mode_t_validate(cprimod_vsd_raw_map_mode_t cprimod_vsd_raw_map_mode) 6367 { 6368 SOC_INIT_FUNC_DEFS; 6369 if(cprimod_vsd_raw_map_mode >= cprimodVsdRawMapModeCount) { 6370 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 6371 } 6372 6373 exit: 6374 SOC_FUNC_RETURN; 6375 6376 } 6377 6378 int cprimod_cpri_tx_vsd_raw_config_t_validate(const cprimod_cpri_tx_vsd_raw_config_t* cprimod_cpri_tx_vsd_raw_config) 6379 { 6380 SOC_INIT_FUNC_DEFS; 6381 if(cprimod_cpri_tx_vsd_raw_config == NULL) { 6382 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 6383 } 6384 6385 6386 6387 exit: 6388 SOC_FUNC_RETURN; 6389 6390 } 6391 6392 int cprimod_cpri_tx_vsd_raw_config_t_init(cprimod_cpri_tx_vsd_raw_config_t* cprimod_cpri_tx_vsd_raw_config) 6393 { 6394 SOC_INIT_FUNC_DEFS; 6395 6396 if(cprimod_cpri_tx_vsd_raw_config == NULL){ 6397 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_tx_vsd_raw_config NULL parameter")); 6398 } 6399 sal_memset(cprimod_cpri_tx_vsd_raw_config, 0, sizeof(cprimod_cpri_tx_vsd_raw_config_t)); 6400 cprimod_cpri_tx_vsd_raw_config->map_mode = 0; 6401 6402 6403 exit: 6404 SOC_FUNC_RETURN; 6405 6406 } 6407 6408 int cprimod_cpri_port_tx_vsd_raw_config_set(int unit, int port, uint32 index, const cprimod_cpri_tx_vsd_raw_config_t* config_info) 6409 { 6410 6411 cprimod_dispatch_type_t __type__; 6412 int __rv__; 6413 SOC_INIT_FUNC_DEFS; 6414 6415 if(SOC_E_NONE != cprimod_cpri_tx_vsd_raw_config_t_validate(config_info)) { 6416 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 6417 } 6418 6419 /* Dispatch */ 6420 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6421 if(__type__ >= cprimodDispatchTypeCount) { 6422 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6423 } 6424 6425 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_raw_config_set) { 6426 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_raw_config_set(unit, port, index, config_info); 6427 _SOC_IF_ERR_EXIT(__rv__); 6428 } else { 6429 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_vsd_raw_config_set isn't implemented for driver type")); 6430 } 6431 6432 exit: 6433 SOC_FUNC_RETURN; 6434 6435 } 6436 6437 6438 int cprimod_cpri_port_tx_vsd_raw_config_get(int unit, int port, uint32 index, cprimod_cpri_tx_vsd_raw_config_t* config_info) 6439 { 6440 6441 cprimod_dispatch_type_t __type__; 6442 int __rv__; 6443 SOC_INIT_FUNC_DEFS; 6444 6445 if(config_info == NULL) { 6446 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 6447 } 6448 if(SOC_E_NONE != cprimod_cpri_tx_vsd_raw_config_t_init(config_info)) { 6449 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 6450 } 6451 6452 /* Dispatch */ 6453 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6454 if(__type__ >= cprimodDispatchTypeCount) { 6455 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6456 } 6457 6458 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_raw_config_get) { 6459 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_raw_config_get(unit, port, index, config_info); 6460 _SOC_IF_ERR_EXIT(__rv__); 6461 } else { 6462 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_vsd_raw_config_get isn't implemented for driver type")); 6463 } 6464 6465 exit: 6466 SOC_FUNC_RETURN; 6467 6468 } 6469 6470 6471 int cprimod_cpri_port_tx_vsd_raw_filter_set(int unit, int port, uint32 bfn0_value, uint32 bfn0_mask, uint32 bfn1_value, uint32 bfn1_mask) 6472 { 6473 6474 cprimod_dispatch_type_t __type__; 6475 int __rv__; 6476 SOC_INIT_FUNC_DEFS; 6477 6478 /* Dispatch */ 6479 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6480 if(__type__ >= cprimodDispatchTypeCount) { 6481 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6482 } 6483 6484 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_raw_filter_set) { 6485 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_raw_filter_set(unit, port, bfn0_value, bfn0_mask, bfn1_value, bfn1_mask); 6486 _SOC_IF_ERR_EXIT(__rv__); 6487 } else { 6488 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_vsd_raw_filter_set isn't implemented for driver type")); 6489 } 6490 6491 exit: 6492 SOC_FUNC_RETURN; 6493 6494 } 6495 6496 6497 int cprimod_cpri_port_tx_vsd_raw_filter_get(int unit, int port, uint32* bfn0_value, uint32* bfn0_mask, uint32* bfn1_value, uint32* bfn1_mask) 6498 { 6499 6500 cprimod_dispatch_type_t __type__; 6501 int __rv__; 6502 SOC_INIT_FUNC_DEFS; 6503 6504 if(bfn0_value == NULL) { 6505 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("bfn0_value NULL parameter")); 6506 } 6507 if(bfn0_mask == NULL) { 6508 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("bfn0_mask NULL parameter")); 6509 } 6510 if(bfn1_value == NULL) { 6511 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("bfn1_value NULL parameter")); 6512 } 6513 if(bfn1_mask == NULL) { 6514 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("bfn1_mask NULL parameter")); 6515 } 6516 /* Dispatch */ 6517 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6518 if(__type__ >= cprimodDispatchTypeCount) { 6519 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6520 } 6521 6522 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_raw_filter_get) { 6523 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_vsd_raw_filter_get(unit, port, bfn0_value, bfn0_mask, bfn1_value, bfn1_mask); 6524 _SOC_IF_ERR_EXIT(__rv__); 6525 } else { 6526 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_vsd_raw_filter_get isn't implemented for driver type")); 6527 } 6528 6529 exit: 6530 SOC_FUNC_RETURN; 6531 6532 } 6533 6534 6535 int cprimod_cpri_port_rx_brcm_rsvd5_control_config_set(int unit, int port, uint32 schan_start, uint32 schan_size, uint32 queue_num, int parity_disable) 6536 { 6537 6538 cprimod_dispatch_type_t __type__; 6539 int __rv__; 6540 SOC_INIT_FUNC_DEFS; 6541 6542 /* Dispatch */ 6543 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6544 if(__type__ >= cprimodDispatchTypeCount) { 6545 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6546 } 6547 6548 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_brcm_rsvd5_control_config_set) { 6549 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_brcm_rsvd5_control_config_set(unit, port, schan_start, schan_size, queue_num, parity_disable); 6550 _SOC_IF_ERR_EXIT(__rv__); 6551 } else { 6552 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_brcm_rsvd5_control_config_set isn't implemented for driver type")); 6553 } 6554 6555 exit: 6556 SOC_FUNC_RETURN; 6557 6558 } 6559 6560 6561 int cprimod_cpri_port_rx_brcm_rsvd5_control_config_get(int unit, int port, uint32* schan_start, uint32* schan_size, uint32* queue_num, int* parity_disable) 6562 { 6563 6564 cprimod_dispatch_type_t __type__; 6565 int __rv__; 6566 SOC_INIT_FUNC_DEFS; 6567 6568 if(schan_start == NULL) { 6569 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("schan_start NULL parameter")); 6570 } 6571 if(schan_size == NULL) { 6572 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("schan_size NULL parameter")); 6573 } 6574 if(queue_num == NULL) { 6575 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("queue_num NULL parameter")); 6576 } 6577 if(parity_disable == NULL) { 6578 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("parity_disable NULL parameter")); 6579 } 6580 /* Dispatch */ 6581 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6582 if(__type__ >= cprimodDispatchTypeCount) { 6583 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6584 } 6585 6586 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_brcm_rsvd5_control_config_get) { 6587 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_brcm_rsvd5_control_config_get(unit, port, schan_start, schan_size, queue_num, parity_disable); 6588 _SOC_IF_ERR_EXIT(__rv__); 6589 } else { 6590 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_brcm_rsvd5_control_config_get isn't implemented for driver type")); 6591 } 6592 6593 exit: 6594 SOC_FUNC_RETURN; 6595 6596 } 6597 6598 6599 int cprimod_cpri_port_tx_brcm_rsvd5_control_config_set(int unit, int port, uint32 schan_start, uint32 schan_size, uint32 queue_num, int crc_enable) 6600 { 6601 6602 cprimod_dispatch_type_t __type__; 6603 int __rv__; 6604 SOC_INIT_FUNC_DEFS; 6605 6606 /* Dispatch */ 6607 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6608 if(__type__ >= cprimodDispatchTypeCount) { 6609 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6610 } 6611 6612 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_brcm_rsvd5_control_config_set) { 6613 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_brcm_rsvd5_control_config_set(unit, port, schan_start, schan_size, queue_num, crc_enable); 6614 _SOC_IF_ERR_EXIT(__rv__); 6615 } else { 6616 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_brcm_rsvd5_control_config_set isn't implemented for driver type")); 6617 } 6618 6619 exit: 6620 SOC_FUNC_RETURN; 6621 6622 } 6623 6624 6625 int cprimod_cpri_port_tx_brcm_rsvd5_control_config_get(int unit, int port, uint32* schan_start, uint32* schan_size, uint32* queue_num, int* crc_enable) 6626 { 6627 6628 cprimod_dispatch_type_t __type__; 6629 int __rv__; 6630 SOC_INIT_FUNC_DEFS; 6631 6632 if(schan_start == NULL) { 6633 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("schan_start NULL parameter")); 6634 } 6635 if(schan_size == NULL) { 6636 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("schan_size NULL parameter")); 6637 } 6638 if(queue_num == NULL) { 6639 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("queue_num NULL parameter")); 6640 } 6641 if(crc_enable == NULL) { 6642 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("crc_enable NULL parameter")); 6643 } 6644 /* Dispatch */ 6645 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6646 if(__type__ >= cprimodDispatchTypeCount) { 6647 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6648 } 6649 6650 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_brcm_rsvd5_control_config_get) { 6651 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_brcm_rsvd5_control_config_get(unit, port, schan_start, schan_size, queue_num, crc_enable); 6652 _SOC_IF_ERR_EXIT(__rv__); 6653 } else { 6654 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_brcm_rsvd5_control_config_get isn't implemented for driver type")); 6655 } 6656 6657 exit: 6658 SOC_FUNC_RETURN; 6659 6660 } 6661 6662 6663 int cprimod_gcw_mask_t_validate(cprimod_gcw_mask_t cprimod_gcw_mask) 6664 { 6665 SOC_INIT_FUNC_DEFS; 6666 if(cprimod_gcw_mask >= cprimodGcwMaskCount) { 6667 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 6668 } 6669 6670 exit: 6671 SOC_FUNC_RETURN; 6672 6673 } 6674 6675 int cprimod_cpri_rx_gcw_config_t_validate(const cprimod_cpri_rx_gcw_config_t* cprimod_cpri_rx_gcw_config) 6676 { 6677 SOC_INIT_FUNC_DEFS; 6678 if(cprimod_cpri_rx_gcw_config == NULL) { 6679 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 6680 } 6681 6682 6683 6684 exit: 6685 SOC_FUNC_RETURN; 6686 6687 } 6688 6689 int cprimod_cpri_rx_gcw_config_t_init(cprimod_cpri_rx_gcw_config_t* cprimod_cpri_rx_gcw_config) 6690 { 6691 SOC_INIT_FUNC_DEFS; 6692 6693 if(cprimod_cpri_rx_gcw_config == NULL){ 6694 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_rx_gcw_config NULL parameter")); 6695 } 6696 sal_memset(cprimod_cpri_rx_gcw_config, 0, sizeof(cprimod_cpri_rx_gcw_config_t)); 6697 cprimod_cpri_rx_gcw_config->mask = 0; 6698 cprimod_cpri_rx_gcw_config->filter_mode = 0; 6699 6700 6701 exit: 6702 SOC_FUNC_RETURN; 6703 6704 } 6705 6706 int cprimod_cpri_tx_gcw_config_t_validate(const cprimod_cpri_tx_gcw_config_t* cprimod_cpri_tx_gcw_config) 6707 { 6708 SOC_INIT_FUNC_DEFS; 6709 if(cprimod_cpri_tx_gcw_config == NULL) { 6710 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 6711 } 6712 6713 6714 6715 exit: 6716 SOC_FUNC_RETURN; 6717 6718 } 6719 6720 int cprimod_cpri_tx_gcw_config_t_init(cprimod_cpri_tx_gcw_config_t* cprimod_cpri_tx_gcw_config) 6721 { 6722 SOC_INIT_FUNC_DEFS; 6723 6724 if(cprimod_cpri_tx_gcw_config == NULL){ 6725 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_tx_gcw_config NULL parameter")); 6726 } 6727 sal_memset(cprimod_cpri_tx_gcw_config, 0, sizeof(cprimod_cpri_tx_gcw_config_t)); 6728 cprimod_cpri_tx_gcw_config->mask = 0; 6729 6730 6731 exit: 6732 SOC_FUNC_RETURN; 6733 6734 } 6735 6736 int cprimod_cpri_port_rx_gcw_config_set(int unit, int port, uint32 index, const cprimod_cpri_rx_gcw_config_t* config_info) 6737 { 6738 6739 cprimod_dispatch_type_t __type__; 6740 int __rv__; 6741 SOC_INIT_FUNC_DEFS; 6742 6743 if(SOC_E_NONE != cprimod_cpri_rx_gcw_config_t_validate(config_info)) { 6744 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 6745 } 6746 6747 /* Dispatch */ 6748 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6749 if(__type__ >= cprimodDispatchTypeCount) { 6750 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6751 } 6752 6753 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_gcw_config_set) { 6754 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_gcw_config_set(unit, port, index, config_info); 6755 _SOC_IF_ERR_EXIT(__rv__); 6756 } else { 6757 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_gcw_config_set isn't implemented for driver type")); 6758 } 6759 6760 exit: 6761 SOC_FUNC_RETURN; 6762 6763 } 6764 6765 6766 int cprimod_cpri_port_rx_gcw_config_get(int unit, int port, uint32 index, cprimod_cpri_rx_gcw_config_t* config_info) 6767 { 6768 6769 cprimod_dispatch_type_t __type__; 6770 int __rv__; 6771 SOC_INIT_FUNC_DEFS; 6772 6773 if(config_info == NULL) { 6774 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 6775 } 6776 if(SOC_E_NONE != cprimod_cpri_rx_gcw_config_t_init(config_info)) { 6777 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 6778 } 6779 6780 /* Dispatch */ 6781 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6782 if(__type__ >= cprimodDispatchTypeCount) { 6783 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6784 } 6785 6786 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_gcw_config_get) { 6787 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_gcw_config_get(unit, port, index, config_info); 6788 _SOC_IF_ERR_EXIT(__rv__); 6789 } else { 6790 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_gcw_config_get isn't implemented for driver type")); 6791 } 6792 6793 exit: 6794 SOC_FUNC_RETURN; 6795 6796 } 6797 6798 6799 int cprimod_cpri_port_tx_gcw_config_set(int unit, int port, uint32 index, const cprimod_cpri_tx_gcw_config_t* config_info) 6800 { 6801 6802 cprimod_dispatch_type_t __type__; 6803 int __rv__; 6804 SOC_INIT_FUNC_DEFS; 6805 6806 if(SOC_E_NONE != cprimod_cpri_tx_gcw_config_t_validate(config_info)) { 6807 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 6808 } 6809 6810 /* Dispatch */ 6811 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6812 if(__type__ >= cprimodDispatchTypeCount) { 6813 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6814 } 6815 6816 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_gcw_config_set) { 6817 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_gcw_config_set(unit, port, index, config_info); 6818 _SOC_IF_ERR_EXIT(__rv__); 6819 } else { 6820 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_gcw_config_set isn't implemented for driver type")); 6821 } 6822 6823 exit: 6824 SOC_FUNC_RETURN; 6825 6826 } 6827 6828 6829 int cprimod_cpri_port_tx_gcw_config_get(int unit, int port, uint32 index, cprimod_cpri_tx_gcw_config_t* config_info) 6830 { 6831 6832 cprimod_dispatch_type_t __type__; 6833 int __rv__; 6834 SOC_INIT_FUNC_DEFS; 6835 6836 if(config_info == NULL) { 6837 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 6838 } 6839 if(SOC_E_NONE != cprimod_cpri_tx_gcw_config_t_init(config_info)) { 6840 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 6841 } 6842 6843 /* Dispatch */ 6844 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6845 if(__type__ >= cprimodDispatchTypeCount) { 6846 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6847 } 6848 6849 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_gcw_config_get) { 6850 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_gcw_config_get(unit, port, index, config_info); 6851 _SOC_IF_ERR_EXIT(__rv__); 6852 } else { 6853 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_gcw_config_get isn't implemented for driver type")); 6854 } 6855 6856 exit: 6857 SOC_FUNC_RETURN; 6858 6859 } 6860 6861 6862 int cprimod_cpri_port_tx_gcw_filter_set(int unit, int port, uint32 bfn0_value, uint32 bfn0_mask, uint32 bfn1_value, uint32 bfn1_mask) 6863 { 6864 6865 cprimod_dispatch_type_t __type__; 6866 int __rv__; 6867 SOC_INIT_FUNC_DEFS; 6868 6869 /* Dispatch */ 6870 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6871 if(__type__ >= cprimodDispatchTypeCount) { 6872 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6873 } 6874 6875 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_gcw_filter_set) { 6876 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_gcw_filter_set(unit, port, bfn0_value, bfn0_mask, bfn1_value, bfn1_mask); 6877 _SOC_IF_ERR_EXIT(__rv__); 6878 } else { 6879 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_gcw_filter_set isn't implemented for driver type")); 6880 } 6881 6882 exit: 6883 SOC_FUNC_RETURN; 6884 6885 } 6886 6887 6888 int cprimod_cpri_port_tx_gcw_filter_get(int unit, int port, uint32* bfn0_value, uint32* bfn0_mask, uint32* bfn1_value, uint32* bfn1_mask) 6889 { 6890 6891 cprimod_dispatch_type_t __type__; 6892 int __rv__; 6893 SOC_INIT_FUNC_DEFS; 6894 6895 if(bfn0_value == NULL) { 6896 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("bfn0_value NULL parameter")); 6897 } 6898 if(bfn0_mask == NULL) { 6899 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("bfn0_mask NULL parameter")); 6900 } 6901 if(bfn1_value == NULL) { 6902 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("bfn1_value NULL parameter")); 6903 } 6904 if(bfn1_mask == NULL) { 6905 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("bfn1_mask NULL parameter")); 6906 } 6907 /* Dispatch */ 6908 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6909 if(__type__ >= cprimodDispatchTypeCount) { 6910 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6911 } 6912 6913 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_gcw_filter_get) { 6914 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_gcw_filter_get(unit, port, bfn0_value, bfn0_mask, bfn1_value, bfn1_mask); 6915 _SOC_IF_ERR_EXIT(__rv__); 6916 } else { 6917 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_gcw_filter_get isn't implemented for driver type")); 6918 } 6919 6920 exit: 6921 SOC_FUNC_RETURN; 6922 6923 } 6924 6925 6926 int cprimod_cpri_tx_control_word_t_validate(const cprimod_cpri_tx_control_word_t* cprimod_cpri_tx_control_word) 6927 { 6928 SOC_INIT_FUNC_DEFS; 6929 if(cprimod_cpri_tx_control_word == NULL) { 6930 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 6931 } 6932 6933 6934 6935 exit: 6936 SOC_FUNC_RETURN; 6937 6938 } 6939 6940 int cprimod_cpri_tx_control_word_t_init(cprimod_cpri_tx_control_word_t* cprimod_cpri_tx_control_word) 6941 { 6942 SOC_INIT_FUNC_DEFS; 6943 6944 if(cprimod_cpri_tx_control_word == NULL){ 6945 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_tx_control_word NULL parameter")); 6946 } 6947 sal_memset(cprimod_cpri_tx_control_word, 0, sizeof(cprimod_cpri_tx_control_word_t)); 6948 6949 6950 exit: 6951 SOC_FUNC_RETURN; 6952 6953 } 6954 6955 int cprimod_cpri_port_tx_control_word_set(int unit, int port, const cprimod_cpri_cw_l1_config_info_t* control_info) 6956 { 6957 6958 cprimod_dispatch_type_t __type__; 6959 int __rv__; 6960 SOC_INIT_FUNC_DEFS; 6961 6962 /* Dispatch */ 6963 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6964 if(__type__ >= cprimodDispatchTypeCount) { 6965 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6966 } 6967 6968 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_control_word_set) { 6969 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_control_word_set(unit, port, control_info); 6970 _SOC_IF_ERR_EXIT(__rv__); 6971 } else { 6972 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_control_word_set isn't implemented for driver type")); 6973 } 6974 6975 exit: 6976 SOC_FUNC_RETURN; 6977 6978 } 6979 6980 6981 int cprimod_rsvd4_rx_control_message_config_set(int unit, int port, uint32 queue_num, uint32 default_tag, uint32 no_match_tag) 6982 { 6983 6984 cprimod_dispatch_type_t __type__; 6985 int __rv__; 6986 SOC_INIT_FUNC_DEFS; 6987 6988 /* Dispatch */ 6989 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 6990 if(__type__ >= cprimodDispatchTypeCount) { 6991 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 6992 } 6993 6994 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_control_message_config_set) { 6995 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_control_message_config_set(unit, port, queue_num, default_tag, no_match_tag); 6996 _SOC_IF_ERR_EXIT(__rv__); 6997 } else { 6998 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_rx_control_message_config_set isn't implemented for driver type")); 6999 } 7000 7001 exit: 7002 SOC_FUNC_RETURN; 7003 7004 } 7005 7006 7007 int cprimod_control_flow_config_t_validate(const cprimod_control_flow_config_t* cprimod_control_flow_config) 7008 { 7009 SOC_INIT_FUNC_DEFS; 7010 if(cprimod_control_flow_config == NULL) { 7011 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 7012 } 7013 7014 7015 7016 exit: 7017 SOC_FUNC_RETURN; 7018 7019 } 7020 7021 int cprimod_control_flow_config_t_init(cprimod_control_flow_config_t* cprimod_control_flow_config) 7022 { 7023 SOC_INIT_FUNC_DEFS; 7024 7025 if(cprimod_control_flow_config == NULL){ 7026 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_control_flow_config NULL parameter")); 7027 } 7028 sal_memset(cprimod_control_flow_config, 0, sizeof(cprimod_control_flow_config_t)); 7029 cprimod_control_flow_config->proc_type = 0; 7030 7031 7032 exit: 7033 SOC_FUNC_RETURN; 7034 7035 } 7036 7037 int cprimod_rsvd4_rx_control_flow_config_set(int unit, int port, uint32 flow_id, const cprimod_control_flow_config_t* config) 7038 { 7039 7040 cprimod_dispatch_type_t __type__; 7041 int __rv__; 7042 SOC_INIT_FUNC_DEFS; 7043 7044 if(SOC_E_NONE != cprimod_control_flow_config_t_validate(config)) { 7045 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config validation failed")); 7046 } 7047 7048 /* Dispatch */ 7049 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7050 if(__type__ >= cprimodDispatchTypeCount) { 7051 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7052 } 7053 7054 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_control_flow_config_set) { 7055 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_control_flow_config_set(unit, port, flow_id, config); 7056 _SOC_IF_ERR_EXIT(__rv__); 7057 } else { 7058 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_rx_control_flow_config_set isn't implemented for driver type")); 7059 } 7060 7061 exit: 7062 SOC_FUNC_RETURN; 7063 7064 } 7065 7066 7067 int cprimod_rsvd4_rx_control_flow_config_get(int unit, int port, uint32 flow_id, cprimod_control_flow_config_t* config) 7068 { 7069 7070 cprimod_dispatch_type_t __type__; 7071 int __rv__; 7072 SOC_INIT_FUNC_DEFS; 7073 7074 if(config == NULL) { 7075 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config NULL parameter")); 7076 } 7077 if(SOC_E_NONE != cprimod_control_flow_config_t_init(config)) { 7078 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config initialization failed")); 7079 } 7080 7081 /* Dispatch */ 7082 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7083 if(__type__ >= cprimodDispatchTypeCount) { 7084 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7085 } 7086 7087 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_control_flow_config_get) { 7088 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_control_flow_config_get(unit, port, flow_id, config); 7089 _SOC_IF_ERR_EXIT(__rv__); 7090 } else { 7091 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_rx_control_flow_config_get isn't implemented for driver type")); 7092 } 7093 7094 exit: 7095 SOC_FUNC_RETURN; 7096 7097 } 7098 7099 7100 int cprimod_sync_profile_entry_t_validate(const cprimod_sync_profile_entry_t* cprimod_sync_profile_entry) 7101 { 7102 SOC_INIT_FUNC_DEFS; 7103 if(cprimod_sync_profile_entry == NULL) { 7104 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 7105 } 7106 7107 7108 7109 exit: 7110 SOC_FUNC_RETURN; 7111 7112 } 7113 7114 int cprimod_sync_profile_entry_t_init(cprimod_sync_profile_entry_t* cprimod_sync_profile_entry) 7115 { 7116 SOC_INIT_FUNC_DEFS; 7117 7118 if(cprimod_sync_profile_entry == NULL){ 7119 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_sync_profile_entry NULL parameter")); 7120 } 7121 sal_memset(cprimod_sync_profile_entry, 0, sizeof(cprimod_sync_profile_entry_t)); 7122 cprimod_sync_profile_entry->count_cycle = 0; 7123 7124 7125 exit: 7126 SOC_FUNC_RETURN; 7127 7128 } 7129 7130 int cprimod_rsvd4_rx_sync_profile_entry_set(int unit, int port, uint32 profile_id, const cprimod_sync_profile_entry_t* entry) 7131 { 7132 7133 cprimod_dispatch_type_t __type__; 7134 int __rv__; 7135 SOC_INIT_FUNC_DEFS; 7136 7137 if(SOC_E_NONE != cprimod_sync_profile_entry_t_validate(entry)) { 7138 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("entry validation failed")); 7139 } 7140 7141 /* Dispatch */ 7142 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7143 if(__type__ >= cprimodDispatchTypeCount) { 7144 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7145 } 7146 7147 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_sync_profile_entry_set) { 7148 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_sync_profile_entry_set(unit, port, profile_id, entry); 7149 _SOC_IF_ERR_EXIT(__rv__); 7150 } else { 7151 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_rx_sync_profile_entry_set isn't implemented for driver type")); 7152 } 7153 7154 exit: 7155 SOC_FUNC_RETURN; 7156 7157 } 7158 7159 7160 int cprimod_rsvd4_rx_sync_profile_entry_get(int unit, int port, uint32 profile_id, cprimod_sync_profile_entry_t* entry) 7161 { 7162 7163 cprimod_dispatch_type_t __type__; 7164 int __rv__; 7165 SOC_INIT_FUNC_DEFS; 7166 7167 if(entry == NULL) { 7168 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("entry NULL parameter")); 7169 } 7170 if(SOC_E_NONE != cprimod_sync_profile_entry_t_init(entry)) { 7171 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("entry initialization failed")); 7172 } 7173 7174 /* Dispatch */ 7175 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7176 if(__type__ >= cprimodDispatchTypeCount) { 7177 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7178 } 7179 7180 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_sync_profile_entry_get) { 7181 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_rx_sync_profile_entry_get(unit, port, profile_id, entry); 7182 _SOC_IF_ERR_EXIT(__rv__); 7183 } else { 7184 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_rx_sync_profile_entry_get isn't implemented for driver type")); 7185 } 7186 7187 exit: 7188 SOC_FUNC_RETURN; 7189 7190 } 7191 7192 7193 int cprimod_rx_tag_config_set(int unit, int port, uint32 default_tag, uint32 no_match_tag) 7194 { 7195 7196 cprimod_dispatch_type_t __type__; 7197 int __rv__; 7198 SOC_INIT_FUNC_DEFS; 7199 7200 /* Dispatch */ 7201 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7202 if(__type__ >= cprimodDispatchTypeCount) { 7203 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7204 } 7205 7206 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rx_tag_config_set) { 7207 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rx_tag_config_set(unit, port, default_tag, no_match_tag); 7208 _SOC_IF_ERR_EXIT(__rv__); 7209 } else { 7210 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rx_tag_config_set isn't implemented for driver type")); 7211 } 7212 7213 exit: 7214 SOC_FUNC_RETURN; 7215 7216 } 7217 7218 7219 int cprimod_rx_tag_gen_entry_add(int unit, int port, const cprimod_tag_gen_entry_t* entry) 7220 { 7221 7222 cprimod_dispatch_type_t __type__; 7223 int __rv__; 7224 SOC_INIT_FUNC_DEFS; 7225 7226 /* Dispatch */ 7227 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7228 if(__type__ >= cprimodDispatchTypeCount) { 7229 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7230 } 7231 7232 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rx_tag_gen_entry_add) { 7233 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rx_tag_gen_entry_add(unit, port, entry); 7234 _SOC_IF_ERR_EXIT(__rv__); 7235 } else { 7236 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rx_tag_gen_entry_add isn't implemented for driver type")); 7237 } 7238 7239 exit: 7240 SOC_FUNC_RETURN; 7241 7242 } 7243 7244 7245 int cprimod_rx_tag_gen_entry_delete(int unit, int port, const cprimod_tag_gen_entry_t* entry) 7246 { 7247 7248 cprimod_dispatch_type_t __type__; 7249 int __rv__; 7250 SOC_INIT_FUNC_DEFS; 7251 7252 /* Dispatch */ 7253 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7254 if(__type__ >= cprimodDispatchTypeCount) { 7255 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7256 } 7257 7258 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rx_tag_gen_entry_delete) { 7259 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rx_tag_gen_entry_delete(unit, port, entry); 7260 _SOC_IF_ERR_EXIT(__rv__); 7261 } else { 7262 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rx_tag_gen_entry_delete isn't implemented for driver type")); 7263 } 7264 7265 exit: 7266 SOC_FUNC_RETURN; 7267 7268 } 7269 7270 7271 int cprimod_rx_control_flow_tag_option_set(int unit, int port, uint32 flow_id, cprimod_cpri_tag_option_t tag_option) 7272 { 7273 7274 cprimod_dispatch_type_t __type__; 7275 int __rv__; 7276 SOC_INIT_FUNC_DEFS; 7277 7278 /* Dispatch */ 7279 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7280 if(__type__ >= cprimodDispatchTypeCount) { 7281 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7282 } 7283 7284 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rx_control_flow_tag_option_set) { 7285 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rx_control_flow_tag_option_set(unit, port, flow_id, tag_option); 7286 _SOC_IF_ERR_EXIT(__rv__); 7287 } else { 7288 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rx_control_flow_tag_option_set isn't implemented for driver type")); 7289 } 7290 7291 exit: 7292 SOC_FUNC_RETURN; 7293 7294 } 7295 7296 7297 int cprimod_rsvd4_tx_control_flow_group_member_add(int unit, int port, uint32 group_id, uint32 priority, uint32 queue_num, cprimod_control_msg_proc_type_t proc_type) 7298 { 7299 7300 cprimod_dispatch_type_t __type__; 7301 int __rv__; 7302 SOC_INIT_FUNC_DEFS; 7303 7304 /* Dispatch */ 7305 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7306 if(__type__ >= cprimodDispatchTypeCount) { 7307 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7308 } 7309 7310 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_flow_group_member_add) { 7311 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_flow_group_member_add(unit, port, group_id, priority, queue_num, proc_type); 7312 _SOC_IF_ERR_EXIT(__rv__); 7313 } else { 7314 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_control_flow_group_member_add isn't implemented for driver type")); 7315 } 7316 7317 exit: 7318 SOC_FUNC_RETURN; 7319 7320 } 7321 7322 7323 int cprimod_rsvd4_tx_control_flow_group_member_delete(int unit, int port, uint32 group_id, uint32 priority) 7324 { 7325 7326 cprimod_dispatch_type_t __type__; 7327 int __rv__; 7328 SOC_INIT_FUNC_DEFS; 7329 7330 /* Dispatch */ 7331 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7332 if(__type__ >= cprimodDispatchTypeCount) { 7333 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7334 } 7335 7336 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_flow_group_member_delete) { 7337 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_flow_group_member_delete(unit, port, group_id, priority); 7338 _SOC_IF_ERR_EXIT(__rv__); 7339 } else { 7340 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_control_flow_group_member_delete isn't implemented for driver type")); 7341 } 7342 7343 exit: 7344 SOC_FUNC_RETURN; 7345 7346 } 7347 7348 7349 int cprimod_rsvd4_tx_eth_message_config_set(int unit, int port, uint32 msg_node, uint32 msg_subnode, uint32 msg_type, uint32 msg_padding) 7350 { 7351 7352 cprimod_dispatch_type_t __type__; 7353 int __rv__; 7354 SOC_INIT_FUNC_DEFS; 7355 7356 /* Dispatch */ 7357 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7358 if(__type__ >= cprimodDispatchTypeCount) { 7359 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7360 } 7361 7362 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_eth_message_config_set) { 7363 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_eth_message_config_set(unit, port, msg_node, msg_subnode, msg_type, msg_padding); 7364 _SOC_IF_ERR_EXIT(__rv__); 7365 } else { 7366 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_eth_message_config_set isn't implemented for driver type")); 7367 } 7368 7369 exit: 7370 SOC_FUNC_RETURN; 7371 7372 } 7373 7374 7375 int cprimod_rsvd4_tx_single_raw_message_config_set(int unit, int port, uint32 msg_id, uint32 msg_type) 7376 { 7377 7378 cprimod_dispatch_type_t __type__; 7379 int __rv__; 7380 SOC_INIT_FUNC_DEFS; 7381 7382 /* Dispatch */ 7383 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7384 if(__type__ >= cprimodDispatchTypeCount) { 7385 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7386 } 7387 7388 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_single_raw_message_config_set) { 7389 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_single_raw_message_config_set(unit, port, msg_id, msg_type); 7390 _SOC_IF_ERR_EXIT(__rv__); 7391 } else { 7392 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_single_raw_message_config_set isn't implemented for driver type")); 7393 } 7394 7395 exit: 7396 SOC_FUNC_RETURN; 7397 7398 } 7399 7400 7401 int cprimod_rsvd4_tx_single_tunnel_message_config_set(int unit, int port, cprimod_cpri_crc_option_t crc_option) 7402 { 7403 7404 cprimod_dispatch_type_t __type__; 7405 int __rv__; 7406 SOC_INIT_FUNC_DEFS; 7407 7408 /* Dispatch */ 7409 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7410 if(__type__ >= cprimodDispatchTypeCount) { 7411 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7412 } 7413 7414 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_single_tunnel_message_config_set) { 7415 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_single_tunnel_message_config_set(unit, port, crc_option); 7416 _SOC_IF_ERR_EXIT(__rv__); 7417 } else { 7418 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_single_tunnel_message_config_set isn't implemented for driver type")); 7419 } 7420 7421 exit: 7422 SOC_FUNC_RETURN; 7423 7424 } 7425 7426 7427 int cprimod_rsvd4_tx_config_info_t_validate(const cprimod_rsvd4_tx_config_info_t* cprimod_rsvd4_tx_config_info) 7428 { 7429 SOC_INIT_FUNC_DEFS; 7430 if(cprimod_rsvd4_tx_config_info == NULL) { 7431 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 7432 } 7433 7434 7435 7436 exit: 7437 SOC_FUNC_RETURN; 7438 7439 } 7440 7441 int cprimod_rsvd4_tx_config_info_t_init(cprimod_rsvd4_tx_config_info_t* cprimod_rsvd4_tx_config_info) 7442 { 7443 SOC_INIT_FUNC_DEFS; 7444 7445 if(cprimod_rsvd4_tx_config_info == NULL){ 7446 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_rsvd4_tx_config_info NULL parameter")); 7447 } 7448 sal_memset(cprimod_rsvd4_tx_config_info, 0, sizeof(cprimod_rsvd4_tx_config_info_t)); 7449 cprimod_rsvd4_tx_config_info->proc_type = 0; 7450 7451 7452 exit: 7453 SOC_FUNC_RETURN; 7454 7455 } 7456 7457 int cprimod_rsvd4_tx_control_flow_config_set(int unit, int port, uint32 flow_id, const cprimod_rsvd4_tx_config_info_t* config_info) 7458 { 7459 7460 cprimod_dispatch_type_t __type__; 7461 int __rv__; 7462 SOC_INIT_FUNC_DEFS; 7463 7464 if(SOC_E_NONE != cprimod_rsvd4_tx_config_info_t_validate(config_info)) { 7465 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info validation failed")); 7466 } 7467 7468 /* Dispatch */ 7469 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7470 if(__type__ >= cprimodDispatchTypeCount) { 7471 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7472 } 7473 7474 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_flow_config_set) { 7475 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_flow_config_set(unit, port, flow_id, config_info); 7476 _SOC_IF_ERR_EXIT(__rv__); 7477 } else { 7478 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_control_flow_config_set isn't implemented for driver type")); 7479 } 7480 7481 exit: 7482 SOC_FUNC_RETURN; 7483 7484 } 7485 7486 7487 int cprimod_rsvd4_tx_control_flow_config_get(int unit, int port, uint32 flow_id, cprimod_rsvd4_tx_config_info_t* config_info) 7488 { 7489 7490 cprimod_dispatch_type_t __type__; 7491 int __rv__; 7492 SOC_INIT_FUNC_DEFS; 7493 7494 if(config_info == NULL) { 7495 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info NULL parameter")); 7496 } 7497 if(SOC_E_NONE != cprimod_rsvd4_tx_config_info_t_init(config_info)) { 7498 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config_info initialization failed")); 7499 } 7500 7501 /* Dispatch */ 7502 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7503 if(__type__ >= cprimodDispatchTypeCount) { 7504 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7505 } 7506 7507 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_flow_config_get) { 7508 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_flow_config_get(unit, port, flow_id, config_info); 7509 _SOC_IF_ERR_EXIT(__rv__); 7510 } else { 7511 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_control_flow_config_get isn't implemented for driver type")); 7512 } 7513 7514 exit: 7515 SOC_FUNC_RETURN; 7516 7517 } 7518 7519 7520 int cprimod_rsvd4_tx_control_flow_header_index_set(int unit, int port, uint32 roe_flow_id, uint32 index) 7521 { 7522 7523 cprimod_dispatch_type_t __type__; 7524 int __rv__; 7525 SOC_INIT_FUNC_DEFS; 7526 7527 /* Dispatch */ 7528 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7529 if(__type__ >= cprimodDispatchTypeCount) { 7530 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7531 } 7532 7533 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_flow_header_index_set) { 7534 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_flow_header_index_set(unit, port, roe_flow_id, index); 7535 _SOC_IF_ERR_EXIT(__rv__); 7536 } else { 7537 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_control_flow_header_index_set isn't implemented for driver type")); 7538 } 7539 7540 exit: 7541 SOC_FUNC_RETURN; 7542 7543 } 7544 7545 7546 int cprimod_rsvd4_tx_control_flow_header_index_get(int unit, int port, uint32 roe_flow_id, uint32* index) 7547 { 7548 7549 cprimod_dispatch_type_t __type__; 7550 int __rv__; 7551 SOC_INIT_FUNC_DEFS; 7552 7553 if(index == NULL) { 7554 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("index NULL parameter")); 7555 } 7556 /* Dispatch */ 7557 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7558 if(__type__ >= cprimodDispatchTypeCount) { 7559 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7560 } 7561 7562 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_flow_header_index_get) { 7563 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_flow_header_index_get(unit, port, roe_flow_id, index); 7564 _SOC_IF_ERR_EXIT(__rv__); 7565 } else { 7566 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_control_flow_header_index_get isn't implemented for driver type")); 7567 } 7568 7569 exit: 7570 SOC_FUNC_RETURN; 7571 7572 } 7573 7574 7575 int cprimod_rsvd4_tx_control_header_entry_set(int unit, int port, uint32 index, uint32 header_node, uint32 header_subnode, uint32 payload_node) 7576 { 7577 7578 cprimod_dispatch_type_t __type__; 7579 int __rv__; 7580 SOC_INIT_FUNC_DEFS; 7581 7582 /* Dispatch */ 7583 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7584 if(__type__ >= cprimodDispatchTypeCount) { 7585 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7586 } 7587 7588 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_header_entry_set) { 7589 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_header_entry_set(unit, port, index, header_node, header_subnode, payload_node); 7590 _SOC_IF_ERR_EXIT(__rv__); 7591 } else { 7592 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_control_header_entry_set isn't implemented for driver type")); 7593 } 7594 7595 exit: 7596 SOC_FUNC_RETURN; 7597 7598 } 7599 7600 7601 int cprimod_rsvd4_tx_control_header_entry_get(int unit, int port, uint32 index, uint32* header_node, uint32* header_subnode, uint32* payload_node) 7602 { 7603 7604 cprimod_dispatch_type_t __type__; 7605 int __rv__; 7606 SOC_INIT_FUNC_DEFS; 7607 7608 if(header_node == NULL) { 7609 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("header_node NULL parameter")); 7610 } 7611 if(header_subnode == NULL) { 7612 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("header_subnode NULL parameter")); 7613 } 7614 if(payload_node == NULL) { 7615 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("payload_node NULL parameter")); 7616 } 7617 /* Dispatch */ 7618 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7619 if(__type__ >= cprimodDispatchTypeCount) { 7620 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7621 } 7622 7623 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_header_entry_get) { 7624 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_control_header_entry_get(unit, port, index, header_node, header_subnode, payload_node); 7625 _SOC_IF_ERR_EXIT(__rv__); 7626 } else { 7627 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_control_header_entry_get isn't implemented for driver type")); 7628 } 7629 7630 exit: 7631 SOC_FUNC_RETURN; 7632 7633 } 7634 7635 7636 int cprimod_rsvd4_fast_eth_config_set(int unit, int port, const cprimod_cpri_fast_eth_config_t* config_info) 7637 { 7638 7639 cprimod_dispatch_type_t __type__; 7640 int __rv__; 7641 SOC_INIT_FUNC_DEFS; 7642 7643 /* Dispatch */ 7644 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7645 if(__type__ >= cprimodDispatchTypeCount) { 7646 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7647 } 7648 7649 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_fast_eth_config_set) { 7650 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_fast_eth_config_set(unit, port, config_info); 7651 _SOC_IF_ERR_EXIT(__rv__); 7652 } else { 7653 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_fast_eth_config_set isn't implemented for driver type")); 7654 } 7655 7656 exit: 7657 SOC_FUNC_RETURN; 7658 7659 } 7660 7661 7662 int cprimod_cpri_or_enet_port_set(int unit, int port, int val) 7663 { 7664 7665 cprimod_dispatch_type_t __type__; 7666 int __rv__; 7667 SOC_INIT_FUNC_DEFS; 7668 7669 /* Dispatch */ 7670 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7671 if(__type__ >= cprimodDispatchTypeCount) { 7672 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7673 } 7674 7675 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_or_enet_port_set) { 7676 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_or_enet_port_set(unit, port, val); 7677 _SOC_IF_ERR_EXIT(__rv__); 7678 } else { 7679 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_or_enet_port_set isn't implemented for driver type")); 7680 } 7681 7682 exit: 7683 SOC_FUNC_RETURN; 7684 7685 } 7686 7687 7688 int cprimod_cpri_or_enet_port_get(int unit, int port, int* val) 7689 { 7690 7691 cprimod_dispatch_type_t __type__; 7692 int __rv__; 7693 SOC_INIT_FUNC_DEFS; 7694 7695 if(val == NULL) { 7696 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("val NULL parameter")); 7697 } 7698 /* Dispatch */ 7699 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7700 if(__type__ >= cprimodDispatchTypeCount) { 7701 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7702 } 7703 7704 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_or_enet_port_get) { 7705 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_or_enet_port_get(unit, port, val); 7706 _SOC_IF_ERR_EXIT(__rv__); 7707 } else { 7708 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_or_enet_port_get isn't implemented for driver type")); 7709 } 7710 7711 exit: 7712 SOC_FUNC_RETURN; 7713 7714 } 7715 7716 7717 int cprimod_cpri_port_rx_enable_set(int unit, int port, int val) 7718 { 7719 7720 cprimod_dispatch_type_t __type__; 7721 int __rv__; 7722 SOC_INIT_FUNC_DEFS; 7723 7724 /* Dispatch */ 7725 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7726 if(__type__ >= cprimodDispatchTypeCount) { 7727 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7728 } 7729 7730 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_enable_set) { 7731 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_enable_set(unit, port, val); 7732 _SOC_IF_ERR_EXIT(__rv__); 7733 } else { 7734 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_enable_set isn't implemented for driver type")); 7735 } 7736 7737 exit: 7738 SOC_FUNC_RETURN; 7739 7740 } 7741 7742 7743 int cprimod_cpri_port_rx_enable_get(int unit, int port, int* val) 7744 { 7745 7746 cprimod_dispatch_type_t __type__; 7747 int __rv__; 7748 SOC_INIT_FUNC_DEFS; 7749 7750 if(val == NULL) { 7751 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("val NULL parameter")); 7752 } 7753 /* Dispatch */ 7754 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7755 if(__type__ >= cprimodDispatchTypeCount) { 7756 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7757 } 7758 7759 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_enable_get) { 7760 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_enable_get(unit, port, val); 7761 _SOC_IF_ERR_EXIT(__rv__); 7762 } else { 7763 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_enable_get isn't implemented for driver type")); 7764 } 7765 7766 exit: 7767 SOC_FUNC_RETURN; 7768 7769 } 7770 7771 7772 int cprimod_cpri_port_tx_enable_set(int unit, int port, int val) 7773 { 7774 7775 cprimod_dispatch_type_t __type__; 7776 int __rv__; 7777 SOC_INIT_FUNC_DEFS; 7778 7779 /* Dispatch */ 7780 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7781 if(__type__ >= cprimodDispatchTypeCount) { 7782 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7783 } 7784 7785 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_enable_set) { 7786 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_enable_set(unit, port, val); 7787 _SOC_IF_ERR_EXIT(__rv__); 7788 } else { 7789 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_enable_set isn't implemented for driver type")); 7790 } 7791 7792 exit: 7793 SOC_FUNC_RETURN; 7794 7795 } 7796 7797 7798 int cprimod_cpri_port_tx_enable_get(int unit, int port, int* val) 7799 { 7800 7801 cprimod_dispatch_type_t __type__; 7802 int __rv__; 7803 SOC_INIT_FUNC_DEFS; 7804 7805 if(val == NULL) { 7806 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("val NULL parameter")); 7807 } 7808 /* Dispatch */ 7809 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7810 if(__type__ >= cprimodDispatchTypeCount) { 7811 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7812 } 7813 7814 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_enable_get) { 7815 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_enable_get(unit, port, val); 7816 _SOC_IF_ERR_EXIT(__rv__); 7817 } else { 7818 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_enable_get isn't implemented for driver type")); 7819 } 7820 7821 exit: 7822 SOC_FUNC_RETURN; 7823 7824 } 7825 7826 7827 int cprimod_cpri_port_interrupt_link_status_get(int unit, int port, const int* is_link_intr_status) 7828 { 7829 7830 cprimod_dispatch_type_t __type__; 7831 int __rv__; 7832 SOC_INIT_FUNC_DEFS; 7833 7834 /* Dispatch */ 7835 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7836 if(__type__ >= cprimodDispatchTypeCount) { 7837 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7838 } 7839 7840 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_interrupt_link_status_get) { 7841 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_interrupt_link_status_get(unit, port, is_link_intr_status); 7842 _SOC_IF_ERR_EXIT(__rv__); 7843 } else { 7844 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_interrupt_link_status_get isn't implemented for driver type")); 7845 } 7846 7847 exit: 7848 SOC_FUNC_RETURN; 7849 7850 } 7851 7852 7853 int cprimod_interrupt_callback_entry_t_validate(const cprimod_interrupt_callback_entry_t* cprimod_interrupt_callback_entry) 7854 { 7855 SOC_INIT_FUNC_DEFS; 7856 if(cprimod_interrupt_callback_entry == NULL) { 7857 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 7858 } 7859 7860 7861 7862 exit: 7863 SOC_FUNC_RETURN; 7864 7865 } 7866 7867 int cprimod_interrupt_callback_entry_t_init(cprimod_interrupt_callback_entry_t* cprimod_interrupt_callback_entry) 7868 { 7869 SOC_INIT_FUNC_DEFS; 7870 7871 if(cprimod_interrupt_callback_entry == NULL){ 7872 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_interrupt_callback_entry NULL parameter")); 7873 } 7874 sal_memset(cprimod_interrupt_callback_entry, 0, sizeof(cprimod_interrupt_callback_entry_t)); 7875 cprimod_interrupt_callback_entry->cb_func = NULL; 7876 cprimod_interrupt_callback_entry->cb_data = NULL; 7877 7878 7879 exit: 7880 SOC_FUNC_RETURN; 7881 7882 } 7883 7884 int cprimod_cpri_port_interrupt_enable_set(int unit, int port, cprimod_cpri_port_intr_type_t cpri_intr_type, int data, int enable) 7885 { 7886 7887 cprimod_dispatch_type_t __type__; 7888 int __rv__; 7889 SOC_INIT_FUNC_DEFS; 7890 7891 /* Dispatch */ 7892 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7893 if(__type__ >= cprimodDispatchTypeCount) { 7894 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7895 } 7896 7897 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_interrupt_enable_set) { 7898 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_interrupt_enable_set(unit, port, cpri_intr_type, data, enable); 7899 _SOC_IF_ERR_EXIT(__rv__); 7900 } else { 7901 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_interrupt_enable_set isn't implemented for driver type")); 7902 } 7903 7904 exit: 7905 SOC_FUNC_RETURN; 7906 7907 } 7908 7909 7910 int cprimod_cpri_port_interrupt_process(int unit, int port) 7911 { 7912 7913 cprimod_dispatch_type_t __type__; 7914 int __rv__; 7915 SOC_INIT_FUNC_DEFS; 7916 7917 /* Dispatch */ 7918 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 7919 if(__type__ >= cprimodDispatchTypeCount) { 7920 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 7921 } 7922 7923 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_interrupt_process) { 7924 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_interrupt_process(unit, port); 7925 _SOC_IF_ERR_EXIT(__rv__); 7926 } else { 7927 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_interrupt_process isn't implemented for driver type")); 7928 } 7929 7930 exit: 7931 SOC_FUNC_RETURN; 7932 7933 } 7934 7935 7936 int cprimod_1588_capture_mode_t_validate(cprimod_1588_capture_mode_t cprimod_1588_capture_mode) 7937 { 7938 SOC_INIT_FUNC_DEFS; 7939 if(cprimod_1588_capture_mode >= cprimod_1588_MATCH_Count) { 7940 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 7941 } 7942 7943 exit: 7944 SOC_FUNC_RETURN; 7945 7946 } 7947 7948 int cprimod_1588_capture_config_t_validate(const cprimod_1588_capture_config_t* cprimod_1588_capture_config) 7949 { 7950 SOC_INIT_FUNC_DEFS; 7951 if(cprimod_1588_capture_config == NULL) { 7952 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 7953 } 7954 7955 if(SOC_E_NONE != cprimod_1588_capture_mode_t_validate(cprimod_1588_capture_config->mode)) { 7956 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mode validation failed")); 7957 } 7958 7959 7960 7961 exit: 7962 SOC_FUNC_RETURN; 7963 7964 } 7965 7966 int cprimod_1588_capture_config_t_init(cprimod_1588_capture_config_t* cprimod_1588_capture_config) 7967 { 7968 SOC_INIT_FUNC_DEFS; 7969 7970 if(cprimod_1588_capture_config == NULL){ 7971 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_1588_capture_config NULL parameter")); 7972 } 7973 sal_memset(cprimod_1588_capture_config, 0, sizeof(cprimod_1588_capture_config_t)); 7974 cprimod_1588_capture_config->mode = 0; 7975 cprimod_1588_capture_config->capture_bfn_num = 0; 7976 cprimod_1588_capture_config->capture_hfn_num = 0; 7977 7978 7979 exit: 7980 SOC_FUNC_RETURN; 7981 7982 } 7983 7984 int cprimod_1588_time_t_validate(const cprimod_1588_time_t* cprimod_1588_time) 7985 { 7986 SOC_INIT_FUNC_DEFS; 7987 if(cprimod_1588_time == NULL) { 7988 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 7989 } 7990 7991 7992 7993 exit: 7994 SOC_FUNC_RETURN; 7995 7996 } 7997 7998 int cprimod_1588_time_t_init(cprimod_1588_time_t* cprimod_1588_time) 7999 { 8000 SOC_INIT_FUNC_DEFS; 8001 8002 if(cprimod_1588_time == NULL){ 8003 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_1588_time NULL parameter")); 8004 } 8005 sal_memset(cprimod_1588_time, 0, sizeof(cprimod_1588_time_t)); 8006 COMPILER_64_ZERO(cprimod_1588_time->nano_sec); 8007 cprimod_1588_time->sub_nano_sec = 0; 8008 cprimod_1588_time->sign_bit = 0; 8009 8010 8011 exit: 8012 SOC_FUNC_RETURN; 8013 8014 } 8015 8016 int cprimod_fast_clk_bit_time_period_set(int unit, int port, uint32 bit_time_period) 8017 { 8018 8019 cprimod_dispatch_type_t __type__; 8020 int __rv__; 8021 SOC_INIT_FUNC_DEFS; 8022 8023 /* Dispatch */ 8024 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8025 if(__type__ >= cprimodDispatchTypeCount) { 8026 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8027 } 8028 8029 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_fast_clk_bit_time_period_set) { 8030 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_fast_clk_bit_time_period_set(unit, port, bit_time_period); 8031 _SOC_IF_ERR_EXIT(__rv__); 8032 } else { 8033 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_fast_clk_bit_time_period_set isn't implemented for driver type")); 8034 } 8035 8036 exit: 8037 SOC_FUNC_RETURN; 8038 8039 } 8040 8041 8042 int cprimod_fast_clk_bit_time_period_get(int unit, int port, uint32* bit_time_period) 8043 { 8044 8045 cprimod_dispatch_type_t __type__; 8046 int __rv__; 8047 SOC_INIT_FUNC_DEFS; 8048 8049 if(bit_time_period == NULL) { 8050 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("bit_time_period NULL parameter")); 8051 } 8052 /* Dispatch */ 8053 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8054 if(__type__ >= cprimodDispatchTypeCount) { 8055 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8056 } 8057 8058 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_fast_clk_bit_time_period_get) { 8059 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_fast_clk_bit_time_period_get(unit, port, bit_time_period); 8060 _SOC_IF_ERR_EXIT(__rv__); 8061 } else { 8062 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_fast_clk_bit_time_period_get isn't implemented for driver type")); 8063 } 8064 8065 exit: 8066 SOC_FUNC_RETURN; 8067 8068 } 8069 8070 8071 int cprimod_1588_bit_time_period_set(int unit, int port, cprimod_direction_t direction, cprimod_port_speed_t speed) 8072 { 8073 8074 cprimod_dispatch_type_t __type__; 8075 int __rv__; 8076 SOC_INIT_FUNC_DEFS; 8077 8078 if(SOC_E_NONE != cprimod_port_speed_t_validate(speed)) { 8079 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("speed validation failed")); 8080 } 8081 8082 /* Dispatch */ 8083 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8084 if(__type__ >= cprimodDispatchTypeCount) { 8085 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8086 } 8087 8088 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_1588_bit_time_period_set) { 8089 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_1588_bit_time_period_set(unit, port, direction, speed); 8090 _SOC_IF_ERR_EXIT(__rv__); 8091 } else { 8092 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_1588_bit_time_period_set isn't implemented for driver type")); 8093 } 8094 8095 exit: 8096 SOC_FUNC_RETURN; 8097 8098 } 8099 8100 8101 int cprimod_1588_bit_time_period_get(int unit, int port, cprimod_direction_t direction, uint32* bit_time_period) 8102 { 8103 8104 cprimod_dispatch_type_t __type__; 8105 int __rv__; 8106 SOC_INIT_FUNC_DEFS; 8107 8108 if(bit_time_period == NULL) { 8109 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("bit_time_period NULL parameter")); 8110 } 8111 /* Dispatch */ 8112 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8113 if(__type__ >= cprimodDispatchTypeCount) { 8114 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8115 } 8116 8117 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_1588_bit_time_period_get) { 8118 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_1588_bit_time_period_get(unit, port, direction, bit_time_period); 8119 _SOC_IF_ERR_EXIT(__rv__); 8120 } else { 8121 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_1588_bit_time_period_get isn't implemented for driver type")); 8122 } 8123 8124 exit: 8125 SOC_FUNC_RETURN; 8126 8127 } 8128 8129 8130 int cprimod_1588_timestamp_capture_config_set(int unit, int port, cprimod_direction_t direction, const cprimod_1588_capture_config_t* config) 8131 { 8132 8133 cprimod_dispatch_type_t __type__; 8134 int __rv__; 8135 SOC_INIT_FUNC_DEFS; 8136 8137 if(SOC_E_NONE != cprimod_1588_capture_config_t_validate(config)) { 8138 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config validation failed")); 8139 } 8140 8141 /* Dispatch */ 8142 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8143 if(__type__ >= cprimodDispatchTypeCount) { 8144 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8145 } 8146 8147 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_capture_config_set) { 8148 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_capture_config_set(unit, port, direction, config); 8149 _SOC_IF_ERR_EXIT(__rv__); 8150 } else { 8151 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_1588_timestamp_capture_config_set isn't implemented for driver type")); 8152 } 8153 8154 exit: 8155 SOC_FUNC_RETURN; 8156 8157 } 8158 8159 8160 int cprimod_1588_timestamp_capture_config_get(int unit, int port, cprimod_direction_t direction, cprimod_1588_capture_config_t* config) 8161 { 8162 8163 cprimod_dispatch_type_t __type__; 8164 int __rv__; 8165 SOC_INIT_FUNC_DEFS; 8166 8167 if(config == NULL) { 8168 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config NULL parameter")); 8169 } 8170 if(SOC_E_NONE != cprimod_1588_capture_config_t_init(config)) { 8171 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config initialization failed")); 8172 } 8173 8174 /* Dispatch */ 8175 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8176 if(__type__ >= cprimodDispatchTypeCount) { 8177 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8178 } 8179 8180 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_capture_config_get) { 8181 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_capture_config_get(unit, port, direction, config); 8182 _SOC_IF_ERR_EXIT(__rv__); 8183 } else { 8184 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_1588_timestamp_capture_config_get isn't implemented for driver type")); 8185 } 8186 8187 exit: 8188 SOC_FUNC_RETURN; 8189 8190 } 8191 8192 8193 int cprimod_1588_captured_timestamp_get(int unit, int port, cprimod_direction_t direction, uint8 fifo0_sw1, uint8 mx_cnt, uint8* count, uint64* captured_time) 8194 { 8195 8196 cprimod_dispatch_type_t __type__; 8197 int __rv__; 8198 SOC_INIT_FUNC_DEFS; 8199 8200 if(count == NULL) { 8201 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("count NULL parameter")); 8202 } 8203 if(captured_time == NULL) { 8204 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("captured_time NULL parameter")); 8205 } 8206 /* Dispatch */ 8207 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8208 if(__type__ >= cprimodDispatchTypeCount) { 8209 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8210 } 8211 8212 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_1588_captured_timestamp_get) { 8213 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_1588_captured_timestamp_get(unit, port, direction, fifo0_sw1, mx_cnt, count, captured_time); 8214 _SOC_IF_ERR_EXIT(__rv__); 8215 } else { 8216 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_1588_captured_timestamp_get isn't implemented for driver type")); 8217 } 8218 8219 exit: 8220 SOC_FUNC_RETURN; 8221 8222 } 8223 8224 8225 int cprimod_1588_timestamp_adjust_set(int unit, int port, cprimod_direction_t direction, const cprimod_1588_time_t* adjust_time) 8226 { 8227 8228 cprimod_dispatch_type_t __type__; 8229 int __rv__; 8230 SOC_INIT_FUNC_DEFS; 8231 8232 if(SOC_E_NONE != cprimod_1588_time_t_validate(adjust_time)) { 8233 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("adjust_time validation failed")); 8234 } 8235 8236 /* Dispatch */ 8237 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8238 if(__type__ >= cprimodDispatchTypeCount) { 8239 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8240 } 8241 8242 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_adjust_set) { 8243 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_adjust_set(unit, port, direction, adjust_time); 8244 _SOC_IF_ERR_EXIT(__rv__); 8245 } else { 8246 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_1588_timestamp_adjust_set isn't implemented for driver type")); 8247 } 8248 8249 exit: 8250 SOC_FUNC_RETURN; 8251 8252 } 8253 8254 8255 int cprimod_1588_timestamp_adjust_get(int unit, int port, cprimod_direction_t direction, cprimod_1588_time_t* adjust_time) 8256 { 8257 8258 cprimod_dispatch_type_t __type__; 8259 int __rv__; 8260 SOC_INIT_FUNC_DEFS; 8261 8262 if(adjust_time == NULL) { 8263 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("adjust_time NULL parameter")); 8264 } 8265 if(SOC_E_NONE != cprimod_1588_time_t_init(adjust_time)) { 8266 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("adjust_time initialization failed")); 8267 } 8268 8269 /* Dispatch */ 8270 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8271 if(__type__ >= cprimodDispatchTypeCount) { 8272 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8273 } 8274 8275 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_adjust_get) { 8276 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_adjust_get(unit, port, direction, adjust_time); 8277 _SOC_IF_ERR_EXIT(__rv__); 8278 } else { 8279 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_1588_timestamp_adjust_get isn't implemented for driver type")); 8280 } 8281 8282 exit: 8283 SOC_FUNC_RETURN; 8284 8285 } 8286 8287 8288 int cprimod_1588_timestamp_fifo_config_set(int unit, int port, cprimod_direction_t direction, uint16 modulo) 8289 { 8290 8291 cprimod_dispatch_type_t __type__; 8292 int __rv__; 8293 SOC_INIT_FUNC_DEFS; 8294 8295 /* Dispatch */ 8296 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8297 if(__type__ >= cprimodDispatchTypeCount) { 8298 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8299 } 8300 8301 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_fifo_config_set) { 8302 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_fifo_config_set(unit, port, direction, modulo); 8303 _SOC_IF_ERR_EXIT(__rv__); 8304 } else { 8305 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_1588_timestamp_fifo_config_set isn't implemented for driver type")); 8306 } 8307 8308 exit: 8309 SOC_FUNC_RETURN; 8310 8311 } 8312 8313 8314 int cprimod_1588_timestamp_fifo_config_get(int unit, int port, cprimod_direction_t direction, uint16* modulo) 8315 { 8316 8317 cprimod_dispatch_type_t __type__; 8318 int __rv__; 8319 SOC_INIT_FUNC_DEFS; 8320 8321 if(modulo == NULL) { 8322 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("modulo NULL parameter")); 8323 } 8324 /* Dispatch */ 8325 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8326 if(__type__ >= cprimodDispatchTypeCount) { 8327 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8328 } 8329 8330 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_fifo_config_get) { 8331 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_fifo_config_get(unit, port, direction, modulo); 8332 _SOC_IF_ERR_EXIT(__rv__); 8333 } else { 8334 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_1588_timestamp_fifo_config_get isn't implemented for driver type")); 8335 } 8336 8337 exit: 8338 SOC_FUNC_RETURN; 8339 8340 } 8341 8342 8343 int cprimod_1588_timestamp_cmic_config_set(int unit, int port, cprimod_direction_t direction, uint16 modulo) 8344 { 8345 8346 cprimod_dispatch_type_t __type__; 8347 int __rv__; 8348 SOC_INIT_FUNC_DEFS; 8349 8350 /* Dispatch */ 8351 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8352 if(__type__ >= cprimodDispatchTypeCount) { 8353 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8354 } 8355 8356 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_cmic_config_set) { 8357 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_cmic_config_set(unit, port, direction, modulo); 8358 _SOC_IF_ERR_EXIT(__rv__); 8359 } else { 8360 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_1588_timestamp_cmic_config_set isn't implemented for driver type")); 8361 } 8362 8363 exit: 8364 SOC_FUNC_RETURN; 8365 8366 } 8367 8368 8369 int cprimod_1588_timestamp_cmic_config_get(int unit, int port, cprimod_direction_t direction, uint16* modulo) 8370 { 8371 8372 cprimod_dispatch_type_t __type__; 8373 int __rv__; 8374 SOC_INIT_FUNC_DEFS; 8375 8376 if(modulo == NULL) { 8377 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("modulo NULL parameter")); 8378 } 8379 /* Dispatch */ 8380 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8381 if(__type__ >= cprimodDispatchTypeCount) { 8382 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8383 } 8384 8385 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_cmic_config_get) { 8386 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_1588_timestamp_cmic_config_get(unit, port, direction, modulo); 8387 _SOC_IF_ERR_EXIT(__rv__); 8388 } else { 8389 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_1588_timestamp_cmic_config_get isn't implemented for driver type")); 8390 } 8391 8392 exit: 8393 SOC_FUNC_RETURN; 8394 8395 } 8396 8397 8398 int cprimod_cpri_basic_frame_info_get(int unit, int port, cprimod_direction_t dir, uint32* frame_len_in_bits, uint32* control_word_len_in_bits) 8399 { 8400 8401 cprimod_dispatch_type_t __type__; 8402 int __rv__; 8403 SOC_INIT_FUNC_DEFS; 8404 8405 if(frame_len_in_bits == NULL) { 8406 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("frame_len_in_bits NULL parameter")); 8407 } 8408 if(control_word_len_in_bits == NULL) { 8409 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("control_word_len_in_bits NULL parameter")); 8410 } 8411 /* Dispatch */ 8412 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8413 if(__type__ >= cprimodDispatchTypeCount) { 8414 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8415 } 8416 8417 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_basic_frame_info_get) { 8418 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_basic_frame_info_get(unit, port, dir, frame_len_in_bits, control_word_len_in_bits); 8419 _SOC_IF_ERR_EXIT(__rv__); 8420 } else { 8421 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_basic_frame_info_get isn't implemented for driver type")); 8422 } 8423 8424 exit: 8425 SOC_FUNC_RETURN; 8426 8427 } 8428 8429 8430 int cprimod_cpri_agnostic_mode_basic_frame_config_set(int unit, int port, cprimod_direction_t dir, int enable) 8431 { 8432 8433 cprimod_dispatch_type_t __type__; 8434 int __rv__; 8435 SOC_INIT_FUNC_DEFS; 8436 8437 /* Dispatch */ 8438 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8439 if(__type__ >= cprimodDispatchTypeCount) { 8440 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8441 } 8442 8443 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_agnostic_mode_basic_frame_config_set) { 8444 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_agnostic_mode_basic_frame_config_set(unit, port, dir, enable); 8445 _SOC_IF_ERR_EXIT(__rv__); 8446 } else { 8447 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_agnostic_mode_basic_frame_config_set isn't implemented for driver type")); 8448 } 8449 8450 exit: 8451 SOC_FUNC_RETURN; 8452 8453 } 8454 8455 8456 int cprimod_cpri_interface_bus_width_get(int unit, int port, int* is_10bit_mode) 8457 { 8458 8459 cprimod_dispatch_type_t __type__; 8460 int __rv__; 8461 SOC_INIT_FUNC_DEFS; 8462 8463 if(is_10bit_mode == NULL) { 8464 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("is_10bit_mode NULL parameter")); 8465 } 8466 /* Dispatch */ 8467 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8468 if(__type__ >= cprimodDispatchTypeCount) { 8469 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8470 } 8471 8472 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_interface_bus_width_get) { 8473 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_interface_bus_width_get(unit, port, is_10bit_mode); 8474 _SOC_IF_ERR_EXIT(__rv__); 8475 } else { 8476 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_interface_bus_width_get isn't implemented for driver type")); 8477 } 8478 8479 exit: 8480 SOC_FUNC_RETURN; 8481 8482 } 8483 8484 8485 int cprimod_cpri_tunnel_mode_basic_frame_config_set(int unit, int port, cprimod_direction_t dir, int enable) 8486 { 8487 8488 cprimod_dispatch_type_t __type__; 8489 int __rv__; 8490 SOC_INIT_FUNC_DEFS; 8491 8492 /* Dispatch */ 8493 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8494 if(__type__ >= cprimodDispatchTypeCount) { 8495 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8496 } 8497 8498 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_tunnel_mode_basic_frame_config_set) { 8499 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_tunnel_mode_basic_frame_config_set(unit, port, dir, enable); 8500 _SOC_IF_ERR_EXIT(__rv__); 8501 } else { 8502 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_tunnel_mode_basic_frame_config_set isn't implemented for driver type")); 8503 } 8504 8505 exit: 8506 SOC_FUNC_RETURN; 8507 8508 } 8509 8510 8511 int cprimod_rsvd4_agnostic_mode_basic_frame_config_set(int unit, int port, cprimod_direction_t dir, int enable) 8512 { 8513 8514 cprimod_dispatch_type_t __type__; 8515 int __rv__; 8516 SOC_INIT_FUNC_DEFS; 8517 8518 /* Dispatch */ 8519 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8520 if(__type__ >= cprimodDispatchTypeCount) { 8521 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8522 } 8523 8524 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_agnostic_mode_basic_frame_config_set) { 8525 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_agnostic_mode_basic_frame_config_set(unit, port, dir, enable); 8526 _SOC_IF_ERR_EXIT(__rv__); 8527 } else { 8528 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_agnostic_mode_basic_frame_config_set isn't implemented for driver type")); 8529 } 8530 8531 exit: 8532 SOC_FUNC_RETURN; 8533 8534 } 8535 8536 8537 int cprimod_encap_presentation_time_enable_set(int unit, int port, int enable) 8538 { 8539 8540 cprimod_dispatch_type_t __type__; 8541 int __rv__; 8542 SOC_INIT_FUNC_DEFS; 8543 8544 /* Dispatch */ 8545 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8546 if(__type__ >= cprimodDispatchTypeCount) { 8547 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8548 } 8549 8550 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_enable_set) { 8551 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_enable_set(unit, port, enable); 8552 _SOC_IF_ERR_EXIT(__rv__); 8553 } else { 8554 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_presentation_time_enable_set isn't implemented for driver type")); 8555 } 8556 8557 exit: 8558 SOC_FUNC_RETURN; 8559 8560 } 8561 8562 8563 int cprimod_encap_presentation_time_enable_get(int unit, int port, int* enable) 8564 { 8565 8566 cprimod_dispatch_type_t __type__; 8567 int __rv__; 8568 SOC_INIT_FUNC_DEFS; 8569 8570 if(enable == NULL) { 8571 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("enable NULL parameter")); 8572 } 8573 /* Dispatch */ 8574 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8575 if(__type__ >= cprimodDispatchTypeCount) { 8576 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8577 } 8578 8579 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_enable_get) { 8580 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_enable_get(unit, port, enable); 8581 _SOC_IF_ERR_EXIT(__rv__); 8582 } else { 8583 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_presentation_time_enable_get isn't implemented for driver type")); 8584 } 8585 8586 exit: 8587 SOC_FUNC_RETURN; 8588 8589 } 8590 8591 8592 int cprimod_encap_presentation_time_config_t_validate(const cprimod_encap_presentation_time_config_t* cprimod_encap_presentation_time_config) 8593 { 8594 SOC_INIT_FUNC_DEFS; 8595 if(cprimod_encap_presentation_time_config == NULL) { 8596 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 8597 } 8598 8599 8600 8601 exit: 8602 SOC_FUNC_RETURN; 8603 8604 } 8605 8606 int cprimod_encap_presentation_time_config_t_init(cprimod_encap_presentation_time_config_t* cprimod_encap_presentation_time_config) 8607 { 8608 SOC_INIT_FUNC_DEFS; 8609 8610 if(cprimod_encap_presentation_time_config == NULL){ 8611 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_encap_presentation_time_config NULL parameter")); 8612 } 8613 sal_memset(cprimod_encap_presentation_time_config, 0, sizeof(cprimod_encap_presentation_time_config_t)); 8614 cprimod_encap_presentation_time_config->mod_count = 0; 8615 cprimod_encap_presentation_time_config->frame_sync_mode = 0; 8616 cprimod_encap_presentation_time_config->radio_frame_offset = 0; 8617 cprimod_encap_presentation_time_config->hyper_frame_offset = 0; 8618 cprimod_encap_presentation_time_config->approx_inc_disable = 0; 8619 8620 8621 exit: 8622 SOC_FUNC_RETURN; 8623 8624 } 8625 8626 int cprimod_encap_presentation_time_config_set(int unit, int port, const cprimod_encap_presentation_time_config_t* config) 8627 { 8628 8629 cprimod_dispatch_type_t __type__; 8630 int __rv__; 8631 SOC_INIT_FUNC_DEFS; 8632 8633 if(SOC_E_NONE != cprimod_encap_presentation_time_config_t_validate(config)) { 8634 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config validation failed")); 8635 } 8636 8637 /* Dispatch */ 8638 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8639 if(__type__ >= cprimodDispatchTypeCount) { 8640 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8641 } 8642 8643 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_config_set) { 8644 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_config_set(unit, port, config); 8645 _SOC_IF_ERR_EXIT(__rv__); 8646 } else { 8647 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_presentation_time_config_set isn't implemented for driver type")); 8648 } 8649 8650 exit: 8651 SOC_FUNC_RETURN; 8652 8653 } 8654 8655 8656 int cprimod_encap_presentation_time_config_get(int unit, int port, cprimod_encap_presentation_time_config_t* config) 8657 { 8658 8659 cprimod_dispatch_type_t __type__; 8660 int __rv__; 8661 SOC_INIT_FUNC_DEFS; 8662 8663 if(config == NULL) { 8664 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config NULL parameter")); 8665 } 8666 if(SOC_E_NONE != cprimod_encap_presentation_time_config_t_init(config)) { 8667 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config initialization failed")); 8668 } 8669 8670 /* Dispatch */ 8671 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8672 if(__type__ >= cprimodDispatchTypeCount) { 8673 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8674 } 8675 8676 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_config_get) { 8677 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_config_get(unit, port, config); 8678 _SOC_IF_ERR_EXIT(__rv__); 8679 } else { 8680 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_presentation_time_config_get isn't implemented for driver type")); 8681 } 8682 8683 exit: 8684 SOC_FUNC_RETURN; 8685 8686 } 8687 8688 8689 int cprimod_encap_presentation_time_adjust_set(int unit, int port, uint32 time) 8690 { 8691 8692 cprimod_dispatch_type_t __type__; 8693 int __rv__; 8694 SOC_INIT_FUNC_DEFS; 8695 8696 /* Dispatch */ 8697 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8698 if(__type__ >= cprimodDispatchTypeCount) { 8699 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8700 } 8701 8702 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_adjust_set) { 8703 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_adjust_set(unit, port, time); 8704 _SOC_IF_ERR_EXIT(__rv__); 8705 } else { 8706 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_presentation_time_adjust_set isn't implemented for driver type")); 8707 } 8708 8709 exit: 8710 SOC_FUNC_RETURN; 8711 8712 } 8713 8714 8715 int cprimod_encap_presentation_time_adjust_get(int unit, int port, uint32* time) 8716 { 8717 8718 cprimod_dispatch_type_t __type__; 8719 int __rv__; 8720 SOC_INIT_FUNC_DEFS; 8721 8722 if(time == NULL) { 8723 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("time NULL parameter")); 8724 } 8725 /* Dispatch */ 8726 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8727 if(__type__ >= cprimodDispatchTypeCount) { 8728 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8729 } 8730 8731 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_adjust_get) { 8732 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_adjust_get(unit, port, time); 8733 _SOC_IF_ERR_EXIT(__rv__); 8734 } else { 8735 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_presentation_time_adjust_get isn't implemented for driver type")); 8736 } 8737 8738 exit: 8739 SOC_FUNC_RETURN; 8740 8741 } 8742 8743 8744 int cprimod_encap_presentation_time_approximate_increment_set(int unit, int port, uint32 time) 8745 { 8746 8747 cprimod_dispatch_type_t __type__; 8748 int __rv__; 8749 SOC_INIT_FUNC_DEFS; 8750 8751 /* Dispatch */ 8752 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8753 if(__type__ >= cprimodDispatchTypeCount) { 8754 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8755 } 8756 8757 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_approximate_increment_set) { 8758 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_approximate_increment_set(unit, port, time); 8759 _SOC_IF_ERR_EXIT(__rv__); 8760 } else { 8761 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_presentation_time_approximate_increment_set isn't implemented for driver type")); 8762 } 8763 8764 exit: 8765 SOC_FUNC_RETURN; 8766 8767 } 8768 8769 8770 int cprimod_encap_presentation_time_approximate_increment_get(int unit, int port, uint32* time) 8771 { 8772 8773 cprimod_dispatch_type_t __type__; 8774 int __rv__; 8775 SOC_INIT_FUNC_DEFS; 8776 8777 if(time == NULL) { 8778 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("time NULL parameter")); 8779 } 8780 /* Dispatch */ 8781 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8782 if(__type__ >= cprimodDispatchTypeCount) { 8783 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8784 } 8785 8786 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_approximate_increment_get) { 8787 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_encap_presentation_time_approximate_increment_get(unit, port, time); 8788 _SOC_IF_ERR_EXIT(__rv__); 8789 } else { 8790 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_encap_presentation_time_approximate_increment_get isn't implemented for driver type")); 8791 } 8792 8793 exit: 8794 SOC_FUNC_RETURN; 8795 8796 } 8797 8798 8799 int cprimod_decap_agnostic_mode_enable_set(int unit, int port, int enable, cprimod_cpri_roe_ordering_info_option_t mode) 8800 { 8801 8802 cprimod_dispatch_type_t __type__; 8803 int __rv__; 8804 SOC_INIT_FUNC_DEFS; 8805 8806 /* Dispatch */ 8807 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8808 if(__type__ >= cprimodDispatchTypeCount) { 8809 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8810 } 8811 8812 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_agnostic_mode_enable_set) { 8813 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_agnostic_mode_enable_set(unit, port, enable, mode); 8814 _SOC_IF_ERR_EXIT(__rv__); 8815 } else { 8816 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_agnostic_mode_enable_set isn't implemented for driver type")); 8817 } 8818 8819 exit: 8820 SOC_FUNC_RETURN; 8821 8822 } 8823 8824 8825 int cprimod_decap_agnostic_mode_enable_get(int unit, int port, int* enable, cprimod_cpri_roe_ordering_info_option_t* mode) 8826 { 8827 8828 cprimod_dispatch_type_t __type__; 8829 int __rv__; 8830 SOC_INIT_FUNC_DEFS; 8831 8832 if(enable == NULL) { 8833 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("enable NULL parameter")); 8834 } 8835 if(mode == NULL) { 8836 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mode NULL parameter")); 8837 } 8838 /* Dispatch */ 8839 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8840 if(__type__ >= cprimodDispatchTypeCount) { 8841 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8842 } 8843 8844 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_agnostic_mode_enable_get) { 8845 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_agnostic_mode_enable_get(unit, port, enable, mode); 8846 _SOC_IF_ERR_EXIT(__rv__); 8847 } else { 8848 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_agnostic_mode_enable_get isn't implemented for driver type")); 8849 } 8850 8851 exit: 8852 SOC_FUNC_RETURN; 8853 8854 } 8855 8856 8857 int cprimod_decap_agnostic_mode_config_t_validate(const cprimod_decap_agnostic_mode_config_t* cprimod_decap_agnostic_mode_config) 8858 { 8859 SOC_INIT_FUNC_DEFS; 8860 if(cprimod_decap_agnostic_mode_config == NULL) { 8861 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 8862 } 8863 8864 8865 8866 exit: 8867 SOC_FUNC_RETURN; 8868 8869 } 8870 8871 int cprimod_decap_agnostic_mode_config_t_init(cprimod_decap_agnostic_mode_config_t* cprimod_decap_agnostic_mode_config) 8872 { 8873 SOC_INIT_FUNC_DEFS; 8874 8875 if(cprimod_decap_agnostic_mode_config == NULL){ 8876 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_decap_agnostic_mode_config NULL parameter")); 8877 } 8878 sal_memset(cprimod_decap_agnostic_mode_config, 0, sizeof(cprimod_decap_agnostic_mode_config_t)); 8879 cprimod_decap_agnostic_mode_config->mod_count = 0; 8880 cprimod_decap_agnostic_mode_config->packet_size = 0; 8881 cprimod_decap_agnostic_mode_config->queue_num = 0; 8882 8883 8884 exit: 8885 SOC_FUNC_RETURN; 8886 8887 } 8888 8889 int cprimod_decap_agnostic_mode_config_set(int unit, int port, const cprimod_decap_agnostic_mode_config_t* config) 8890 { 8891 8892 cprimod_dispatch_type_t __type__; 8893 int __rv__; 8894 SOC_INIT_FUNC_DEFS; 8895 8896 if(SOC_E_NONE != cprimod_decap_agnostic_mode_config_t_validate(config)) { 8897 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config validation failed")); 8898 } 8899 8900 /* Dispatch */ 8901 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8902 if(__type__ >= cprimodDispatchTypeCount) { 8903 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8904 } 8905 8906 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_agnostic_mode_config_set) { 8907 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_agnostic_mode_config_set(unit, port, config); 8908 _SOC_IF_ERR_EXIT(__rv__); 8909 } else { 8910 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_agnostic_mode_config_set isn't implemented for driver type")); 8911 } 8912 8913 exit: 8914 SOC_FUNC_RETURN; 8915 8916 } 8917 8918 8919 int cprimod_decap_agnostic_mode_config_get(int unit, int port, cprimod_decap_agnostic_mode_config_t* config) 8920 { 8921 8922 cprimod_dispatch_type_t __type__; 8923 int __rv__; 8924 SOC_INIT_FUNC_DEFS; 8925 8926 if(config == NULL) { 8927 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config NULL parameter")); 8928 } 8929 if(SOC_E_NONE != cprimod_decap_agnostic_mode_config_t_init(config)) { 8930 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config initialization failed")); 8931 } 8932 8933 /* Dispatch */ 8934 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8935 if(__type__ >= cprimodDispatchTypeCount) { 8936 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8937 } 8938 8939 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_agnostic_mode_config_get) { 8940 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_agnostic_mode_config_get(unit, port, config); 8941 _SOC_IF_ERR_EXIT(__rv__); 8942 } else { 8943 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_agnostic_mode_config_get isn't implemented for driver type")); 8944 } 8945 8946 exit: 8947 SOC_FUNC_RETURN; 8948 8949 } 8950 8951 8952 int cprimod_decap_presentation_time_config_set(int unit, int port, uint32 mod_offset, uint32 mod_count) 8953 { 8954 8955 cprimod_dispatch_type_t __type__; 8956 int __rv__; 8957 SOC_INIT_FUNC_DEFS; 8958 8959 /* Dispatch */ 8960 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8961 if(__type__ >= cprimodDispatchTypeCount) { 8962 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8963 } 8964 8965 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_presentation_time_config_set) { 8966 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_presentation_time_config_set(unit, port, mod_offset, mod_count); 8967 _SOC_IF_ERR_EXIT(__rv__); 8968 } else { 8969 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_presentation_time_config_set isn't implemented for driver type")); 8970 } 8971 8972 exit: 8973 SOC_FUNC_RETURN; 8974 8975 } 8976 8977 8978 int cprimod_decap_presentation_time_config_get(int unit, int port, uint32* mod_offset, uint32* mod_count) 8979 { 8980 8981 cprimod_dispatch_type_t __type__; 8982 int __rv__; 8983 SOC_INIT_FUNC_DEFS; 8984 8985 if(mod_offset == NULL) { 8986 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mod_offset NULL parameter")); 8987 } 8988 if(mod_count == NULL) { 8989 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mod_count NULL parameter")); 8990 } 8991 /* Dispatch */ 8992 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 8993 if(__type__ >= cprimodDispatchTypeCount) { 8994 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 8995 } 8996 8997 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decap_presentation_time_config_get) { 8998 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decap_presentation_time_config_get(unit, port, mod_offset, mod_count); 8999 _SOC_IF_ERR_EXIT(__rv__); 9000 } else { 9001 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decap_presentation_time_config_get isn't implemented for driver type")); 9002 } 9003 9004 exit: 9005 SOC_FUNC_RETURN; 9006 9007 } 9008 9009 9010 int cprimod_compression_lookup_table_set(int unit, int port, int table_depth, const uint32* table) 9011 { 9012 9013 cprimod_dispatch_type_t __type__; 9014 int __rv__; 9015 SOC_INIT_FUNC_DEFS; 9016 9017 /* Dispatch */ 9018 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9019 if(__type__ >= cprimodDispatchTypeCount) { 9020 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9021 } 9022 9023 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_compression_lookup_table_set) { 9024 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_compression_lookup_table_set(unit, port, table_depth, table); 9025 _SOC_IF_ERR_EXIT(__rv__); 9026 } else { 9027 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_compression_lookup_table_set isn't implemented for driver type")); 9028 } 9029 9030 exit: 9031 SOC_FUNC_RETURN; 9032 9033 } 9034 9035 9036 int cprimod_compression_lookup_table_get(int unit, int port, int max_depth, int* table_depth, uint32* table) 9037 { 9038 9039 cprimod_dispatch_type_t __type__; 9040 int __rv__; 9041 SOC_INIT_FUNC_DEFS; 9042 9043 if(table_depth == NULL) { 9044 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table_depth NULL parameter")); 9045 } 9046 if(table == NULL) { 9047 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table NULL parameter")); 9048 } 9049 /* Dispatch */ 9050 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9051 if(__type__ >= cprimodDispatchTypeCount) { 9052 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9053 } 9054 9055 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_compression_lookup_table_get) { 9056 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_compression_lookup_table_get(unit, port, max_depth, table_depth, table); 9057 _SOC_IF_ERR_EXIT(__rv__); 9058 } else { 9059 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_compression_lookup_table_get isn't implemented for driver type")); 9060 } 9061 9062 exit: 9063 SOC_FUNC_RETURN; 9064 9065 } 9066 9067 9068 int cprimod_decompression_lookup_table_set(int unit, int port, int table_depth, const uint32* table) 9069 { 9070 9071 cprimod_dispatch_type_t __type__; 9072 int __rv__; 9073 SOC_INIT_FUNC_DEFS; 9074 9075 /* Dispatch */ 9076 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9077 if(__type__ >= cprimodDispatchTypeCount) { 9078 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9079 } 9080 9081 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decompression_lookup_table_set) { 9082 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decompression_lookup_table_set(unit, port, table_depth, table); 9083 _SOC_IF_ERR_EXIT(__rv__); 9084 } else { 9085 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decompression_lookup_table_set isn't implemented for driver type")); 9086 } 9087 9088 exit: 9089 SOC_FUNC_RETURN; 9090 9091 } 9092 9093 9094 int cprimod_decompression_lookup_table_get(int unit, int port, int max_depth, int* table_depth, uint32* table) 9095 { 9096 9097 cprimod_dispatch_type_t __type__; 9098 int __rv__; 9099 SOC_INIT_FUNC_DEFS; 9100 9101 if(table_depth == NULL) { 9102 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table_depth NULL parameter")); 9103 } 9104 if(table == NULL) { 9105 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("table NULL parameter")); 9106 } 9107 /* Dispatch */ 9108 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9109 if(__type__ >= cprimodDispatchTypeCount) { 9110 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9111 } 9112 9113 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_decompression_lookup_table_get) { 9114 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_decompression_lookup_table_get(unit, port, max_depth, table_depth, table); 9115 _SOC_IF_ERR_EXIT(__rv__); 9116 } else { 9117 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_decompression_lookup_table_get isn't implemented for driver type")); 9118 } 9119 9120 exit: 9121 SOC_FUNC_RETURN; 9122 9123 } 9124 9125 9126 int cprimod_cpri_port_decap_queue_flow_control_set(int unit, int port, uint32 queue_num, int enable, uint32_t xon_threshold, uint32_t xoff_threshold) 9127 { 9128 9129 cprimod_dispatch_type_t __type__; 9130 int __rv__; 9131 SOC_INIT_FUNC_DEFS; 9132 9133 /* Dispatch */ 9134 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9135 if(__type__ >= cprimodDispatchTypeCount) { 9136 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9137 } 9138 9139 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_decap_queue_flow_control_set) { 9140 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_decap_queue_flow_control_set(unit, port, queue_num, enable, xon_threshold, xoff_threshold); 9141 _SOC_IF_ERR_EXIT(__rv__); 9142 } else { 9143 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_decap_queue_flow_control_set isn't implemented for driver type")); 9144 } 9145 9146 exit: 9147 SOC_FUNC_RETURN; 9148 9149 } 9150 9151 9152 int cprimod_cpri_port_decap_queue_flow_control_get(int unit, int port, uint32 queue_num, int* enable, uint32_t* xon_threshold, uint32_t* xoff_threshold) 9153 { 9154 9155 cprimod_dispatch_type_t __type__; 9156 int __rv__; 9157 SOC_INIT_FUNC_DEFS; 9158 9159 if(enable == NULL) { 9160 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("enable NULL parameter")); 9161 } 9162 if(xon_threshold == NULL) { 9163 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("xon_threshold NULL parameter")); 9164 } 9165 if(xoff_threshold == NULL) { 9166 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("xoff_threshold NULL parameter")); 9167 } 9168 /* Dispatch */ 9169 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9170 if(__type__ >= cprimodDispatchTypeCount) { 9171 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9172 } 9173 9174 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_decap_queue_flow_control_get) { 9175 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_decap_queue_flow_control_get(unit, port, queue_num, enable, xon_threshold, xoff_threshold); 9176 _SOC_IF_ERR_EXIT(__rv__); 9177 } else { 9178 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_decap_queue_flow_control_get isn't implemented for driver type")); 9179 } 9180 9181 exit: 9182 SOC_FUNC_RETURN; 9183 9184 } 9185 9186 9187 int cprimod_fec_timestamp_config_t_validate(const cprimod_fec_timestamp_config_t* cprimod_fec_timestamp_config) 9188 { 9189 SOC_INIT_FUNC_DEFS; 9190 if(cprimod_fec_timestamp_config == NULL) { 9191 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 9192 } 9193 9194 9195 9196 exit: 9197 SOC_FUNC_RETURN; 9198 9199 } 9200 9201 int cprimod_fec_timestamp_config_t_init(cprimod_fec_timestamp_config_t* cprimod_fec_timestamp_config) 9202 { 9203 SOC_INIT_FUNC_DEFS; 9204 9205 if(cprimod_fec_timestamp_config == NULL){ 9206 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_fec_timestamp_config NULL parameter")); 9207 } 9208 sal_memset(cprimod_fec_timestamp_config, 0, sizeof(cprimod_fec_timestamp_config_t)); 9209 cprimod_fec_timestamp_config->enable = 0; 9210 cprimod_fec_timestamp_config->fec_fifo_ts_source_select = 1; 9211 cprimod_fec_timestamp_config->fec_cmic_ts_source_select = 0; 9212 cprimod_fec_timestamp_config->control_bit_offset_0 = 0; 9213 cprimod_fec_timestamp_config->control_bit_offset_1 = 0x45; 9214 cprimod_fec_timestamp_config->control_bit_offset_2 = 0x85; 9215 cprimod_fec_timestamp_config->control_bit_offset_3 = 0xc5; 9216 9217 9218 exit: 9219 SOC_FUNC_RETURN; 9220 9221 } 9222 9223 int cprimod_cpri_port_fec_enable_set(int unit, int port, cprimod_direction_t dir, int enable) 9224 { 9225 9226 cprimod_dispatch_type_t __type__; 9227 int __rv__; 9228 SOC_INIT_FUNC_DEFS; 9229 9230 /* Dispatch */ 9231 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9232 if(__type__ >= cprimodDispatchTypeCount) { 9233 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9234 } 9235 9236 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_fec_enable_set) { 9237 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_fec_enable_set(unit, port, dir, enable); 9238 _SOC_IF_ERR_EXIT(__rv__); 9239 } else { 9240 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_fec_enable_set isn't implemented for driver type")); 9241 } 9242 9243 exit: 9244 SOC_FUNC_RETURN; 9245 9246 } 9247 9248 9249 int cprimod_cpri_port_fec_enable_get(int unit, int port, cprimod_direction_t dir, int* enable) 9250 { 9251 9252 cprimod_dispatch_type_t __type__; 9253 int __rv__; 9254 SOC_INIT_FUNC_DEFS; 9255 9256 if(enable == NULL) { 9257 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("enable NULL parameter")); 9258 } 9259 /* Dispatch */ 9260 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9261 if(__type__ >= cprimodDispatchTypeCount) { 9262 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9263 } 9264 9265 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_fec_enable_get) { 9266 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_fec_enable_get(unit, port, dir, enable); 9267 _SOC_IF_ERR_EXIT(__rv__); 9268 } else { 9269 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_fec_enable_get isn't implemented for driver type")); 9270 } 9271 9272 exit: 9273 SOC_FUNC_RETURN; 9274 9275 } 9276 9277 9278 int cprimod_cpri_port_fec_timestamp_config_set(int unit, int port, cprimod_direction_t dir, const cprimod_fec_timestamp_config_t* config) 9279 { 9280 9281 cprimod_dispatch_type_t __type__; 9282 int __rv__; 9283 SOC_INIT_FUNC_DEFS; 9284 9285 if(SOC_E_NONE != cprimod_fec_timestamp_config_t_validate(config)) { 9286 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config validation failed")); 9287 } 9288 9289 /* Dispatch */ 9290 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9291 if(__type__ >= cprimodDispatchTypeCount) { 9292 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9293 } 9294 9295 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_fec_timestamp_config_set) { 9296 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_fec_timestamp_config_set(unit, port, dir, config); 9297 _SOC_IF_ERR_EXIT(__rv__); 9298 } else { 9299 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_fec_timestamp_config_set isn't implemented for driver type")); 9300 } 9301 9302 exit: 9303 SOC_FUNC_RETURN; 9304 9305 } 9306 9307 9308 int cprimod_cpri_port_fec_timestamp_config_get(int unit, int port, cprimod_direction_t dir, const cprimod_fec_timestamp_config_t* config) 9309 { 9310 9311 cprimod_dispatch_type_t __type__; 9312 int __rv__; 9313 SOC_INIT_FUNC_DEFS; 9314 9315 if(SOC_E_NONE != cprimod_fec_timestamp_config_t_validate(config)) { 9316 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("config validation failed")); 9317 } 9318 9319 /* Dispatch */ 9320 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9321 if(__type__ >= cprimodDispatchTypeCount) { 9322 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9323 } 9324 9325 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_fec_timestamp_config_get) { 9326 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_fec_timestamp_config_get(unit, port, dir, config); 9327 _SOC_IF_ERR_EXIT(__rv__); 9328 } else { 9329 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_fec_timestamp_config_get isn't implemented for driver type")); 9330 } 9331 9332 exit: 9333 SOC_FUNC_RETURN; 9334 9335 } 9336 9337 9338 int cprimod_cpri_port_fec_aux_config_set(int unit, int port, cprimod_fec_aux_config_para_t parameter_id, uint32 value) 9339 { 9340 9341 cprimod_dispatch_type_t __type__; 9342 int __rv__; 9343 SOC_INIT_FUNC_DEFS; 9344 9345 /* Dispatch */ 9346 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9347 if(__type__ >= cprimodDispatchTypeCount) { 9348 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9349 } 9350 9351 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_fec_aux_config_set) { 9352 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_fec_aux_config_set(unit, port, parameter_id, value); 9353 _SOC_IF_ERR_EXIT(__rv__); 9354 } else { 9355 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_fec_aux_config_set isn't implemented for driver type")); 9356 } 9357 9358 exit: 9359 SOC_FUNC_RETURN; 9360 9361 } 9362 9363 9364 int cprimod_cpri_port_fec_aux_config_get(int unit, int port, cprimod_fec_aux_config_para_t parameter_id, const uint32* value) 9365 { 9366 9367 cprimod_dispatch_type_t __type__; 9368 int __rv__; 9369 SOC_INIT_FUNC_DEFS; 9370 9371 /* Dispatch */ 9372 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9373 if(__type__ >= cprimodDispatchTypeCount) { 9374 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9375 } 9376 9377 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_fec_aux_config_get) { 9378 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_fec_aux_config_get(unit, port, parameter_id, value); 9379 _SOC_IF_ERR_EXIT(__rv__); 9380 } else { 9381 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_fec_aux_config_get isn't implemented for driver type")); 9382 } 9383 9384 exit: 9385 SOC_FUNC_RETURN; 9386 9387 } 9388 9389 9390 #ifdef CPRIMOD_SUPPORT 9391 int cprimod_cpri_ecc_intr_info_t_validate(const cprimod_cpri_ecc_intr_info_t* cprimod_cpri_ecc_intr_info) 9392 { 9393 SOC_INIT_FUNC_DEFS; 9394 if(cprimod_cpri_ecc_intr_info == NULL) { 9395 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 9396 } 9397 9398 9399 9400 exit: 9401 SOC_FUNC_RETURN; 9402 9403 } 9404 #endif /* CPRIMOD_SUPPORT */ 9405 9406 #ifdef CPRIMOD_SUPPORT 9407 int cprimod_cpri_ecc_intr_info_t_init(cprimod_cpri_ecc_intr_info_t* cprimod_cpri_ecc_intr_info) 9408 { 9409 SOC_INIT_FUNC_DEFS; 9410 9411 if(cprimod_cpri_ecc_intr_info == NULL){ 9412 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_ecc_intr_info NULL parameter")); 9413 } 9414 sal_memset(cprimod_cpri_ecc_intr_info, 0, sizeof(cprimod_cpri_ecc_intr_info_t)); 9415 cprimod_cpri_ecc_intr_info->port = 0; 9416 cprimod_cpri_ecc_intr_info->err_mem_info = INVALIDm; 9417 cprimod_cpri_ecc_intr_info->ecc_reg_info = 0; 9418 cprimod_cpri_ecc_intr_info->ecc_num_bits_err = 0; 9419 cprimod_cpri_ecc_intr_info->err_addr = 0; 9420 cprimod_cpri_ecc_intr_info->mem_str = NULL; 9421 9422 9423 exit: 9424 SOC_FUNC_RETURN; 9425 9426 } 9427 #endif /* CPRIMOD_SUPPORT */ 9428 9429 #ifdef CPRIMOD_SUPPORT 9430 int cprimod_cpri_port_ecc_interrupt_enable_set(int unit, int port, int enable) 9431 { 9432 9433 cprimod_dispatch_type_t __type__; 9434 int __rv__; 9435 SOC_INIT_FUNC_DEFS; 9436 9437 /* Dispatch */ 9438 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9439 if(__type__ >= cprimodDispatchTypeCount) { 9440 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9441 } 9442 9443 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_ecc_interrupt_enable_set) { 9444 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_ecc_interrupt_enable_set(unit, port, enable); 9445 _SOC_IF_ERR_EXIT(__rv__); 9446 } else { 9447 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_ecc_interrupt_enable_set isn't implemented for driver type")); 9448 } 9449 9450 exit: 9451 SOC_FUNC_RETURN; 9452 9453 } 9454 #endif /* CPRIMOD_SUPPORT */ 9455 9456 9457 #ifdef CPRIMOD_SUPPORT 9458 int cprimod_cpri_port_ecc_interrupt_status_get(int unit, int port, const cprimod_cpri_ecc_intr_info_t* ecc_err_info) 9459 { 9460 9461 cprimod_dispatch_type_t __type__; 9462 int __rv__; 9463 SOC_INIT_FUNC_DEFS; 9464 9465 if(SOC_E_NONE != cprimod_cpri_ecc_intr_info_t_validate(ecc_err_info)) { 9466 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("ecc_err_info validation failed")); 9467 } 9468 9469 /* Dispatch */ 9470 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9471 if(__type__ >= cprimodDispatchTypeCount) { 9472 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9473 } 9474 9475 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_ecc_interrupt_status_get) { 9476 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_ecc_interrupt_status_get(unit, port, ecc_err_info); 9477 _SOC_IF_ERR_EXIT(__rv__); 9478 } else { 9479 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_ecc_interrupt_status_get isn't implemented for driver type")); 9480 } 9481 9482 exit: 9483 SOC_FUNC_RETURN; 9484 9485 } 9486 #endif /* CPRIMOD_SUPPORT */ 9487 9488 9489 #ifdef CPRIMOD_SUPPORT_ECC_INJECT 9490 int cprimod_cpri_port_ecc_interrupt_test(int unit, int port) 9491 { 9492 9493 cprimod_dispatch_type_t __type__; 9494 int __rv__; 9495 SOC_INIT_FUNC_DEFS; 9496 9497 /* Dispatch */ 9498 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9499 if(__type__ >= cprimodDispatchTypeCount) { 9500 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9501 } 9502 9503 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_ecc_interrupt_test) { 9504 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_ecc_interrupt_test(unit, port); 9505 _SOC_IF_ERR_EXIT(__rv__); 9506 } else { 9507 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_ecc_interrupt_test isn't implemented for driver type")); 9508 } 9509 9510 exit: 9511 SOC_FUNC_RETURN; 9512 9513 } 9514 #endif /* CPRIMOD_SUPPORT_ECC_INJECT */ 9515 9516 9517 int cprimod_cpri_pll_status_get(int unit, int port, const phymod_phy_access_t* phy, int* pll_sel, int* pll_lock) 9518 { 9519 9520 cprimod_dispatch_type_t __type__; 9521 int __rv__; 9522 SOC_INIT_FUNC_DEFS; 9523 9524 if(pll_sel == NULL) { 9525 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pll_sel NULL parameter")); 9526 } 9527 if(pll_lock == NULL) { 9528 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("pll_lock NULL parameter")); 9529 } 9530 /* Dispatch */ 9531 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9532 if(__type__ >= cprimodDispatchTypeCount) { 9533 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9534 } 9535 9536 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_pll_status_get) { 9537 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_pll_status_get(unit, port, phy, pll_sel, pll_lock); 9538 _SOC_IF_ERR_EXIT(__rv__); 9539 } else { 9540 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_pll_status_get isn't implemented for driver type")); 9541 } 9542 9543 exit: 9544 SOC_FUNC_RETURN; 9545 9546 } 9547 9548 9549 int cprimod_cpri_port_reset_set(int unit, int port, int rst) 9550 { 9551 9552 cprimod_dispatch_type_t __type__; 9553 int __rv__; 9554 SOC_INIT_FUNC_DEFS; 9555 9556 /* Dispatch */ 9557 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9558 if(__type__ >= cprimodDispatchTypeCount) { 9559 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9560 } 9561 9562 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_reset_set) { 9563 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_reset_set(unit, port, rst); 9564 _SOC_IF_ERR_EXIT(__rv__); 9565 } else { 9566 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_reset_set isn't implemented for driver type")); 9567 } 9568 9569 exit: 9570 SOC_FUNC_RETURN; 9571 9572 } 9573 9574 9575 int cprimod_cpri_port_reset_get(int unit, int port, int* rst) 9576 { 9577 9578 cprimod_dispatch_type_t __type__; 9579 int __rv__; 9580 SOC_INIT_FUNC_DEFS; 9581 9582 if(rst == NULL) { 9583 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("rst NULL parameter")); 9584 } 9585 /* Dispatch */ 9586 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9587 if(__type__ >= cprimodDispatchTypeCount) { 9588 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9589 } 9590 9591 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_reset_get) { 9592 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_reset_get(unit, port, rst); 9593 _SOC_IF_ERR_EXIT(__rv__); 9594 } else { 9595 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_reset_get isn't implemented for driver type")); 9596 } 9597 9598 exit: 9599 SOC_FUNC_RETURN; 9600 9601 } 9602 9603 9604 int cprimod_cpri_init(int unit, int port) 9605 { 9606 9607 cprimod_dispatch_type_t __type__; 9608 int __rv__; 9609 SOC_INIT_FUNC_DEFS; 9610 9611 /* Dispatch */ 9612 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9613 if(__type__ >= cprimodDispatchTypeCount) { 9614 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9615 } 9616 9617 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_init) { 9618 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_init(unit, port); 9619 _SOC_IF_ERR_EXIT(__rv__); 9620 } else { 9621 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_init isn't implemented for driver type")); 9622 } 9623 9624 exit: 9625 SOC_FUNC_RETURN; 9626 9627 } 9628 9629 9630 int cprimod_cpri_port_rx_gcw_word_get(int unit, int port, int group_index, uint16* gcw_word) 9631 { 9632 9633 cprimod_dispatch_type_t __type__; 9634 int __rv__; 9635 SOC_INIT_FUNC_DEFS; 9636 9637 if(gcw_word == NULL) { 9638 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("gcw_word NULL parameter")); 9639 } 9640 /* Dispatch */ 9641 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9642 if(__type__ >= cprimodDispatchTypeCount) { 9643 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9644 } 9645 9646 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_gcw_word_get) { 9647 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_gcw_word_get(unit, port, group_index, gcw_word); 9648 _SOC_IF_ERR_EXIT(__rv__); 9649 } else { 9650 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_gcw_word_get isn't implemented for driver type")); 9651 } 9652 9653 exit: 9654 SOC_FUNC_RETURN; 9655 9656 } 9657 9658 9659 int cprimod_cpri_port_tx_gcw_word_set(int unit, int port, int group_index, uint16 gcw_word) 9660 { 9661 9662 cprimod_dispatch_type_t __type__; 9663 int __rv__; 9664 SOC_INIT_FUNC_DEFS; 9665 9666 /* Dispatch */ 9667 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9668 if(__type__ >= cprimodDispatchTypeCount) { 9669 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9670 } 9671 9672 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_gcw_word_set) { 9673 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_gcw_word_set(unit, port, group_index, gcw_word); 9674 _SOC_IF_ERR_EXIT(__rv__); 9675 } else { 9676 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_gcw_word_set isn't implemented for driver type")); 9677 } 9678 9679 exit: 9680 SOC_FUNC_RETURN; 9681 9682 } 9683 9684 9685 int cprimod_cpri_mac_drain_start(int unit, int port) 9686 { 9687 9688 cprimod_dispatch_type_t __type__; 9689 int __rv__; 9690 SOC_INIT_FUNC_DEFS; 9691 9692 /* Dispatch */ 9693 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9694 if(__type__ >= cprimodDispatchTypeCount) { 9695 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9696 } 9697 9698 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_mac_drain_start) { 9699 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_mac_drain_start(unit, port); 9700 _SOC_IF_ERR_EXIT(__rv__); 9701 } else { 9702 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_mac_drain_start isn't implemented for driver type")); 9703 } 9704 9705 exit: 9706 SOC_FUNC_RETURN; 9707 9708 } 9709 9710 9711 int cprimod_cpri_mac_drain_stop(int unit, int port) 9712 { 9713 9714 cprimod_dispatch_type_t __type__; 9715 int __rv__; 9716 SOC_INIT_FUNC_DEFS; 9717 9718 /* Dispatch */ 9719 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9720 if(__type__ >= cprimodDispatchTypeCount) { 9721 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9722 } 9723 9724 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_mac_drain_stop) { 9725 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_mac_drain_stop(unit, port); 9726 _SOC_IF_ERR_EXIT(__rv__); 9727 } else { 9728 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_mac_drain_stop isn't implemented for driver type")); 9729 } 9730 9731 exit: 9732 SOC_FUNC_RETURN; 9733 9734 } 9735 9736 9737 int cprimod_cpri_mac_credit_reset_set(int unit, int port, int rst) 9738 { 9739 9740 cprimod_dispatch_type_t __type__; 9741 int __rv__; 9742 SOC_INIT_FUNC_DEFS; 9743 9744 /* Dispatch */ 9745 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9746 if(__type__ >= cprimodDispatchTypeCount) { 9747 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9748 } 9749 9750 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_mac_credit_reset_set) { 9751 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_mac_credit_reset_set(unit, port, rst); 9752 _SOC_IF_ERR_EXIT(__rv__); 9753 } else { 9754 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_mac_credit_reset_set isn't implemented for driver type")); 9755 } 9756 9757 exit: 9758 SOC_FUNC_RETURN; 9759 9760 } 9761 9762 9763 int cprimod_cpri_mac_credit_reset_get(int unit, int port, int* rst) 9764 { 9765 9766 cprimod_dispatch_type_t __type__; 9767 int __rv__; 9768 SOC_INIT_FUNC_DEFS; 9769 9770 if(rst == NULL) { 9771 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("rst NULL parameter")); 9772 } 9773 /* Dispatch */ 9774 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9775 if(__type__ >= cprimodDispatchTypeCount) { 9776 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9777 } 9778 9779 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_mac_credit_reset_get) { 9780 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_mac_credit_reset_get(unit, port, rst); 9781 _SOC_IF_ERR_EXIT(__rv__); 9782 } else { 9783 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_mac_credit_reset_get isn't implemented for driver type")); 9784 } 9785 9786 exit: 9787 SOC_FUNC_RETURN; 9788 9789 } 9790 9791 9792 int cprimod_cpri_port_link_up_event(int unit, int port) 9793 { 9794 9795 cprimod_dispatch_type_t __type__; 9796 int __rv__; 9797 SOC_INIT_FUNC_DEFS; 9798 9799 /* Dispatch */ 9800 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9801 if(__type__ >= cprimodDispatchTypeCount) { 9802 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9803 } 9804 9805 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_link_up_event) { 9806 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_link_up_event(unit, port); 9807 _SOC_IF_ERR_EXIT(__rv__); 9808 } else { 9809 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_link_up_event isn't implemented for driver type")); 9810 } 9811 9812 exit: 9813 SOC_FUNC_RETURN; 9814 9815 } 9816 9817 9818 int cprimod_cpri_port_link_down_event(int unit, int port) 9819 { 9820 9821 cprimod_dispatch_type_t __type__; 9822 int __rv__; 9823 SOC_INIT_FUNC_DEFS; 9824 9825 /* Dispatch */ 9826 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9827 if(__type__ >= cprimodDispatchTypeCount) { 9828 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9829 } 9830 9831 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_link_down_event) { 9832 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_link_down_event(unit, port); 9833 _SOC_IF_ERR_EXIT(__rv__); 9834 } else { 9835 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_link_down_event isn't implemented for driver type")); 9836 } 9837 9838 exit: 9839 SOC_FUNC_RETURN; 9840 9841 } 9842 9843 9844 int cprimod_agnostic_mode_type_t_validate(cprimod_agnostic_mode_type_t cprimod_agnostic_mode_type) 9845 { 9846 SOC_INIT_FUNC_DEFS; 9847 if(cprimod_agnostic_mode_type >= cprimod_agnostic_mode_Count) { 9848 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 9849 } 9850 9851 exit: 9852 SOC_FUNC_RETURN; 9853 9854 } 9855 9856 int cprimod_cpri_port_rx_tunnel_mode_set(int unit, int port, int enable, uint32 payload_size) 9857 { 9858 9859 cprimod_dispatch_type_t __type__; 9860 int __rv__; 9861 SOC_INIT_FUNC_DEFS; 9862 9863 /* Dispatch */ 9864 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9865 if(__type__ >= cprimodDispatchTypeCount) { 9866 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9867 } 9868 9869 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_tunnel_mode_set) { 9870 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_tunnel_mode_set(unit, port, enable, payload_size); 9871 _SOC_IF_ERR_EXIT(__rv__); 9872 } else { 9873 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_tunnel_mode_set isn't implemented for driver type")); 9874 } 9875 9876 exit: 9877 SOC_FUNC_RETURN; 9878 9879 } 9880 9881 9882 int cprimod_cpri_port_rx_tunnel_mode_get(int unit, int port, int* enable, uint32* payload_size) 9883 { 9884 9885 cprimod_dispatch_type_t __type__; 9886 int __rv__; 9887 SOC_INIT_FUNC_DEFS; 9888 9889 if(enable == NULL) { 9890 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("enable NULL parameter")); 9891 } 9892 if(payload_size == NULL) { 9893 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("payload_size NULL parameter")); 9894 } 9895 /* Dispatch */ 9896 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9897 if(__type__ >= cprimodDispatchTypeCount) { 9898 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9899 } 9900 9901 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_tunnel_mode_get) { 9902 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_tunnel_mode_get(unit, port, enable, payload_size); 9903 _SOC_IF_ERR_EXIT(__rv__); 9904 } else { 9905 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_tunnel_mode_get isn't implemented for driver type")); 9906 } 9907 9908 exit: 9909 SOC_FUNC_RETURN; 9910 9911 } 9912 9913 9914 int cprimod_cpri_port_tx_agnostic_mode_set(int unit, int port, int enable, cprimod_agnostic_mode_type_t mode, uint32 payload_size) 9915 { 9916 9917 cprimod_dispatch_type_t __type__; 9918 int __rv__; 9919 SOC_INIT_FUNC_DEFS; 9920 9921 if(SOC_E_NONE != cprimod_agnostic_mode_type_t_validate(mode)) { 9922 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mode validation failed")); 9923 } 9924 9925 /* Dispatch */ 9926 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9927 if(__type__ >= cprimodDispatchTypeCount) { 9928 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9929 } 9930 9931 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_agnostic_mode_set) { 9932 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_agnostic_mode_set(unit, port, enable, mode, payload_size); 9933 _SOC_IF_ERR_EXIT(__rv__); 9934 } else { 9935 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_agnostic_mode_set isn't implemented for driver type")); 9936 } 9937 9938 exit: 9939 SOC_FUNC_RETURN; 9940 9941 } 9942 9943 9944 int cprimod_cpri_port_tx_agnostic_mode_get(int unit, int port, int* enable, cprimod_agnostic_mode_type_t* mode, uint32* payload_size) 9945 { 9946 9947 cprimod_dispatch_type_t __type__; 9948 int __rv__; 9949 SOC_INIT_FUNC_DEFS; 9950 9951 if(enable == NULL) { 9952 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("enable NULL parameter")); 9953 } 9954 if(mode == NULL) { 9955 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mode NULL parameter")); 9956 } 9957 if(payload_size == NULL) { 9958 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("payload_size NULL parameter")); 9959 } 9960 /* Dispatch */ 9961 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9962 if(__type__ >= cprimodDispatchTypeCount) { 9963 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9964 } 9965 9966 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_agnostic_mode_get) { 9967 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_tx_agnostic_mode_get(unit, port, enable, mode, payload_size); 9968 _SOC_IF_ERR_EXIT(__rv__); 9969 } else { 9970 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_tx_agnostic_mode_get isn't implemented for driver type")); 9971 } 9972 9973 exit: 9974 SOC_FUNC_RETURN; 9975 9976 } 9977 9978 9979 int cprimod_cpri_port_rx_agnostic_mode_get(int unit, int port, int* enable, cprimod_agnostic_mode_type_t* mode) 9980 { 9981 9982 cprimod_dispatch_type_t __type__; 9983 int __rv__; 9984 SOC_INIT_FUNC_DEFS; 9985 9986 if(enable == NULL) { 9987 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("enable NULL parameter")); 9988 } 9989 if(mode == NULL) { 9990 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mode NULL parameter")); 9991 } 9992 /* Dispatch */ 9993 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 9994 if(__type__ >= cprimodDispatchTypeCount) { 9995 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 9996 } 9997 9998 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_agnostic_mode_get) { 9999 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_rx_agnostic_mode_get(unit, port, enable, mode); 10000 _SOC_IF_ERR_EXIT(__rv__); 10001 } else { 10002 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_rx_agnostic_mode_get isn't implemented for driver type")); 10003 } 10004 10005 exit: 10006 SOC_FUNC_RETURN; 10007 10008 } 10009 10010 10011 int cprimod_pmd_port_status_t_validate(cprimod_pmd_port_status_t cprimod_pmd_port_status) 10012 { 10013 SOC_INIT_FUNC_DEFS; 10014 if(cprimod_pmd_port_status >= cprimodPmdPortStatusCount) { 10015 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Parameter is out of range")); 10016 } 10017 10018 exit: 10019 SOC_FUNC_RETURN; 10020 10021 } 10022 10023 int cprimod_port_pmd_status_get(int unit, int port, cprimod_pmd_port_status_t status, uint32* value) 10024 { 10025 10026 cprimod_dispatch_type_t __type__; 10027 int __rv__; 10028 SOC_INIT_FUNC_DEFS; 10029 10030 if(SOC_E_NONE != cprimod_pmd_port_status_t_validate(status)) { 10031 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("status validation failed")); 10032 } 10033 10034 if(value == NULL) { 10035 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("value NULL parameter")); 10036 } 10037 /* Dispatch */ 10038 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10039 if(__type__ >= cprimodDispatchTypeCount) { 10040 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10041 } 10042 10043 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_port_pmd_status_get) { 10044 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_port_pmd_status_get(unit, port, status, value); 10045 _SOC_IF_ERR_EXIT(__rv__); 10046 } else { 10047 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_port_pmd_status_get isn't implemented for driver type")); 10048 } 10049 10050 exit: 10051 SOC_FUNC_RETURN; 10052 10053 } 10054 10055 10056 int cprimod_cpri_port_link_get(int unit, int port, int* link) 10057 { 10058 10059 cprimod_dispatch_type_t __type__; 10060 int __rv__; 10061 SOC_INIT_FUNC_DEFS; 10062 10063 if(link == NULL) { 10064 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("link NULL parameter")); 10065 } 10066 /* Dispatch */ 10067 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10068 if(__type__ >= cprimodDispatchTypeCount) { 10069 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10070 } 10071 10072 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_link_get) { 10073 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_link_get(unit, port, link); 10074 _SOC_IF_ERR_EXIT(__rv__); 10075 } else { 10076 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_link_get isn't implemented for driver type")); 10077 } 10078 10079 exit: 10080 SOC_FUNC_RETURN; 10081 10082 } 10083 10084 10085 #ifdef CPRIMOD_SUPPORT 10086 int cprimod_cpri_encap_header_field_mapping_t_validate(const cprimod_cpri_encap_header_field_mapping_t* cprimod_cpri_encap_header_field_mapping) 10087 { 10088 SOC_INIT_FUNC_DEFS; 10089 if(cprimod_cpri_encap_header_field_mapping == NULL) { 10090 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 10091 } 10092 10093 10094 10095 exit: 10096 SOC_FUNC_RETURN; 10097 10098 } 10099 #endif /* CPRIMOD_SUPPORT */ 10100 10101 #ifdef CPRIMOD_SUPPORT 10102 int cprimod_cpri_encap_header_field_mapping_t_init(cprimod_cpri_encap_header_field_mapping_t* cprimod_cpri_encap_header_field_mapping) 10103 { 10104 SOC_INIT_FUNC_DEFS; 10105 10106 if(cprimod_cpri_encap_header_field_mapping == NULL){ 10107 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_encap_header_field_mapping NULL parameter")); 10108 } 10109 sal_memset(cprimod_cpri_encap_header_field_mapping, 0, sizeof(cprimod_cpri_encap_header_field_mapping_t)); 10110 cprimod_cpri_encap_header_field_mapping->hdr_byte0_sel = CPRIMOD_CPRI_ROE_HEADER_FIELD_SUBTYPE; 10111 cprimod_cpri_encap_header_field_mapping->hdr_byte1_sel = CPRIMOD_CPRI_ROE_HEADER_FIELD_FLOW_ID; 10112 cprimod_cpri_encap_header_field_mapping->hdr_byte2_sel = CPRIMOD_CPRI_ROE_HEADER_FIELD_LENGTH_15_8; 10113 cprimod_cpri_encap_header_field_mapping->hdr_byte3_sel = CPRIMOD_CPRI_ROE_HEADER_FIELD_LENGTH_7_0; 10114 cprimod_cpri_encap_header_field_mapping->hdr_byte4_sel = CPRIMOD_CPRI_ROE_HEADER_FIELD_ORDER_INFO_31_24; 10115 cprimod_cpri_encap_header_field_mapping->hdr_byte5_sel = CPRIMOD_CPRI_ROE_HEADER_FIELD_ORDER_INFO_23_16; 10116 cprimod_cpri_encap_header_field_mapping->hdr_byte6_sel = CPRIMOD_CPRI_ROE_HEADER_FIELD_ORDER_INFO_15_8; 10117 cprimod_cpri_encap_header_field_mapping->hdr_byte7_sel = CPRIMOD_CPRI_ROE_HEADER_FIELD_ORDER_INFO_7_0; 10118 cprimod_cpri_encap_header_field_mapping->hdr_byte8_sel = CPRIMOD_CPRI_ROE_HEADER_FIELD_UNMAPPED; 10119 cprimod_cpri_encap_header_field_mapping->hdr_byte9_sel = CPRIMOD_CPRI_ROE_HEADER_FIELD_UNMAPPED; 10120 cprimod_cpri_encap_header_field_mapping->hdr_byte10_sel = CPRIMOD_CPRI_ROE_HEADER_FIELD_UNMAPPED; 10121 cprimod_cpri_encap_header_field_mapping->hdr_byte11_sel = CPRIMOD_CPRI_ROE_HEADER_FIELD_UNMAPPED; 10122 10123 10124 exit: 10125 SOC_FUNC_RETURN; 10126 10127 } 10128 #endif /* CPRIMOD_SUPPORT */ 10129 10130 #ifdef CPRIMOD_SUPPORT 10131 int cprimod_cpri_decap_header_field_mapping_t_validate(const cprimod_cpri_decap_header_field_mapping_t* cprimod_cpri_decap_header_field_mapping) 10132 { 10133 SOC_INIT_FUNC_DEFS; 10134 if(cprimod_cpri_decap_header_field_mapping == NULL) { 10135 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("NULL parameter")); 10136 } 10137 10138 10139 10140 exit: 10141 SOC_FUNC_RETURN; 10142 10143 } 10144 #endif /* CPRIMOD_SUPPORT */ 10145 10146 #ifdef CPRIMOD_SUPPORT 10147 int cprimod_cpri_decap_header_field_mapping_t_init(cprimod_cpri_decap_header_field_mapping_t* cprimod_cpri_decap_header_field_mapping) 10148 { 10149 SOC_INIT_FUNC_DEFS; 10150 10151 if(cprimod_cpri_decap_header_field_mapping == NULL){ 10152 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("cprimod_cpri_decap_header_field_mapping NULL parameter")); 10153 } 10154 sal_memset(cprimod_cpri_decap_header_field_mapping, 0, sizeof(cprimod_cpri_decap_header_field_mapping_t)); 10155 cprimod_cpri_decap_header_field_mapping->subtype_sel = CPRIMOD_CPRI_ECPRI_HEADER_FIELD_BYTE_0; 10156 cprimod_cpri_decap_header_field_mapping->flowid_sel = CPRIMOD_CPRI_ECPRI_HEADER_FIELD_BYTE_1; 10157 cprimod_cpri_decap_header_field_mapping->length_15_8_sel = CPRIMOD_CPRI_ECPRI_HEADER_FIELD_BYTE_2; 10158 cprimod_cpri_decap_header_field_mapping->length_7_0_sel = CPRIMOD_CPRI_ECPRI_HEADER_FIELD_BYTE_3; 10159 cprimod_cpri_decap_header_field_mapping->orderinginfo_31_24_sel = CPRIMOD_CPRI_ECPRI_HEADER_FIELD_BYTE_4; 10160 cprimod_cpri_decap_header_field_mapping->orderinginfo_23_16_sel = CPRIMOD_CPRI_ECPRI_HEADER_FIELD_BYTE_5; 10161 cprimod_cpri_decap_header_field_mapping->orderinginfo_15_8_sel = CPRIMOD_CPRI_ECPRI_HEADER_FIELD_BYTE_6; 10162 cprimod_cpri_decap_header_field_mapping->orderinginfo_7_0_sel = CPRIMOD_CPRI_ECPRI_HEADER_FIELD_BYTE_7; 10163 10164 10165 exit: 10166 SOC_FUNC_RETURN; 10167 10168 } 10169 #endif /* CPRIMOD_SUPPORT */ 10170 10171 #ifdef CPRIMOD_SUPPORT 10172 int cprimod_cpri_encap_header_field_mapping_set(int unit, int port, const cprimod_cpri_encap_header_field_mapping_t* mapping) 10173 { 10174 10175 cprimod_dispatch_type_t __type__; 10176 int __rv__; 10177 SOC_INIT_FUNC_DEFS; 10178 10179 if(SOC_E_NONE != cprimod_cpri_encap_header_field_mapping_t_validate(mapping)) { 10180 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mapping validation failed")); 10181 } 10182 10183 /* Dispatch */ 10184 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10185 if(__type__ >= cprimodDispatchTypeCount) { 10186 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10187 } 10188 10189 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_encap_header_field_mapping_set) { 10190 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_encap_header_field_mapping_set(unit, port, mapping); 10191 _SOC_IF_ERR_EXIT(__rv__); 10192 } else { 10193 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_encap_header_field_mapping_set isn't implemented for driver type")); 10194 } 10195 10196 exit: 10197 SOC_FUNC_RETURN; 10198 10199 } 10200 #endif /* CPRIMOD_SUPPORT */ 10201 10202 10203 #ifdef CPRIMOD_SUPPORT 10204 int cprimod_cpri_encap_header_field_mapping_get(int unit, int port, cprimod_cpri_encap_header_field_mapping_t* mapping) 10205 { 10206 10207 cprimod_dispatch_type_t __type__; 10208 int __rv__; 10209 SOC_INIT_FUNC_DEFS; 10210 10211 if(mapping == NULL) { 10212 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mapping NULL parameter")); 10213 } 10214 if(SOC_E_NONE != cprimod_cpri_encap_header_field_mapping_t_init(mapping)) { 10215 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mapping initialization failed")); 10216 } 10217 10218 /* Dispatch */ 10219 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10220 if(__type__ >= cprimodDispatchTypeCount) { 10221 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10222 } 10223 10224 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_encap_header_field_mapping_get) { 10225 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_encap_header_field_mapping_get(unit, port, mapping); 10226 _SOC_IF_ERR_EXIT(__rv__); 10227 } else { 10228 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_encap_header_field_mapping_get isn't implemented for driver type")); 10229 } 10230 10231 exit: 10232 SOC_FUNC_RETURN; 10233 10234 } 10235 #endif /* CPRIMOD_SUPPORT */ 10236 10237 10238 #ifdef CPRIMOD_SUPPORT 10239 int cprimod_cpri_decap_header_field_mapping_set(int unit, int port, const cprimod_cpri_decap_header_field_mapping_t* mapping) 10240 { 10241 10242 cprimod_dispatch_type_t __type__; 10243 int __rv__; 10244 SOC_INIT_FUNC_DEFS; 10245 10246 if(SOC_E_NONE != cprimod_cpri_decap_header_field_mapping_t_validate(mapping)) { 10247 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mapping validation failed")); 10248 } 10249 10250 /* Dispatch */ 10251 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10252 if(__type__ >= cprimodDispatchTypeCount) { 10253 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10254 } 10255 10256 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_decap_header_field_mapping_set) { 10257 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_decap_header_field_mapping_set(unit, port, mapping); 10258 _SOC_IF_ERR_EXIT(__rv__); 10259 } else { 10260 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_decap_header_field_mapping_set isn't implemented for driver type")); 10261 } 10262 10263 exit: 10264 SOC_FUNC_RETURN; 10265 10266 } 10267 #endif /* CPRIMOD_SUPPORT */ 10268 10269 10270 #ifdef CPRIMOD_SUPPORT 10271 int cprimod_cpri_decap_header_field_mapping_get(int unit, int port, cprimod_cpri_decap_header_field_mapping_t* mapping) 10272 { 10273 10274 cprimod_dispatch_type_t __type__; 10275 int __rv__; 10276 SOC_INIT_FUNC_DEFS; 10277 10278 if(mapping == NULL) { 10279 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mapping NULL parameter")); 10280 } 10281 if(SOC_E_NONE != cprimod_cpri_decap_header_field_mapping_t_init(mapping)) { 10282 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mapping initialization failed")); 10283 } 10284 10285 /* Dispatch */ 10286 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10287 if(__type__ >= cprimodDispatchTypeCount) { 10288 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10289 } 10290 10291 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_decap_header_field_mapping_get) { 10292 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_decap_header_field_mapping_get(unit, port, mapping); 10293 _SOC_IF_ERR_EXIT(__rv__); 10294 } else { 10295 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_decap_header_field_mapping_get isn't implemented for driver type")); 10296 } 10297 10298 exit: 10299 SOC_FUNC_RETURN; 10300 10301 } 10302 #endif /* CPRIMOD_SUPPORT */ 10303 10304 10305 #ifdef CPRIMOD_SUPPORT 10306 int cprimod_cpri_header_field_adjustment_config_set(int unit, int port, cprimod_direction_t dir, int ext_hdr_enable, int len_field_adj) 10307 { 10308 10309 cprimod_dispatch_type_t __type__; 10310 int __rv__; 10311 SOC_INIT_FUNC_DEFS; 10312 10313 /* Dispatch */ 10314 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10315 if(__type__ >= cprimodDispatchTypeCount) { 10316 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10317 } 10318 10319 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_header_field_adjustment_config_set) { 10320 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_header_field_adjustment_config_set(unit, port, dir, ext_hdr_enable, len_field_adj); 10321 _SOC_IF_ERR_EXIT(__rv__); 10322 } else { 10323 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_header_field_adjustment_config_set isn't implemented for driver type")); 10324 } 10325 10326 exit: 10327 SOC_FUNC_RETURN; 10328 10329 } 10330 #endif /* CPRIMOD_SUPPORT */ 10331 10332 10333 #ifdef CPRIMOD_SUPPORT 10334 int cprimod_cpri_header_field_adjustment_config_get(int unit, int port, cprimod_direction_t dir, int* ext_hdr_enable, int* len_field_adj) 10335 { 10336 10337 cprimod_dispatch_type_t __type__; 10338 int __rv__; 10339 SOC_INIT_FUNC_DEFS; 10340 10341 if(ext_hdr_enable == NULL) { 10342 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("ext_hdr_enable NULL parameter")); 10343 } 10344 if(len_field_adj == NULL) { 10345 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("len_field_adj NULL parameter")); 10346 } 10347 /* Dispatch */ 10348 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10349 if(__type__ >= cprimodDispatchTypeCount) { 10350 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10351 } 10352 10353 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_header_field_adjustment_config_get) { 10354 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_header_field_adjustment_config_get(unit, port, dir, ext_hdr_enable, len_field_adj); 10355 _SOC_IF_ERR_EXIT(__rv__); 10356 } else { 10357 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_header_field_adjustment_config_get isn't implemented for driver type")); 10358 } 10359 10360 exit: 10361 SOC_FUNC_RETURN; 10362 10363 } 10364 #endif /* CPRIMOD_SUPPORT */ 10365 10366 10367 #ifdef CPRIMOD_SUPPORT 10368 int cprimod_cpri_decap_header_field_mask_set(int unit, int port, cprimod_cpri_roe_header_field_t field_id, uint32 mask) 10369 { 10370 10371 cprimod_dispatch_type_t __type__; 10372 int __rv__; 10373 SOC_INIT_FUNC_DEFS; 10374 10375 /* Dispatch */ 10376 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10377 if(__type__ >= cprimodDispatchTypeCount) { 10378 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10379 } 10380 10381 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_decap_header_field_mask_set) { 10382 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_decap_header_field_mask_set(unit, port, field_id, mask); 10383 _SOC_IF_ERR_EXIT(__rv__); 10384 } else { 10385 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_decap_header_field_mask_set isn't implemented for driver type")); 10386 } 10387 10388 exit: 10389 SOC_FUNC_RETURN; 10390 10391 } 10392 #endif /* CPRIMOD_SUPPORT */ 10393 10394 10395 #ifdef CPRIMOD_SUPPORT 10396 int cprimod_cpri_decap_header_field_mask_get(int unit, int port, cprimod_cpri_roe_header_field_t field_id, uint32* mask) 10397 { 10398 10399 cprimod_dispatch_type_t __type__; 10400 int __rv__; 10401 SOC_INIT_FUNC_DEFS; 10402 10403 if(mask == NULL) { 10404 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("mask NULL parameter")); 10405 } 10406 /* Dispatch */ 10407 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10408 if(__type__ >= cprimodDispatchTypeCount) { 10409 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10410 } 10411 10412 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_decap_header_field_mask_get) { 10413 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_decap_header_field_mask_get(unit, port, field_id, mask); 10414 _SOC_IF_ERR_EXIT(__rv__); 10415 } else { 10416 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_decap_header_field_mask_get isn't implemented for driver type")); 10417 } 10418 10419 exit: 10420 SOC_FUNC_RETURN; 10421 10422 } 10423 #endif /* CPRIMOD_SUPPORT */ 10424 10425 10426 #ifdef CPRIMOD_SUPPORT 10427 int cprimod_cpri_port_compression_saturation_config_set(int unit, int port, uint32 threshold_value) 10428 { 10429 10430 cprimod_dispatch_type_t __type__; 10431 int __rv__; 10432 SOC_INIT_FUNC_DEFS; 10433 10434 /* Dispatch */ 10435 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10436 if(__type__ >= cprimodDispatchTypeCount) { 10437 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10438 } 10439 10440 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_compression_saturation_config_set) { 10441 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_compression_saturation_config_set(unit, port, threshold_value); 10442 _SOC_IF_ERR_EXIT(__rv__); 10443 } else { 10444 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_compression_saturation_config_set isn't implemented for driver type")); 10445 } 10446 10447 exit: 10448 SOC_FUNC_RETURN; 10449 10450 } 10451 #endif /* CPRIMOD_SUPPORT */ 10452 10453 10454 #ifdef CPRIMOD_SUPPORT 10455 int cprimod_cpri_port_compression_saturation_config_get(int unit, int port, uint32* threshold_value) 10456 { 10457 10458 cprimod_dispatch_type_t __type__; 10459 int __rv__; 10460 SOC_INIT_FUNC_DEFS; 10461 10462 if(threshold_value == NULL) { 10463 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("threshold_value NULL parameter")); 10464 } 10465 /* Dispatch */ 10466 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10467 if(__type__ >= cprimodDispatchTypeCount) { 10468 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10469 } 10470 10471 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_compression_saturation_config_get) { 10472 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_compression_saturation_config_get(unit, port, threshold_value); 10473 _SOC_IF_ERR_EXIT(__rv__); 10474 } else { 10475 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_compression_saturation_config_get isn't implemented for driver type")); 10476 } 10477 10478 exit: 10479 SOC_FUNC_RETURN; 10480 10481 } 10482 #endif /* CPRIMOD_SUPPORT */ 10483 10484 10485 #ifdef CPRIMOD_SUPPORT 10486 int cprimod_cpri_port_decompression_saturation_config_set(int unit, int port, uint32 sat_value) 10487 { 10488 10489 cprimod_dispatch_type_t __type__; 10490 int __rv__; 10491 SOC_INIT_FUNC_DEFS; 10492 10493 /* Dispatch */ 10494 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10495 if(__type__ >= cprimodDispatchTypeCount) { 10496 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10497 } 10498 10499 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_decompression_saturation_config_set) { 10500 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_decompression_saturation_config_set(unit, port, sat_value); 10501 _SOC_IF_ERR_EXIT(__rv__); 10502 } else { 10503 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_decompression_saturation_config_set isn't implemented for driver type")); 10504 } 10505 10506 exit: 10507 SOC_FUNC_RETURN; 10508 10509 } 10510 #endif /* CPRIMOD_SUPPORT */ 10511 10512 10513 #ifdef CPRIMOD_SUPPORT 10514 int cprimod_cpri_port_decompression_saturation_config_get(int unit, int port, uint32* sat_value) 10515 { 10516 10517 cprimod_dispatch_type_t __type__; 10518 int __rv__; 10519 SOC_INIT_FUNC_DEFS; 10520 10521 if(sat_value == NULL) { 10522 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("sat_value NULL parameter")); 10523 } 10524 /* Dispatch */ 10525 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10526 if(__type__ >= cprimodDispatchTypeCount) { 10527 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10528 } 10529 10530 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_decompression_saturation_config_get) { 10531 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_cpri_port_decompression_saturation_config_get(unit, port, sat_value); 10532 _SOC_IF_ERR_EXIT(__rv__); 10533 } else { 10534 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_cpri_port_decompression_saturation_config_get isn't implemented for driver type")); 10535 } 10536 10537 exit: 10538 SOC_FUNC_RETURN; 10539 10540 } 10541 #endif /* CPRIMOD_SUPPORT */ 10542 10543 10544 #ifdef CPRIMOD_SUPPORT 10545 int cprimod_rsvd4_tx_padding_size_set(int unit, int port, uint32 padding_size) 10546 { 10547 10548 cprimod_dispatch_type_t __type__; 10549 int __rv__; 10550 SOC_INIT_FUNC_DEFS; 10551 10552 /* Dispatch */ 10553 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10554 if(__type__ >= cprimodDispatchTypeCount) { 10555 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10556 } 10557 10558 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_padding_size_set) { 10559 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_padding_size_set(unit, port, padding_size); 10560 _SOC_IF_ERR_EXIT(__rv__); 10561 } else { 10562 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_padding_size_set isn't implemented for driver type")); 10563 } 10564 10565 exit: 10566 SOC_FUNC_RETURN; 10567 10568 } 10569 #endif /* CPRIMOD_SUPPORT */ 10570 10571 10572 #ifdef CPRIMOD_SUPPORT 10573 int cprimod_rsvd4_tx_padding_size_get(int unit, int port, uint32* padding_size) 10574 { 10575 10576 cprimod_dispatch_type_t __type__; 10577 int __rv__; 10578 SOC_INIT_FUNC_DEFS; 10579 10580 if(padding_size == NULL) { 10581 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("padding_size NULL parameter")); 10582 } 10583 /* Dispatch */ 10584 _SOC_IF_ERR_EXIT(cprimod_port_cpm_type_get(unit, port, &__type__)); 10585 if(__type__ >= cprimodDispatchTypeCount) { 10586 _SOC_EXIT_WITH_ERR(SOC_E_PARAM, ("Driver is out of range")); 10587 } 10588 10589 if(NULL != __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_padding_size_get) { 10590 __rv__ = __cprimod__dispatch__[__type__]->f_cprimod_rsvd4_tx_padding_size_get(unit, port, padding_size); 10591 _SOC_IF_ERR_EXIT(__rv__); 10592 } else { 10593 _SOC_EXIT_WITH_ERR(SOC_E_UNAVAIL, ("cprimod_rsvd4_tx_padding_size_get isn't implemented for driver type")); 10594 } 10595 10596 exit: 10597 SOC_FUNC_RETURN; 10598 10599 } 10600 #endif /* CPRIMOD_SUPPORT */ 10601 10602 10603 10604 #undef _ERR_MSG_MODULE_NAME 10605 #endif /* CPRIMOD_SUPPORT */