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

diag.h (7442B)


      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-2020 Broadcom Inc. All rights reserved.
      6  *
      7  * File:        diag.h
      8  * Purpose:     
      9  */
     10 
     11 #ifndef   _DIAG_H_
     12 #define   _DIAG_H_
     13 
     14 #include <soc/defs.h>
     15 #include <bcm/port.h>
     16 #include <bcm/switch.h>
     17 #include <bcm/link.h>
     18 
     19 #include <sal/types.h>
     20 #include <appl/diag/shell.h>
     21 #include <soc/portmode.h>
     22 #include <soc/register.h>
     23 #include <soc/types.h>
     24 
     25 #define SOC_CLI_THREAD_PRI 100
     26 #define SOC_BG_THREAD_PRI (SOC_CLI_THREAD_PRI+10)
     27 
     28 extern cmd_t *cur_cmd_list[SOC_MAX_NUM_DEVICES];
     29 extern int cur_cmd_cnt[SOC_MAX_NUM_DEVICES];
     30 
     31 /* These commands are visible in all (both) modes */
     32 extern cmd_t bcm_cmd_common[];
     33 extern int bcm_cmd_common_cnt;
     34 extern cmd_t* dyn_cmd_list[SOC_MAX_NUM_DEVICES];
     35 extern int dyn_cmd_cnt[SOC_MAX_NUM_DEVICES];
     36 
     37 extern int cur_mode[SOC_MAX_NUM_DEVICES];
     38 
     39 extern char *discard_mode[];
     40 extern char *linkscan_mode[];
     41 extern char *interface_mode[];
     42 extern char *phymaster_mode[];
     43 extern char *loopback_mode[];
     44 extern char *forward_mode[];
     45 extern char *encap_mode[];
     46 extern char *mdix_mode[];
     47 extern char *mdix_status[];
     48 extern char *medium_status[];
     49 
     50 
     51 
     52 
     53 #define _E2S(x, max, string_array) \
     54     ((((size_t)(x) < (max))) ?  (string_array)[(x)] : "?")
     55 
     56 #define DIAG_FUNC_STR_MATCH(_function, _string, _short_string) \
     57     !(sal_strncasecmp(function, _string, \
     58                 SOC_SAND_MAX(sal_strlen(function), \
     59                     sal_strlen(_string)))) || \
     60     !(sal_strncasecmp(function, _short_string, \
     61             SOC_SAND_MAX(sal_strlen(function),\
     62                 sal_strlen(_short_string))))
     63 
     64 #define DISCARD_MODE(x)    _E2S(x, BCM_PORT_DISCARD_COUNT, discard_mode)
     65 #define LINKSCAN_MODE(x)   _E2S(x, BCM_LINKSCAN_MODE_COUNT, linkscan_mode)
     66 #define INTERFACE_MODE(x)  _E2S(x, BCM_PORT_IF_COUNT, interface_mode)
     67 #define PHYMASTER_MODE(x)  _E2S(x, BCM_PORT_MS_COUNT, phymaster_mode)
     68 #define LOOPBACK_MODE(x)   _E2S(x, BCM_PORT_LOOPBACK_COUNT, loopback_mode)
     69 #define FORWARD_MODE(x)	   _E2S(x, BCM_STG_STP_COUNT, forward_mode)
     70 #define ENCAP_MODE(x)      _E2S(x, COUNTOF(encap_mode), encap_mode)
     71 #define MDIX_MODE(x)       _E2S(x, BCM_PORT_MDIX_COUNT, mdix_mode)
     72 #define MDIX_STATUS(x)     _E2S(x, BCM_PORT_MDIX_STATUS_COUNT, mdix_status)
     73 #define MEDIUM_STATUS(x)   _E2S(x, BCM_PORT_MEDIUM_COUNT, medium_status)
     74 #define MCAST_FLOOD(x)     _E2S(x, BCM_PORT_MCAST_FLOOD_COUNT, mcast_flood)
     75 
     76 extern void command_mode_set(int unit, int mode);
     77 extern int command_mode_get(int unit);
     78 
     79 typedef enum sh_cmd_mode_e {
     80     ESW_CMD_MODE,
     81     DPP_CMD_MODE,
     82     DNX_CMD_MODE,
     83     DNXF_CMD_MODE,
     84     LTSW_CMD_MODE,
     85     ILLEGAL_CMD_MODE
     86 } sh_cmd_mode_t;
     87 
     88 /*
     89  * Switch-case enums for Custom handler
     90  */
     91 #define CUSTOM_HANDLER_STAT_GET        1
     92 #define CUSTOM_HANDLER_STAT_SYNC_GET   2
     93 #define CUSTOM_HANDLER_VLAN_GET        3
     94 
     95 
     96 #define DSC3B0_CDR_STATUS2_OSCDR_MODE_MASK                         0x01c0
     97 #define DSC3B0_CDR_STATUS2_OSCDR_MODE_SHIFT                        6
     98 
     99 /* System related diag functions */
    100 extern void _diag_assert(const char *expr, const char *file, int line);
    101 
    102 /* Port related diag functions */
    103 extern void brief_port_info_header(int unit);
    104 extern int brief_port_info(int unit, int port, bcm_port_info_t *info,
    105                            uint32 flags);
    106 extern void disp_port_info(int unit, char *port_ref, bcm_port_t port, bcm_port_info_t *info, 
    107                            int st_port, uint32 flags);
    108 extern void port_parse_setup(int unit, parse_table_t *pt,
    109                              bcm_port_info_t *info);
    110 extern void port_parse_mask_get(parse_table_t *pt, uint32 *seen,
    111                                 uint32 *parsed);
    112 extern int port_parse_port_info_set(uint32 flags,
    113                  bcm_port_info_t *src, bcm_port_info_t *dest);
    114 
    115 extern void port_info_init(int unit, int port, bcm_port_info_t *info,
    116                            uint32 actions);
    117 extern void format_port_speed_ability(char *buf, int bufsize, soc_port_mode_t ability);
    118 extern void format_port_intf_ability(char *buf, int bufsize, soc_port_mode_t ability);
    119 extern void format_port_medium_ability(char *buf, int bufsize, soc_port_mode_t ability);
    120 extern void format_port_pause_ability(char *buf, int bufsize, soc_port_mode_t ability);
    121 extern void format_port_lb_ability(char *buf, int bufsize, soc_port_mode_t ability);
    122 extern void format_port_flags_ability(char *buf, int bufsize, soc_port_mode_t ability);
    123 
    124 extern cmd_result_t _phy_diag_eyescan(int unit, bcm_pbmp_t pbmp,args_t *args);  
    125 extern cmd_result_t _phy_diag_pcs(int unit, bcm_pbmp_t pbmp,args_t *args);
    126 extern cmd_result_t _phy_diag_berproj(int unit, bcm_pbmp_t pbmp, args_t *args);
    127 extern int port_to_phyaddr(int unit, int port);
    128 extern int port_to_phyaddr_int(int unit, int port);
    129 extern int port_diag_ctrl(int unit, int port, uint32 inst, int op_type, int op_cmd, void *arg);
    130 extern char *get_core_str(int unit, int core);
    131 extern char *if_fmt_speed(char *b, int speed);
    132 
    133 #if defined(BCM_TOMAHAWK_SUPPORT)
    134 extern int esw_brief_port_info(int unit, int port, bcm_port_info_t *info,
    135                                uint32 flags);
    136 #endif
    137 
    138 
    139 /* Register/mem diagnostic functions */
    140 typedef soc_reg_above_64_val_t reg_val;
    141 typedef uint32 mem_val[SOC_MAX_MEM_WORDS];
    142 
    143 extern int diag_reg_bits(int unit, char* reg_name);
    144 extern int diag_reg_field_bits(int unit, char *reg_name, char* field_name);
    145 extern int diag_reg_info_get(int unit, char *name, soc_reg_t *reg_id, soc_block_t *block_instance_id);
    146 extern int diag_reg_get(int unit, char *name, reg_val value);
    147 extern int diag_reg_field_get(int unit, char *name, char* field_name, 
    148                               reg_val value);
    149 extern int diag_reg_field_only_get(int unit, char *name, reg_val reg_value, char* field_name, 
    150                               reg_val field_value);
    151 
    152 extern int diag_reg_set(int unit, char *name, reg_val value);
    153 extern int diag_reg_field_set(int unit, char *name, char* field_name,
    154                               reg_val value);
    155 
    156 extern int diag_reg_field_only_set(int unit, char *name, reg_val reg_value, char* field_name,
    157                               reg_val field_value);
    158 extern int diag_mem_info_get(int unit, char *name, soc_mem_t *mem_id, soc_block_t *block_instance_id);
    159 
    160 extern int diag_mem_get(int unit, char *name, int index, mem_val value);
    161 extern int diag_mem_field_get(int unit, char *name, char* field_name, 
    162                               int index, mem_val value);
    163 extern int diag_mem_field_only_get(int unit, char *name, char* field_name, 
    164                               int index, mem_val value);
    165 extern int diag_soc_mem_read_range(int unit, char *name, int index1, 
    166                                    int index2, void *buffer);
    167 
    168 extern int diag_mem_set(int unit, char *name, int start, int count, 
    169                         mem_val value);
    170 extern int diag_mem_field_set(int unit, char *name, char* field_name, 
    171                               int start, int count, mem_val value);
    172 extern int diag_mem_field_only_set(int unit, char *name, char* field_name, 
    173                               int start, int count, mem_val value);
    174 extern int diag_soc_mem_write_range(int unit, char *name, int index1, 
    175                                     int index2, void *buffer);
    176 
    177 #if defined(BCM_ESW_SUPPORT) && defined(INCLUDE_PKTIO)
    178 extern int diag_pktio_mode_enable(int unit);
    179 extern int diag_pktio_mode_disable(int unit);
    180 #endif
    181 
    182 #endif /* _DIAG_H_ */