#!/pkg/bin/ksh
# ---------------------------------------------------------------------
# tech_fabric_ncs5500
# platform specific show tech command for ncs55 platform
#
# Copyright (c) 2017-2022 by cisco Systems, Inc.
# All rights reserved.
# --------------------------------------------------------------------

#
# Parse the arguments to the fabric_tech script
# If common_only is set to "1" then commands listed in this platform
# specific file will not be executed
#
common_only="0"

source /pkg/bin/tech_fabric_common
source /etc/rc.d/init.d/spirit_pd.sh

ext_node_name=`node_list_generation -f MY`
int_node_name=`node_conversion -N $ext_node_name`
fq_nodeid=`node_conversion -i $int_node_name`

has_j2="No"
has_q2a="No"

#     BCM88675 (Jericho),    Also BCM88670
#     BCM88680 (JerichoPlus) 
#     BCM88370 (Qumran-MX),  Also BCM88375
#     BCM88470 (Qumran-AX)
#     BCM88690 (Jericho-2
#     We need to revise this logic in the future:
#     1. loop through all possible Dune chip type, find out how many each type(s)
#        are present on the board
#     2. Instead of blindly repeat each cli MAX_NPU number of times, use result
#        from step 1 to dynamically determine how many npus are present
#     3. Asic specific commands(other than J2)
get_brcm_npu_type() {
    brcm_vendor_id=14e4
    brcm_j2_dev_id=869      # 869X
    brcm_j2_dev_list=$(lspci -nd ${brcm_vendor_id}: | grep -oc ${brcm_j2_dev_id})    
    if [ ${brcm_j2_dev_list} -gt 0 ]; then
        has_j2="Yes"
    fi

    brcm_vendor_id=14e4
    brcm_q2a_dev_id=848      # 848X
    brcm_q2a_dev_list=$(lspci -nd ${brcm_vendor_id}: | grep -oc ${brcm_q2a_dev_id})
    if [ ${brcm_q2a_dev_list} -gt 0 ]; then
        has_q2a="Yes"
    fi    
} 
# Function: exec_commands_dshell
#
# Runs commands from the array passed
#
# Arguments: Array name with suffix _exec, __ksh to be executed
#            to generate show tech output
#
# Note:Copied from exec_commands function in show tech infra
#      to run diag shell commands without exec_timeout 
#      as exec_timeout doesnt work with string arguments
#
exec_commands_dshell() {
    cmd_set="$1"

    # initialize variables
    location=$ext_node_name

    i=1; cmd_exec=$(eval "echo \${"$cmd_set"_exec[$i]}")
    while [ -n "$cmd_exec" ]; do
        cmd_exec=$(eval "echo $cmd_exec")
        echo "+++ $cmd_exec [`iosclock -d 0`] ++++"
        cmd__ksh=$(eval "echo \${"$cmd_set"__ksh[$i]}")
        cmd__ksh=$(eval "echo $cmd__ksh")
        eval $cmd__ksh
        if [ "$?" != 0 ]; then
            echo "$__errormsg $cmd_exec"
        fi
        echo "--- $cmd_exec [`iosclock -d 0`] ----"

        # next command from array
        i=$(($i + 1))
        cmd_exec=$(eval "echo \${"$cmd_set"_exec[$i]}")
    done
}

