l3.c (2510B)
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: Monterey L3 function implementations 9 */ 10 11 #include <shared/bsl.h> 12 13 #include <soc/defs.h> 14 #if defined(INCLUDE_L3) && defined(BCM_MONTEREY_SUPPORT) 15 16 #include <bcm/debug.h> 17 #include <bcm/error.h> 18 /* 19 * Function: 20 * _bcm_monterey_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_monterey_ecmp_rh_dynamic_size_encode(int dynamic_size, int *encoded_value) 31 { 32 switch (dynamic_size) { 33 case 8: 34 *encoded_value = 1; 35 break; 36 case 16: 37 *encoded_value = 2; 38 break; 39 case 32: 40 *encoded_value = 3; 41 break; 42 case 64: 43 *encoded_value = 4; 44 break; 45 case 128: 46 *encoded_value = 5; 47 break; 48 case 256: 49 *encoded_value = 6; 50 break; 51 case 512: 52 *encoded_value = 7; 53 break; 54 case 1024: 55 *encoded_value = 8; 56 break; 57 default: 58 return BCM_E_PARAM; 59 } 60 61 return BCM_E_NONE; 62 } 63 64 /* 65 * Function: 66 * _bcm_monterey_ecmp_rh_dynamic_size_decode 67 * Purpose: 68 * Decode ECMP resilient hashing flow set size. 69 * Parameters: 70 * encoded_value - (IN) Encoded value. 71 * dynamic_size - (OUT) Number of flow sets. 72 * Returns: 73 * BCM_E_xxx 74 */ 75 int 76 _bcm_monterey_ecmp_rh_dynamic_size_decode(int encoded_value, int *dynamic_size) 77 { 78 switch (encoded_value) { 79 case 1: 80 *dynamic_size = 8; 81 break; 82 case 2: 83 *dynamic_size = 16; 84 break; 85 case 3: 86 *dynamic_size = 32; 87 break; 88 case 4: 89 *dynamic_size = 64; 90 break; 91 case 5: 92 *dynamic_size = 128; 93 break; 94 case 6: 95 *dynamic_size = 256; 96 break; 97 case 7: 98 *dynamic_size = 512; 99 break; 100 case 8: 101 *dynamic_size = 1024; 102 break; 103 default: 104 return BCM_E_INTERNAL; 105 } 106 107 return BCM_E_NONE; 108 } 109 110 #endif /* INCLUDE_L3 && BCM_MONTEREY_SUPPORT */