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

er_cmdmem.h (2978B)


      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:        er_cmdmem.h
      8  */
      9 
     10 #ifndef _SOC_ER_CMDMEM_H_
     11 #define _SOC_ER_CMDMEM_H_
     12 
     13 #define SOC_MEM_CMD_BASE_TO_OFFSET      24
     14 #define SOC_MEM_CMD_TARGET_MASK         0xff
     15 #define SOC_MEM_CMD_DATA_WORDS          17
     16 #define SOC_MEM_CMD_NEWCMD              0x80000000
     17 #define SOC_MEM_CMD_TAB_FULL            0x40000000
     18 #define SOC_MEM_CMD_NOT_FOUND           0x20000000
     19 #define SOC_MEM_CMD_PARITY_ERR          0x10000000
     20 #define SOC_MEM_CMD_INVALID_ADDR        0x08000000
     21 #define SOC_MEM_CMD_L2_MOD_FIFO_FULL    0x04000000
     22 #define SOC_MEM_CMD_INVALID_CMD         0x02000000
     23 
     24 
     25 typedef struct soc_mem_cmd_s {
     26     uint32      command;         /* Operation */
     27     uint32      sub_command;     /* Additional operation info */
     28     uint32      addr0;           /* Entry number or lower bound */
     29     uint32      addr1;
     30     void        *entry_data;
     31     uint32      output_data[SOC_MEM_CMD_DATA_WORDS];
     32 } soc_mem_cmd_t;
     33 
     34 #define SOC_MEM_CMD_READ                 0
     35 #define SOC_MEM_CMD_WRITE                1
     36 #define SOC_MEM_CMD_SEARCH               2
     37 #define SOC_MEM_CMD_LEARN                3
     38 #define SOC_MEM_CMD_DELETE               4
     39 #define SOC_MEM_CMD_PASS_WRITE           5
     40 #define SOC_MEM_CMD_PASS_READ            6
     41 #define SOC_MEM_CMD_SHIFT_DOWN           7
     42 #define SOC_MEM_CMD_SHIFT_UP             8
     43 #define SOC_MEM_CMD_CLEAR_L3_HIT         9
     44 #define SOC_MEM_CMD_SET_L3_HIT          10
     45 #define SOC_MEM_CMD_SWAP_L3_HIT         11
     46 #define SOC_MEM_CMD_READ_ONE            12
     47 #define SOC_MEM_CMD_SEARCH_72           13
     48 #define SOC_MEM_CMD_INSERT_LPM          14
     49 #define SOC_MEM_CMD_REMOVE_LPM          15
     50 #define SOC_MEM_CMD_PER_PORT_AGING      16
     51 
     52 /* DEFIP table entry type markers */
     53 #define SOC_ER_DEFIP_NOT_V6_FF          0xff
     54 #define SOC_ER_DEFIP_KEY_TYPE_IPV4      4
     55 #define SOC_ER_DEFIP_KEY_TYPE_MPLS_1L   6
     56 #define SOC_ER_DEFIP_KEY_TYPE_MPLS_2L   7
     57 
     58 #define SOC_MEM_CMD_SUB_V4               0
     59 #define SOC_MEM_CMD_SUB_V6               1
     60 #define SOC_MEM_CMD_SUB_MPLS1            2
     61 #define SOC_MEM_CMD_SUB_MPLS2            3
     62 
     63 #define SOC_MEM_CMD_HASH_ADDR_MASK         0xfffff
     64 #define SOC_MEM_CMD_EXT_L2_ADDR_MASK_HI    0xffff8
     65 #define SOC_MEM_CMD_EXT_L2_ADDR_MASK_LO    0x00003
     66 #define SOC_MEM_CMD_EXT_L2_ADDR_SHIFT_HI   1
     67 #define SOC_MEM_CMD_HASH_TABLE_SHIFT       20
     68 #define SOC_MEM_CMD_HASH_TABLE_MASK        0x3
     69 
     70 #define SOC_MEM_CMD_HASH_TABLE_L2EXT       0x0
     71 #define SOC_MEM_CMD_HASH_TABLE_DFLT        0x1
     72 #define SOC_MEM_CMD_HASH_TABLE_L2OVR       0x2
     73 
     74 extern int soc_mem_cmd_op(int unit, soc_mem_t mem,
     75                           soc_mem_cmd_t *cmd_info, int intr);
     76 
     77 #define SOC_MEM_CMD_TCAM_ADDR_MAX          6
     78 
     79 extern int soc_mem_tcam_op(int unit, uint32 *addr, uint32 *data,
     80                            int num_addr, int write);
     81 
     82 
     83 #endif	/* !_SOC_ER_CMDMEM_H_ */