collect_retimer_logs() {
pd_get_card_inst CARD_INST
if [ "$CARD_INST" == "IOSXRWBD-LC" ]; then
    local product_name=$(pd_get_product_name)
    if [[ "$product_name" == "S9700-53DX" ||  -f /tmp/trace_dump_bcm81358 ]] ; then
        > /tmp/cli_dump_bcm81358
        echo "+++`date '+%d/%m/%Y %T'`: Retimer Log collection Started"
        echo "`date '+%d/%m/%Y %T'`: Collecting Link status for BCM81358"
        for retimer_port in `seq 0 4`;
        do
            /pkg/bin/bcm81358_cli -o 3 -p "$retimer_port" > /dev/null
        done

        cat /tmp/cli_dump_bcm81358 

        echo "`date '+%d/%m/%Y %T'`: Collecting Phy status dump for BCM81358"
        output_file="/tmp/trace_dump_bcm81358"
        if [ -s "/tmp/trace_dump_bcm81724" ]; then
            output_file="/tmp/trace_dump_bcm81724"
        fi
        start_wc=0
        if [ -f "$output_file" ]; then
           start_wc=`wc -l "$output_file"  | tr -s " " | cut -d " " -f1`
        fi

        for retimer_port in `seq 0 4`;
        do
            /pkg/bin/bcm81358_cli -o 10 -p "$retimer_port" > /dev/null
        done

        end_wc=0

        if [ -f "$output_file" ]; then
            end_wc=`wc -l "$output_file"  | tr -s " " | cut -d " " -f1`
        fi

        tail_cnt=0
        if [ $end_wc -ge $start_wc ]; then
            tail_cnt=`expr $end_wc - $start_wc`
        fi
        tail -"$tail_cnt" "$output_file" 

        > /tmp/cli_dump_bcm81358
        echo "`date '+%d/%m/%Y %T'`: Collecting AN status for BCM81358"
        for retimer_port in `seq 0 4`;
        do
            /pkg/bin/bcm81358_cli -o 11 -p "$retimer_port" > /dev/null
        done

        cat /tmp/cli_dump_bcm81358

        echo "`date '+%d/%m/%Y %T'`: Collecting ctrace for BCM81358"
        /pkg/bin/ctracedec -ktgALl phy_driver
        echo "----`date '+%d/%m/%Y %T'`: Retimer Log collection Ended"
    fi
fi
}

#
# Show commands
#

plat_cmd_count=1

platform_exec[$plat_cmd_count]='Build Info'
platform__ksh[$plat_cmd_count]='cat /etc/build-info.txt'
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='PCI information '
platform__ksh[$plat_cmd_count]='lspci -v'
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show process cpu location '
platform__ksh[$plat_cmd_count]='show_watchdog -p '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='top command'
platform__ksh[$plat_cmd_count]='top  -n 1 -b -H '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show dpa trace '
platform__ksh[$plat_cmd_count]='dpa_show_ltrace '
((plat_cmd_count++))

#show controllers fia link-info rx flap <>
platform_exec[$plat_cmd_count]='show controllers fia link-info rx 0 111 flap instance all location'
platform__ksh[$plat_cmd_count]='fia_driver_show -l r -e f -b 0x0 -f 0x6f -i 0xff -n $fq_nodeid -p 0xffffffff -a brief'
((plat_cmd_count++))
  
#show controllers fia link-info rx topo <>
platform_exec[$plat_cmd_count]='show controllers fia link-info rx 0 111 topo instance all location'
platform__ksh[$plat_cmd_count]='fia_driver_show -l r -e t -b 0x0 -f 0x6f -i 0xff -n $fq_nodeid -p 0xffffffff -a brief'
((plat_cmd_count++))
  
#show controllers fia link-info tx <>
platform_exec[$plat_cmd_count]='show controllers fia link-info tx 0 111 instance all location'
platform__ksh[$plat_cmd_count]='fia_driver_show -l t -b 0x0 -f 0x6f -i 0xff -n $fq_nodeid -p 0xffffffff -a brief'
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show controllers npu voq-usage interface all instance all location $location'
platform__ksh[$plat_cmd_count]='dpa_qosea_voq_show -v x -i 0x10 -n $fq_nodeid -t n -p 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 0 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 0 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 1 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 1 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 2 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 2 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 3 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 3 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 4 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 4 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 5 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 5 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 6 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 6 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 7 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 7 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 8 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 8 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 9 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 9 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 10 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 10 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 11 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 11 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 12 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 12 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 13 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 13 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 14 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 14 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcam 15 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x6 -i 15 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcamop 0 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x7 -i 0 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcamop 1 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x7 -i 1 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcamop 2 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x7 -i 2 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcamop 3 all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x7 -i 3 -e 0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

platform_exec[$plat_cmd_count]='show asic-errors tcamop2 all all location $location'
platform__ksh[$plat_cmd_count]='asic_errors_show -n $fq_nodeid -a 0x8 -i all -e  0x7 -s -t 0x0 -m 0x0 '
((plat_cmd_count++))

#Terminating Dummy Entry needed as per showtech infra
platform_exec[$plat_cmd_count]=''
platform__ksh[$plat_cmd_count]=''

exec_commands_dshell platform

#
# Diag shell commands
#

dcmd_count=1

