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

vm.h (5226B)


      1 /*
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2019 Broadcom Inc. All rights reserved.
      6  */
      7 #ifndef _SOC_VM_H
      8 #define _SOC_VM_H
      9 
     10 #include <shared/bitop.h>
     11 
     12 
     13 #define VM_FLOW_INIT(unit) \
     14 	if (VM_FLOW_USED(unit) == NULL) { return SOC_E_INIT; }
     15 #define VM_FLOW_ID(unit, id) \
     16 	if (id < 0 || id >= VM_FLOW_SIZE(unit)) { return SOC_E_PARAM; }
     17 
     18 #define VM_FLOW_ID_GET_FROM_HEAD 0
     19 #define VM_FLOW_ID_GET_FROM_TAIL 1
     20 #define VM_FLOW_ID_GET_CPU_DEFAULT 2
     21 
     22 
     23 #define VM_RANGER_INIT(unit) \
     24 	if (VM_RANGER_USED(unit) == NULL) { return SOC_E_INIT; }
     25 
     26 /* ram type */
     27 typedef enum drv_vm_ram_e {
     28     DRV_VM_RAM_IVM_KEY_DATA = 1,
     29     DRV_VM_RAM_IVM_KEY_MASK,
     30     DRV_VM_RAM_IVM_ACT,
     31     DRV_VM_RAM_IVM_ALL,
     32     DRV_VM_RAM_IVM = DRV_VM_RAM_IVM_ALL,
     33 
     34     DRV_VM_RAM_EVM_KEY_DATA,
     35     DRV_VM_RAM_EVM_KEY_MASK,
     36     DRV_VM_RAM_EVM_ACT,
     37     DRV_VM_RAM_EVM_ALL,
     38     DRV_VM_RAM_EVM = DRV_VM_RAM_EVM_ALL
     39 }drv_vm_ram_t;
     40 
     41 /* qualify set */
     42 typedef enum drv_vm_qualify_e {
     43     DRV_VM_QUAL_IVM_PORT_PROFILE,                 /* Ingress Port Profile */
     44     DRV_VM_QUAL_IVM_PORT_ID,                           /* Ingress Port ID */
     45     DRV_VM_QUAL_IVM_INGRESS_STAG_STAUS,    /* Ingress STag Status */
     46     DRV_VM_QUAL_IVM_INGRESS_CTAG_STAUS,    /* Ingress CTag Status */
     47     DRV_VM_QUAL_IVM_INGRESS_SVID,                 /* Ingress SVID */
     48     DRV_VM_QUAL_IVM_INGRESS_CVID,                 /* Ingress CVID */
     49     DRV_VM_QUAL_IVM_INGRESS_CVID_RANGE,    /* Ingress CVID Range */
     50     DRV_VM_QUAL_IVM_INGRESS_SPCP,                 /* Ingress SPCP */
     51     DRV_VM_QUAL_IVM_INGRESS_CPCP,                 /* Ingress CPCP */
     52     DRV_VM_QUAL_IVM_INGRESS_FRAME_TYPE,    /* Ingress Frame Type */
     53     DRV_VM_QUAL_IVM_INGRESS_ETHER_TYPE,     /* Ingress Ether Type */
     54 
     55     DRV_VM_QUAL_EVM_INGRESS_PORT_ID,          /* Ingress Port ID */
     56     DRV_VM_QUAL_EVM_INGRESS_VPORT_ID,         /* Ingress VPort ID */
     57     DRV_VM_QUAL_EVM_FLOW_ID,                          /* Flow ID */
     58     DRV_VM_QUAL_EVM_EGRESS_PORT_ID,            /* Egress Port ID */
     59     DRV_VM_QUAL_EVM_EGRESS_VPORT_ID,          /* Egress VPort ID */
     60 
     61     DRV_VM_QUAL_INVALID,
     62     DRV_VM_QUAL_COUNT
     63 }drv_vm_qual_t;
     64 
     65 /* field set */
     66 typedef enum drv_vm_field_e {
     67     /* IVM Key */
     68     DRV_VM_FIELD_IVM_VALID,
     69     DRV_VM_FIELD_IVM_INGRESS_PORT_PROFILE,
     70     DRV_VM_FIELD_IVM_INGRESS_PORT_ID,
     71     DRV_VM_FIELD_IVM_INGRESS_STAG_STAUS,
     72     DRV_VM_FIELD_IVM_INGRESS_CTAG_STATUS,
     73     DRV_VM_FIELD_IVM_INGRESS_SVID,
     74     DRV_VM_FIELD_IVM_INGRESS_CVID,
     75     DRV_VM_FIELD_IVM_INGRESS_CVID_RANGE,
     76     DRV_VM_FIELD_IVM_INGRESS_SPCP,
     77     DRV_VM_FIELD_IVM_INGRESS_CPCP,
     78     DRV_VM_FIELD_IVM_FRAME_TYPE,
     79     DRV_VM_FIELD_IVM_ETHER_TYPE,
     80     DRV_VM_FIELD_IVM_RESERVED,
     81 
     82     /* EVM Key */
     83     DRV_VM_FIELD_EVM_VALID,
     84     DRV_VM_FIELD_EVM_INGRESS_PORT_ID,
     85     DRV_VM_FIELD_EVM_INGRESS_VPORT_ID,
     86     DRV_VM_FIELD_EVM_FLOW_ID,
     87     DRV_VM_FIELD_EVM_EGRESS_PORT_ID,
     88     DRV_VM_FIELD_EVM_EGRESS_VPORT_ID,
     89 
     90     /* IVM Action */
     91     DRV_VM_FIELD_IVM_SPCP_MARKING_POLICY,
     92     DRV_VM_FIELD_IVM_CPCP_MARKING_POLICY,
     93     DRV_VM_FIELD_IVM_VLAN_ID,
     94     DRV_VM_FIELD_IVM_FLOW_ID,
     95     DRV_VM_FIELD_IVM_VPORT_ID,
     96     DRV_VM_FIELD_IVM_VPORT_SPCP,
     97     DRV_VM_FIELD_IVM_VPORT_CPCP,
     98     DRV_VM_FIELD_IVM_VPORT_DP,
     99     DRV_VM_FIELD_IVM_VPORT_TC,
    100 
    101     /* EVMAction */
    102     DRV_VM_FIELD_EVM_STAG_ACT,
    103     DRV_VM_FIELD_EVM_CTAG_ACT,
    104     DRV_VM_FIELD_EVM_NEW_SVID,
    105     DRV_VM_FIELD_EVM_NEW_CVID,
    106     DRV_VM_FIELD_EVM_OUTER_PCP_REPLACE,
    107     DRV_VM_FIELD_EVM_NEW_OUTER_PCP,
    108     DRV_VM_FIELD_EVM_INNER_PCP_REPLACE,
    109     DRV_VM_FIELD_EVM_NEW_INNER_PCP,
    110     
    111     DRV_VM_FIELD_COUNT
    112 }drv_vm_field_t;
    113 
    114 /* action type */
    115 typedef enum drv_vm_action_e {
    116     DRV_VM_ACT_IVM_SPCP_MARKING_POLICY = 1,
    117     DRV_VM_ACT_IVM_CPCP_MARKING_POLICY,
    118     DRV_VM_ACT_IVM_VLAN_ID,
    119     DRV_VM_ACT_IVM_FLOW_ID,
    120     DRV_VM_ACT_IVM_VPORT_ID,
    121     DRV_VM_ACT_IVM_VPORT_SPCP,
    122     DRV_VM_ACT_IVM_VPORT_CPCP,
    123     DRV_VM_ACT_IVM_VPORT_DP,
    124     DRV_VM_ACT_IVM_VPORT_TC,
    125 
    126     DRV_VM_ACT_EVM_STAG,
    127     DRV_VM_ACT_EVM_CTAG,
    128     DRV_VM_ACT_EVM_NEW_SVID,
    129     DRV_VM_ACT_EVM_NEW_CVID,
    130 
    131     DRV_VM_ACT_EVM_OUTER_PCP_REPLACE,
    132     DRV_VM_ACT_EVM_NEW_OUTER_PCP,
    133     DRV_VM_ACT_EVM_INNER_PCP_REPLACE,
    134     DRV_VM_ACT_EVM_NEW_INNER_PCP,
    135 
    136     DRV_VM_ACT_COUNT
    137 }drv_vm_action_t;
    138 
    139 /* Parameters for IVM action SPCP/CPCP marking policy. */
    140 typedef enum drv_vm_action_pcp_mark_e {
    141     DRV_VM_ACTION_PCP_MARK_MAPPED,
    142     DRV_VM_ACTION_PCP_MARK_INGRESS_INNER_PCP,
    143     DRV_VM_ACTION_PCP_MARK_INGRESS_OUTER_PCP,
    144     DRV_VM_ACTION_PCP_MARK_PORT_DEFAULT,
    145     
    146     DRV_VM_ACTION_PCP_MARK_COUNT
    147 }drv_vm_action_pcp_mark_t;
    148 
    149 /* Parameters for EVM action STag/CTag. */
    150 typedef enum drv_vm_action_tag_policy_e {
    151     DRV_VM_ACTION_TAG_AS_RECEIVED,
    152     DRV_VM_ACTION_TAG_AS_NORMALIZED,
    153     DRV_VM_ACTION_TAG_AS_COPY,
    154     DRV_VM_ACTION_TAG_AS_REMOVE,
    155     DRV_VM_ACTION_TAG_AS_REPLACE,
    156     
    157     DRV_VM_ACTION_TAG_COUNT
    158 }drv_vm_action_tag_policy_t;
    159 
    160 /* driver ivm entry format */
    161 typedef struct drv_vm_entry_s {
    162     uint32  id;
    163     uint32  prio;
    164     uint32  key_data[2];
    165     uint32  key_mask[2];
    166     uint32  act_data[2];
    167     SHR_BITDCL  w[_SHR_BITDCLSIZE(DRV_VM_QUAL_COUNT)];
    168 
    169 }drv_vm_entry_t;
    170 
    171 
    172 #endif /* _SOC_VM_H */
    173 
    174