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

commit 2ec069fc98afb92c02be379cd269c7398b13cf82
parent 8c481c7d3583b03c525f3de0948f35324b6d9b54
Author: Broadcom SDK Release <sdk.releases@broadcom.com>
Date:   Wed,  4 Sep 2019 12:57:29 -0700

SDK-186831: Handle multicast entries in the function that handles L3_ENTRY_DO...

Devices: 56980_A0
Module: ipmc

Symptom:
dump of L3_ENTRY_DOUBLE does not display multicast entries

Handle multicast entries in the function that handles L3_ENTRY_DOUBLE
for TH3.

Diffstat:
Msdk-6.5.16/src/appl/diag/esw/dump.c | 16++++++++++++----
Msdk-6.5.16/src/appl/diag/esw/l3.c | 12++++++------
2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/sdk-6.5.16/src/appl/diag/esw/dump.c b/sdk-6.5.16/src/appl/diag/esw/dump.c @@ -1625,12 +1625,20 @@ do_dump_table(int unit, soc_mem_t mem, } } else { if (mem == L3_ENTRY_DOUBLEm) { - if ((soc_mem_field32_get(unit, mem, entry, BASE_VALID_0f) != 1) || - (soc_mem_field32_get(unit, mem, entry, BASE_VALID_1f) != 2) || - ((soc_mem_field32_get(unit, mem, entry, KEY_TYPEf) != 4) && - (soc_mem_field32_get(unit, mem, entry, KEY_TYPEf) != 2))) { + if (soc_mem_field32_get(unit, mem, entry, KEY_TYPEf) == 2) { + if ((soc_mem_field32_get(unit, mem, entry, BASE_VALID_0f) != 1) || + (soc_mem_field32_get(unit, mem, entry, BASE_VALID_1f) != 2)) { + continue; + } + } else if (soc_mem_field32_get(unit, mem, entry, KEY_TYPEf) == 4) { + if ((soc_mem_field32_get(unit, mem, entry, BASE_VALID_0f) != 1) || + (soc_mem_field32_get(unit, mem, entry, BASE_VALID_1f) != 7)) { + continue; + } + } else { continue; } + } } } diff --git a/sdk-6.5.16/src/appl/diag/esw/l3.c b/sdk-6.5.16/src/appl/diag/esw/l3.c @@ -88,12 +88,12 @@ _ipmc_cmd_entry_print(int unit, bcm_ipmc_addr_t *info, void *cookie) cli_out("MC IP ADDRESS: %s\n", mc_ip_str); cli_out("VLAN MOD PORT V COS TS "); cli_out("%s %s %s %s %s\n", "Group", "GroupL2", "VRF", "CLASS", "HIT"); - cli_out("%3d %4d %5d %2d %3d %3d 0x%x 0x%x %2d,%5d,%4s\n", + cli_out("%3d %4d %5d %2d %3d %3d 0x%x 0x%x %2d,%5d,%4s %6d\n", info->vid, info->mod_id, info->port_tgid, info->v, info->cos, info->ts, info->group, info->group_l2, info->vrf, info->lookup_class, - (info->flags & BCM_IPMC_HIT) ? "y" :"no"); + (info->flags & BCM_IPMC_HIT) ? "y" :"no", info->l3a_intf); } else { format_ipaddr(s_ip_str, info->s_ip_addr); format_ipaddr(mc_ip_str, info->mc_ip_addr); @@ -102,8 +102,8 @@ _ipmc_cmd_entry_print(int unit, bcm_ipmc_addr_t *info, void *cookie) info->mod_id, info->port_tgid, info->v, info->cos, info->ts, info->group, info->vrf); - cli_out("0x%x %d %6s\n", - info->group_l2, info->lookup_class, (info->flags & BCM_IPMC_HIT) ? "y" :"no"); + cli_out("0x%x %d %6s %6d\n", + info->group_l2, info->lookup_class, (info->flags & BCM_IPMC_HIT) ? "y" :"no", info->l3a_intf); } return (BCM_E_NONE); @@ -420,8 +420,8 @@ if_ipmc(int unit, args_t *a) cli_out("SRC IP ADDRESS MC IP ADDRESS VLAN MOD PORT V COS "); cli_out("TS GROUP %s\n", "VRF"); - cli_out("%s %s %s\n", - "GROUP-L2 ", "CLASS", "HIT"); + cli_out("%s %s %s %s\n", + "GROUP-L2 ", "CLASS", "HIT", "L3_IIF"); if (one_entry_only) { /* bcm_ipmc_get_by_index is deprecated */ r = BCM_E_UNAVAIL;