device_list=`fia_driver_show -d d -i 5 -p 16384 | grep Fabric | egrep -v Mode | grep UP | cut -c2-10 `
for device in $device_list; do
    instance=`echo $device | cut -d"/" -f3 `

    lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"cosq conn ing\" location $location'
    lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"cosq conn ing\" -u '$instance'   '
    ((dcmd_count++))

    lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"cosq conn egr\" location $location'
    lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"cosq conn egr\" -u '$instance'   '
    ((dcmd_count++))

    lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"g PAXB_0_PCIE_ERROR_STATUS.IPROC\" location $location'
    lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"g PAXB_0_PCIE_ERROR_STATUS.IPROC\" -u '$instance'   '
    ((dcmd_count++))

    lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"g PAXB_0_PAXB_INTR_STATUS.IPROC\" location $location'
    lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"g PAXB_0_PAXB_INTR_STATUS.IPROC\" -u '$instance'   '
    ((dcmd_count++))

    pd_get_card_inst CARD_INST
    if [ "$CARD_INST" == "IOSXRWBD-LC" ]; then
        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"show pvt\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"show pvt\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"diag counter g\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"diag counter g\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"diag counter g\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"diag counter g\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"port sts eth\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"port sts eth\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"show counter port=eth full\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"show counter port=eth full\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"counter on\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"counter on\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"phy fecstat counter\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"phy fecstat counter\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"phy fecstat ber sfi\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"phy fecstat ber sfi\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"counter off\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"counter off\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"phy dsc config sfi\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"phy dsc config sfi\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"phy dsc sfi\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"phy dsc sfi\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"phy dsc config eth\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"phy dsc config eth\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"phy dsc eth\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"phy dsc eth\" -u '$instance'   '
        ((dcmd_count++))

        lc_dshell_exec[$dcmd_count]='show controllers fia diagshell '$instance' \"show counter port=eth\" location $location'
        lc_dshell__ksh[$dcmd_count]='fia_driver_show -c \"show counter port=eth\" -u '$instance'   '
        ((dcmd_count++))

    fi
done

#Terminating Dummy Entry needed as per showtech infra
lc_dshell_exec[$dcmd_count]=''
lc_dshell__ksh[$dcmd_count]=''

exec_commands_dshell lc_dshell

#
# Fia register-dump for each instance all location
#
lc_reg_cmd_count=1
lc_reg_exec[$lc_reg_cmd_count]='show controllers fia register-dump instance all location $location'
lc_reg__ksh[$lc_reg_cmd_count]='fia_driver_show -r -r -i 0xff '
((lc_reg_cmd_count++))

lc_reg_exec[$lc_reg_cmd_count]='show controllers fia tcam instance all register-dump location $location'
lc_reg__ksh[$lc_reg_cmd_count]='fia_driver_show  -k -k -i 0x7 '
((lc_reg_cmd_count++))

exec_commands_dshell lc_reg

#
# Fia asic specific for reach instance all location
#
jlegacy_cmd_count=1

device_list=`fia_driver_show -d d -i 5 -p 16384 | grep Fabric | egrep -v Mode | grep UP | cut -c2-10 `
for device in $device_list; do
    instance=`echo $device | cut -d"/" -f3 `

    lc_jlegacy_exec[$jlegacy_cmd_count]='show controllers fia diagshell '$instance' \"fabric queues\" location $location' 
    lc_jlegacy__ksh[$jlegacy_cmd_count]='fia_driver_show -c \"fabric queues\" -u '$instance'   '
    ((jlegacy_cmd_count++))

    lc_jlegacy_exec[$jlegacy_cmd_count]='show controllers fia diagshell '$instance' \"diag last\" location $location' 
    lc_jlegacy__ksh[$jlegacy_cmd_count]='fia_driver_show -c \"diag last\" -u '$instance'   '
    ((jlegacy_cmd_count++))

    lc_jlegacy_exec[$jlegacy_cmd_count]='show controllers fia diagshell '$instance' \"diag field last\" location $location' 
    lc_jlegacy__ksh[$jlegacy_cmd_count]='fia_driver_show -c \"diag field last\" -u '$instance'   '
    ((jlegacy_cmd_count++))

    lc_jlegacy_exec[$jlegacy_cmd_count]='show controllers fia diagshell '$instance' \"ps\" location $location' 
    lc_jlegacy__ksh[$jlegacy_cmd_count]='fia_driver_show -c \"ps\" -u '$instance'   '
    ((jlegacy_cmd_count++))

    lc_jlegacy_exec[$jlegacy_cmd_count]='show controllers fia diagshell '$instance' \"fabric link_config\" location $location' 
    lc_jlegacy__ksh[$jlegacy_cmd_count]='fia_driver_show -c \"fabric link_config\" -u '$instance'   '
    ((jlegacy_cmd_count++))

    lc_jlegacy_exec[$jlegacy_cmd_count]='show controllers fia diagshell '$instance' \"fabric connectivity\" location $location'
    lc_jlegacy__ksh[$jlegacy_cmd_count]='fia_driver_show -c \"fabric connectivity\" -u '$instance'  '
    ((jlegacy_cmd_count++))
