openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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  */