l3.c (2784B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 * 7 * File: l3.c 8 * Purpose: Helix5 L3 function implementations 9 */ 10 11 #include <shared/bsl.h> 12 13 #include <soc/defs.h> 14 #if defined(INCLUDE_L3) && defined(BCM_HELIX5_SUPPORT) 15 16 #include <bcm/debug.h> 17 #include <bcm/error.h> 18 /* 19 * Function: 20 * _bcm_hx5_ecmp_rh_dynamic_size_encode 21 * Purpose: 22 * Encode ECMP resilient hashing flow set size. 23 * Parameters: 24 * dynamic_size - (IN) Number of flow sets. 25 * encoded_value - (OUT) Encoded value. 26 * Returns: 27 * BCM_E_xxx 28 */ 29 int 30 _bcm_hx5_ecmp_rh_dynamic_size_encode(int dynamic_size, int *encoded_value) 31 { 32 switch (dynamic_size) { 33 case 64: 34 *encoded_value = 1; 35 break; 36 case 128: 37 *encoded_value = 2; 38 break; 39 case 256: 40 *encoded_value = 3; 41 break; 42 case 512: 43 *encoded_value = 4; 44 break; 45 case 1024: 46 *encoded_value = 5; 47 break; 48 case 2048: 49 *encoded_value = 6; 50 break; 51 case 4096: 52 *encoded_value = 7; 53 break; 54 case 8192: 55 *encoded_value = 8; 56 break; 57 case 16384: 58 *encoded_value = 9; 59 break; 60 case 32768: 61 *encoded_value = 10; 62 break; 63 default: 64 return BCM_E_PARAM; 65 } 66 67 return BCM_E_NONE; 68 } 69 70 /* 71 * Function: 72 * _bcm_hx5_ecmp_rh_dynamic_size_decode 73 * Purpose: 74 * Decode ECMP resilient hashing flow set size. 75 * Parameters: 76 * encoded_value - (IN) Encoded value. 77 * dynamic_size - (OUT) Number of flow sets. 78 * Returns: 79 * BCM_E_xxx 80 */ 81 int 82 _bcm_hx5_ecmp_rh_dynamic_size_decode(int encoded_value, int *dynamic_size) 83 { 84 switch (encoded_value) { 85 case 1: 86 *dynamic_size = 64; 87 break; 88 case 2: 89 *dynamic_size = 128; 90 break; 91 case 3: 92 *dynamic_size = 256; 93 break; 94 case 4: 95 *dynamic_size = 512; 96 break; 97 case 5: 98 *dynamic_size = 1024; 99 break; 100 case 6: 101 *dynamic_size = 2048; 102 break; 103 case 7: 104 *dynamic_size = 4096; 105 break; 106 case 8: 107 *dynamic_size = 8192; 108 break; 109 case 9: 110 *dynamic_size = 16384; 111 break; 112 case 10: 113 *dynamic_size = 32768; 114 break; 115 default: 116 return BCM_E_INTERNAL; 117 } 118 119 return BCM_E_NONE; 120 } 121 122 #endif /* INCLUDE_L3 && BCM_HELIX5_SUPPORT */