done

#Terminating Dummy Entry needed as per showtech infra
lc_jlegacy_exec[$jlegacy_cmd_count]=''
lc_jlegacy__ksh[$jlegacy_cmd_count]=''

j2_cmd_count=1
lc_j2_exec[$j2_cmd_count]='show controllers fia diagshell 0 \"port status\" location $location' 
lc_j2__ksh[$j2_cmd_count]='fia_driver_show -c \"port status\" -u 0x0   '
((j2_cmd_count++))

lc_j2_exec[$j2_cmd_count]='show controllers fia diagshell 1 \"port status\" location $location' 
lc_j2__ksh[$j2_cmd_count]='fia_driver_show -c \"port status\" -u 0x1   '
((j2_cmd_count++))

lc_j2_exec[$j2_cmd_count]='show controllers fia diagshell 0 \"fabric link config\" location $location' 
lc_j2__ksh[$j2_cmd_count]='fia_driver_show -c \"fabric link config\" -u 0x0   '
((j2_cmd_count++))

lc_j2_exec[$j2_cmd_count]='show controllers fia diagshell 1 \"fabric link config\" location $location' 
lc_j2__ksh[$j2_cmd_count]='fia_driver_show -c \"fabric link config\" -u 0x1   '
((j2_cmd_count++))
    
lc_j2_exec[$j2_cmd_count]='show controllers fia diagshell 0 \"fabric connectivity\" location $location'
lc_j2__ksh[$j2_cmd_count]='fia_driver_show -c \"fabric connectivity\" -u 0x0  '
((j2_cmd_count++))

lc_j2_exec[$j2_cmd_count]='show controllers fia diagshell 1 \"fabric connectivity\" location $location'
lc_j2__ksh[$j2_cmd_count]='fia_driver_show -c \"fabric connectivity\" -u 0x1  '
((j2_cmd_count++))

#Terminating Dummy Entry needed as per showtech infra
lc_j2_exec[$j2_cmd_count]=''
lc_j2__ksh[$j2_cmd_count]=''

q2a_cmd_count=1
device_list=`fia_driver_show -d d -i 5 -p 16384 | grep Fabric | egrep -v Mode | grep UP | cut -c2-10 `
for device in $device_list; do
    instance=`echo $device | cut -d"/" -f3 `
    lc_q2a_exec[q2a_cmd_count]='show controllers fia diagshell '$instance' \"port status\" location $location'
    lc_q2a__ksh[q2a_cmd_count]='fia_driver_show -c \"port status\" -u '$instance'  '
    ((q2a_cmd_count++))

    lc_q2a_exec[q2a_cmd_count]='show controllers fia diagshell '$instance' \"nif status\" location $location'
    lc_q2a__ksh[q2a_cmd_count]='fia_driver_show -c \"nif status\" -u '$instance'  '
    ((q2a_cmd_count++))
done

#Terminating Dummy Entry needed as per showtech infra
lc_q2a_exec[q2a_cmd_count]=''
lc_q2a__ksh[q2a_cmd_count]=''

get_brcm_npu_type
if [ "$has_j2" = "Yes" ]; then
    echo "Jericho2(8869X) board"
    exec_commands_dshell lc_j2
    device_list=`fia_driver_show -d d -i 5 -p 16384 | grep Fabric | egrep -v Mode | grep UP | cut -c2-10 `
    for device in $device_list; do
        instance=`echo $device | cut -d"/" -f3 `
        exec_diagnif_per_port_cmd $instance
    done       
elif [ "$has_q2a" = "Yes" ]; then
    echo "Q2A(8848X)"
    exec_commands_dshell lc_q2a
else
    echo "Jericho(8867X)/JerichoPlus(8868X)/Qumran(8837X/8847X) board"
    exec_commands_dshell lc_jlegacy
    device_list=`fia_driver_show -d d -i 5 -p 16384 | grep Fabric | egrep -v Mode | grep UP | cut -c2-10 `
    for device in $device_list; do
        instance=`echo $device | cut -d"/" -f3 `
        exec_diagnif_per_port_cmd $instance
    done       
fi

collect_retimer_logs
