112
Broadcom Network Switching SDK 5.6.1 Release Notes Software Development Kit Release Notes SDK 5.6.1 December 01, 2008 Broadcom Network Switching

Software Development Kit Release Notes SDK 5.6€¦ · Software Development Kit Release Notes SDK 5.6.1 ... The Network Switching Software Platform Guide, ... Switching Software Programmer's

Embed Size (px)

Citation preview

Broadcom Network Switching SDK 5.6.1 Release Notes

Software Development KitRelease Notes

SDK 5.6.1

December 01, 2008

BroadcomNetwork Switching

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 2 of 112

Section 1: About This Document

These are the Release Notes for the Broadcom Network Switching Software Development Kit, Release 5.6.1.

This document provides a general description of the release and its new features, the chips supported by the release, BCM/BCMX API additions or changes, resolved issues and any relevant open issues.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 3 of 112

Section 2: Product Documentation

The following documents are available through Broadcom's Customer Support Portal, http://support.broadcom.com. They are the primary source of information and should be referenced when using this release:

Table 1: Product Documentation

Document Description56XX-PG617-R BCM and BCMX API Reference Guide.

This manual describes the theory of operations of the API and all existing BCM and BCMX APIs for this release.

56XX-PG704-R Stacking Software Guide This guide describes how to use the discovery and stacking applications provided in this release.

56XX-PG807-R Platform Guide This guide describes the SDK source and Makefile structure, abstraction and porting layers, device specific interactions, and the platform/operating system specific features of the SDK. If this is your first time working with the SDK, start with this document.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 4 of 112

Section 3: Release Media

The Software Development Kit is released as a gzipped tar file on Broadcom's Customer Support Portal, http://support.broad-com.com. The Network Switching Software Platform Guide, also available on the Customer Support Portal provides documentation on the various components, the source directory layout, how to build the release for various platforms, and how to customize and port the software to new platforms.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 5 of 112

Section 4: Support

Questions, feedback, and/or suggestions should be sent to your Broadcom FAE.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 6 of 112

Section 5: New in this Release

The following section describes feature and device support that is introduced in this release.

THINGS TO TAKE SPECIAL NOTE OF

This section list items that need special attention.

SAL_FREE API BEHAVIOR CHANGE

sal_free() API behavior matches ANSI C free(). If argument is NULL, no operation is performed. Customers SAL im-plementation may need similar update.

sal_free

Frees memory allocated with sal_alloc

Syntax#include <sal/core/alloc.h> void sal_free(void *ptr);

Parameters

Description

Frees memory previously allocated with sal_alloc and pointed to by ptr. This memory space must not be used after this call. **** If ptr is NULL, no operation is performed.*****

Returns

Returns no value.

NEW DEVICES AND SYSTEMS

For any given SDK release, support for certain devices may be provided in "Preview" or "Supported" status. Devices in "Preview" status are provided to allow early integration of the customer's application with the SDK APIs which support that device. This soft-ware has not been tested on the physical target device and should not be expected to fully function.

Devices in "Supported" status have completed the full QA process and are intended for use in production systems. It is expected that customers would integrate the version of the SDK which provides "Supported" status for their use on actual development or production systems.

ptr pointer to memory to be freed.

Table 2: Supported Switch Devices

Family Devices DescriptionBCM56620 BCM56629 B1 25 port 1-GbE Multilayer Ethernet

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 7 of 112

SUMMARY OF BCM AND BCMX API CHANGES

This section summarizes BCM and BCMX API changes in this release. Complete documentation is available in the Network Switching Software Programmer's Guide 56XX-PG617-R. (See section 2 earlier in this document for availability).

Unless otherwise mentioned, any newly defined or changed BCM API will have equivalent changes in the BCMX APIs.

BCM56520 BCM56524 A0 24-Port GbE Multilayer Switch With Four 10-GbE/HiGig2 Ports

Table 3: Pre-silicon Preview Switch Devices

Family Devices DescriptionBCM56630 BCM56634 A0 49 port 1-GbE Multilayer Ethernet Switch with 4 x 10-GbE/HiGig2 Uplink ports and External

Table Expansion BCM88230 BCM88230 A0 50G Fabric Interface and 50G Traffic Manager - preview only BCM88235 BCM88235 A0 80G Fabric Interface and 80G Traffic Manager - preview only

Table 4: PHYs

Driver Family Device Support Status Description8706 BCM8722 Preview Dual Serial 10-Gigabit Ethernet/Fibre Channel Transceiver with XAUI

Interface 8706 BCM8727 Supported Dual Serial 10-Gigabit Ethernet/Fibre Channel Transceiver with XAUI

Interface 8481 BCM8481_B0 Supported 10GBASE-T Transceiver 54580 BCM54580 Supported Octal 1000/100/10BASE-T Gigabit Ethernet Transceiver (Needs

additional software component) 54580 BCM54584 Supported Octal 1000/100/10BASE-T Gigabit Ethernet Transceiver (Needs

additional software component). Copper mode support only. No support for Fiber mode.

Table 5: Reference Designs

Name Support Status DescriptionBCM956524K24S_02 Supported 24xGE + 4 x XAUI/HG (iPass) with BCM56524 switch

Table 6: CPU and Operating System Combinations

CPU Subsystem Operating System DescriptionBCM95836 VxWorks 5.4 Support removed BCM98245 VxWorks 5.4 Support removed BCM91125 VxWorks 5.4 Support removed BCM5621X VxWorks 5.4 Support removed BCM5331X VxWorks 5.4 Support removed

Table 2: Supported Switch Devices

Family Devices Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 8 of 112

GPORT UTILITY MACROS

The following new GPORT destination types have been added to the BCM API. Please see the BCM GPORT Utility Macros section of the BCM API Reference Manual.

• Child port on a parent GPORT • Egress only group of fifos • Egress only child port on a parent GPORT • Egress only {module, port} pair

CLASS OF SERVICE QUEUE CONFIGURATION

The following new functions have been added to the BCM Class of Service Queue Configuration API. Please see the Class of Ser-vice Queue Configuration section of the BCM API Reference Manual.

bcm_cosq_gport_stat_config_set

Set up a Central Statistic profile to capture WRED packets

Table 7: Macros for Analyzing/Constructing GPORTs

GPORT Macros Macro DescriptionBCM_GPORT_CHILD Child GPORT identifier BCM_GPORT_EGRESS_GROUP Egress fifo group GPORT identifier BCM_GPORT_EGRESS_CHILD Egress only child GPORT identifier BCM_GPORT_EGRESS_MODPORT Egress only {module, port} pair GPORT identifier BCM_GPORT_CHILD_SET(g, modid, port) Sets child type and value BCM_GPORT_EGRESS_GROUP_SET(g, modid, id) Sets egress group type and value BCM_GPORT_EGRESS_CHILD_SET(g, modid, id) Sets egress child type and value BCM_GPORT_EGRESS_MODPORT_SET(g, modid, port)

Sets egress module/port type and value

BCM_GPORT_CHILD_MODID_GET(g) Gets a module value from a child gport BCM_GPORT_CHILD_PORT_GET(g) Gets a port value from a child gport BCM_GPORT_EGRESS_GROUP_GET(g) Gets a module/port value from a egress group gport BCM_GPORT_EGRESS_GROUP_MODID_GET(g) Gets a module value from a egress group gport BCM_GPORT_EGRESS_CHILD_MODID_GET(g) Gets a module value from a egress child gport BCM_GPORT_EGRESS_CHILD_PORT_GET(g) Gets a port value from a egress child gport BCM_GPORT_EGRESS_MODPORT_MODID_GET(g) Gets a module value from a egress modport gport BCM_GPORT_EGRESS_MODPORT_PORT_GET(g) Gets a port value from a egress modport gport BCM_GPORT_IS_CHILD Returns 1 if child port type, else 0 BCM_GPORT_IS_EGRESS_GROUP Returns 1 if egress group type, else 0 BCM_GPORT_IS_EGRESS_CHILD Returns 1 if egress child type, else 0 BCM_GPORT_IS_EGRESS_MODPORT Returns 1 if egress module/port type, else 0

Table 8: gport Discard Color Flags

Flag DescriptionBCM_COSQ_DISCARD_COLOR_BLACK Black

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 9 of 112

Syntax#include <bcm/cosq.h> int bcm_cosq_gport_stat_config_set( int unit, bcm_gport_t gport, bcm_gport_t lgl_gport, bcm_cos_queue_t cosq, uint32 flags, bcm_cosq_gport_stat_profile_t profile);

Parameters

Description

Configure a profile of WRED statistics to capture on Ingress or Egress. In order to configure Ingress physical statistics, the ingress gport must be set to a specific interface gport of type BCM_GPORT_TYPE_MODPORT and the Ingress queue group gport must be BCM_GPORT_TYPE_NONE. For all egress statistics, the Ingress queue group gport must be set to BCM_GPORT_TYPE_NONE. To set up a profile to generate Egress physical statistics, set gport type to BCM_GPORT_TYPE_EGRESS_MODPORT. F o r E g r e s s s u b p o r t s t a t i s t i c s , u se BCM_GPORT_TYPE_EGRESS_CHILD. Fo r spe c i f i c f i fo - ba sed s t a t i s t i c s , u se BCM_GPORT_TYPE_EGRESS_GROUP. When creating a profile for fifo-based statistics, the COSQ field represents the spe-cific fifo number.

The BCM_COSQ_GPORT_STATS_SHARED flag is used to save resources by sharing common profiles over different queue ranges. This is the most common scenario. For example, a profile that captures all green, yellow, and red accepted packets over a specific queue range can share the same resources. However, should a user wish to simultaneously capture red dropped packets over the same queue range, then the SHARED flag would not be used and a separate buffer will be allocated to store the dropped red packets over the queue range.

The minimum granularity for a data collection is 1024 counters. When allocating counters for ingress queue groups, for example, creating a profile for base queue 16 will enable statistics gathering on all queues between 0 and 1023, because of the minimum gran-ularity. The next queue group begins at 1024. To allocate a profile to collect statistics for 16K queues, the user only need execute this command 16 times.

unit (IN) Unit number.

gport (IN) GPORT ID for Ingress interface.

lgl_gport (IN) GPORT ID for Ingress queue group.

cosq (IN) COS Queue

flags (IN) Specifies configuration.

profile (IN) bcm_cosq_gport_stats bitmap

Table 9: gport Event-related flag

Flag DescriptionBCM_COSQ_GPORT_STATS_SHARED Share common profiles.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 10 of 112

Returns• BCM_E_NONE

• BCM_E_UNAVAIL

• BCM_E_PARAM

• BCM_E_PORT

• BCM_E_NOT_FOUND

• BCM_E_RESOURCE

• BCM_E_MEMORY

bcm_cosq_gport_stat_config_get

Get a previously-configured Central Statistic profile that captures WRED packets

Syntax#include <bcm/cosq.h> int bcm_cosq_gport_stat_config_get( int unit, bcm_gport_t gport, bcm_gport_t lgl_gport, bcm_cos_queue_t cosq, uint32 flags, bcm_cosq_gport_stat_profile_t *profile);

Table 10: gport Profile creation macros

Macro DescriptionBCM_COSQ_GPORT_STAT_PROFILE_INIT(profile_set)

Initialize profile structure

BCM_COSQ_GPORT_STAT_PROFILE_ADD(profile_set, stat)

Add stat to profile_set. see table gport Statistics (page 15)

BCM_COSQ_GPORT_STAT_PROFILE_REMOVE(profile_set, stat)

Remove stat from profile_set

BCM_COSQ_GPORT_STAT_PROFILE_TEST(profile_set, stat)

Validate stat is a part of profile_set

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 11 of 112

Parameters

Description

Get a configured WRED profile for the specific physical gport or ingress queue group. In order to retrieve Ingress physical profiles, the ingress gport must be set to a specific interface gport of type BCM_GPORT_TYPE_MODPORT and the Ingress queue group gport must be BCM_GPORT_TYPE_NONE. For all egress statistics profiles, the Ingress queue group gport must be set to BCM_GPORT_TYPE_NONE.

Returns• BCM_E_NONE

• BCM_E_UNAVAIL

• BCM_E_PARAM

• BCM_E_PORT

bcm_cosq_gport_statistic_set

Reset the value of a Central Statistics stat to zero.

Syntax#include <bcm/cosq.h> int bcm_cosq_gport_statistic_set( int unit, bcm_gport_t gport, bcm_gport_t lgl_gport, bcm_cos_queue_t cosq, uint32 flags, bcm_cosq_gport_stats_t stat, uint64 value);

unit (IN) Unit number.

gport (IN) GPORT ID for Ingress interface.

lgl_gport (IN) GPORT ID for Ingress queue group.

cosq (IN) COS Queue

flags (IN) Specifies configuration.

profile (OUT) bcm_cosq_gport_stats bitmap

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 12 of 112

Parameters

Description

Reset a specific statistic value to zero. For Ingress physical statistics, gport must be set to a specific physical interface using BCM_GPORT_TYPE_MODPORT and Ingress queue group must be BCM_GPORT_TYPE_NONE. For a specific Egress sta-tistic, Ingress queue group must always be BCM_GPORT_TYPE_NONE. Physical egress statistics are associated with BCM_GPORT_TYPE_EGRESS_MODPORT. Egress subport stat is t ics are associated with BCM_GPORT_TYPE_EGRESS_CHILD. Egress f i fo s t a t i s t i c s a r e a s soc ia t ed wi th BCM_GPORT_TYPE_EGRESS_GROUP.

Returns• BCM_E_NONE

• BCM_E_UNAVAIL

• BCM_E_PARAM

• BCM_E_PORT

bcm_cosq_gport_statistic_get

Get the value associated with a Central Statistics Index.

Syntax#include <bcm/cosq.h> int bcm_cosq_gport_statistic_get( int unit, bcm_gport_t gport, bcm_gport_t lgl_gport, bcm_cos_queue_t cosq, uint32 flags, bcm_cosq_gport_stats_t stat, uint64 *value);

unit (IN) Unit number.

gport (IN) GPORT ID for Ingress interface.

lgl_gport (IN) GPORT ID for Ingress queue group.

cosq (IN) COS Queue

flags (IN) Specifies configuration.

stat (IN) bcm_cosq_gport_stats enumeration

value (IN) 0

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 13 of 112

Parameters

Description

Get a specific statistic value. For Ingress physical statistics, gport must be set to a specific physical interface using BCM_GPORT_TYPE_MODPORT and Ingress queue group must be BCM_GPORT_TYPE_NONE. For a specific Egress sta-tistic, Ingress queue group must always be BCM_GPORT_TYPE_NONE. Physical egress statistics are associated with BCM_GPORT_TYPE_EGRESS_MODPORT. Egress subport stat is t ics are associated with BCM_GPORT_TYPE_EGRESS_CHILD. Egress f i fo s t a t i s t i c s a r e a s soc ia t ed wi th BCM_GPORT_TYPE_EGRESS_GROUP. The specific fifo is indexed using cosq parameter such that 0 and 1 indicate unicast EF and non-EF packets, respectively, while 2 and 3 correspond to multicast EF and non-EF packets, respectively.

Returns• BCM_E_NONE

• BCM_E_UNAVAIL

• BCM_E_PARAM

• BCM_E_PORT

bcm_cosq_gport_statistic_bulk_set

Reset the value of multiple Central Statistics stats to zero.

Syntax#include <bcm/cosq.h> int bcm_cosq_gport_statistic_bulk_set( int unit, bcm_gport_t gport, bcm_gport_t lgl_gport, bcm_cos_queue_t cosq, bcm_cosq_gport_stat_profile_t *profile_info, uint64 value);

unit (IN) Unit number.

gport (IN) GPORT ID for Ingress interface.

lgl_gport (IN) GPORT ID for Ingress queue group.

cosq (IN) COS Queue

flags (IN) Specifies configuration.

stat (IN) bcm_cosq_gport_stats enumeration

value (OUT) statistic value

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 14 of 112

Parameters

Description

Reset a group of s ta t i s t ic values to zero . This API i s obsole te and wi l l be rep laced by bcm_cosq_gport_statistic_multi_set.

Returns• BCM_E_UNAVAIL

bcm_cosq_gport_statistic_bulk_get

Get the values associated with a set of Central Statistics Indices.

Syntax#include <bcm/cosq.h> int bcm_cosq_gport_statistic_bulk_get( int unit, bcm_gport_t gport, bcm_gport_t lgl_gport, bcm_cos_queue_t cosq, uint32 flags, int flags, bcm_cosq_gport_stat_profile_t *profile_info, int array_max, uint64 *value_array, uint64 *array_count);

unit (IN) Unit number.

gport (IN) GPORT ID for Ingress interface.

lgl_gport (IN) GPORT ID for Ingress queue group.

cosq (IN) COS Queue

profile_info (IN) An array of stats. See table BCM_COSQ_GPORT_STATISTICS_table.

value (IN) 0

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 15 of 112

Parameters

Description

Get a g roup o f s t a t i s t i c va lue s . Th i s API i s o b s o l e t e a nd w i l l b e r e p l a c e d b y bcm_cosq_gport_statistic_multi_get.

Returns• BCM_E_UNAVAIL

New options for bcm_cosq_control_set and bcm_cosq_control_get:

The available COSq GPORT statistics have changed. Here is the complete list of statistics options:

unit (IN) Unit number.

gport (IN) GPORT ID for Ingress interface.

lgl_gport (IN) GPORT ID for Ingress queue group.

cosq (IN) COS Queue

flags (IN) Specifies configuration.

profile_info (IN) See table BCM_COSQ_GPORT_STATISTICS_table.

array_max (IN) Size of array_count

value_array (OUT) An array of requested stat values

array_count (OUT) whether value in array is valid or invalid

Table 11: COSQ Control Type Values

Value Description Arg valuebcmCosqControlBandwidthBurstMax

maximum burst size, use after bcm_cosq_port_bandwidth_set

burst size is in kbits.

Table 12: gport Statistics

Name DescriptionbcmCosqGportGreenAcceptedPkts Green/DP0, accepted packet count. bcmCosqGportGreenAcceptedBytes Green/DP0, accepted byte count. bcmCosqGportGreenCongestionMarkedPkts Green/DP0, ECN marked packets. bcmCosqGportGreenCongestionMarkedBytes Green/DP0, ECN marked bytes. bcmCosqGportGreenDiscardDroppedPkts Green/DP0, WRED dropped at packets. bcmCosqGportGreenDiscardDroppedBytes Green/DP0, WRED dropped bytes. bcmCosqGportGreenDroppedPkts Green/DP0, non-WRED dropped at packets. bcmCosqGportGreenDroppedBytes Green/DP0, non-WRED dropped bytes. bcmCosqGportYellowAcceptedPkts Yellow/DP1, accepted packet count. bcmCosqGportYellowAcceptedBytes Yellow/DP1, accepted byte count. bcmCosqGportYellowCongestionMarkedPkts Yellow/DP1, ECN marked packets. bcmCosqGportYellowCongestionMarkedBytes Yellow/DP1, ECN marked bytes. bcmCosqGportYellowDiscardDroppedPkts Yellow/DP1, WRED dropped at packets. bcmCosqGportYellowDiscardDroppedBytes Yellow/DP1, WRED dropped bytes. bcmCosqGportYellowDroppedPkts Yellow/DP1, non-WRED dropped at packets.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 16 of 112

FABRIC CONFIGURATION

The following new functions have been added to the BCM Fabric Configuration API. Please see the Fabric Configuration section of the BCM API Reference Manual.

bcm_fabric_port_create

Create a fabric port on the parent physical port

Syntaxint bcm_fabric_port_create(int unit, bcm_gport_t parent_port, int offset, uint32 flags, bcm_gport_t *port);

bcmCosqGportYellowDroppedBytes Yellow/DP1, non-WRED dropped bytes. bcmCosqGportRedAcceptedPkts Red/DP2, accepted packet count. bcmCosqGportRedAcceptedBytes Red/DP2, accepted byte count. bcmCosqGportRedCongestionMarkedPkts Red/DP2, ECN marked packets. bcmCosqGportRedCongestionMarkedBytes Red/DP2, ECN marked bytes. bcmCosqGportRedDiscardDroppedPkts Red/DP2, WRED dropped at packets. bcmCosqGportRedDiscardDroppedBytes Red/DP2, WRED dropped bytes. bcmCosqGportRedDroppedPkts Red/DP2, non-WRED dropped at packets. bcmCosqGportRedDroppedBytes Red/DP2, non-WRED dropped bytes. bcmCosqGportBlackAcceptedPkts Black/DP3, accepted packet count. bcmCosqGportBlackAcceptedBytes Black/DP3, accepted byte count. bcmCosqGportBlackCongestionMarkedPkts Black/DP3, ECN marked packets. bcmCosqGportBlackCongestionMarkedBytes Black/DP3, ECN marked bytes. bcmCosqGportBlackDiscardDroppedPkts Black/DP3, WRED dropped at packets. bcmCosqGportBlackDiscardDroppedBytes Black/DP3, WRED dropped bytes. bcmCosqGportBlackDroppedPkts Black/DP3, non-WRED dropped at packets. bcmCosqGportBlackDroppedBytes Black/DP3, non-WRED dropped bytes. bcmCosqGportNonWredDroppedPkts NON-WRED dropped packet count. bcmCosqGportNonWredDroppedBytes NON-WRED dropped byte count. bcmCosqGportDequeuedPkts dequeued packets. bcmCosqGportDequeuedBytes dequeued bytes. bcmCosqGportOverSubscribeTotelDroppedPkts Free list underflow, pkts dropped. bcmCosqGportOverSubscribeTotalDroppedBytes Free list underflow, bytes dropped. bcmCosqGportOverSubscribeGuaranteeDroppedPkts Gbl buf thres guarantee, pkts dropped. bcmCosqGportOverSubscribeGuaranteedDroppedBytes Gbl buf thres guarantee, bytes dropped. bcmCosqGportOutPkts Egress Interface. bcmCosqGportOutBytes Egress Interface.

Table 12: gport Statistics

Name Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 17 of 112

Parameters

Description

This API is used to create fabric port on the port specified by parent_port. bcm_stk_fabric_map_set API can be used to do the mapping for the returned fabric port.

Fabric internal ports are required to support system features (e.g: HiGig trunking). These ports do not correspond to any front panel/switch port. BCM_PORT_EGRESS_MULTICAST flag value has been added to support this functionality.

Returns

bcm_fabric_port_destroy

Destroy a fabric port

Syntaxint bcm_fabric_port_destroy(int unit, bcm_gport_t port);

Parameters

Description

This API is used to destroy fabric port created by the bcm_fabric_port_create API

unit (IN) Unit number.

parent_port (IN) GPORT ID for physical port.

offset (IN) Zero-based subport offset within the physical port,

flags (IN) Specifies configuration. Can be logical OR of

port (OUT) GPORT ID for the subport created

Table 13: Port Egress Flags

Flag MeaningBCM_PORT_EGRESS_MULTICAST create egress multicast internal ports.

BCM_E_XXX

unit (IN) Unit number.

port (IN) GPORT ID for the subport to be destroyed

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 18 of 112

Returns

bcm_fabric_distribution_control_set

Configure Distribution Group fabric forwarding settings.

Syntax#include <bcm/fabric.h> int bcm_fabric_distribution_control_set( int unit, bcm_fabric_distribution_t ds_id, bcm_fabric_distribution_control_t type, int value); int bcm_fabric_distribution_control_get( int unit, bcm_fabric_distribution_t ds_id, bcm_fabric_distribution_control_t type, int *value);

Parameters

Description

Sets or gets configurable controls for a given fabric distribution set ID.

BCM_E_XXX

unit (IN) Unit number.

ds_id (IN) Distribution set ID

type (IN) Fabric distribution control type

value (IN) (for "_set") Value to be set for the given control type

value (OUT) (for "_get") Current value for the given control type

Table 14: Fabric Distribution Control Types

Control type Description Arg ValuebcmFabricDistributionSched

Determines flow control mode for fabric distribution scheduling for multicast traffic.

• BCM_FABRIC_DISTRIBUTION_SCHED_ALL - All nodes must be ready to receive before a multicast packet is transmitted via the fabric. This allows for lossless multicast.

• BCM_FABRIC_DISTRIBUTION_SCHED_ANY - At least one node must be ready. This may result in potentially lossy multicast.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 19 of 112

Returns

BCM_E_XXX

FIELD PROCESSOR

The following new functions have been added to the BCM Field Processor API. Please see the Field Processor section of the BCM API Reference Manual.

Table 15: Field Qualifiers

Qualifier PurposebcmFieldQualifyOuterVlanId Outer VLAN Id bcmFieldQualifyOuterVlanPri Outer VLAN Priority bcmFieldQualifyOuterVlanCfi Outer VLAN Cfi bcmFieldQualifyInnerVlanId Inner VLAN Id bcmFieldQualifyInnerVlanPri Inner VLAN Priority bcmFieldQualifyInnerVlanCfi Inner VLAN Cfi bcmFieldQualifyDstHiGig Packets destined to HiGig port

Table 16: Field IP Type

Action Description param0 param1bcmFieldActionTimeStampToCpu

Send copy of packet to CPU with time stamp and drop the packet.

Use matched rule index Matched rule index

bcmFieldActionTimeStampToCpuCancel

Override another rule don't copy/don't drop.

n/a n/a

bcmFieldActionTimeStampToCpu

Send copy of packet to CPU with time stamp and drop the packet.

Use matched rule index Matched rule index

bcmFieldActionTimeStampToCpuCancel

Override another rule don't copy/don't drop.

n/a n/a

bcmFieldActionYpTimeStampToCpu

Send copy of packet to CPU with time stamp and drop the packet.

Use matched rule index Matched rule index

bcmFieldActionYpTimeStampToCpuCancel

Override another rule don't copy/don't drop.

n/a n/a

bcmFieldActionGpTimeStampToCpu

Send copy of packet to CPU with time stamp and drop the packet.

Use matched rule index Matched rule index

bcmFieldActionGpTimeStampToCpuCancel

Override another rule don't copy/don't drop.

n/a n/a

bcmFieldActionOamUpMep Indicate endpoints facing the switching logic.

n/a n/a

bcmFieldActionOamTx Indicate TX direction of OAM PDU or data packets.

n/a n/a

bcmFieldActionOamLmepMdl Set MDL value of the endpoint. MDL value n/a bcmFieldActionOamServicePriMappingPtr

Set index of priority mapping to LM packet counter table.

Index value n/a

bcmFieldActionOamLmBasePtr

Set base pointer to LM packet counter table.

Base pointer value n/a

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 20 of 112

bcm_field_qualify_XXX

Add a qualification to a field entry

Syntax#include <bcm/field.h> int bcm_field_qualify_OuterVlanId(int unit, bcm_field_entry_t entry, bcm_vlan_t data, bcm_vlan_t mask); int bcm_field_qualify_OuterVlanPri(int unit, bcm_field_entry_t entry, uint8 data, uint8 mask); int bcm_field_qualify_OuterVlanCfi(int unit, bcm_field_entry_t entry, uint8 data, uint8 mask); int bcm_field_qualify_InnerVlanId(int unit, bcm_field_entry_t entry, bcm_vlan_t data, bcm_vlan_t mask); int bcm_field_qualify_InnerVlanPri(int unit, bcm_field_entry_t entry, uint8 data, uint8 mask); int bcm_field_qualify_InnerVlanCfi(int unit, bcm_field_entry_t entry, uint8 data, uint8 mask); int bcm_field_qualify_DstHiGig(int unit, bcm_field_entry_t entry, uint8 data, uint8 mask); int bcmx_field_qualify_OuterVlanId(bcm_field_entry_t entry, bcm_vlan_t data, bcm_vlan_t mask); int bcmx_field_qualify_OuterVlanPri(bcm_field_entry_t entry, uint8 data, uint8 mask); int bcmx_field_qualify_OuterVlanCfi(bcm_field_entry_t entry, uint8 data, uint8 mask); int bcmx_field_qualify_InnerVlanId(bcm_field_entry_t entry, bcm_vlan_t data, bcm_vlan_t mask); int bcmx_field_qualify_InnerVlanPri(bcm_field_entry_t entry, uint8 data, uint8 mask); int bcmx_field_qualify_InnerVlanCfi(bcm_field_entry_t entry, uint8 data, uint8 mask); int bcmx_field_qualify_DstHiGig(bcm_field_entry_t entry, uint8 data, uint8 mask);

bcmFieldActionOamDmEnable

Indicate OAM delay measurement is enabled for the endpoint.

MDL value n/a

bcmFieldActionOamLmepEnable

Indicate OAM loss measurement is enabled for the endpoint.

n/a n/a

bcmFieldActionOamPbbteLookupEnable

Indicate SVP should be used as key to look up endpoints.

n/a n/a

bcmFieldActionSrcMacNew Replace packet source mac address.

Mac address n/a

bcmFieldActionDstMacNew Replace packet destination mac address.

Mac address n/a

Table 16: Field IP Type

Action Description param0 param1

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 21 of 112

Parameters

Description

Adds a qualification to a filter entry. Each qualification added makes the entry more specific and match fewer possible packets.

Returns

bcm_field_qualify_XXX_get

Get a qualification match criteria from a field entry

Syntax#include <bcm/field.h>

int bcm_field_qualify_OuterVlanId_get(int unit, bcm_field_entry_t entry, bcm_vlan_t *data, bcm_vlan_t *mask); int bcm_field_qualify_OuterVlanPri_get(int unit, bcm_field_entry_t entry, uint8 *data, uint8 *mask); int bcm_field_qualify_OuterVlanCfi_get(int unit, bcm_field_entry_t entry, uint8 *data, uint8 *mask); int bcm_field_qualify_InnerVlanId_get(int unit, bcm_field_entry_t entry, bcm_vlan_t *data, bcm_vlan_t *mask); int bcm_field_qualify_InnerVlanPri_get(int unit, bcm_field_entry_t entry, uint8 *data, uint8 *mask); int bcm_field_qualify_InnerVlanCfi_get(int unit, bcm_field_entry_t entry, uint8 *data, uint8 *mask); int bcm_field_qualify_DstHiGig_get(int unit, bcm_field_entry_t entry, uint8 *data, uint8 *mask); int bcmx_field_qualify_OuterVlanId_get(bcm_field_entry_t entry, bcm_vlan_t *data, bcm_vlan_t *mask); int bcmx_field_qualify_OuterVlanPri_get(bcm_field_entry_t entry, uint8 *data, uint8 *mask); int bcmx_field_qualify_OuterVlanCfi_get(bcm_field_entry_t entry, uint8 *data, uint8 *mask); int bcmx_field_qualify_InnerVlanId_get(bcm_field_entry_t entry, bcm_vlan_t *data, bcm_vlan_t *mask);

unit BCM device number

entry Field entry ID

data Data to match against

mask Mask to choose which bits of data to match against

BCM_E_NONE Operation completed successfully

BCM_E_INIT BCM unit not initialized

BCM_E_NOT_FOUND Entry ID not found

BCM_E_PARAM Qualifier not in group's Qset

BCM_E_XXX Other error code

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 22 of 112

int bcmx_field_qualify_InnerVlanPri_get(bcm_field_entry_t entry, uint8 *data, uint8 *mask); int bcmx_field_qualify_InnerVlanCfi_get(bcm_field_entry_t entry, uint8 *data, uint8 *mask); int bcmx_field_qualify_DstHiGig_get(bcm_field_entry_t entry, uint8 *data, uint8 *mask);

Parameters

Description

Get a match criteria for a specific qualifier from a field entry.

bcm_field_action_mac_add bcmx_field_action_mac_add

Add an action to a field entry

Syntax#include <bcm/field.h> int bcm_field_action_mac_add(int unit, bcm_field_entry_t entry, bcm_field_action_t action, bcm_mac_t mac);

#include <bcmx/field.h> int bcmx_field_action_mac_add(bcm_field_entry_t entry, bcm_field_action_t action, bcm_mac_t *mac);

Parameters

Description

Adds an action to be performed when a packet matches an entry rule. Multiple actions may be added for an entry by calling this function repeatedly.

unit BCM device number

entry Field entry ID

data Data to match against

mask Mask to choose which bits of data to match against

unit BCM device number

entry Field entry ID

action Field action value

mac mac address for actions involving src/dst mac.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 23 of 112

Returns

bcm_field_action_mac_get bcmx_field_action_mac_get

Retrieve the parameters for an action previously added to a field entry

Syntax#include <bcm/field.h> int bcm_field_action_mac_get(int unit, bcm_field_entry_t entry, bcm_field_action_t action, bcm_mac_t *mac); #include <bcmx/field.h> int bcmx_field_action_mac_get(bcm_field_entry_t entry, bcm_field_action_t action, bcm_mac_t *mac);

Parameters

Description

Retrieves the parameters used for a particular action that was previously added to a field entry.

BCM_E_NONE Operation completed successfully

BCM_E_INIT BCM unit not initialized

BCM_E_MEMORY Memory allocation failure

BCM_E_RESOURCE Counter not previously created for entry

BCM_E_NOT_FOUND Entry ID not found

BCM_E_EXISTS Action already added

BCM_E_XXX Other error code

unit BCM device number

entry Field entry ID

action Field action value

mac (OUT) mac address for actions involving src/dst mac.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 24 of 112

Returns

IP FLOW INFORMATION EXPORT MANAGEMENT

The following new functions have been added to the BCM IP Flow Information Export Management API. Please see the IP Flow Information Export Management section of the BCM API Reference Manual.

bcm_ipfix_rate_t_init bcmx_ipfix_rate_t_init

Initialize an IPFIX rate configuration structure.

Syntax#include <bcm/ipfix.h> void bcm_ipfix_rate_t_init(bcm_ipfix_rate_t *rate_info);

#include <bcmx/ipfix.h> void bcmx_ipfix_rate_t_init(bcmx_ipfix_rate_t *rate_info);

Parameters

Description

Initialize an IPFIX rate configuration structure.

Returns

None.

bcm_ipfix_mirror_config_t_init bcmx_ipfix_mirror_config_t_init

Initialize an IPFIX mirror configuration structure.

Syntax#include <bcm/ipfix.h> void bcm_ipfix_mirror_config_t_init(bcm_ipfix_mirror_config_t *config);

#include <bcmx/ipfix.h> void bcmx_ipfix_mirror_config_t_init(bcmx_ipfix_mirror_config_t *config);

BCM_E_NONE Operation completed successfully

BCM_E_INIT BCM unit not initialized

BCM_E_NOT_FOUND Entry ID or Action not found

BCM_E_PARAM *paramX points to NULL

BCM_E_XXX Other error code

rate_info Pointer to IPFIX rate configuration structure type

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 25 of 112

Parameters

Description

Initialize an IPFIX mirror configuration structure.

Returns

None.

bcm_ipfix_rate_destroy_all replaces the previous bcm_ipfix_rate_delete_all.

bcm_ipfix_rate_destroy_all bcmx_ipfix_rate_destroy_all

Destroy all IPFIX flow rate meter entries.

Syntax#include <bcm/ipfix.h> int bcm_ipfix_rate_destroy_all(int unit);

#include <bcmx/ipfix.h> int bcmx_ipfix_rate_destroy_all(void);

Parameters

Description

Destroy all IPFIX flow rate meter entries. Application needs call mirror API to release (destroy) all previously allocated (created) mirror destination resource associated with each of flow rate meter entry.

Returns

LAYER 2 ADDRESS MANAGEMENT

The following new functions have been added to the BCM Layer 2 Address Management API. Please see the Layer 2 Address Man-agement section of the BCM API Reference Manual.

config Pointer to IPFIX mirror configuration structure type

unit (IN) BCM device number

BCM_E_XXX

Table 17: BCM Layer 2 Flags

Name PurposeBCM_L2_LEARN_LIMIT_EXEMPT Exclude the entry from MAC learning count

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 26 of 112

The callback for L2 address table updates has replaced the Boolean "insert" argument with a multi-value "operation" argument.

typedef void (*bcm_l2_addr_callback_t)( int unit, bcm_l2_addr_t *l2addr, int operation, void *userdata);

Valid operations are: delete, add, and report. On a move, two calls occur: delete and add. A report occurs when the deletition of MAC addresses during aging scan is disabled. A report with l2addr=NULL indicates a scan completion of the L2 table.

• BCM_L2_CALLBACK_DELETE

• BCM_L2_CALLBACK_ADD

• BCM_L2_CALLBACK_REPORT

LAYER 3 MANAGEMENT

The following new functions have been added to the BCM Layer 3 Management API. Please see the Layer 3 Management section of the BCM API Reference Manual.

The bcm_l3_intf_t structure has a new member, l3a_inner_vlan:

typedef struct bcm_l3_intf_s { uint32 l3a_flags; /* See BCM_L3_XXX flag definitions */ bcm_vrf_t l3a_vrf; /* Virtual router identifier */ bcm_if_t l3a_intf_id; /* Interface ID */ bcm_mac_t l3a_mac_addr; /* MAC address */ bcm_vlan_t l3a_vid; /* VLAN ID */ bcm_vlan_t l3a_inner_vlan; /* Inner vlan for double tagged packets. */ int l3a_tunnel_idx; /* Tunnel (initiator) index */ int l3a_ttl; /* TTL threshold */ int l3a_mtu; /* MTU */ bcm_if_group_t l3a_group; /* Interface group number */ } bcm_l3_intf_t;

The bcm_l3_egress_t structure has additional MPLS-related members:

/* * L3 Egress Structure * Description of an L3 forwarding destination. */ typedef struct bcm_l3_egress_s { uint32 flags; /* Interface flags(BCM_L3_TGID,BCM_L3_L2TOCPU)*/ bcm_if_t intf; /* L3 interface (src mac, tunnel) */ bcm_mac_t mac_addr; /* Next hop forwarding destination mac. */ bcm_vlan_t vlan; /* Next hop vlan ID. */ bcm_module_t module; /* Module packet switched to.(if !BCM_L3_TGID)*/ bcm_port_t port; /* Port packet switched to. (if !BCM_L3_TGID)*/ bcm_trunk_t trunk; /* Trunk packet switched to. (if BCM_L3_TGID) */ uint32 mpls_flags; /* BCM_MPLS flag definitions. */ bcm_mpls_label_t mpls_label; /* MPLS label. */ int mpls_qos_map_id; /* MPLS EXP map ID. */ int mpls_ttl; /* MPLS TTL threshold. */

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 27 of 112

uint8 mpls_pkt_pri; /* MPLS Packet Priority Value. */ uint8 mpls_pkt_cfi; /* MPLS Packet CFI Value. */ uint8 mpls_exp; /* MPLS Exp. */ bcm_if_t encap_id; /* Encapsulation index. */ bcm_failover_t failover_id; /* Failover Object Index. */ bcm_if_t failover_if_id; /* Failover Egress Object index. */ } bcm_l3_egress_t;

bcm_l3_vrrp_add

Add VRID for the given VSI. Adding a VRID using this API means the physical node has become the master for the virtual router

Syntax#include <bcm/l3.h> int bcm_l3_vrrp_add( int unit, bcm_vlan_t vlan, uint32 vrid);

Parameters

Description

Configure an active VRID (Virtual Router ID) for the given VSI or VLAN. BCM8802x devices support a maximum of 4 active VR IDs on a given VLAN.

Returns

BCM_E_XXX

bcm_l3_vrrp_delete

Delete VRID for a particular VLAN/VSI

Syntax#include <bcm/l3.h> int

Table 18: BCM Layer 3 Flags

Name PurposeBCM_L3_COPY_TO_CPU Send frame copy to cpu.

unit (IN) Unit number.

vlan (IN) VLAN/VSI/VPN Identifier

vrid (IN) VRID - Virtual router ID to be added

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 28 of 112

bcm_l3_vrrp_delete( int unit, bcm_vlan_t vlan, uint32 vrid);

Parameters

Description

Remove a VRID from the configured list of active VRIDs for a given VLAN.

Returns

BCM_E_XXX

bcm_l3_vrrp_delete_all

Delete all the VRIDs for a particular VLAN/VSI

Syntax#include <bcm/l3.h> int bcm_l3_vrrp_delete_all( int unit, bcm_vlan_t vlan);

Parameters

Description

Delete all the VRIDs for a particular VLAN/VSI

Returns

BCM_E_XXX

bcm_l3_vrrp_get

Get all the VRIDs for which the physical node is master for the virtual routers on the given VLAN/VSI

Syntax#include <bcm/l3.h>

unit (IN) Unit number.

vlan (IN) VLAN/VSI

vrid (IN) VRID - Virtual router ID to be deleted

unit (IN) Unit number.

vlan (IN) VLAN/VSI

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 29 of 112

int bcm_l3_vrrp_get( int unit, bcm_vlan_t vlan, int alloc_size, int *vrid_array, int *count);

Parameters

Description

Get all the VRIDs for which the physical node is master for the virtual routers on the given VLAN/VSI

Returns

BCM_E_XXX

MIRRORING

The following new functions have been added to the BCM Mirroring API. Please see the Mirroring section of the BCM API Ref-erence Manual.

MPLS MANAGEMENT

The following new functions have been added to the BCM MPLS Management API. Please see the MPLS Management section of the BCM API Reference Manual.

The failover_id and failover_if_id members have been removed f rom the bcm_mpls_tunnel_switch_t structure:

typedef struct bcm_mpls_tunnel_switch_s {

unit (IN) Unit number.

vlan (IN) VLAN/VSI

alloc_size (IN) Number of vrid_array elements

vrid_array (OUT) Pointer to the array to which the VRIDs will be

count (OUT) Number of VRIDs copied

Table 19: BCM Mirroring Flags

Name DescriptionBCM_MIRROR_PORT_EGRESS_TRUE Enable true egress mirroring

Table 20: MPLS Port Flags

Name PurposeBCM_MPLS_PORT_ENCAP_WITH_ID Use the specified encap id to allocate and setup encapsulation.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 30 of 112

/* Ingress parameters */ uint32 flags; /* BCM_MPLS_SWITCH_* */ bcm_mpls_label_t label; /* Incoming label value */ bcm_mpls_label_t inner_label; /* Incoming inner label (for devices * that support two-label lookup keys */ bcm_gport_t port; /* Incoming port */ bcm_mpls_switch_action_t action; /* MPLS label action */ int exp_map; /* EXP-map ID */ int int_pri; /* Internal priority */ bcm_vpn_t vpn; /* L3 VPN used if action is POP */ /* Egress parameters */ bcm_mpls_egress_label_t egress_label; /* Outgoing label info */ bcm_if_t egress_if; /* Outgoing egress object */ int mtu; /* MTU. */ } bcm_mpls_tunnel_switch_t;

Instead failover_id and failover_port_id members have been added to the bcm_mpls_port_t structure:

typedef struct bcm_mpls_port_s { bcm_gport_t mpls_port_id; /* GPORT identifier. */ uint32 flags; /* BCM_MPLS_PORT_xxx. */ int if_class; /* Interface class ID. */ int exp_map; /* Incoming EXP map ID. */ int int_pri; /* Internal priority. */ uint16 service_tpid; /* Service VLAN TPID value. */ bcm_gport_t port; /* Match port and/or egress port. */ bcm_mpls_port_match_t criteria; /* Match criteria. */ bcm_vlan_t match_vlan; /* Outer VLAN ID to match. */ bcm_vlan_t match_inner_vlan; /* Inner VLAN ID to match. */ bcm_mpls_label_t match_label; /* VC label to match. */ bcm_if_t egress_tunnel_if; /* MPLS tunnel egress object. */ bcm_mpls_egress_label_t egress_label; /* Outgoing VC label. */ bcm_vlan_t egress_service_vlan; /* Service VLAN to Add/Replace. */ bcm_if_t encap_id; /* Encap Identifier. */ bcm_failover_t failover_id; /* Failover Object Identifier. */ bcm_gport_t failover_port_id; /* Failover MPLS Port Identifier. */ bcm_policer_t policer_id; /* Policer ID to be associated with the MPLS gport */ } bcm_mpls_port_t; typedef bcm_mpls_port_t bcmx_mpls_port_t;

bcm_mpls_label_stat_clear bcmx_mpls_label_stat_clear

Clear L2 MPLS PW Stats.

Syntax#include <bcm/mpls.h>

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 31 of 112

int bcm_mpls_label_stat_clear(int unit, bcm_mpls_label_t label, bcm_gport_t port, bcm_mpls_stat_t stat);

#include <bcmx/mpls.h> int bcmx_mpls_label_stat_clear(bcm_mpls_label_t label, bcm_gport_t port, bcm_mpls_stat_t stat);

Parameters

Description

This API is called to clear the L2 MPLS PW Stats. The possible values for the stat parameter are: bcmMplsInBytes, bcmMplsInPkts, bcmMplsOutBytes, bcmMplsOutPkts.

Returns

MULTICAST CONFIGURATION

The following new functions have been added to the BCM Multicast Configuration API. Please see the Multicast Configuration section of the BCM API Reference Manual.

bcm_multicast_fabric_distribution_set

bcm_multicast_fabric_distribution_set

Syntax#include <bcm/multicast.h> int bcm_multicast_fabric_distribution_set( int unit, bcm_multicast_t group, bcm_fabric_distribution_t ds_id);

unit (IN) BCM device number

label (IN) MPLS Label

port (IN) MPLS Gport

stat (IN) Specify the Stat Type

BCM_E_XXX

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 32 of 112

Parameters

Description

This API associates the given Multicast group ID to the given fabric distribution ID. The Fabric Distribution ID is effectively used to derive the base QID of the queue group that is used for packets hitting the specified Multicast Group ID.

Returns

BCM_E_XXX

bcm_multicast_fabric_distribution_get

bcm_multicast_fabric_distribution_get

Syntax#include <bcm/multicast.h> int bcm_multicast_fabric_distribution_get( int unit, bcm_multicast_t group, bcm_fabric_distribution_t *ds_id);

Parameters

Description

Get the configured Fabric Distribution ID for the given Multicast group ID.

Returns

BCM_E_XXX

OPERATIONS, ADMINISTRATION AND MAINTENANCE

The following new functions have been added to the BCM Operations, Administration And Maintenance API. Please see the Op-erations, Administration And Maintenance section of the BCM API Reference Manual.

unit (IN) Unit number.

group (IN) Multicast Group ID

ds_id (IN) Fabric Distribution ID

unit (IN) Unit number.

group (IN) Multicast Group ID

ds_id (OUT) Fabric Distribution ID

Table 21: OAM Endpoint Structure Flag Definitions

Flag DescriptionBCM_OAM_ENDPOINT_INTERMEDIATE Configures a Management Intermediate Point.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 33 of 112

POLICER CONFIGURATION

The following new functions have been added to the BCM Policer Configuration API. Please see the Policer Configuration section of the BCM API Reference Manual.

PORT CONFIGURATION

The following new functions have been added to the BCM Port Configuration API. Please see the Port Configuration section of the BCM API Reference Manual.

An additional port extended ability is available:

bcm_port_subsidiary_ports_get bcmx_port_subsidiary_ports_get

Get the list of ancillary ports belonging to the same block as the controlling port.

Table 22: Policer Modes

Name PurposebcmPolicerModeSrTcmModified fp_policer_modeSrTcmModified bcmPolicerModeCoupledTrTcmDs Same as fp_policer_modeTrTcmDs but excessive tokens from the committed

bucket are filled into the excessive bucket.

Table 23: bcm_port_control_t

bcmPortControlLoadBalancingNumber Assigns the Load Balancing NumberbcmPortControlEgressNonUnicastLossless Enable/Disable multicast/non-unicast Lossless operation (value 0: Lossy, value

1: Lossless) bcmPortControlPFCEthertype Priority Flow Control packet Ethertype (valid values: 0-0xffff) bcmPortControlPFCOpcode Priority Flow Control packet opcode (valid values: 0-0xffff) bcmPortControlPFCReceive Priority Flow Control packet receive enable (value 0: disable, value 1: enable) bcmPortControlPFCTransmit Priority Flow Control packet transmit enable (value 0: disable, value 1: enable) bcmPortControlPFCClasses Priority Flow Control number of classes (valid values: 8, 16) bcmPortControlPFCPassFrames Allow Priority Flow Control packets into switch device (value 0: disable, value

1: enable) bcmPortControlPFCDestMacOui Priority Flow Control packet destination MAC address, upper three bytes (valid

values: 0-0xffffff) bcmPortControlPFCDestMacNonOui Priority Flow Control packet destination MAC address, lower three bytes (valid

values: 0-0xffffff) bcmPortControlLanes Set the number of lanes to be used by the master port for the flex-port feature in

BCM56639. Valid values: 1 (master port is a GE port), 4 (master port is a high-speed port).

Table 24: Port Encapsulation Modes

Mode MeaningBCM_PORT_ENCAP_SBX Broadcom Proprietary encapsulation compatible with SBX family of packet processors.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 34 of 112

Syntax#include <bcm/port.h> int bcm_port_subsidiary_ports_get( int unit, bcm_port_t port, bcm_pbmp_t *pbmp);

#include <bcmx/port.h> int bcmx_port_subsidiary_ports_get(bcm_gport_t port, bcmx_lplist_t *lplist);

Parameters

Description

Given a controlling port, this API returns the set of ancillary ports belonging to the group (port block) that can be configured to operate either as a single high-speed port or multiple GE ports. If the input port is not a controlling port, an empty bitmap is returned.

Returns

BCM_E_XXX

bcm_port_encap_config_t_init bcmx_port_encap_config_t_init

Initialize a Port Encapsulation Configuration structure.

Syntax#include <bcm/port.h> void bcm_port_encap_config_t_init(bcm_port_encap_config_t *encap_config);

#include <bcmx/port.h> void bcmx_port_encap_config_t_init(bcmx_port_encap_config_t *encap_config);

Parameters

Description

Initializes a port encapsulation configuration structure to default values. This function should be used to initialize any Port Encap-sulation Configuration structure prior to filling it out and passing it to an API function. This ensures that the structure is initialized to correct default values on subsequent API releases that may add new members to the structure.

unit (IN) Unit number

port (IN) Controlling port

pbmp (OUT) List of subsidiary ports in the same block as the controlling port

lplist (OUT) Logical port list for subsidiary ports in the same block as the controlling port

encap_config (OUT) Pointer to Port Encapsulation Configuration

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 35 of 112

Returns

None.

PROXY SERVICES

The following new functions have been added to the BCM Proxy Services API. Please see the Proxy Services section of the BCM API Reference Manual.

bcm_proxy_init bcmx_proxy_init

Initialize the BCM Proxy subsystem.

Syntax#include <bcm/proxy.h> int bcm_proxy_init(int unit); #include <bcmx/proxy.h> int bcmx_proxy_init(void);

Parameters

Description

Initialize the Proxy software module, clear all hardware Proxy state.

Table 25: bcm_port_phy_control_t

BCM_PORT_PHY_CONTROL_MACSEC_SWITCH_FIXED

Switch MAC policy to determine speed, duplex and Pause settings

BCM_PORT_PHY_CONTROL_MACSEC_SWITCH_FIXED_SPEED

Switch MAC Speed setting for Switch fixed policy

BCM_PORT_PHY_CONTROL_MACSEC_SWITCH_FIXED_DUPLEX

Switch MAC Duplex setting for Switch fixed policy

BCM_PORT_PHY_CONTROL_MACSEC_SWITCH_FIXED_PAUSE

Switch MAC Pause setting for Switch fixed policy

BCM_PORT_PHY_CONTROL_MACSEC_PAUSE_RX_FORWARD

RX Pause settings for MACSEC PHY

BCM_PORT_PHY_CONTROL_MACSEC_PAUSE_TX_FORWARD

TX Pause settings for MACSEC PHY

BCM_PORT_PHY_CONTROL_MACSEC_LINE_IPG Line MAC IPG setting in MACSEC PHY BCM_PORT_PHY_CONTROL_MACSEC_SWITCH_IPG Switch MAC IPG setting in MACSEC PHY

unit BCM device number

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 36 of 112

Returns

bcm_proxy_cleanup bcmx_proxy_cleanup

Detach the Proxy software module.

Syntax#include <bcm/proxy.h> int bcm_proxy_cleanup(int unit); #include <bcmx/proxy.h> int bcmx_proxy_cleanup(void);

Parameters

Description

Detach the Proxy software module, clear all hardware Proxy state.

Returns

MULTI-DEVICE STACK CONTROL

The following new functions have been added to the BCM Multi-device Stack Control API. Please see the Multi-device Stack Con-trol section of the BCM API Reference Manual.

bcm_stk_port_modport_set bcm_stk_port_modport_get

Control per ingress port module steering.

Syntax#include <bcm/stack.h> int bcm_stk_port_modport_set(int unit, bcm_port_t ing_port, bcm_module_t dest_modid, bcm_port_t dest_port); int bcm_stk_port_modport_get(int unit, bcm_port_t int_port, bcm_module_t dest_modid, bcm_port_t *dest_port);

BCM_E_XXX

unit BCM device number

BCM_E_XXX

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 37 of 112

Parameters

Description

Set or get the destination port that any packet with an ingress port identifier of ing_port and a destination module identifier of modid will be steered to. Module steering can be used to steer packets to an SL stack port, when one is configured.

Returns

bcm_stk_port_modport_get_all

Get per ingress port module steering

Syntax#include <bcm/stack.h> int bcm_stk_port_modport_get_all(int unit, bcm_port_t ing_port, bcm_module_t dest_modid, int dest_port_max, bcm_port_t *dest_port_array, int *dest_port_count);

Parameters

Description

Get one or more destination port that any packet with an ingress port number of ing_port and a destination module identifier of dest_modid will be steered.

unit BCM device number

ing_port Ingress port number

dest_modid Destination module identifier

dest_port (for "_set") Destination port number

dest_port (for "_get", OUT) Destination port number

BCM_E_XXX

unit BCM device number

ing_port Ingress port number

dest_modid Destination module identifier

dest_port_max Maximum number of destination ports in array

dest_port_array (OUT) Array of destination ports

dest_port_count (OUT) Number of destination ports returned in array

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 38 of 112

Returns

bcm_stk_port_modport_add bcm_stk_port_modport_delete

Add or delete more than one path for a given destination module of an ingress port.

Syntax#include <bcm/stack.h> int bcm_stk_port_modport_add(int unit, bcm_port_t ing_port, bcm_module_t dest_modid, bcm_port_t dest_port); int bcm_stk_port_modport_delete(int unit, bcm_port_t ing_port, bcm_module_t dest_modid, bcm_port_t dest_port);

Parameters

Description

Add or delete a destination port that any packet with an ingress port identifier of ing_port and a destination module identifier of modid will be steered to. This API allows the user to add more than one destination port for a given destination module.

The purpose of this API is to provide redundant fabric links (like Active/Standby) for a given destination module in a system. When more than one HG port is specified for a given destination module Identifier and these HG ports are members of a fabric trunk, packets are forwarded out only on a single fabric link.

Returns

bcm_stk_port_modport_clear bcm_stk_port_modport_clear_all

Clear per ingress port module steering.

Syntax#include <bcm/stack.h> int bcm_stk_port_modport_clear(int unit, bcm_port_t ing_port,

BCM_E_XXX

unit BCM device number

ing_port Ingress port number

dest_modid Destination module identifier

dest_port Destination port number to add/delete

BCM_E_XXX

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 39 of 112

bcm_module_t dest_modid); int bcm_stk_port_modport_clear_all(int unit, bcm_port_t ing_port);

Parameters

Description

Clear any module steering for either a specific module identifier or for all modules identifiers of an ingress port.

Returns

STATISTICS

The following new statistic types have been added to the BCM Statistics API. Please see the Statistics section of the BCM API Reference Manual.

The following new options have been added to bcm_stat_val_t:

typedef enum bcm_stat_val_e { ... /*** RFC 1573 ***/ snmpIfInBroadcastPkts, snmpIfInMulticastPkts, snmpIfOutBroadcastPkts, snmpIfOutMulticastPkts, ... snmpBcmReceivedPkts64Octets, snmpBcmReceivedPkts65to127Octets, snmpBcmReceivedPkts128to255Octets, snmpBcmReceivedPkts256to511Octets, snmpBcmReceivedPkts512to1023Octets, snmpBcmReceivedPkts1024to1518Octets, snmpBcmReceivedPkts1519to2047Octets, snmpBcmReceivedPkts2048to4095Octets, snmpBcmReceivedPkts4095to9216Octets, snmpBcmTransmittedPkts64Octets, snmpBcmTransmittedPkts65to127Octets, snmpBcmTransmittedPkts128to255Octets, snmpBcmTransmittedPkts256to511Octets, snmpBcmTransmittedPkts512to1023Octets, snmpBcmTransmittedPkts1024to1518Octets, snmpBcmTransmittedPkts1519to2047Octets, snmpBcmTransmittedPkts2048to4095Octets, snmpBcmTransmittedPkts4095to9216Octets,

unit BCM device number

ing_port Ingress port number

dest_modid Destination module identifier

BCM_E_XXX

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 40 of 112

... } bcm_stat_val_t;

The following new custom triggers are available:

SWITCH CONTROL

The following new switch control types have been added to the BCM Switch Control API. Please see the Switch Control section of the BCM API Reference Manual.

Table 26: Custom counter packet types

bcmDbgCntRX_SYMBOL Fabric I/F => Rx Errors (e.g.8B10B)bcmDbgCntTIME_ALIGNMENT_EVEN Fabric I/F => Time Alignment (even) bcmDbgCntTIME_ALIGNMENT_ODD Fabric I/F => Time Alignment (odd) bcmDbgCntBIT_INTERLEAVED_PARITY_EVEN Fabric I/F => BIP (even) bcmDbgCntBIT_INTERLEAVED_PARITY_ODD Fabric I/F => BIP (odd)

Table 27: Switch Type Values

Value Description Arg ValuebcmSwitchTrunkFailoverHashOffset

Enhanced hash selections for trunk failover.

0-48

bcmSwitchFabricTrunkFailoverHashOffset

Enhanced hash selections for fabric trunk failover.

0-48

bcmSwitchL2AgeDelete Enable deletion of MAC addresses during aging scan. The default value is TRUE.

TRUE/FALSE

bcmSwitchMplsPortIndependentLowerRange1

Configure the Port Independent Lower MPLS Label for Range-1. The default value is 0.

0x0-0xFFFFF

bcmSwitchMplsPortIndependentUpperRange1

Configure the Port Independent Upper MPLS Label for Range-1. The default value is 2^20 - 1.

0x0-0xFFFFF

bcmSwitchMplsPortIndependentLowerRange2

Configure the Port Independent Lower MPLS Label for Range-2. The default value is 0.

0x0-0xFFFFF

bcmSwitchMplsPortIndependentUpperRange2

Configure the Port Independent Upper MPLS Label for Range-2. The default value is 2^20 - 1.

0x0-0xFFFFF

bcmSwitchPFCClass0Queue Queue to suspend when a Priority Flow Control class 0 packet is received.

0x0-0x7

bcmSwitchPFCClass1Queue Queue to suspend when a Priority Flow Control class 1 packet is received.

0x0-0x7

bcmSwitchPFCClass2Queue Queue to suspend when a Priority Flow Control class 2 packet is received.

0x0-0x7

bcmSwitchPFCClass3Queue Queue to suspend when a Priority Flow Control class 3 packet is received.

0x0-0x7

bcmSwitchPFCClass4Queue Queue to suspend when a Priority Flow Control class 4 packet is received.

0x0-0x7

bcmSwitchPFCClass5Queue Queue to suspend when a Priority Flow Control class 5 packet is received.

0x0-0x7

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 41 of 112

bcmSwitchPFCClass6Queue Queue to suspend when a Priority Flow Control class 6 packet is received.

0x0-0x7

bcmSwitchPFCClass7Queue Queue to suspend when a Priority Flow Control class 7 packet is received.

0x0-0x7

bcmSwitchReserveLowVlanPort

Reserve a range of vlan gport resource ids, sets the lower bounds

0x0-0xFFFFFFFF

bcmSwitchReserveHighVlanPort

Reserve a range of vlan gport resource ids, sets the upper bounds

0x0-0xFFFFFFFF

bcmSwitchReserveLowMplsPort

Reserve a range of mpls gport resource ids, sets the lower bounds

0x0-0xFFFFFFFF

bcmSwitchReserveHighMplsPort

Reserve a range of mpls gport resource ids, sets the upper bounds

0x0-0xFFFFFFFF

bcmSwitchReserveLowEncap Reserve a range of encap resource ids, sets the lower bounds

0x0-0xFFFFFFFF

bcmSwitchReserveHighEncap Reserve a range of encap resource ids, sets the upper bounds

0x0-0xFFFFFFFF

bcmSwitchReserveLowVpn Reserve a range of vpn resource ids, sets the lower bounds

0x0-0xFFFFFFFF

bcmSwitchReserveHighVpn Reserve a range of vpn resource ids, sets the upper bounds

0x0-0xFFFFFFFF

bcmSwitchSnapNonZeroOui Allow LLC formatted L2 packets that have non-zero value OUI field to be treated as SNAP packets.

0x0-0x7

bcmSwitchSynchronousPortClockSource

Source GE port for recovered clock or -1 for free-run (no recovered clock)

0-23, -1

bcmSwitchL2HitClear Clear L2 source and destination hit bits when set to 1

1

bcmSwitchL2SrcHitClear Clear L2 source hit bits when set to 1 1 bcmSwitchL2DstHitClear Clear L2 destination hit bits when set to 1 1 bcmSwitchL3HostHitClear Clear L3 host hit bits when set to 1 1 bcmSwitchL3RouteHitClear Clear L3 route hit bits when set to 1 1 bcmSwitchHashVlanTranslate

Hash select for bcmVlanPortTranslateKeyFirst

Same as bcmSwitchHashL2

bcmSwitchHashVlanTranslateDual

Hash select for bcmVlanPortTranslateKeySecond

Same as bcmSwitchHashVlanTranslate

bcmSwitchMirrorEgressTrueColorSelect

Color override selection for egress true mirroring

bcm_color_t, or -1 for no override

bcmSwitchMirrorEgressTruePriority

Priority override selection for egress true mirroring

0-15, or -1 for no override

bcmSwitchOamUnknownVerDrop

Enable drop for an OAM version number not equal to 0. The default value is FALSE. Supported on BCM56634 and BCM56524.

TRUE/FALSE

bcmSwitchOamUnexpectedPktToCpu

Enable for copy to CPU for an unexpected OAM MDL value. The default value is FALSE.

bcmSwitchCosqStatThreshold

Sets Statistics Threshold to ACE-TCE Mode.

0,25-75%

bcmSwitchEncapErrorToCpu Send packet with unknown encapsulation on stacking port to CPU

1

Table 27: Switch Type Values

Value Description Arg Value

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 42 of 112

TRUNKING (LINK AGGREGATION)

The following new functions have been added to the BCM Trunking API. Please see the Trunking section of the BCM API Refer-ence Manual.

On some devices, each port in a trunk may be assigned a set of ports to which the traffic should be redirected in case the port's link goes down, a capability termed "failover". This port list may be provided explicitly in bcm_trunk_failover_set, or implicitly with the BCM_TRUNK_FLAG_FAILOVER_XXX flags.

bcm_trunk_failover_set bcmx_trunk_failover_set

Assign the failover port list for a specific trunk port.

Syntax#include <bcm/trunk.h> int bcm_trunk_failover_set(int unit, bcm_trunk_t tid, bcm_gport_t failport, int psc, uint32 flags, int count, bcm_gport_t *fail_to_array);

#include <bcmx/trunk.h> int bcmx_trunk_failover_set(bcm_trunk_t tid, bcm_gport_t failport, int psc, uint32 flags, int count, bcm_gport_t *fail_to_array);

Table 28: BCM Trunk Flags

Name PurposeBCM_TRUNK_FLAG_FAILOVER_NEXT Failover port defaults to the next port in the trunk port list BCM_TRUNK_FLAG_FAILOVER_NEXT_LOCAL Failover port defaults to the next local port in the trunk port list, if any. BCM_TRUNK_FLAG_FAILOVER_ALL Failover ports default to all other ports in this trunk. BCM_TRUNK_FLAG_FAILOVER_ALL_LOCAL Failover ports default to all other local ports in this trunk. BCM_TRUNK_FLAG_FAILOVER Enable trunk failover support (deprecated). Equivalent to

BCM_TRUNK_FLAG_FAILOVER_NEXT_LOCAL.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 43 of 112

Parameters

Description

Configure the set of failover ports for a specific port in the indicated trunk group. For fabric trunks, all of the ports in the list must be Higig ports on the local device. For non-fabric trunks, the failover ports may be on remote devices. If a flag is provided, then the count and fail_to_array argument are ignored; the failover port list is constructed from the trunk port membership accord-ing to the selected failover description. (If a BCM_TRUNK_FLAG_FAILOVER_XXX flag is provided to bcm_trunk_set in the add_info structure, all of the local ports in the trunk will be configured for failover in the selected method.) If the flags argument is zero, then the port list from count and fail_to_array is used. This arbitrary list may include ports outside of the trunk. A count of zero indicates that failover should be disabled on failport.

Returns

BCM_E_XXX

bcm_trunk_failover_get bcmx_trunk_failover_get

Retrieve the failover port list for a specific trunk port.

Syntax#include <bcm/trunk.h> int bcm_trunk_failover_get(int unit, bcm_trunk_t tid, bcm_gport_t failport, int *psc, uint32 *flags, int array_size, bcm_gport_t *fail_to_array, int *array_count);

#include <bcmx/trunk.h> int bcmx_trunk_failover_get(bcm_trunk_t tid, bcm_gport_t failport, int *psc, uint32 *flags, int array_size, bcm_gport_t *fail_to_array, int *array_count);

unit (IN) Unit number.

tid (IN) Trunk id.

failport (IN) Port in trunk for which to specify failover port

psc (IN) Port selection criteria for failover port list.

flags (IN) BCM_TRUNK_FLAG_FAILOVER_xxx.

count (IN) Number of ports in failover port list.

fail_to_array (IN) Failover port list.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 44 of 112

Parameters

Description

Retrieve the configured set of failover ports for a specific port in the indicated trunk group. If a flag was provided to configure the failover list, then only the flag and psc return values are valid. If the returned flags argument is zero, then fail_to_array is filled with the port list up to a maximum list length of array_size. array_count contains the actual length of the re-turned list. If array_count is zero in addition to flags, trunk failover is not enabled on failport.

Returns

BCM_E_XXX

BCM PACKET, TRANSMIT, AND RECEIVE APIS

The following new functions have been added to the BCM BCM Packet, Transmit, and Receive APIs. Please see the BCM Packet, Transmit, and Receive APIs section of the BCM API Reference Manual.

New members have been added to the bcm_pkt_t structure:

unit (IN) Unit number.

tid (IN) Trunk id.

failport (IN) Port in trunk for which to retrieve failover port

psc (OUT) Port selection criteria for failover port list.

flags (OUT) BCM_TRUNK_FLAG_FAILOVER_xxx.

array_size (IN) Maximum number of ports in provided failover port

fail_to_array (OUT) Failover port list.

array_count (OUT) Number of ports in returned failover port list.

Table 29: bcm_pkt_t Structure Description

vlan_pri cw uint8 Outer vlan tag priority.vlan_cfi uint8 Outer vlan tag cfi bit. inner_vlan bcm_vlan_t For double tagged packets inner VLAN ID. inner_vlan_pri uint8 Inner vlan tag priority. inner_vlan_cfi uint8 Inner vlan tag cfi bit. color bcm_color_t Packet color. dst_gport bcm_gport_t Packet destination virtual port. Valid if

BCM_PKT_STK_F_DST_PORT stack flag is set. Specifies the destination virtual port for a HiGig2 packet on devices which support both Higig2 and virtual ports.

src_gport bcm_gport_t Packet source virtual port. Valid if BCM_PKT_STK_F_SRC_PORT stack flag is set. Specifies the source virtual port for a HiGig2 packet on devices which support both Higig2 and virtual ports.

multicast_group bcm_multicast_t Destination multicast group. stk_flags uint32 Stacking header flags. stk_forward bcm_pkt_stk_forward_t Stacking header forwarding opcode for HiGig2

packets.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 45 of 112

A new packet flag has been added:

The bcm_pkt_t member rx_untagged now contains information on double-tagged packets, encoded with the following flags.

The packet stacking flags detail the information encoded in a HiGig2 header if the local egress port is configured for HiGig2 oper-ation.

stk_classification_tag uint32 Stacking header classification tag for HiGig2 packets. Valid if BCM_PKT_STK_F_CLASSIFICATION_TAG stack flag is set.

stk_pkt_prio uint32 Stacking header new packet priority for HiGig2 packets. If BCM_PKT_STK_F_DEFERRED_CHANGE_PKT_PRIO stack flag is set, update packet priority to stk_pkt_prio in the egress device.

stk_dscp uint32 Stacking header new DSCP for HiGig2 packets. If BCM_PKT_STK_F_DEFERRED_CHANGE_DSCP stack flag is set, update dscp value to stk_dscp in the egress device.

stk_load_balancing_number uint32 Stacking header load balancing number for HiGig2 packets. May be used on egress devices as part of the trunk hash.

Table 30: Packet Flags Descriptions

Flag DescriptionBCM_PKT_F_ROUTED On TX of a HiGig2 packet, indicate to the egress device that the packet is L3 routed. On RX, this

flag indicates that the packet was L3 switched.

Table 31: rx_untagged Flags Descriptions

Flag DescriptionBCM_PKT_INNER_UNTAGGED Packet was received without inner vlan tag. BCM_PKT_OUTER_UNTAGGED Packet was received without outer vlan tag.

Table 32: Packet Stacking Flags Descriptions

Flag DescriptionBCM_PKT_STK_F_MIRROR For TX, set the mirror indication in the stacking HiGig2 header.

For RX, the HiGig2 header reported the packet is a mirror copy. BCM_PKT_STK_F_DO_NOT_MODIFY For TX of HiGig2 packets, notify the egress device to leave the

packet unchanged. For RX, the Higig2 header instructs the egress device not to modify the packet.

BCM_PKT_STK_F_TRUNK_FAILOVER For TX of HiGig2 packets, notify the egress device that this packet experienced LAG failover. For RX, the HiGig2 header reports that this packet was redirected due to LAG failover.

Table 29: bcm_pkt_t Structure Description

vlan_pri cw uint8 Outer vlan tag priority.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 46 of 112

The packet stacking forwarding options describe the egress device operations which may be specified in a HiGig2 header, if the local egress port is configured for HiGig2 operation.

BCM_PKT_STK_F_SRC_PORT For TX, src_gport specifies the virtual or physical port for use in HiGig2 packets. For RX, src_gport contains the source virtual or physical port.

BCM_PKT_STK_F_DST_PORT For TX, dst_gport specifies the virtual or physical port for use in HiGig2 packets. For RX, dst_gport contains the destination virtual or physical port.

BCM_PKT_STK_F_DEFERRED_DROP For TX, set the HiGig2 header to instruct the egress device to drop the packet. For RX, the HiGig2 header indicates that the packet should be dropped in the egress device.

BCM_PKT_STK_F_DEFERRED_CHANGE_PKT_PRIO For TX of a HiGig2 packet, the stk_pkt_prio member contains the packet priority with which the egress chip should override the arriving packet priority. For RX, the HiGig2 header instructed the egress chip to replace the packet priority with the value in stk_pkt_prio.

BCM_PKT_STK_F_DEFERRED_CHANGE_DSCP For TX of a HiGig2 packet, the stk_dscp member contains the DSCP with which the egress chip should override the arriving DSCP. For RX, the HiGig2 header instructed the egress chip to replace the DSCP with the value in stk_dscp.

BCM_PKT_STK_F_CLASSIFICATION_TAG For TX of a HiGig2 packet, use the stk_classification_tag value. For RX, the HiGig2 header contained stk_classification_tag.

BCM_PKT_STK_F_VLAN_TRANSLATE_NONE For HiGig2 packets, no VLAN translation was performed on this packet.

BCM_PKT_STK_F_VLAN_TRANSLATE_UNCHANGED For HiGig2 packets, VLAN translation resulted in no change to this packet.

BCM_PKT_STK_F_VLAN_TRANSLATE_CHANGED For HiGig2 packets, VLAN translation changed the packet. BCM_PKT_STK_F_DO_NOT_LEARN For HiGig2 packets, the egress device should not learn the

packet source address. BCM_PKT_STK_F_PRESERVE_DSCP For HiGig2 packets, the egress device should not change DSCP BCM_PKT_STK_F_PRESERVE_PKT_PRIO For HiGig2 packets, the egress device should not change the

packet priority.

Table 33: Packet Stacking Forward Descriptions

Name DescriptionBCM_PKT_STK_FORWARD_CPU Forward HiGig2 packet to the Host CPU. BCM_PKT_STK_FORWARD_L2_UNICAST Forward HiGig2 packet as unicast L2. BCM_PKT_STK_FORWARD_L2_MULTICAST Forward HiGig2 packet as multicast L2. BCM_PKT_STK_FORWARD_L2_MULTICAST_UNKNOWN

Forward HiGig2 packet as unknown multicast L2.

BCM_PKT_STK_FORWARD_L3_MULTICAST Forward HiGig2 packet as multicast L3. BCM_PKT_STK_FORWARD_L3_MULTICAST_UNKNOWN

Forward HiGig2 packet as unknown multicast L3.

BCM_PKT_STK_FORWARD_L2_UNICAST_UNKNOWN Forward HiGig2 packet as unknown unicast L2. BCM_PKT_STK_FORWARD_BROADCAST Forward HiGig2 packet as broadcast.

Table 32: Packet Stacking Flags Descriptions

Flag Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 47 of 112

VLAN MANAGEMENT

The following new functions have been added to the BCM VLAN Management API. Please see the VLAN Management section of the BCM API Reference Manual.

bcm_vlan_port_default_action_delete bcmx_vlan_port_default_action_delete

Deletes the port's default VLAN tag actions.

Syntax#include <bcm/vlan.h> int bcm_vlan_port_default_action_delete(int unit, bcm_port_t port);

#include <bcmx/vlan.h> int bcmx_vlan_port_default_action_delete(bcmx_lport_t port);

Parameters

Description

Deletes the default VLAN tag actions for the specified port. This API returns all ports to initial configuration with 'ut_outer' action set to bcmVlanActionAdd. With this setting, untagged packets have an outer tag added with the default VLAN (VLAN 1). All other action settings are set to bcmVlanActionNone.

Returns

bcm_vlan_port_egress_default_action_delete bcmx_vlan_port_egress_default_action_delete

Deletes the egress default VLAN tag actions.

Syntax#include <bcm/vlan.h> int bcm_vlan_port_egress_default_action_delete(int unit, bcm_port_t port);

#include <bcmx/vlan.h> int bcmx_vlan_port_egress_default_action_delete(bcmx_lport_t port);

unit BCM device number

port Device port number or logical device

BCM_E_NONE Operation completed successfully

BCM_E_UNAVAIL Operating not supported on specified port

BCM_E_XXX Operation failed

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 48 of 112

Parameters

Description

Deletes the egress default VLAN tag actions for the specified port.

This API returns all ports to initial configuration with 'ut_outer' action set to bcmVlanActionAdd. With this setting, un-tagged packets have an outer tag added with the default VLAN (VLAN 1). All other action settings are set to bcmVlanActionNone.

Returns

bcm_vlan_port_protocol_action_get bcmx_vlan_port_protocol_action_get

Get protocol-based VLAN specified action.

Syntax#include <bcm/vlan.h> int bcm_vlan_port_protocol_action_get(int unit, bcm_port_t port, bcm_port_frametype_t frame, bcm_port_ethertype_t ether, bcm_vlan_action_set_t *action);

#include <bcmx/vlan.h> int bcmx_vlan_port_protocol_action_get(bcmx_lport_t port, bcm_port_frametype_t frame, bcm_port_ethertype_t ether, bcm_vlan_action_set_t *action);

Parameters

Description

Get a protocol-based VLAN based on frame type and ether type. The ether type is a 16-bit value that matches the ethertype field in the received packet. If the received packet is untagged and the ether type and the frame type match a protocol-based VLAN then

unit BCM device number

port Device port number or logical device

BCM_E_NONE Operation completed successfully

BCM_E_UNAVAIL Operating not supported on specified port

BCM_E_XXX Operation failed

unit BCM device number

port Device or logical port number

frame Frame type, as specified in BCM_PORT_FRAMETYPE_e

ether 16-bit Ethertype

action VLAN tag action set, as specified in BCM_VLAN_ACTION_SET_t

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 49 of 112

the VLAN actions assigned to the packet are that specified by bcm_port_protocol_vlan_action_add. If the un-derlying device does not support protocol-based VLANS, an error is returned.

Returns

bcm_vlan_port_protocol_action_delete bcmx_vlan_port_protocol_action_delete

Delete protocol-based VLAN action.

Syntax#include <bcm/vlan.h> int bcm_vlan_port_protocol_action_delete(int unit, bcm_port_t port, bcm_port_frametype_t frame, bcm_port_ethertype_t ether);

#include <bcmx/vlan.h> int bcmx_vlan_port_protocol_action_delete(bcmx_lport_t port, bcm_port_frametype_t frame, bcm_port_ethertype_t ether);

Parameters

Description

Delete a protocol-based VLAN action, based on frame type and ether type. If given protocol was not set, API will return an error.

Returns

bcm_vlan_port_protocol_action_delete_all bcmx_vlan_port_protocol_action_delete_all

BCM_E_NONE Operation completed successfully

BCM_E_UNAVAIL Operating not supported on specified port

BCM_E_XXX Operation failed

unit BCM device number

port Device or logical port number

frame Frame type, as specified in BCM_PORT_FRAMETYPE_e

ether 16-bit Ethertype

BCM_E_NONE Operation completed successfully

BCM_E_UNAVAIL Operating not supported on specified port

BCM_E_XXX Operation failed

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 50 of 112

Delete all protocol-based VLAN actions.

Syntax#include <bcm/vlan.h> int bcm_vlan_port_protocol_action_delete_all(int unit, bcm_port_t port);

#include <bcmx/vlan.h> int bcmx_vlan_port_protocol_action_delete_all(bcmx_lport_t port);

Parameters

Description

Delete all protocol-based VLAN actions, for all frame and ether types.

Returns

bcm_vlan_port_protocol_action_traverse

Iterates over all protocol-based VLAN actions and executes a given callback function.

Syntax#include <bcm/vlan.h> int bcm_vlan_port_protocol_action_traverse(int unit, bcm_vlan_port_protocol_action_traverse_cb cb, void *user_data);

Parameters

Description

Iterates over all protocols and VLAN actions based on these protocols and executes a given call back function that must be with following signature:

typedef int (*bcm_vlan_port_protocol_action_traverse_cb)( int unit, bcm_port_t port,

unit BCM device number

port Device or logical port number

BCM_E_NONE Operation completed successfully

BCM_E_UNAVAIL Operating not supported on specified port

BCM_E_XXX Operation failed

unit BCM device number

cb Callback function to execute

user_data Pointer to any user data

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 51 of 112

bcm_port_frametype_t frame, bcm_port_ethertype_t ether, bcm_vlan_action_set_t *action, void *user_data);

Returns

bcm_vlan_translate_egress_action_traverse

Iterate over VLAN egress translate table and calls user provided call back for every valid entry.

Syntax#include <bcm/vlan.h> typedef int (*bcm_vlan_translate_egress_action_traverse_cb)( int unit, bcm_gport_t port_class, bcm_vlan_t outer_vlan, bcm_vlan_t inner_vlan, bcm_vlan_action_set_t *action, void *user_data);

/* Traverse vlan translate egress table */ extern int bcm_vlan_translate_egress_action_traverse( int unit, bcm_vlan_translate_egress_action_traverse_cb cb, void *user_data);

Parameters

Description

Iterate over VLAN egress translate table and calls user provided call back for every valid entry. Please note that the bcm_vlan_translate_egress_action_traverse_cb no l ong e r t ake s a bcm_vlan_translate_key_t key_type parameter:

BCM_E_NONE Operation completed successfully

BCM_E_UNAVAIL Operating not supported on specified port

BCM_E_XXX Operation failed

unit BCM device number

port_class Port class

outer_vlan Outer VLAN ID

inner_vlan Inner VLAN ID

action (OUT) VLAN tag action set, as specified in BCM_VLAN_ACTION_SET_t

usr_data Pointer to any data accompanying callback function.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 52 of 112

Returns

bcm_vlan_ip_action_get bcmx_vlan_ip_action_get

Get an association from IP subnet to VLAN actions that used for assigning VLAN tag actions to untagged packets.

Syntax#include <bcm/vlan.h> int bcm_vlan_ip_action_get(int unit, bcm_vlan_ip_t *vlan_ip bcm_vlan_action_set_t *action);

#include <bcmx/vlan.h> int bcmx_vlan_ip_action_get(bcm_vlan_ip_t *vlan_ip, bcm_vlan_action_set_t *action);

Parameters

Description

Get an association from IP subnet to VLAN that used for assigning VLAN tag actions to untagged packets. Depending on which association was added IP6 or IP4, BCM_VLAN_SUBNET_IP6 flag will be set or not.

Returns

bcm_vlan_ip_action_delete bcmx_vlan_ip_action_delete

Deletes an association from IP subnet to VLAN actions that used for assigning VLAN tag actions to untagged packets.

BCM_E_UNAVAIL Not supported.

BCM_E_XXX

unit BCM device number

vlan_ip A container for subnet-to-VLAN association data

action VLAN tag action set, as specified in BCM_VLAN_ACTION_SET_t

BCM_E_UNAVAIL Feature not supported.

BCM_E_PARAM Prefix length is greater than 64

BCM_E_XXX

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 53 of 112

Syntax#include <bcm/vlan.h> int bcm_vlan_ip_action_delete(int unit, bcm_vlan_ip_t *vlan_ip);

#include <bcmx/vlan.h> int bcmx_vlan_ip_action_delete(bcm_vlan_ip_t *vlan_ip);

Parameters

Description

Delete an association from IP subnet to VLAN that been used for assigning VLAN tag actions to untagged packets. Depending on the presence of the BCM_VLAN_SUBNET_IP6 flag, either the IP4 or the IP6 association is deleted.

Returns

bcm_vlan_ip_action_delete_all bcmx_vlan_ip_action_delete_all

Deletes all associations from IP subnet to VLAN actions

Syntax#include <bcm/vlan.h> int bcm_vlan_ip_action_delete_all(int unit);

#include <bcmx/vlan.h> int bcmx_vlan_ip_action_delete_all(void);

Parameters

Description

Deletes all associations from IP subnet to VLAN that been used for assigning VLAN tag actions to untagged packets.

unit BCM device number

vlan_ip A container for subnet-to-VLAN association data

BCM_E_UNAVAIL Feature not supported.

BCM_E_PARAM Prefix length is greater than 64

BCM_E_XXX

unit BCM device number

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 54 of 112

Returns

bcm_vlan_ip_action_traverse

Iterates over all associations from IP subnet to VLAN actions and executes provided call back function.

Syntax#include <bcm/vlan.h> int bcm_vlan_ip_action_traverse(int unit, bcm_vlan_ip_action_traverse_cb cb, void *user_data);

Parameters

Description

Iterates over all associations from IP subnet to VLAN actions and executes provided call back function. The call back function should be with following signature:

typedef int (*bcm_vlan_ip_action_traverse_cb)( int unit, bcm_vlan_ip_t *vlan_ip, bcm_vlan_action_set_t *action, void *user_data);

Returns

BCM_E_UNAVAIL Feature not supported.

BCM_E_XXX

unit BCM device number

cb Call back function to execute

user_data Pointer to any specific user data

BCM_E_UNAVAIL Feature not supported.

BCM_E_XXX

Table 34: VLAN Control Port Types

Type Argument EffectbcmVlanPortIgnorePktTag If the argument is non-zero, ignore the packet vlan tag on the port, treat the packet as untagged

packet.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 55 of 112

The new members qos_map_id, failover_id, and failover_port_id are added to the bcm_vlan_port_t structure:

typedef struct bcm_vlan_port_s { bcm_vlan_port_match_t criteria; /* Match criteria. */ uint32 flags; /* BCM_VLAN_PORT_xxx. */ bcm_vlan_t vsi; /* Populated for bcm_vlan_port_get only */ bcm_vlan_t match_vlan; /* Outer VLAN ID to match. */ bcm_vlan_t match_inner_vlan; /* Inner VLAN ID to match. */ bcm_gport_t port; /* Gport: local or remote Physical or logical gport. */ bcm_vlan_t egress_vlan; /* Egress Outer VLAN. */ bcm_vlan_t egress_inner_vlan; /* Egress Inner VLAN. */ bcm_if_t encap_id; /* Encapsulation Index. */ int qos_map_id; /* QoS Map Index. */ bcm_policer_t policer_id; /* Policer ID */ bcm_failover_t failover_id; /* Failover Object Index. */ bcm_gport_t failover_port_id; /* Failover VLAN Port Identifier. */ bcm_gport_t vlan_port_id; /* GPORT identifier */ } bcm_vlan_port_t;

QUALITY OF SERVICE

This module generalizes all the different QoS features provided in various other modules. The general idea is to map the incoming packet's QoS markings to an internal priority on the ingress and to map the internal priority to the outgoing packet's QoS markings on the egress. Depending on the application, the packet markings can be 802.1p priority and CFI for Ethernet or MAC-in-MAC, DSCP for Layer 3 and EXP for MPLS. These will be supported for the BCM56634, BCM56524 and BCM56685 families of devices.

DATA TYPES DEFINED FOR QOS APIS• QoS Configuration Flags Given below is the list of configuration flags that can be used with the QoS APIs.

BCM_QOS_MAP_WITH_ID BCM_QOS_MAP_REPLACE BCM_QOS_MAP_L2 BCM_QOS_MAP_L3 BCM_QOS_MAP_MPLS BCM_QOS_MAP_INGRESS BCM_QOS_MAP_EGRESS

Table 35: VLAN Control Flags

VLAN Control Flags MeaningBCM_VLAN_L2_LOOKUP_DISABLE Disable L2 Lookup on this VLAN. Force a database lookup failure (DLF).

Table 36: bcm_vlan_port_t flags

FLAG MeaningBCM_VLAN_PORT_EGRESS_UNTAGGED Indicates tag is stripped on logical port egress BCM_VLAN_PORT_ENCAP_WITH_ID Use the specified encap id to allocate and setup encapsulation

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 56 of 112

• bcm_qos_map_t The type bcm_qos_map_t is a structure that represents a mapping between packet attributes and internal attributes. It is used by the bcm_qos_map_add (page 59) and the bcm_qos_map_delete (page 60) APIs along with various configuration flags. typedef struct bcm_qos_map_s { uint8 pkt_pri; /* Packet priority */ uint8 pkt_cfi; /* Packet CFI */ int dscp; /* Packet DSCP */ int exp; /* Packet EXP */ int int_pri; /* Internal priority */ bcm_color_t color; /* Color */ int remark_int_pri; /* (internal) remarking priority */ bcm_color_t remark_color; /* (internal) remark color */ int policer_offset; /* Offset based on pri/cos to fetch a policer */ } bcm_qos_map_t;

QOS APIS

bcm_qos_init

Initialize the BCM QoS subsystem.

Syntax#include <bcm/qos.h> int bcm_qos_init(int unit);

Parameters

Description

Initialize the QoS software module.

Returns

bcm_qos_detach

Detach the BCM QoS subsystem.

unit BCM device number

BCM_E_XXX

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 57 of 112

Syntax#include <bcm/qos.h> int bcm_qos_detach(int unit);

Parameters

Description

Detach the QoS software module.

Returns

bcm_qos_map_t_init

Initialize the QoS Map structure.

Syntax#include <bcm/qos.h> void bcm_qos_map_t_init( bcm_qos_map_t *qos_map);

Parameters

Description

Initializes a QoS map structure to zero.

Returns

Void

bcm_qos_map_create

Allocates hardware resources for QoS mapping.

Syntax#include <bcm/qos.h> int bcm_qos_map_create( int unit, uint32 flags,

unit BCM device number

BCM_E_XXX

qos_map (IN/OUT) Pointer to a QoS map structure.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 58 of 112

int *map_id);

Parameters

Description

Allocates hardware resources for QoS mapping. Depending on the type of mapping specifed by the configuration flags (L2, L3, MPLS, ingress, egress), the corresponding set of entries is reserved in the appropriate priority mapping table. The map_id is an identifier associated with the reserved chunk. A QoS map can be shared by multiple objects, which are GPORTS.

Returns

BCM_E_XXX

bcm_qos_map_destroy

Frees hardware resources for QoS mapping.

Syntax#include <bcm/qos.h> int bcm_qos_map_destroy( int unit, int map_id);

Parameters

Description

Given a map_id, this API de-allocates the hardware resources that were reserved using bcm_qos_map_create (page 58)

. If the same map is shared by multiple GPORTS, the reference count is decremented.

Returns

BCM_E_XXX

bcm_qos_map_add

Add a specific mapping entry to a QoS map.

unit (IN) Unit number

flags (IN) Configuration flags

map_id (IN/OUT) QoS map ID

unit (IN) Unit number

map_id (IN) QoS map ID

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 59 of 112

Syntax#include <bcm/qos.h> int bcm_qos_map_add( int unit, uint32 flags, bcm_qos_map_t *map, int map_id);

Parameters

Description

A QoS map identified by map_id is a set of mapping entries between a packet's QoS markings and the internal priority and color. The bcm_qos_map_add API adds a specific mapping entry to the QoS map. This API actually programs the mapping in the hardware.

Returns

BCM_E_XXX

bcm_qos_map_delete

Deletes a specific mapping entry from a QoS map.

Syntax#include <bcm/qos.h> int bcm_qos_map_delete( int unit, uint32 flags, bcm_qos_map_t *map, int map_id);

Parameters

Description

The bcm_qos_map_delete API deletes a specific mapping entry from the QoS map, indetifies by map_id.

unit (IN) Unit number

flags (IN) Configuration flags

map (IN) Pointer to a bcm_qos_map_t structure

map_id (IN) QoS map ID

unit (IN) Unit number

flags (IN) Configuration flags

map (IN) Pointer to a bcm_qos_map_t structure

map_id (IN) QoS map ID

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 60 of 112

Returns

BCM_E_XXX

bcm_qos_port_map_set

Associates a GPORT with a QoS map.

Syntax#include <bcm/qos.h> int bcm_qos_port_map_set( int unit, bcm_gport_t port, int ing_map, int egr_map);

Parameters

Description

This API associates a GPORT with an ingress and an egress QoS map. A map ID of zero will clear the existing QoS map and a map ID of -1 will leave the existing map unchanged.

Returns

BCM_E_XXX

MACSEC API

INTRODUCTION TO BROADCOM MACSEC API

The Broadcom MACSEC API consists of set of APIs which can used to configure MACSEC functionality for Broadcom devices that support MACSEC feature. All supported API calls are documented in this manual. Functions not defined here are NOT API calls and subject to change or removal at any time in any release. Functions defined in this manual are intended, as much as reason-ably possible, to be carried forward and supported on all platforms.

All MACSEC API identifiers have prefix bcm_macsec_.

The API exports silicon features in an independent manner as much as possible, but does not implement in software those functions that the underlying devices do not support.

MACSEC APIs can be classified in the following categories:

• Port API • Secure channel API

unit (IN) Unit number

port (IN) GPORT identifier

ing_map (IN) Ingress QoS map ID

egr_map (IN) Egress QoS map ID

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 61 of 112

• Secure association API • Packet flow and actions • Statistics • Event Handling API

MACSEC as such is a Port feature and most of the Broadcom APIs are designed around that. Port APIs controls the MACSEC fea-tures at the port level for example Port API will control whether or not the MACSEC feature is enabled or not enabled for the port, so on. For the port that supports MACSEC feature, it can have certain number of MACSEC secure channels, Secure channel APIs provide the means to create/update/delete/Traverse secure channels on the port. For a specified secure channel, there can be certain number of secure Associations which belong to the Secure channel. MACSEC secure association API provide the means to create/delete/update/Traverse MACSEC secure Associations. Broadcom devices provide flexible packet parse engine which can be con-trolled though the MACSEC flow APIs. These APIs provide the means to Create/Update/Delete/Traverse flows. These APIs can be used for classifying the traffic to either belong to MACSEC controlled or uncontrolled port or to perform various actions like Dropping packets when HW detects various error conditions in the packet.

Most of the MACSEC API take unit and bcm_port_t parameters which identifies the port on BCM switch device.

MACSEC Stats API provide access to the IEEE 802.1AE MIB for the specified port.

MACSEC BASIC TYPES

The MACSEC API layer defines some fundamental data types. The table below captures some of the most common MACSEC data types:

MACSEC PORT API

MACSEC Port API provide the functions to initialize the port and control various features and attributes at the Port level.

bcm_macsec_port_traverse

Table 37: MACSEC basic types

BCM MACSEC data type Descriptionbcm_macsec_packet_format_t Packet format type identifier. bcm_macsec_stat_t MACSEC stats identifier. bcm_macsec_dir_t Traffic flow direction identifier. bcm_macsec_core_t Broadcom MACSEC core identifier. bcm_macsec_port_config_t Structure specifies the attributes of MACSEC port. bcm_macsec_crypto_t Enum provides the supported crypto suite type. bcm_macsec_crypto_aes128_gcm_t Structure provides the attributes for the for AES128GCM crypto. bcm_macsec_secure_chan_t Structure specifies the attributes of the secure channel bcm_macsec_secure_assoc_t Structure specifies the assoc number (AN) for the assoc bcm_macsec_secure_assoc_num_t Enum specifies the assoc number (AN) for the assoc. bcm_macsec_flow_match_t Structure specifies the fields of the packet for which the lookup is done. bcm_macsec_event_t Enum for MACSEC events notified by the MACSEC to user application bcm_macsec_flow_action_t Structure specifies the actions that are performed when the field processor

matches packets belonging to the flow.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 62 of 112

bcm_macsec_port_traverse iterates over all the MACSEC capable ports for the specified BCM device and call user provided callback function for each port.

Syntax#include <bcm/macsec.h>

int bcm_macsec_port_traverse(int unit, bcm_macsec_port_traverse_cb cb, void *user_data);

Parameters

Description

bcm_macsec_port_traverse iterates over all the MACSEC capable ports on the specified BCM unit and calls user sup-plied callback function for each traversed port. User should provide the callback function which matches the following prototype:

typedef int (*bcm_macsec_port_traverse_cb)( int unit, bcm_port_t port, bcm_macsec_core_t dev_core, bcm_macsec_dev_addr_t dev_addr, int dev_port, bcm_macsec_dev_io_t devio_f, void *user_data);

For each port the callback provides the following information to the user:

unit (IN) BCM unit

cb (IN) Port traverse callback function

user_data (IN) user provided callback data

Table 38: Information available to user in Callback

callback parameter Descriptionunit bcm unit Identifier port bcm_port_t dev_core Device core type (One of bcm_macsec_core_t) dev_addr Device base address dev_port Port index with the MACSEC device devio_f Pointer to device I/O function user_data Pointer to user data provided in bcm_macsec_port_traverse

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 63 of 112

Returns

bcm_macsec_port_config_set

Set MACSEC configuration for the specified port.

Syntax#include <bcm/macsec.h>

int bcm_macsec_port_config_set(int unit, bcm_port_t port, bcm_macsec_port_config_t *cfg);

Parameters

Description

bcm_macsec_port_config_set sets the configuration for the specified MACSEC port. This API controls various port attributes for the MACSEC port (Summarized below).

User should provide the configuration desired in bcm_macsec_port_config_t structure.

typedef struct bcm_macsec_port_config_s { uint32 flags; /* MAX frame size */ int max_frame; /* Egress sectag offset */ int egress_sectag_offset; /* Ingress Sectag offset */ int ingress_sectag_offset; /* Replay window size */ uint32 replay_window_size; /* L2 encapsulation header for L2 redirecting */ uint8 encap_dst_mac[6]; uint8 encap_src_mac[6]; uint16 encap_ethertype; /* Egress packet field selectors */ uint32 egress_flow_match_set[BCM_MACSEC_PACKET_FORMAT__COUNT];

BCM_E_XXX bcm_error_t type

unit (IN) BCM unit

port (IN) Port identifier

cfg (IN) Pointer to MACSEC Port config structure

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 64 of 112

/* Ingress packet field selectors */ uint32 ingress_flow_match_set[BCM_MACSEC_PACKET_FORMAT__COUNT]; int ingress_flow_data_offset; int egress_flow_data_offset; uint16 special_tpid; /* special TPID value */ uint16 inner_tpid; /* Inner TPID value */ uint16 outer_tpid; uint32 egress_pre_expire_pn; uint32 ingress_pre_expire_pn; } bcm_macsec_port_config_t;

The table below summarizes various configuration and modes that can be controlled using the flags member of the bcm_macsec_port_config_s structure :

Table 39: Flags

Flag value DescriptionBCM_MACSEC_PORT_ENABLE Enable MACSEC controlled port. If Disabled, all the traffic uses

MACSEC Uncontrolled port. BCM_MACSEC_PORT_SINGLE_CHANNEL Single channel mode. This mode should be used when the Port

is connected in Point-to-Point configuration. Default is LAN mode.

BCM_MACSEC_PORT_INGRESS_STORE_FORWARD Set Ingress packet forwarding mode to Store-and-forward. Default is cut through mode.

BCM_MACSEC_PORT_INGRESS_SECTAG_MISSING_FORWARD

Forward packets to Uncontrolled port when incoming packet doesn't contain SECTAG. default is to drop such packets.

BCM_MACSEC_PORT_INGRESS_SECTAG_INVALID_FORWARD

Forward packets to Uncontrolled port in Ingress direction if either secure channel lookup fails or SECTAG is Invalid. Default is to drop such packets.

BCM_MACSEC_PORT_INGRESS_SECTAG_PRESERVE

Preserve SECTAG in frame before forwarding it upstream to switch/ASIC.

BCM_MACSEC_PORT_INGRESS_SECTAG_REPLACE_VLANID

Replace SECTAG with Special TPID before forwarding it upstream to switch/ASIC.

BCM_MACSEC_PORT_EGRESS_SECTAG_MISSING_UNCONTROLLED

Forward packets to Uncontrolled port in Egress direction when secure channel lookup fails. Default behavior is to drop/corrupt such packets.

BCM_MACSEC_PORT_EGRESS_ENCRYPT_DISABLE Disable Crypto in Egress direction.

Table 40: bcm_macsec_port_config_t

bcm_macsec_port_config_t member Descriptionflags Bitmap of the flags from above table. max_frame Maximum MACSEC frame size. egress_sectag_offset Specifies the SECTAG offset from MAC Source address in the packets coming from

upstream Switch/ASIC ingress_sectag_offset Specifies SECTAG offset from MAC source address in packets coming from the

wire/line side.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 65 of 112

Returns

bcm_macsec_port_config_get

Returns MACSEC configuration for the specified port.

Syntax#include <bcm/macsec.h>

int bcm_macsec_port_config_get(int unit, bcm_port_t port, bcm_macsec_port_config_t *cfg);

Parameters

Description

This API returns the current MACSEC configuration for the specified port. The configuration is returned in the user supplied bcm_macsec_port_config_t structure.

replay_window_size specifies the Replay window size for the port. encap_dst_mac Destination MAC address for L2 encapsulation. encap_src_mac SourceMAC address for L2 encapsulation. encap_ethertype Ethernet type L2 encapsulation. egress_flow_match_set Configures the packet field selectors for flow matching in Egress direction for the

various supported frame formats. ingress_flow_match_set Configures the packet field selectors for flow matching in Ingress direction for the

various supported frame formats. ingress_flow_data_offset Offset in packet to match user defined field. egress_flow_data_offset Offset in packet to match user defined field. special_tpid Special TPID value for the port. Special TPID is used when upstream switch/ASIC

uses 4 byte header to communicate explicit secure channel information to MACSEC device.

inner_tpid Inner TPID value for the port. outer_tpid Outer TPID value for the port. egress_pre_expire_pn PN (packet number) threshold to trigger channel's pre-key expiry event. ingress_pre_expire_pn PN (packet number) threshold to trigger channel's pre-key expiry event.

BCM_E_XXX bcm_error_t type

unit (IN) BCM unit

port (IN) Port identifier

cfg (OUT) Pointer to bcm_macsec_port_config_t structure

Table 40: bcm_macsec_port_config_t

bcm_macsec_port_config_t member Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 66 of 112

Returns

MACSEC SECURE CHANNEL API

MACSEC Secure channel APIs provide the functions to create, update, delete and traverse MACSEC secure channels on Broadcom devices. A secure channel is software object which can be considered an abstraction of MACSEC secure channel. Secure channels a re ident i f ied by an chanId . chanId (channel ident i f ie r ) can e i ther be a l loca ted by the bcm_macsec_secure_chan_create API or user can specify a chanId they want to use for the channel. Once the chan-nel is created, user should use chanId for all subsequent secure channel APIs for this channel.

bcm_macsec_secure_chan_create

Create a MACSEC secure channel.

Syntax#include <bcm/macsec.h> extern int bcm_macsec_secure_chan_create(int unit, bcm_port_t port, uint32 flags, bcm_macsec_secure_chan_t *chan, int *chanId);

Parameters

Description

bcm_macsec_secure_chan_create creates a MACSEC secure channel on Broadcom MACSEC devices. The secure channel created is simplex channel i.e. either its associated with the Ingress Direction or the Egress direction. The direction of the channel is controlled by MACSEC_SECURE_CHAN_INGRESS flag. All the secure channels explicitly require user to specify the secure channel identifier (SCI) in the bcm_macsec_secure_chan_t structure.

The flags parameter to the bcm_macsec_secure_chan_create controls the behavior between channel creation Vs channel update. If the flag is BCM_MACSEC_SECURE_REPLACE, the specified channel is updated, otherwise if its not set a new channel is created.

If BCM_MACSEC_SECURE_WITH_ID is specified in the flags parameter, it will create a secure channel with the specified chanId if already doesn't exist.

If none of the flag (BCM_MACSEC_SECURE_REPLACE or BCM_MACSEC_SECURE_WITH_ID) is set, then a new channel is created and the channel-Id for the channel is returned in the chanId parameter.

BCM_E_XXX bcm_error_t type

unit (IN) BCM unit

port (IN) Port identifier

flags (IN) flag to indicate the create/update operation

chan (IN) Pointer to secure channel structure

chanId (INOUT) Pointer to channel ID

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 67 of 112

bcm_macsec_secure_chan_t structure specifies the attributes of the secure channel.

typedef struct bcm_macsec_secure_chan_s { uint8 sci[8]; /* Secure channel Identifier */ uint32 flags; /* Bitmap of BCM_MACSEC_SECURE_ */ uint16 special_value; /* Special value */ } bcm_macsec_secure_chan_t;

User must always specify a valid SCI in the bcm_macsec_secure_chan_t structure. The flags parameter in the bcm_macsec_secure_chan_t controls various attributes for the channel. The table below summarizes the various flags that can be set for the flag and its description:

Besides the above properties, some of the other fields control the following features:

special_value f i e ld in bcm_macsec_secure_chan_t i s u sed when por t ' s BCM_MACSEC_PORT_INGRESS_SECTAG_REPLACE_VLANID option is Enabled. In these cases SECTAG can re-placed with special TPID and special_value to form 4 byte special header.

Returns

bcm_macsec_secure_chan_get

Return MACSEC secure channel information corresponding to channel identified by chanId.

Syntax#include <bcm/macsec.h> int bcm_macsec_secure_chan_get(int unit, bcm_port_t port, int chanId, bcm_macsec_secure_chan_t *chan);

Table 41: BCM_MACSEC_SECURE defines

flag DescriptionBCM_MACSEC_SECURE_CONFIDENTIAL Packet confidentiality is desired, encryption/decryption can be done for the

packets belonging to this secure channel. BCM_MACSEC_SECURE_SECTAG_TX_SCI Transmit SCI in SECTAG. BCM_MACSEC_SECURE_SECTAG_ES Set TCI.ES (end-station) bit in SECTAG BCM_MACSEC_SECURE_SECTAG_SCB Set TCI.SCB (single copy broadcast) in SECTAG.

BCM_E_XXX bcm_error_t type

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 68 of 112

Parameters

Description

bcm_macsec_secure_chan_get returns the information corresponding to channel identified by channel ID (chanId) in chan structure. User should always provide valid pointer to chan as this is where the channel information is copied back.

Returns

bcm_macsec_secure_chan_destroy

Destroy MACSEC secure channel corresponding to chanId.

Syntax#include <bcm/macsec.h> int bcm_macsec_secure_chan_destroy(int unit, bcm_port_t port, int chanId);

Parameters

Description

bcm_macsec_secure_chan_destroy will destroy MACSEC secure channel. when the channel is destroyed, all the resources allocated to that channel are freed. Also Any secure associations bound to the channel is destroyed as well and all the tables entries corresponding to the channel are cleared.

Returns

bcm_macsec_secure_chan_traverse

Traverse over all the secure channels for the specified port.

unit (IN) BCM unit

port (IN) Port identifier

chanId (IN) Secure channel identifier

chan (INOUT) Pointer to secure channel structure

BCM_E_XXX bcm_error_t type

unit (IN) BCM unit identifier

port (IN) Port identifier

chanId (IN) MACSEC secure channel identifier

BCM_E_XXX bcm_error_t type

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 69 of 112

Syntax#include <bcm/macsec.h> int bcm_macsec_secure_chan_traverse(int unit, bcm_port_t port, bcm_macsec_chan_traverse_cb callback, void *user_data);

Parameters

Description

bcm_macsec_secure_chan_traverse iterates over all the secure channels which are created for the specified port and calls the user provided callback function for each of the secure channel.

User should provide the callback function which should have the following prototype:

int (*bcm_macsec_chan_traverse_cb)(int unit, bcm_port_t port, bcm_macsec_secure_chan_t *chan, int chanId, void *user_data);

The secure channel callback function will provide the information about the channel in secure channel structure and its channel-id in chanId parameter. user_data passed to the macsec_secure_chan_traverse is passed as parameter to callback function for each secure channel.

Returns

bcm_macsec_secure_assoc_create

Create a MACSEC Secure association for the specified secure channel.

Syntax#include <bcm/macsec.h> int bcm_macsec_secure_assoc_create(int unit, bcm_port_t port, uint32 flags, int chanId, bcm_macsec_secure_assoc_t *assoc, int *assocId);

unit (IN) BCM unit identifier

port (IN) Port identifier

callback (IN) Secure channel traverse callback function pointer

user_data (IN) Pointer to user data

BCM_E_XXX bcm_error_t type

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 70 of 112

Parameters

Description

bcm_macsec_secure_assoc_create creates a secure association for the specified secure channel. Each secure asso-ciation object created is bound to a secure channel.

The flags parameter controls the operation of the API, if the BCM_MACSEC_SECURE_WITH_ID flag is set in the flags pa-rameter, a secure association with the user specified assocId is created if it already doesn't exist. If the already exists, an errno BCM_E_EXISTS is returned.

If the flag parameter contains BCM_MACSEC_SECURE_REPLACE, it updates an already secure association. assocId param-eter specifies the id for the secure assoc in this case. If the association doesn't exist, an error MACSEC_E_NOT_FOUND is re-turned.

If the flag parameter is None (i.e None of the BCM_MACSEC_SECURE_WITH_ID or MACSEC_E_REPLACE is set), then a new secure association object is created and a new assocId is assigned. The assocId in this case returned back to the caller in as-socId.

bcm_macsec_secure_assoc_t structure provides the attributes for the secure association.

typedef struct bcm_macsec_secure_assoc_s { bcm_macsec_secure_assoc_num_t an; /* Association number */ bcm_macsec_crypto_t crypto; /* crypto Type */ bcm_macsec_crypto_aes128_gcm_t aes128_gcm; uint32 flags; /* flags */ uint16 secure_offset; /* secure offset */ uint32 next_pn; } bcm_macsec_secure_assoc_t;

bcm_macsec_crypto_t enum provides the supported crypto suite type.

typedef enum { BCM_MACSEC_CRYPTO_NONE = 0, BCM_MACSEC_CRYPTO_AES_128_GCM, BCM_MACSEC_CRYPTO__COUNT, } bcm_macsec_crypto_t;

bcm_macsec_crypto_aes128_gcm_t structure provides the attributes for the for AES128GCM crypto.

typedef struct bcm_macsec_crypto_aes128_gcm_s { uint8 key[BCM_MACSEC_CRYPTO_AES128GCM_KEY_SIZE];

unit (IN) BCM unit identifier

port (IN) Port identifier

flags (IN) BCM_MACSEC_SECURE_WITH_ID or BCM_MACSEC_SECURE_REPLACE or Zero.

chanId (IN) MACSEC Secure channel ID

assoc (IN) Pointer to MACSEC Secure association structure

assocId (INOUT) Pointer to Secure association identifier

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 71 of 112

uint8 iv[12]; } bcm_macsec_crypto_aes128_gcm_t;

User should always provide pointer to a valid bcm_macsec_secure_assoc_t. The an field in the bcm_macsec_secure_assoc_t structure specifies the assoc number (AN) for the assoc. The bcm_macsec_secure_assoc_num_t should be one of the following:

• BCM_MACSEC_SECURE_ASSOC_NUM_0

• BCM_MACSEC_SECURE_ASSOC_NUM_1

• BCM_MACSEC_SECURE_ASSOC_NUM_2

• BCM_MACSEC_SECURE_ASSOC_NUM_3

crypto field in bcm_macsec_secure_assoc_t specifies the crypto algorithm used for packet encryption/decryption. It should be one of the following:

The flags parameter of the bcm_macsec_secure_assoc_t specifies various attributes of the secure association. The fol-lowing table summarizes the various attributes :

Returns

bcm_macsec_secure_assoc_get

Return MACSEC secure association for the specified assocId.

Syntax#include <bcm/macsec.h> int bcm_macsec_secure_assoc_get(int unit, bcm_port_t port, int assocId, bcm_macsec_secure_assoc_t *assoc, int *chanId);

Table 42: BCM_MACSEC_ASSOC

Flag DescriptionBCM_MACSEC_ASSOC_ACTIVE Sets this assoc are the currently being active. BCM_MACSEC_ASSOC_ROLLOVER Auto rollover, the assoc never expires, once the PN (packet number reaches

0xffffffff, BCM_MACSEC_EVENT_KEY_EXPIRED event is triggered and PN rolls over back to 1.

BCM_MACSEC_ASSOC_ENCAP_REDIRECT Redirect all the packets belonging to this assoc after L2 encapsulation. The L2 header is specified during the port configuration.

BCM_MACSEC_ASSOC_NEXT_PN Sets the next PN number for the secure association BCM_MACSEC_ASSOC_REPLAY_PROTECT Enables Replay protection for the secure association.

BCM_E_XXX bcm_error_t type

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 72 of 112

Parameters

Description

bcm_macsec_secure_assoc_get returns the secure association for the specified assocId. The information about the assoc is returned in the user supplied bcm_macsec_secure_assoc_t structure.

Returns

bcm_macsec_secure_assoc_destroy

Destroys MACSEC secure association for the specified assocId.

Syntax#include <bcm/macsec.h> int bcm_macsec_secure_assoc_destroy(int unit, bcm_port_t port, int assocId);

Parameters

Description

bcm_macsec_secure_assoc_destroy destroys the secure association for the specified assocId and frees any resourc-es allocated to the assoc. If after destroying the assoc, there are no assocs associated with the secure channel, the secure channel is disabled as well.

Returns

bcm_macsec_secure_assoc_traverse

unit (IN) BCM unit identifier

port (IN) Port identifier

assocId (IN) Secure association identifier

assoc (OUT) Pointer to MACSEC Secure association structure

chanId (OUT) Pointer to MACSEC Secure channel ID

BCM_E_XXX bcm_error_t type

unit (IN) BCM unit identifier

port (IN) Port identifier

assocId (IN) Secure association identifier

BCM_E_XXX bcm_error_t type

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 73 of 112

Traverse all the secure associations and call the user provided callback function for each secure assoc.

Syntax#include <bcm/macsec.h> int bcm_macsec_secure_assoc_traverse(int unit, bcm_port_t port, int chanId, bcm_macsec_secure_assoc_traverse_cb callback);

Parameters

Description

bcm_macsec_secure_assoc_traverse traverses all the secure association for the specified secure channel and calls user provided callback function for each secure association.

User should provide the callback function which matches the following prototype:

typedef int (*bcm_macsec_secure_assoc_traverse_cb)(int unit, bcm_port_t port, bcm_macsec_secure_assoc_t *chan, int chanId, int assocId, void *user_data);

Returns

MACSEC FLOW API

Broadcom MACSEC flow API provide the means of creating packet flows and assigning different actions to the flows. A flow is defined a the set of packets with a fixed set of values for different fields in the packet. These APIs program the field processor engine which does the packet lookup. Each flow has a corresponding action primitives that can be assigned to the flow. The action primi-tives dictate whether packets belonging to a flow needs to be assign to MACSEC controlled port, uncontrolled port or dropped. Besides dictating the basic mapping of the flow to controlled port, the action also dictate any packet modification and/or operations that need to be carried on the packets belonging to a flow.

bcm_macsec_flow_create

Create/Update a MACSEC flow object

Syntax#include <bcm/macsec.h>

unit (IN) BCM unit identifier

port (IN) Port identifier

chanId (IN) Secure channel identifier

callback (IN) User provided callback function

BCM_E_XXX bcm_error_t type

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 74 of 112

int bcm_macsec_flow_create(int unit, bcm_port_t port, uint32 flags, bcm_macsec_flow_match_t *flow, bcm_macsec_flow_action_t *action, int *flowId);

Parameters

Description

bcm_macsec_flow_create creates a MACSEC flow on Broadcom MACSEC devices. A flow specifies how to handle packets which have the packet fields matching the ones defined by this flow. Each flow has a corresponding action object (defined by macsec_flow_action_t structure). Actions to the flow specify the actions/operations/packet modifications that need to be carried on the packets belonging to the flow.

The flags parameter to the API controls the behaviors of the API in the following ways:

If the flag BCM_MACSEC_SECURE_REPLACE is set, then this is essentially an update operation. In this case if the flow object doesn't exists, an error is returned, otherwise the flow object and/or its corresponding action object is updated.

If BCM_MACSEC_SECURE_WITH_ID is specified, this will create a flow with the specified flowId if it already doesn't exist.

If none of the flag (BCM_MACSEC_SECURE_REPLACE or BCM_MACSEC_SECURE_WITH_ID) is set, then a new flow is created and the flowId for the newly created flow is returned in the flowId parameter.

bcm_macsec_flow_match_t structure specifies the fields of the packet for which the lookup is done. The definition of the structure sis as follows:

typedef struct bcm_macsec_flow_match_s { int priority; uint32 flags; /* BCM_MACSEC_FLOW_xxx. */ bcm_macsec_packet_format_t pkt_format; /* packet format */ uint8 dst_mac[6]; /* Destination MAC address. */ uint8 dst_mac_mask[6];/* Destination MAC address. */ uint8 src_mac[6]; /* Source MAC address. */ uint8 src_mac_mask[6];/* Source MAC address. */ uint16 outer_tpid; /* Outer TPID */ uint16 outer_vlan; /* VLAN tag. */ uint8 outer_pkt_prio; /* VLAN priority field. */ uint8 outer_pkt_cfi; /* VLAN CFI field. */ uint16 inner_tpid; /* Inner TPID */ uint16 inner_vlan; /* VLAN tag. */ uint8 inner_pkt_prio; /* VLAN priority field. */ uint8 inner_pkt_cfi; /* VLAN CFI field. */

unit (IN) BCM unit identifier

port (IN) Port identifier

flags (IN) flag to indicate the create/update operation

flow (IN) Pointer to bcm_macsec_flow_match_t structure

action (IN) pointer to bcm_macsec_flow_action_t structure

flowId (INOUT) Pointer to Flow-Id

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 75 of 112

uint16 ethertype; /* Ether type of a packet. */ uint8 llc_hdr[3]; /* LLC header */ uint8 snap_hdr[6]; /* 802.3 SNAP header */ uint32 data; /* user defined field */ uint32 data_mask; /* user defined field mask */ bcm_macsec_dir_t direction; /* Ingress Or Egress */ } bcm_macsec_flow_match_t;

The following table explains the various members of the macsec_flow_action_t structure:

Table 43: macsec_flow_action_t

macsec_flow_action_t member Descriptionpriority Specifies the priority of the flow. Higher number have lower priority. Zero is the highest

priority. flags Flags specify which fields in the packet are valid for the flow. pkt_format Packet format. It should be one of bcm_macsec_packet_format_t dst_mac Destination MAC address. This field matched only when

BCM_MACSEC_FLOW_MATCH_MACDA flag is set. dst_mac_mask Destination MAC address mask. This specifies which bits in the MAC address are looked

up for flow matching. src_mac Source MAC address. This field matched only when

BCM_MACSEC_FLOW_MATCH_MACSA flag is set. src_mac_mask Source MAC address mask. This specifies which bits in the MAC address are looked up for

flow matching. outer_tpid Specifies the outer TPID for the packet. This field matched only when

BCM_MACSEC_FLOW_MATCH_OUTER_TPID flag is set. outer_vlan Specifies the VLAN-ID in the outer tag for the packet if the packet is double tagged. This

field matched only when BCM_MACSEC_FLOW_MATCH_OUTER_VLAN flag is set. outer_pkt_prio Specifies the VLAN priority in the outer tag for the packet if the packet is double tagged.

This field matched only when BCM_MACSEC_FLOW_MATCH_OUTER_PKT_PRIO flag is set.

outer_pkt_cfi Specifies the VLAN tag's CFI bits for the packet if the packet is double tagged. This field matched only when BCM_MACSEC_FLOW_MATCH_OUTER_PKT_CFI flag is set.

inner_tpid Specifies the inner TPID for the packet. This field matched only when BCM_MACSEC_FLOW_MATCH_INNER_TPID flag is set.

inner_vlan Specifies the VLAN-ID in the inner tag for the packet. This field matched only when BCM_MACSEC_FLOW_MATCH_INNER_VLAN flag is set.

inner_pkt_prio Specifies the VLAN priority in the inner tag for the packet. This field matched only when BCM_MACSEC_FLOW_MATCH_INNER_PKT_PRIO flag is set.

inner_pkt_cfi Specifies the VLAN tag's CFI bits for the packet. This field matched only when BCM_MACSEC_FLOW_MATCH_INNER_PKT_CFI flag is set.

ethertype Specifies ethertype field for the packet. This field matched only when BCM_MACSEC_FLOW_MATCH_ETHTYPE flag is set.

llc_hdr Specifies LLC header for the packet. This field matched only when BCM_MACSEC_FLOW_MATCH_LLC_HEADER flag is set.

snap_hdr Specifies SNAP header for the packet. This field matched only when BCM_MACSEC_FLOW_MATCH_SNAP_HEADER flag is set.

data Specifies 4 byte data (user defined field) at fixed offset in the packet. The offset is specified during port configuration. This field matched only when BCM_MACSEC_FLOW_MATCH_DATA flag is set.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 76 of 112

Besides matching packet on the packet fields, flows can be created for matching certain events like Secure channel lookup failure etc.

The Table below summarizes some of the flags which can be set in flow's flag to match for certain error conditions:

The flows can be shared in some instances for example to deny packets matching certain signature. MACSEC API tries to share the flows where possible to optimize the use of HW resources. User can override this default behavior for the flow by setting the BCM_MACSEC_FLOW_MATCH_NOT_SHAREABLE in flags field of bcm_macsec_flow_match_t structure.

Each flow has a corresponding action structure associated to it. The bcm_macsec_flow_action_t structure specifies the actions that are performed when the field processor matches packets belonging to the flow. The actions can be classified in 3 broad categories:

The bcm_macsec_flow_action_t structure looks as follows:

typedef struct bcm_macsec_flow_action_s { uint32 flags; /* actions flags */ int chanId; /* secure channel ID*/ int sectag_offset; /* Sectag offset */ uint64 hit_count; /* Counter of number of times the packet matching the flow was encountered */ } bcm_macsec_flow_action_t;

User is responsible to initialize the bcm_macsec_flow_action_t structure with appropriate values when creating the flow. The following table summarizes the meaning of various fields in bcm_macsec_flow_action_t structure:

data_mask Specifies 4 byte data mask for the user defined data (data field) in the packet. direction Specifies whether the flow is valid for Ingress Or Egress direction.

Table 44: Flags

Flag DescriptionBCM_MACSEC_FLOW_MATCH_ERROR_ASSOC_MISS Secure association is not valid BCM_MACSEC_FLOW_MATCH_ERROR_CHAN_MISS Secure channel is not valid or found BCM_MACSEC_FLOW_MATCH_ERROR_REPLAY Replay check failed BCM_MACSEC_FLOW_MATCH_ERROR_SECTAG Invalid SECTAG header found

Table 45: Actions

action category DescriptionDrop Drop the packet Uncontrolled Packet is forwarded to MACSEC uncontrolled port Controlled Packet is forwarded to MACSEC controlled port

Table 43: macsec_flow_action_t

macsec_flow_action_t member Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 77 of 112

The flags field in the bcm_macsec_flow_action_t structure specifies various operations that need to be performed on the packets belonging to the flow. The table below summarizes the flags:

The following flags dictate any special handling for the flow or any actions that need to be taken when the error is detected for the flow:

Table 46: bcm_macsec_flow_action_t

bcm_macsec_flow_action_t member Descriptionflags Specifies the actions like Drop/Controlled/Uncontrolled. Explained more below. chanId Specifies the MACSEC secure channel to which the flow belongs. This field should

be set to valid chanId for the controlled flows. sectag_offset This field specifies the offset at which the SECTAG needs to inserted. This field is

valid for the Egress flows. hit_count This field specifies the number of times the HW encountered packets matching the

flow.

Table 47: BCM_MACSEC_FLOW_ACTION flags

flag value DescriptionBCM_MACSEC_FLOW_ACTION_DROP Drop the packet BCM_MACSEC_FLOW_ACTION_UNCONTROLLED_FORWARD

Forward the frame to uncontrolled port

BCM_MACSEC_FLOW_ACTION_CONTROLLED_FORWARD

Forward frame to controlled port on channel specified by chanId.

BCM_MACSEC_FLOW_ACTION_SECTAG_E_VALUE_0

Set the SECTAG TCI's E bit to value Zero. This flag is valid only for the Egress direction flow.

BCM_MACSEC_FLOW_ACTION_SECTAG_E_VALUE_1

Set the SECTAG TCI's E bit to value One. This flag is valid only for the Egress direction flow.

BCM_MACSEC_FLOW_ACTION_SECTAG_C_VALUE_0

Set the SECTAG TCI's C bit to value Zero. This flag is valid only for the Egress direction flow.

BCM_MACSEC_FLOW_ACTION_SECTAG_C_VALUE_1

Set the SECTAG TCI's C bit to value One. This flag is valid only for the Egress direction flow.

BCM_MACSEC_FLOW_ACTION_SECTAG_V_VALUE_0

Set the SECTAG TCI's V bit to value Zero. This flag is valid only for the Egress direction flow.

BCM_MACSEC_FLOW_ACTION_SECTAG_V_VALUE_1

Set the SECTAG TCI's V bit to value One. This flag is valid only for the Egress direction flow.

BCM_MACSEC_FLOW_ACTION_MAP_SPECIALHDR_CE_BITS

Insert the SECTG TCI.C and TCI.E bits from the special TPID. This flag is valid for only the Egress flows which contain special header coming from upstream Switch/ASIC (i.e. special_tpid).

Table 48: BCM_MACSEC_FLOW_ACTION flags

Flag DescriptionBCM_MACSEC_FLOW_ACTION_SECURE_CHECK_FAIL_DROP

Drop the packets when the error condition is detected.

BCM_MACSEC_FLOW_ACTION_SECURE_CHECK_FAIL_FORWARD

Forward the packet. This allows the packet to continue to be forwarded on error condition.

BCM_MACSEC_FLOW_ACTION_ENCAP_REDIRECT Encapsulate the packet in L2 header (specified in port configuration) and forward.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 78 of 112

Returns

bcm_macsec_flow_destroy

Destroy the MACSEC flow object

Syntax#include <bcm/macsec.h> int bcm_macsec_flow_destroy(int unit, bcm_port_t port, int flowId);

Parameters

Description

bcm_macsec_flow_destroy deletes the flow from the HW and frees any resources allocated to the flow.

Returns

bcm_macsec_flow_get

Find and return the MACSEC flow.

Syntaxint bcm_macsec_flow_get(int unit, bcm_port_t port, int flowId, bcm_macsec_flow_match_t *flow, bcm_macsec_flow_action_t *a);

BCM_MACSEC_FLOW_ACTION_SECURE_CHECK_FAIL_REDIRECT

Redirect the packet after L2 encapsulation on error condition.

BCM_MACSEC_FLOW_ACTION_ADD_SPECIALHDR Insert special VLAN header to packet before forwarding upstream to Switch/ASIC.

BCM_MACSEC_FLOW_ACTION_SET_HIT_COUNT Set the initial value for the Flow's hit count.

BCM_E_XXX bcm_error_t type

unit (IN) BCM unit

port (IN) Port identifier

flowId (IN) Flow identifier

BCM_E_XXX bcm_error_t type

Table 48: BCM_MACSEC_FLOW_ACTION flags

Flag Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 79 of 112

Parameters

Description

bcm_macsec_flow_get returns the flow information and its corresponding action for the specified flowId.

Returns

bcm_macsec_flow_traverse

Traverse all flows for the specified port and call user provided callback function for each of the flow.

Syntax#include <bcm/macsec.h> int bcm_macsec_flow_traverse(int unit, bcm_port_t p, bcm_macsec_flow_traverse_cb callbk, void *user_data);

Parameters

Description

bcm_macsec_flow_traverse traverses over all the flows for the specified port and calls user provided callback function for each flow. When the callback is called, it provides information about the flow and its associated action.

User provided callback function should have the following prototype:

typedef int (*bcm_macsec_flow_traverse_cb)(int unit, bcm_port_t port, bcm_macsec_flow_match_t *flow, bcm_macsec_flow_action_t *action, int flowId, void *user_data);

unit (IN) BCM unit

port (IN) Port identifier

flowId (IN) Pointer to Flow-Id

flow (OUT) Pointer to bcm_macsec_flow_match_t structure

a (OUT) Pointer to bcm_macsec_flow_action_t structure

BCM_E_XXX bcm_error_t type

unit (IN) BCM unit

port (IN) Port identifier

callbk (IN) Pointer to user callback function

user_data (IN) Pointer to user data

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 80 of 112

Returns

STATISTICS & MIB API

Broadcom MACSEC devices support IEEE 802.1AE based MIB. The table below summarizes all the IEEE 802.1AE MIB statistics along with the description.

BCM_E_XXX bcm_error_t type

Table 49: MIB Statistic

MIB Statistic scope DescriptionrxBytes Port The number of received bytes. rxUnicastPkts Port The number of received unicast packets. rxMulticastPkts Port The number of received multicast packets. rxBroadcastPkts Port The number of received broadcast packets. rxDiscardPkts Port The number of packets discarded. rxErrorPkts Port The number of Errored packets. rxUntagPkts Port The number of received packets without the MAC security tag with

secyValidateFrames which is not in the strict mode. rxNotagPkts Port The number of received packets discarded without the MAC security tag

with secyValidateFrames which is in the strict mode. rxBadtagPkts Port The number of received packets discarded with an invalid secTAG or

zero value PN or an invalid ICV rxUnknownsciPkts Port The number of received packets with unknown SCI with the condition :

secyValidateFrames is not in the strict mode and the C bit in the SecTAG is not set.

rxNosciPkts Port The number of received packets discarded with unknown SCI information with the condition : secyValidateFrames is in the strict mode or the C bit in the SecTag is set.

rxOvErrOverrunPkt Port The number of packets discarded because the number of received packets exceeded the cryptographic performance capabilities.

rxSAUnusedPkts Secure association For the SA that is not currently in use, counts the number of received, unencrypted packets with ValidateFrames not in strict mode.

rxNotusinSAPkts Secure association For the SA that is not currently used, counts the number of received packets that have been discarded, and have either the packet encrypted or the ValidateFrames set to strict mode

rxSANotValidPkts Secure association The number of discarded packets with the condition that the packets are not valid and one of the following conditions are true: 1) ValidateFrames in strict mode 2) packets are encrypted

rxSAInvalidPkts Secure association The number of packets with the condition that the packets are not valid and ValidateFrames is in check mode.

rxSAOkPkts Secure association The number of validated packets. rxSCUnusedPkts Secure channel The summation of rxSAUnusedPkts statistics for all the Secure

associations belonging to the secure channel rxNotusinSCPkts Secure channel The summation of rxSANotusingPkts statistics for all secure

associations belonging to the secure channel rxSCLatePkts Secure channel The number of packets discarded due to a PN that is lower than the lower

bound replay check PN when replay protection is enabled rxSCNotValidPkts Secure channel The summation of rxSANotValidPkts statistics for all the secure

associations belonging to the secure channel. rxSCInvalidPkts Secure channel The summation of rxSAInvalidPkts for all secure associations belonging

to the secure channel.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 81 of 112

bcm_macsec_stat_clear

Create all the stats for the specified port.

Syntax#include <bcm/macsec.h> int bcm_macsec_stat_clear(int unit, bcm_port_t port);

rxSCDelayedPkts Secure channel The number of packets received with a PN that is lower than the lower bound replay protection PN.

rxSCUncheckedPkt Secure channel The number of packets received with the following condition : 1) ValidateFrames is disabled 2) ValidateFrames not disabled and packet not encrypted and failed integrity check. 3) ValidateFrames not disabled and packet is encrypted and failed integrity check.

rxSCOkPkts Secure channel The summation of rxSAOkPkts for all secure associations belonging to secure channel.

rxSCvalidtBytes Secure channel The number of octets of plain-text recovered from received packets that were integrity protected but not encrypted

rxSCDCryptoBytes Secure channel The number of octets of plain-text recovered from the received packets that were integrity protected and encrypted

txControlledBytes Controlled Port Sum of all octets of the MSDUs delivered by the user of the Controlled Port to the Secure Frame Generation process, plus the octets of the destination and source MAC addresses.

txControlledUnicastPkts Controlled Port The number of transmitted Unicast packets txControlledMulticastPkts Controlled Port The number of transmitted Multicast packets txControlledBroadcastPkts Controlled Port The number of transmitted Broadcast packets txControlledErrorPkts Controlled Port The number of error packets. txUncontrolledBytes Uncontrolled Port The number of bytes transmitted txUncontrolledUnicastPkts Uncontrolled Port Number of Unicast packets sent to the Secure Frame Generation process txUncontrolledMulticastPkts UnControlled Port Number of Multicast packets sent to the Secure Frame Generation

process txUncontrolledBroadcastPkts UnControlled Port Number of Broadcast packets sent to the Secure Frame Generation

process. txUncontrolledErrorPkts Uncontrolled Port The number of transmitted packets with errors. txUntagPkts Port The number of transmitted packets without the MAC security tag

because ProtectFrames is configured as false. txTooLongPkts Port The number of transmitted packets discarded because the packet length

is greater than the interface MTU. txSAProtectedPkts Secure association The number of integrity protected but not encrypted packets for a

transmitting Secure assoc. txSACryptoPkts Secure association The number of integrity protected and encrypted packets for a

transmitting Secure assoc txSCProtectedPkts Secure channel The number of integrity protected but not encrypted packets for a

transmitting Secure channel. txSCCryptoPkts Secure channel The number of integrity protected and encrypted packets for a

transmitting Secure channel. txSCProtectedBytes Secure channel The number of plain text octets that are integrity protected but not

encrypted on the transmitting Secure channel. txSCCryptoBytes Secure channel The number of plain text octets that are integrity protected and encrypted

on the transmitting Secure channel.

Table 49: MIB Statistic

MIB Statistic scope Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 82 of 112

Parameters

Description

bcm_macsec_stat_clear clears all the statistics/counters for the specified port. This API will clear all the statistics for specified port, including all the secure channels and all the secure associations belonging to the specified port.

Returns

bcm_macsec_stat_get

Return the statistics for the specified statistic type.

Syntax#include <bcm/macsec.h> int bcm_macsec_stat_get(int unit, bcm_port_t port, bcm_macsec_stat_t stat, int chanId, int assocId, uint64 *val);

Parameters

Description

This API returns the statistics for the specified statistic type on the specified port.

Returns

bcm_macsec_stat_get32

Return the Statistics for the specified statistic type.

unit (IN) BCM unit

port (IN) Port identifier

BCM_E_XXX bcm_error_t type

unit (IN) BCM unit

port (IN) Port identifier

stat (IN) MIB stats identifier

chanId (IN) MACSEC secure channel identifier

assocId (IN) MACSEC secure association identifier

val (OUT) Pointer to uint64 for returning stats back

BCM_E_XXX bcm_error_t type

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 83 of 112

Syntax#include <bcm/macsec.h> int bcm_macsec_stat_get32(int unit, bcm_port_t port, bcm_macsec_stat_t stat, int chanId, int assocId, uint32 *val);

Parameters

Description

This API returns the statistics for the specified statistic type on the specified port.

Returns

bcm_macsec_stat_set

Sets the value for the specified stat.

Syntax#include <bcm/macsec.h> int bcm_macsec_stat_set(int unit, bcm_port_t port, bcm_macsec_stat_t stat, int chanId, int assocId, uint64 val);

Parameters

Description

This API sets the specified statistics for the specified statistic type on the specified port to the user provided value.

unit (IN) BCM unit

port (IN) Port identifier

stat (IN) MIB stats identifier

chanId (IN) MACSEC secure channel identifier

assocId (IN) MACSEC secure association identifier

val (OUT) Pointer to uint32 for returning stats back

BCM_E_XXX bcm_error_t type

unit (IN) BCM unit

port (IN) Port identifier

stat (IN) MIB stats identifier

chanId (IN) MACSEC secure channel identifier

assocId (IN) MACSEC secure association identifier

val (IN) Stats value

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 84 of 112

Returns

bcm_macsec_stat_set32

Sets the value for the specified stat.

Syntax#include <bcm/macsec.h> int bcm_macsec_stat_set32(int unit, bcm_port_t port, bcm_macsec_stat_t stat, int chanId, int assocId, uint32 val);

Parameters

Description

This API sets the value for the specified stat.

Returns

EVENT HANDLING API

Event handling API provides the application to receive notifications of certain events happening from the MACSEC software. Most of the events occur in response to Hardware interrupts.

bcm_macsec_event_register

Register application event handler function

Syntax#include <bcm/macsec.h>

int bcm_macsec_event_register(bcm_macsec_event_cb_fn cb, void *user_data);

BCM_E_XXX bcm_error_t type

unit (IN) BCM unit

port (IN) Port identifier

stat (IN) MIB stats identifier

chanId (IN) MACSEC secure channel identifier

assocId (IN) MACSEC secure association identifier

val (IN) Stats value

BCM_E_XXX bcm_error_t type

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 85 of 112

Parameters

Description

bcm_macsec_event_register registers user provided callback function for event handling with the MACSEC module. This callback is invoked by the MACSEC software module in response to event being detected.

User can register multiple handler for event notification, i.e. whenever an event happens, all the handlers are invoked by the MAC-SEC software.

User should provide the event handler callback function pointer conforming to the following signature:

typedef int (*bcm_macsec_event_cb_fn)(bcm_macsec_port_t p, bcm_macsec_event_t event, int chanId, int assocId, void *user_data);

Returns

bcm_macsec_event_unregister

Unregister application event handler function

Syntax#include <bcm/macsec.h>

int bcm_macsec_event_unregister(bcm_macsec_event_cb_fn cb);

Parameters

Description

bcm_macsec_event_unregister API unregisters user provided callback function for event handling with the MAC-SEC module.

cb (IN) Pointer to function of type bcm_macsec_event_cb_fn

user_data (IN) Pointer to user provided data

BCM_E_XXX bcm_error_t type

cb (IN) Pointer to function of type bcm_macsec_event_cb_fn

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 86 of 112

Returns

bcm_macsec_event_enable_set

Enable/Disable event notification for specified event

Syntax#include <bcm/macsec.h>

int bcm_macsec_event_enable_set(bcm_macsec_event_t event, int enable);

Parameters

Description

bcm_macsec_event_enable_set API enable/disables the event notification for the specified event. If the enable pa-rameter is Zero, this will disable the MACSEC event notification to applications. If the enable parameter to the API is One, this will enable the MACSEC event notification to the user applications.

bcm_macsec_event_t enum identifies the event type and has the following definition:

typedef enum { BCM_MACSEC_EVENT_PRE_KEY_EXPIRE = 0, /* Soft expiry */ BCM_MACSEC_EVENT_KEY_EXPIRED, /* Assoc expired */ BCM_MACSEC_EVENT_KEY_RENEWED, /* Assoc created */ BCM_MACSEC_EVENT_HW_FAILURE, /* HW failure */ BCM_MACSEC_EVENT__COUNT } bcm_macsec_event_t;

The following table identifies the event description:

BCM_E_XXX bcm_error_t type

event (IN) bcm_macsec_event_t type

enable (IN) Zero to disable or One to Enable

Table 50: Event types

Event type DescriptionBCM_MACSEC_EVENT_PRE_KEY_EXPIRE Triggered when packet Number (PN) reaches the

ingress_pre_expire_pn Or egress_pre_expire_pn configured for the port.

BCM_MACSEC_EVENT_KEY_EXPIRED Triggered when the Packet Number (PN) for the secure association expires. BCM_MACSEC_EVENT_KEY_RENEWED Triggered whenever a new secure association is created or updated BCM_MACSEC_EVENT_HW_FAILURE Triggered whenever hardware reports failure

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 87 of 112

Returns

bcm_macsec_event_enable_get

Get current event notification status for specified event

Syntax#include <bcm/macsec.h>

int bcm_macsec_event_enable_get(bcm_macsec_event_t event, int *enable);

Parameters

Description

bcm_macsec_event_enable_get API returns current enable/disable status for for the specified event. If the returned value in enable parameter is Zero, this indicates MACSEC event notification for the event is Disabled. Else if the returned value in enable parameter is One, this indicates the event handling for the specified event in Enabled.

Returns

NEXT HOP TRANSPORT

The following new APIs have been added to the Next Hop transport application code. Please refer to the Stacking Guide for details.

next_hop_queue_size_set next_hop_queue_size_get

Set/get the RX and TX Next Hop queue sizes.

Syntax#include <appl/cputrans/next_hop.h>

int next_hop_queue_size_set(int rx_size, int tx_size); int next_hop_queue_size_get(int *rx_size, int *tx_size);

BCM_E_XXX bcm_error_t type

event (IN) bcm_macsec_event_t type

enable (OUT) Pointer to integer where current event status is returned

BCM_E_XXX bcm_error_t type

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 88 of 112

Parameters

Description

The application may set Next Hop RX and TX queue sizes. The default values for RX and TX queue sizes is 32.

Calling next_hop_queue_size_set with a negative number for either of the sizes means do not change the current value of that size. Using a value of 0 is a parameter error. Any positive number can be configured but the next_hop_start API may fail if the queue memory allocation fails.

The next_hop_queue_size_get API should fill in the current value of RX and TX queue sizes when the pointers are non-null.

next_hop_queue_size_set must be called when Next Hop is not running. next_hop_queue_size_get can be called at any time.

Returns

rx_size RX queue size

tx_size TX queue size

BCM_E_BUSY next_hop_queue_size_set called when running.

BCM_E_PARAM Invalid value.

BCM_E_NONE Otherwise.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 89 of 112

Section 6: Resolved Issues

The following issues are resolved in this release of the SDK.

Table 51:

Number Release Note15676 Resolve race condition that leads to L2X thread failing to start under some circumstances. 16539 Add gport trunk support for bcm_vlan_translate_add/delete/get API on BCM56601. 16733 Added the following new configuration parameters for SBX queuing devices (QE-2000):

"fabric_connect_min_utilization" - fabric minimum utilization (anemic watermark setting). This is specified as a percentage. "fabric_connect_max_age_time" - fabric connection age time (anemic age timeout). This is specified in micro-seconds. This changes how internal resources are allocated. This will effect easy reload functionality across releases.

16792 BCM88020 Microcode: RPF check for IP SA was changed from VLAN based to port based 18555 RPF mode is configured per SA 19078 Fixed occasional abnormal termination of shell command 'port'. Typical error message was "Error: Could not get port

X remote abilities". 19100 Add the BCM_IPFIX_SUPPORT compiler option to include IPFIX code only when the feature is included. 19152 Changed to not display 8 entries for PG_xxx registers on GE ports for BCM56624 and BCM56680. 19211 bcm_trunk_set changed to invalidate only ports that are not member of a new trunk and not all ports in a trunk 19235 Added HW CPU RX per-COSq packet rate support in 56514. 19350 Fixed COSQ mapping for 5690 and 5695 devices. 19615 Resolved integer overflow, in cpu rx rate limiting. 19715 Fix snmpIfOutDiscards of bcm_stat_get API to properly include the number of packet dropped by the specified

egress port. 19717 Repaired the IPMC (*,G,V) feature on BCM5674 devices. 19728 Fixed egress vlan translate action traverse API implementation. 20265 Implemented LER and LSR API for BCM88020 and BCM88025 devices running microcode v1.3 (g2p3) 20336 Added 3 new configuration variables to disable help display / memlist / reglist commands from CLI

help_cli_enable memlist_enable reglist_enable 20433 Changed memory allocation for the _xgs3_async_queue_t structure from DMA to regular memory. 20507 Fixed the parsing of the diag shell port local speed advertisement command. 20801 RCPU synchronous and asynchronous TX calls implemented properly. 20844 Support for SBX devices running VxWorks on BCM98548XMC boards. 20862 Adjusted "bcm_cosq_gport_add()" implementation for QE-2000 devices to check for global/local queues

in order to support TME and Hybrid mode of operations. 20863 in QE2000, expedited forwarding (EF) queues were directed to non-EF FIFO for local queues 20975 Spanning Tree Learn and Drop have separate exceptions 21406 Added support for overlaying multiple ports on the same node on SBX fabric devices. 21436 Remove unnecessary extra delay after PCI reset on BCM56624 and BCM56680. 21447 Adjusted BCM88020 MAC settings to perform length check by default. 21572 Version command now displays the available PHY drivers. 21766 For VPWS VPN, BCM_MPLS_PORT_DROP Flag was ignored within implementation. With this fix, the Flag sets

DROP bit in ING_L3_NEXT_HOP for VP1. When VP2 is added to the VPN, DROP bit for vp1 is retained in ING_L3_NEXT_HOP.

21784 Changed "COSPPS" argument to CLI rxcfg command to allow per-COS assignment. 21884 Added support for configuration value bcm_cosq_sp_mode=1 to achieve better strict priority accuracy and

lower latency for BME-3200 and non-virtual port BCM88130 configurations.

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 90 of 112

22503 Fixed BCMX field APIs bcmx_field_counter_get() and bcmx_field_counter_get32() to collect counter values from all applicable units.

22531 The bcm_l2_addr_add API now inserts entries into the internal L2 table when external L2 table is full on BCM56624.

22611 Fix trunk show diagnostic command to display correct port name on BCM56624 and BCM56680. 22653 BCM88130 drive strength/equalization settings for the SERDES links have been updated to cover the range of

anticipated values. Also, the equalization algorithm has been updated/refined based upon hypercore test results. 22684 SDK returns the appropriate MAC_ADDRESS within bcm_l3_egress_get, based on the ENTRY_TYPE

field for devices that support MPLS. 22691 Added Diagnostic Shell command "policer monitor" to support attachment of policer monitors to policers for

BCM88020 devices for debug purposes. 22962 Reduced bcm_init() time in BCMSIM environment by leveraging DMA operations and optimizing PCID

protocol. 22990 Added support for translation of physical port numbers in the BCM API dispatch layer. Port numbers that are part of a

global/system port ID (module ID + module port number) are *not* translated as this requires additional support from either hardware or system software. Translation support is disabled by default.

23011 Added log messages in case of invalid input params to bcm_l2_cache_* on BCM88020 and BCM88025 devices running Gu2k v1.3 (g2p3) microcode.

23051 Fixed linux module loading failures when RPC support is not compiled in. 23087 bcm_mpls_port_get() now returns encap_id in bcm_mpls_port_t. 23106 Fixed resource leak when an invalid policer was created on BCM8802x devices running microcode v1.3 (g2p3) 23154 When a VPWS vpn is created using flag BCM_MPLS_VPN_WITH_ID, the VPs are marked as USED within the

SDK. 23155 The BCM_MPLS_PORT_WITH_ID flag is now supported for the bcm_mpls_port_add API. 23317 Fixed field actions conflict check implementation. 23318 Updated calculation of EGRESS_MASK index in bcm_port_egress_set API for XGS4 devices. 23342 Enhanced bcm_cosq_discard_* functions for 5682x/5672x devices to use the full WRED features, in

agreement with the bcm_cosq_gport_discard_* APIs. 23462 bcm_mpls_port_add() may now be used to add a trunk to vpn with match criteria as

BCM_MPLS_PORT_MATCH. 23471 Apart from the existing mechanism for SWAP/LSR configuration, a new-mode is added for SWAP/LSR configuration.

With the new-mode, L3 Egress object contains mpls_label parameter that specifies the MPLS label for PUSH, PHP or SWAP operations. If the MPLS label is SWAP, then BCM_L3_ROUTE_LABEL should not be set. Existing Mode: The tunnel-switch egress_label is only used if the action is SWAP. New Mode: The tunnel-switch egress_label must be initialized to 0, and tunnel-switch egress_if point to an Egress Object which must contain the SWAP label information (label, EXP, TTL). The existing-mode is maintained for compatibility purposes. The new-mode is recommended. With reference to the Customer requirements: 1. The next-hop allocation happens during the creation of Egress object. No new next hops are allocated during tunnel switch creation. Multiple tunnel switch entries can point to the same egress object. This reduces the wastage of next_hop_index in bcm_mpls_tunnel_switch_add. 2. Customer can manage the Next-Hop-Index allocation through Egress-Object create. 3. The Ingress-Label allocation is through bcm_tunnel_switch_add. The Egress-Label allocation is through bcm_l3_egress_create.

23508 Fix null-pointer access in warm boot VLAN reinitialization. 23714 The MC_FULL_EVAL_MIN bit in the ESET on the BM9600 can be controlled by the

bcm_fabric_distribution_control_set() API. 23856 Diag shell command "memshow" did not display KaEiMemDataEntry correctly on QE-2000 devices. 23858 Fixed field group installation on HiGig ports programming on XGS4 devices. 23941 Fixed segmentation fault in "l2" command on XGS3 devices. 23944 Array counters were not treated properly in soc_counter_set/set32. 24033 Repaired crash in trunk module software failover on fabric trunks. 24053 Fixed counter allocation/deallocation and counter modes for bcmFieldActionUpdateCounter. 24054 Added error handling for bcm_l2_addr_add during mcast entry install 24078 Fixed VLAN translation key software conversions. 24170 Correct potential memory corruption in bcm_stk_fmod_smod_mapping_get/set APIs on XGS3+

devices.

Table 51:

Number Release Note

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 91 of 112

24175 Added support for BCM_GPORT_IS_LOCAL_CPU and removed support for BCM_GPORT_IS_LOCAL in the bcm_port_local_get API

24258 For L3 VPN with 2 labels, the Inner Label MPLS_EXP is configured with user supplied value within bcm_l3_egress_t. Accordingly, the MPLS_EXP_SELECTf is set to 0, the MPLS_EXPf is set to user configured value, NEW_PRIf and NEW_CFIf are initialized (not applicable).

24297 BCM88025 10Gig ports can now be configured to operate in HiGig mode by removing them from "pbmp_xport_xe" bitmap and setting "10g_is_cx4" as "0" in SDK configuration parameters.

24367 Fixed bcm_vlan_translate_egress_action_get() routine to access correct memories. 24371 Added IP multicast support to bcm_l3_conflict_get API. 24544 Allow CLI 'tr 23' command to run on BCM56802 and other XGS3 switch devices that have no Ethernet ports enabled. 24545 Added sanity checks to mirror destinations reference counter update operations. 24546 Added bcm_trunk_failover_set/get functions to allow advanced configuration of HG trunk failover. 24648 bcm_mpls_tunnel_switch_add(unit &tun_switch) can be used to add new entries to

MPLS_ENTRY table. The same API can be used to update the added entries within MPLS_ENTRY table. 24719 Added the ability to store and to retrieve BCM88130 NM memory content from the crossbar in order to assure non-

disruptive warmboot operations if crossbar is available on the same card.This is a fix for NM memory issue that is encountered during Warmboot. The fix is for a configuration in which the same card contains the arbiter device and a a XBAR device. BME NM data is then backed on XBAR device. It is required that the XBAR device be initialized (soc init) before the BME device on the card.

24766 Fixed bcm_field_action_delete for bcmFieldColorIndependent action. 24770 Fixed qualifiers offset copy in bcm_field_group_set API. 24774 The bcm_pkt_t.rx_untagged field for BCM56624, BCM56820, BCM56634 and BCM56524 families now

returns values compatible with older XGS 3 chips. 24775 Match BCM5682x gigabit MAC drop vector initialization to BCM5662x. 24777 Added a new flag BCM_L3_COPY_TO_CPU, which might be used to copy L3 traffic to CPU

BCM_L3_DST_DISCARD - might be set in bcm_l3_egress_create to drop the traffic. 24778 Reduced soc_tunnel_term_t structure size to 96 bytes. 24779 Corrected BCM5672x warmboot recovery of VLAN information. 24780 Prevented calls to the pipe_mem_clear routines for all XGS chips in warm boot mode. 24782 Instead of disabling soc_miim_write() during warm boot, we now disable actual PHY register write

operations. This enables read operations to be successful. 24807 VLAN cross-connect entries are now not aged out on BCM56624. 24808 Key to MPLS_ENTRY table can be: 1. (mpls label) only (For global MPLS labels) 2. (mpls label, ingress GLP) (For

local MPLS labels) Any incoming mpls packets with label falls in the range defined by GLOBAL_MPLS_RANGE_X_LOWERr and GLOBAL_MPLS_RANGE_X_UPPERr, where X equals to 1 or 2, will be treated as global label. This space is initialized to the full label space. User need to use SwitchControls to reconfigure the Global label space.

24811 Added new functionality to preserve field statistics value when statistics entity is not attached to any entry. 24846 Fixed bcm_ipmc_add to handle the BCM_IPMC_SOURCE_PORT_NOCHECK flag properly. 24847 VC_AND_SWAP_LABEL entry was not freed when the API bcm_mpls_tunnel_switch_delete()

was invoked. This problem is fixed. 24848 Support the per-port configuration for ignoring VLAN-Tag in the incoming packet. 24886 Fixed bcm_field_show API for stage Egress and Lookup on 5682x devices. 24963 Fix coding of register definition to prevent from possible compiler complain. 24965 Fix incorrect replacement of MAC2VLAN table when adding new entries. 25108 BCM88020 and BCM88025 devices running g2p3 microcode will continue to receive learning exceptions after learning

64k or more MAC addresses on the same VSI and port. 25111 bcm_mpls_port_get/get_all() returns 'egress_tunnel_if' for entry_type 2. The flags

returned by these two APIs are consistent with the flags used while creating the corresponding port using bcm_mpls_port_add( ) API.

25138 Diag shell "memshow" command did not work properly for some of QE-2000 memories. 25142 bcm_port_gport_get API was updated to handle Fabric devices without modids.

Table 51:

Number Release Note

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 92 of 112

25145 Adjusted QE-2000 burst size to 32 for the packet interleaved mode in order to assure the ability to run at 10GE data rate even for the smallest packet sizes.Performance testing of the data path through the QE2000 at 10GE data rate shows a significant performance bottle neck occurring for small packets sizes.. This will ensure that the egress pipeline is kept busy. This results in maintaining line rate.

25146 Fixed spurious learning exceptions on ports not belonging to a vlan on BCM88020 devices running microcode v1.3 (g2p3)

25147 bcm_mcast_bitmap_* functions will now operate after warm boot on 567xx devices. 25149 Diag shell commands getreg/setreg/modreg did not work for BCM88025 MAC registers. 25179 Fixed memory de-allocation during ipfix thread exit. 25181 Fixed broken shell command "phy info" on BCM8802x devices. 25183 BCMX API bcmx_l2_bpdu_get() would always returns BCM_E_NOT_FOUND. 25198 Fixed invalid header generation on egress when DoS checks were enabled on BCM88020 devices running microcode

v1.3 (g2p3) 25199 Fixed intermittent internal errors when bcm_port_enable_set() was called on GE ports on BCM88020

devices running microcode v1.3 (g2p3) 25201 Added support for hybrid mode for QE2000/BCM88130 configuration. 25202 Diagnostic shell command "memset" now supports BCM88130 memories. 25205 Updated the _bcm_shutdown API to use the new detach framework for clean shutdown. 25206 Fixed bcm_field_entry_priority set implementation for 5682x devices. 25225 Fixed field group auto expansion on 5682x devices. 25273 Update microcode selection on BCM88020 devices running g2p3 microcode version gu2c1l2 1.3.75. Config property

l3_enable=0 implies 20Gbps microcode 25274 Diagnostic shell command "memset" did not work for non-cache version of BCM88130 Node mapper Memories

(memories with names starting with PLNM). 25275 Updated diagnostic test TR 116 to work on BCM88025 devices. 25276 Disabled QE-2000 error correction code for EI control memories in order to avoid erroneous reporting of SPI4.2 packet

corruption. 25278 On 5682x and 5672x devices, bcm_port_force_forward_set no longer returns BCM_E_UNAVAIL. 25280 Added support to device physical addresses greater than 32 bits. Assumes kernel has been configured with

CONFIG_RESOURCES_64BIT when using physical addresses greater than 32 bits. Also, target needs to define PHYS_ADDRS_ARE_64BITS.

25281 Fixed field group installation on Higig ports programming on XGS4 devices. 25283 Exclude PAUSE frames from IfInUcastPkts and IfHCInUcastPkts statistics counters. Problem observed on 10G ports

only. 25293 For MPLS ports, bcm_l2_delete_by_port( ) might not delete the L2 entry if the MPLS virtual port is

already deleted. 25296 Fixed bcm_vlan_port_policer_set to attach a policer to a <port, vid> pair irrespective of VID

membership on BCM8802X devices running Gu2k v1.3 (g2p3) microcode 25302 Fixed 'bcm_l2_learn_class_set' API to account for 'class' parameter value. 25314 Updated bcm_mpls_port_delete to clear additional state when called on BCM8802x devices running

microcode v1.3 (g2p3). 25397 Added support for port bitmap instead of port number as port match mechanism in bcm_field_* APIs on

BCM88020 and BCM88025 devices running Gu2k v1.3 (g2p3) microcode 25416 BCXM API bcmx_l2_learn_limit_get() was not getting correct values. 25417 Pedantic compilation warnings in internal BCM Field API headers resolved. 25426 Fixed user cookie handling in bcm_l3_egress_traverse API. 25434 bcmx_l2_conflict_get() was corrupting heap memory. 25442 Support jumbo packet size up to 12K bytes for BCM54980 PHY device. 25444 Added diagnostic shell commands "fabric gport discard_show/set" for SBX fabric devices. 25445 Added support for Diag Shell commands "memshow" and "memset" for BME-3200 devices. 25456 Re-enabled hardware accelerated L2 aging for BCM5690. 25460 Change code to allow GXPORT XE port to run at higher than 10G speed when it is converted to HG port. 25461 bcm_port_enable_get() on the BCM88130 now checks that the port is enabled and the transmitter and

receiver are not powered down to determine whether the port is enabled.

Table 51:

Number Release Note

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 93 of 112

25464 BCM API documentation now reflects that it is necessary to re-initialize the mirror module if the directed mirroring switch control is turned on or off.

25465 Fixed next hop table sw state recovery during warm boot. 25466 When moving an L2 entry from the internal to the external table, the SDK now checks if external L2 table insertion is

successful. The entry from the internal table is deleted only on success. 25467 For G2P3 ucode application, in case of MPLS LER, the VRF is obtained from the VSI derived from the Label2Etc

lookup. 25470 bcm_fabric_control_set() did not enable load sharing properly for bcmFabricRed1Plus1LS and

bcmFabricRed1Plus1ELS modes on BCM88130 (BME9600) device. 25471 Added a new member l3a_inner_vlan to the bcm_l3_intf_t structure. 25473 The bcm_vlan_translate_egress_action_traverse_cb function signature was changed. 25474 Fixed bug in field qualifiers list initialization if SDK compiled without TRX support. 25475 Added stacking support for BCM956024R48GT board. The stk.soc config variable is "sdk_xgs3_48g2". 25477 Add MIB counters, ifInBroadcastPkts, ifInMulticastPkts, ifOutBroadcastPkts and ifOutMulticastPkts(RFC 1573). 25482 Upgraded support for multiple simultaneous vlan gport behaviors on a single physical port when created on BCM88020

and BCM88025 devices running microcode v1.3 (g2p3) 25485 Fixed resource leak when bcm_multicast_egress_delete() was called on QE2000 devices. 25488 Fixed vrf binding update operation in bcm_l3_interface_create API. 25489 Fixed BCM56629 40GE mode dport mapping. 25490 Fix bcm_wlan_tunnel_initiator_destroy crash on BCM56634. 25506 Fixed Source ID parsing in generic route header parser for BCM8802x and QE2000 devices running Gu2k v1.3 (g2p3)

microcode 25507 Fixed bcm_l2_cache_set() for BCM88020 devices to avoid adding IEEE MAC address with least significant

byte masked multiple times to the MAC table 25508 BCM88020: Added support for 'ingress filter (disable)' and 'drop tagged' features to bcm_vlan_vector_set

implementation. 25509 Fixed incorrect virtual port indexing in bcm_wlan_tunnel_terminator_vlan_set/get APIs. 25516 Fixed memory allocation for traverse functions in the WLAN module. 25530 Used the correct read-modify-write function for the EGR_L3_NEXT_HOP table in the MPLS and WLAN modules. 25531 Changed Higig ports' IFG to 8 bytes in order to support line rate. 25533 Fixed bcmFieldQualifyOuterVlan qualifer implementation for ingress FP. 25576 Added bcmPortControlEgressNonUnicastLossless to control lossless/lossy behavior for QE-2000 devices. This

configuration should be set before the node arbitration is enabled via "bcm_stk_module_enable()". 25577 Fixed resource leak when bcm_mpls_port_delete() was called on BCM88020 devices running microcode

v1.3 (g2p3) 25578 Correct double-counting of snmpIfInUcastPkts and snmpIfHCInUcastPkts in 5682x and 5672x devices. 25580 BCM88025 initialization code was adjusted to include PVT compensation for external memories. 25581 Add the support to the field actions to handle packets classified as green for Robo chips. 25582 Fixed exception during entry move across the slices. 25646 Change code to allow specifying combinations of limit flags for bcm_l2_learn_limit_set. 25647 Memory corruption caused during bcm_subport_port_get is fixed. 25650 Fixed incorrect handling of priority mapping of untagged packets for vlan gports on BCM88020 devices running

microcode v1.3 (g2p3) 25652 Fixed the failure of bcm_subport_port_add() API for an error in checking the local modid. 25657 Fixed MPLS encapsulation header generation on BCM88020 and BCM88025 devices running microcode v1.3 (g2p3) 25659 Fixed CPU port handling in bcm_cosq_gport_sched_set/get for 5662x and 5668x devices. 25661 Fixed microcode on BCM88020 devices that caused learn messages from certain ports on a SPI-4 and GE front panel

ports that get mapped to SWS queues above 56 to not be forwarded to the cpu properly and potentially hang the device. 25705 Added support for ifInBroadcastPkts, ifInMulticastPkts, ifOutBroadcastPkts and ifOutMulticastPkts(RFC 1573) for all

XGS chips. 25877 Fixed the CLI port command to allow specifying the autoneg advertisement on 5682x devices. 25878 Mistook drop target as valid translation target when disabling ingress filtering on BCM88020 and BCM88025 devices

running microcode v1.3 (g2p3)

Table 51:

Number Release Note

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 94 of 112

25879 Fixed bcm_vlan_port_destroy() when called on BCM8802x devices running microcode v1.3 (g2p3), would incorrectly return BCM_E_RESOURCE error under certain circumstances.

25880 BME-3200 initialization code has been adjusted to return errors instead of performing asserts for hardware errors. 25882 Fixed field entry priority assignment on 5682x devices. 25891 Fix possible early return from bcm_l2_replace API before the entire process finished on external L2 table. 25917 Programmed IGNORE_UPD_CHECKSUM to 1 for CAPWAP tunnels. 25918 BCM88025 initialization code has been updated to properly initialize the registers for both MMUs. 25978 Add support of bcmPortControlTrunkHashSet, bcmPortControlFabricTrunkHashSet, bcmPortControlECMPHashSet,

bcmPortControlLoadBalanceHashSet to bcm_port_control_set/get API on BCM56624. 25980 Fixed egress vlan gport stp state updates when invoked on BCM88020 and BCM88025 devices running microcode v1.3

(g2p3) 25982 Added soc properties "qe_hi_mc_priority" and "qe_lo_mc_priority" to define the relative

priority of multicast packets on QE2000 devices. 26072 Adjusted Diag Shell commands "fabric gport sched_set" and "sched_get" for SBX devices in order to

support AF, EF and SP_GLOBAL qos types. 26075 Changed code to do PPA on external TCAM only when external L2 table is configured. 26076 Four Switch controls added to configure Port Independent Label Ranges:

bcmSwitchMplsPortIndependentLowerRange1, /* Port Independent Lower MPLS Label for Range-1 */ bcmSwitchMplsPortIndependentUpperRange1, /* Port Independent Upper MPLS Label for Range-1 */ bcmSwitchMplsPortIndependentLowerRange2, /* Port Independent Lower MPLS Label for Range-2 */ bcmSwitchMplsPortIndependentUpperRange2, /* Port Independent Upper MPLS Label for Range-2 */

26077 Fixed the calculation of COS weights for DRR scheduling for BCM56514 and BCM56218 families. 26080 Fix incorrect show of entry information when doing field group dump. 26223 Fixed egress packet leak when bcmPortControlOamLoopback was enabled on BCM8802x devices running microcode

v1.3 (g2p3). 26266 Fixed the mapping of hardware L2 entries to the API structure for different types of virtual port unicast cases for

BCM56520 and BCM56634 families. 26270 Fixed the usage of the BCM_IPMC_SOURCE_PORT_NOCHECK flag for BCM56224 and BCM56024 families. 26404 Enhanced the diag shell "phy" command to support new arguments. 26405 Fixed the problem that FE phy driver on bcm5324 is probed as unknown phy driver. 26406 Fixed counter value handling in case entry moves across the slices. 26407 Fix the problem on restoring port information when doing the "TestRun" at bcm5324 26408 Fixed field entry index overflow in slice flush all sdk call. 26409 Fixed packet reflection on vlan gports contained in a LAG on BCM88020 and BCM88025 devices running microcode

v1.3 (g2p3). 26415 IPv6 in IP tunnels did not work via proxy on XGS3 devices 26420 Reduced the time spent in the critical region in bcm_fabric_crossbar_enable_set() for BME-3200

devices. Also changed the number of NULL Grants to send on a failover to a more conservative value. 26422 Added support for the Simple RED feature for BCM56514. 26424 Fixed BCM56624 counter display problem on port 14 and 15 to allow proper display of all 24 PERQ_PKT and

PERQ_BYTE counters. 26425 Fixed vrf id programming in external route table on XGS4 devices. 26455 On BCM88020 and BCM88025 devices, drop precedence from the policer was not taken into the account for egress

priority mapping. 26459 A fix to bcm_port_control_set() was made for PRBS running on BCM88130 SERDES so that 8b10b

encoding is not automatically enabled when PRBS is disabled. 26521 The super isolate mode is now disabled in the PHY upon reset. This change is applicable to BCM53115, BCM53118,

BCM53314, BCM5395, BCM5398, BCM5401, BCM5402, BCM5404, BCM5411, BCM5424, BCM5461, BCM5464, BCM5466, BCM54680, BCM54684, BCM5478, BCM5482, BCM5488, BCM54980, BCM54980C, BCM54980V, BCM54980VC.

26688 Added configuration property "l2cache_max_idx" to control the number of entries for the L2 cache on BCM88020 and BCM88025 devices running microcode v1.3 (g2p3)

26697 Support RCPU feature on XGS IV devices. 26707 Fixed error condition handling in the bcm_vlan_ip_add API.

Table 51:

Number Release Note

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 95 of 112

26708 bcm_field_stat_set() API might not change the secondary counter in the FP_COUNTER_TABLE on BCM5662X devices.

26709 Remove dead code in bcm_l2_addr_delete API for BCM56624. 26775 Remove unnecessary reset action when setting to a different speed in 8726 PHY driver. 26779 Fixed batch updates to the L2 table on BCM88020 and BCM88025 devices running microcode v1.3 (g2p3) 26780 Correctly reflect the GE port's capability in the NULL PHY driver. 26788 Support API to configure the protocol-vlan's priority for BCM53242 26821 Corrected external TCAM TX and RX phase offset programming during initialization for BCM56624. 26903 Fixed inconsistent usage of supported max l2 cache index. Applicable only to BCM88020 and BCM88025. 26904 Fixed QOS profile corruption when calling bcm_port_untagged_vlan_set() after calling

bcm_port_vlan_priority_mapping_set() for untagged packets on BCM88020 and BCM88025 devices running microcode v1.3 (g2p3)

26907 Add support for 8727 PHY device 26909 Added implementation for bcm_mpls_vpn_id_get() API 26933 BCM88020 and BCM88025 devices running microcode v.1.3 (g2p3) now mask the ls-byte of the private l2cp Mac

address prior to L2 lookup. 27017 No exception occur during L2 show with mpls entry 27043 Added support for maskable src_port and mac for bcm_l2_cache_set API on BCM88020 and

BCM88025 devices running Gu2k v1.3 (g2p3) microcode. 27180 Improved performance of vlan_vector_set() for vlan gports with

BCM_VLAN_PORT_INNER_VLAN_PRESERVE set when called on BCM88020 and BCM88025 devices running microcode v1.3 (g2p3)

27184 bcm_board_unknown_src_modid_setup() was not setting modid. 27185 IPV4 Multicast ACL support for BCM88020 and BCM88025. 27189 Fixed counter allocation/deallocation and counter modes for bcmFieldActionUpdateCounter. 27190 bcm_port_untagged_priority_set() does not change priority for tagged packets 27191 Resolved confusion in the DCB type of 5650x B0 devices. 27193 Fixed the duplicate multicast index for multiple multicast address entries in the ARL table on ROBO chips. 27195 Fix counter thread crash when running gsanity on 56024. 27214 Cleared IPFIX tables during initialization to avoid code errors while using the "dump socmem" command. 27270 Updated support for configurable number of COS levels (up to a max of 8) on BCM88020 and BCM88025 devices

running microcode v1.3 (g2p3) 27271 Implementation of the Diagnostic Shell command "memset" for QE-2000 devices is modified to memset all three copies

of EI memories at once. 27272 Enabled clear-on-read for QE-2000 devices so that queue counters are automatically cleared when read. 27298 Now the definition of NO_FILEIO does not cause the exclusion of <stdio.h> except in the Linux kernel mode. 27300 The definition CROSS_COMPILE is now not overridden in Makefile.linux-kmodule-2_6. 27301 Make variables WIND_BASE, WIND_HOME, WIND_HOST_TYPE, INCLUDE_DRIVERS and

BSP_DIR are not overridden in the Makefiles if they are set. 27305 BCM88020 and BCM88025 devices running microcode v1.3 (g2p3), support L2CP Source knockout on LAG ports 27307 Switch bypass mode now changes L3 features only on 5682x/5672x devices. 27308 Topology programming was clearing the egress mask for BCM565X4 devices on dual device platforms. 27309 Fixed assert failure due to limit overflow within _bcm_trx_rate_meter_portmode_set API. 27310 Fixed maximum VRF computation for BCM56524. 27311 _bcm_rx_shutdown() was accessing uninitialized memory. 27312 bcmx_tunnel_terminator_add() was returning BCM_E_INVALID 27313 Fixed broken diag shell command "egress show'. 27315 Fix parameter validation in bcm_ipmc_add, which could fail incorrectly on certain dual-modid devices. 27327 Added support for BCM88020 microcode v1.3 (G2P3) to the implementation of

bcm_mpls_exp_map_create(),bcm_mpls_exp_map_destroy(), bcm_mpls_exp_map_set(), bcm_mpls_exp_map_get() for MPLS LSR.

27359 Source files now include config.h from the BSP directory under VxWorks instead of configAll.h which is the new recommended method.

Table 51:

Number Release Note

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 96 of 112

27360 Fix over limit action for bcm_l2_learn_limit_set API on BCM56224. 27361 Improved performance of bcm_vlan_vector_set when called on BCM88020 and BCM88025 devices running

microcode v1.3 (g2p3). 27364 Fixed missing l2_addr callbacks caused by incorrect L2 entry comparison. 27365 Fixed incorrect calculation of the egress cell count for the BCM56224_B0 family. 27367 Fix port translation for bcm_mcast_join/leave and bcm_port_egress_set/get APIs. 27387 Fixed the implementation of the API bcm_mpls_tunnel_switch_add for the action of SWAP by setting

MPLS_ENTRY.DECAP_USE_EXP_FOR_INNERf to 0. 27388 TTL within L3 VPN inner-label is copied from the TTL of the IP Payload. 27389 MPLS VPN Port add CLI takes QoSMapId as argument as shown: mpls vpn port add VPN=<vpn_id> Port=<port>

PortMatch=<pm> IntfFlaGs=<flags> VCInitLabel=<vcinit_label> EgrLabelOptions=<labelopt> VCTermLabel=<vcterm_label> Vlan=<vlan> EgrTTL=<egress_ttl> QoSMapID=<qos_map_id> ServiceVID=<vlan> ServiceTPID=<tpid> IntfCLass=<val> EXPMapPtr=<exp_ptr> IntPRI=<pri> InnerVLAN=<vid> MTU=<val>EgrObj=<egress_obj_id>

27437 Fixed mirror destination selection for diff serv action copy to mirror port. (BCM_DS_ACTN_COPY_TO_MIRROR)

27450 Macro COMPILER_64_BITTEST no longer modifies the first argument. 27451 Added support for additional BCM_TRUNK_PSC port selection criteria for BCM88020 and BCM88025 devices. For

the BCM88020 and BCM88025 the PSC applies to both IP and non-IP traffic uniformly. There is a single PSC specified per-device and must be specified when the first port is added to the first trunk group. A new PSC may be applied to the device once all existing trunk groups have been destroyed. The default PSC if none is specified is: psc = BCM_TRUNK_PSC_MACSA | BCM_TRUNK_PSC_MACDA | BCM_TRUNK_PSC_IPSA | BCM_TRUNK_PSC_IPDA | BCM_TRUNK_PSC_L4SS | BCM_TRUNK_PSC_L4DS.

27457 Support for CpuProtoBpduPriority switchcontrol was added for BCM88020 and BCM88025. 27459 For the case of LSR for PHP operation, packets with Label-Stack-depth of 1 works as expected with

EGR_L3_NEXT_HOP.ENTRY_TYPE=0. However, when the Label-Stack-depth is greater than 1, the PHP functionality fails. This problem is fixed with EGR_L3_NEXT_HOP.ENTRY_TYPE=1, and appropriate configuration of EGR_MAC_DA_PROFILE.

27476 Experimental IPv4 support has been disabled for BCM88020 devices running microcode v1.3 (g2p3). BCM88020 devices run 20Gbps L2 configuration.

27478 Added system loopback support for BCM8072/8073 and BCM8726/8727 PHY device 27495 BCM88020 and BCM88025 devices running microcode v1.3 (g2p3): Fixed iterator tracking in lookup tables which

caused get_next routines to fail. 27496 Enhanced BCM88020 and BCM88025 microcode v1.3 (g2p3) to support up to 128 ECMP paths. 27504 QE-2000 interrupt handler did not have proper exception handling for potential Rx timeout cases. 27505 Fixed Trunk bit reset in bcmFieldQualifySrc/DstPort. 27507 Fixed byte statistics get from external tcam ACLs. 27514 Fixed bcm_mpls_port_delete for ports greater than 31 27516 Fix segmentation fault when initializing device with traffic flowing on ROBO family devices. 27517 Fixed field processor 64 bit counter collection on XGS3 devices. 27558 Arguments to the macro COMPILER_64_SET are internally typecast to ensure that the sign bit is not expanded. 27560 Fixed illegal memory access within _bcm_tr_mpls_pw_init_counter_delete 27561 Added Alta (BCM57801) MDIO support (enabled with -DALTA_ROBO_SPI) 27564 Fixed misconfiguration of resource allocation initialization, which reported out of resources when index hits wrap value,

on BCM8802x devices running Gu2k v1.3 (g2p3) microcode 27565 Fixed an issue where the port using 5482 PHY will be incorrectly disabled in certain scenario. 27637 Fix the problem about the partial SDK builds (individual chips) crash accessing registers and memories. 27655 Added null pointer checks for input parameters for bcm_policer_stat_get() and

bcm_policer_stat_get32() for BCM88020 and BCM88025 devices. 27658 The matched packets will be recognized as red priority packets if the entry doesn't have any field meters associated with

it on BCM5347, BCM5348, BCM5395 and BCM53115. 27659 Correct the value of available meters and counters for field group status. 27678 Fix the moving algorithm when changing priority of CFP rules.

Table 51:

Number Release Note

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 97 of 112

27680 Fixed PortClass qualifier size on EFP L2 key. 27694 Added the ability to inject packets with microcode assisted VID insertion from the QE2000, BCM88020 and

BCM88025 devices running microcode v1.3 (g2p3) 27717 Fix CFP counter synchronization of software value and hardware value. 27718 Fix CFP meter not destroyed properly when bcm_field_meter_destroy() is called. 27719 Fix the failure about copying field entry which has field meter associated with it. 27720 G2P3 ucode application now supports DSCP QOS mapping. A new table DSCP QOS is added to the application. This

table is indexed by {dscp, profileId}. The BCM SDK API bcm_port_dscp_map_get/set and bcm_port_vlan_dscp_map_get/set are implemented for the g2p3 ucode application.

27773 Added code to disable fp entry before reinstall, to avoid partial actions execution. 27815 Diag Shell command 'MPLS' now supports symbolic names for ACTion parameter. 27842 Fix broken RPC version of bcm_cosq_gport_attach_get. 27858 Fix the improper return value at SOC_E_NONE in drv_bcm53115_mem_search() . 27859 Support "Replace" in ROBO L2 add CLI. 27860 Fixed issue inserting second entry in a L2 hashed slot for some specific MAC addresses on BCM5395, BCM53115 and

BCM53118. 27861 Fix the improper 1000X register configuration for phy5482 fiber medium. 27881 Fixed excessive logical port allocation when adding ports to VLANs using bcm_vlan_port_add called on

BCM88020 and BCM88025 devices running microcode v1.3 (g2p3) 27882 Code with INLINE cause compilation with -ansi to fail. 27888 Fix IRQ number for IPFIX interrupt. 27889 Fix the behavior of CFP action "redirect to cpu". 28016 Correct the wrong configuration at 20G speed on the Hyperlite/Hypercore port on BCM56720 family devices. 28034 Fixed the data bus error exception when initializing device with traffic flowing on ROBO chips.

Table 51:

Number Release Note

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 98 of 112

Section 7: Device and Platform Support

The section describes all devices, platforms, and operating systems which are supported by this release.

SWITCH DEVICES

Table 52: Switch Devices

Family Devices DescriptionBCM53115 BCM53115 A0 5 port GbE Managed Switch + 1 Gigabit WAN port with integrated serdes

BCM53115 A1

BCM53115 B0

BCM53115 B1

BCM53115 C0

BCM53118 BCM53118 A0 8 port Gigabit Ethernet Switch BCM53118 B0

BCM5324 BCM5324 A0 Single-Chip L2+ Managed Switch with 24 10/100 Ports + 2 GbE Ports BCM5324 A1

BCM5324 A2

BCM53242 BCM53242 A0 Managed Switch with 24 FE Ports + 2 GbE Interface BCM53242 B0

BCM53242 B1

BCM53262 A0 Managed Switch with 24 FE Ports + 4 GbE Interface

BCM53262 B0

BCM53262 B1

BCM53300 BCM53300 A0 Managed 24-port L2 Switch BCM53300 A1

BCM53301 A0 Managed 16-port L2 Switch

BCM53301 A1

BCM53302 A0 Managed 24-port L2 Switch

BCM53302 A1

BCM53310 BCM53312 A0

BCM53312 B0

BCM53313 B0

BCM53313 A0

BCM53313 B0

BCM53314 B0

BCM5347 BCM5347 A0 Managed Switch with 24 10/100 Ports + Four GbE Ports BCM5347 A1

BCM5348 BCM5348 A0 Single-Chip L2+ Managed Switch with 48 10/100 Ports + Four GbE Ports BCM5348 A1

BCM5389 BCM5389 A0 8-GE Port Switch with Integrated SerDes

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 99 of 112

BCM5389 A1

BCM5395 BCM5395 A0 Multiport Gigabit Ethernet Switch BCM5396 BCM5396 A0 16-GE Port Switch with Integrated SerDes BCM5397 BCM5397 A0 6-Port GbE Switch With 5 Integrated PHYs and LoopDTech BCM5398 BCM5398 A0 9-Port GbE Switch With 8 Integrated PHYs and LoopDTech BCM53310 BCM53312 A0 BCM53312 Integrated Multilayer Switch and CPU

BCM53313 A0 BCM53312 Integrated Multilayer Switch and CPU

BCM53314 A0 BCM53314 Integrated Multilayer Switch and CPU

BCM53710 BCM53714 A0 BCM56714 Integrated Multilayer Switch and CPU BCM53714 A1

BCM53714 A2

BCM53716 A0 BCM56716 Integrated Multilayer Switch and CPU

BCM53716 A1

BCM53716 A2

BCM53718 A0 BCM56718 Integrated Multilayer Switch and CPU

BCM53718 A1

BCM53718 A2

BCM53720 BCM53724 A0 Managed 24-port L2 Switch with Integrated CPU BCM53724 B0

BCM53726 A0 Managed 24-port L2 Switch with Integrated CPU

BCM53726 B0

BCM5650 BCM5650 A0 24-Port BCM5650 Integrated Multi-Layer Switch BCM5650 B0

BCM5650 C0

BCM5655 A0 48-Port BCM5655 Integrated Multi-Layer Switch

BCM5655 B0

BCM5665 BCM5665 A0 48-Port BCM5665 Integrated Multi-Layer Switch BCM5665 B0

BCM5670 BCM5670 A0 BCM5670 8-Port, 160 Gbps Switch Fabric BCM5670 A1

BCM5671 A0 BCM5671 4-Port, 80-Gbps Switch Fabric

BCM5671 A1

BCM5671 A2

BCM5673 BCM5673 A0 10 Gigabit Ethernet/HiGig Multilayer Switch BCM5673 A1

BCM5673 A2

BCM5674 BCM5674 A0 Multilayer 2-Port 10 Gigabit Ethernet and HiGig+ Switch BCM5675 BCM5675 A0 8-Port, 192-Gbps Switch Fabric

BCM5675 A1

BCM5676 A0 4-Port, 96-Gbps Switch Fabric

BCM5676 A1

BCM5690 BCM5690 A0 Scalable 12-Port Gigabit Ethernet MultiLayer Switch

Table 52: Switch Devices

Family Devices Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 100 of 112

BCM5690 A1

BCM5690 A2

BCM5691 A0 12-Port Gigabit Ethernet MultiLayer Switch

BCM5691 A1

BCM5691 A2

BCM5692 A0 Scalable 12-Port Gigabit Ethernet Layer 2 Switch

BCM5692 A1

BCM5692 A2

BCM5693 A0 12-Port Gigabit Ethernet Layer 2 Switch

BCM5693 A1

BCM5693 A2

BCM5695 BCM5695 A0 MultiLayer 12-Port Gigabit Ethernet Stackable Switch BCM5695 A1

BCM5695 B0

BCM5696 A0 Multilayer 12-Port Gigabit Ethernet Switch

BCM5696 A1

BCM5696 B0

BCM5697 A0 12-Port Gigabit Ethernet Stackable Layer 2+ Switch

BCM5697 A1

BCM5697 B0

BCM5698 A0 12-Port Gigabit Ethernet Layer 2+ Switch

BCM5698 A1

BCM5698 B0

BCM56010 BCM56014 A0 24-Port Integrated Multilayer Switch and CPU BCM56014 A1

BCM56014 A2

BCM56018 A0 48-Port Integrated Multilayer Switch and CPU

BCM56018 A1

BCM56018 A2

BCM56018 A1 48-Port Integrated Multilayer Switch and CPU

BCM56020 BCM56024 A0 24-Port Integrated Multilayer Switch and CPU BCM56024 B0

BCM56025 A0 24-Port Integrated L2 Switch and CPU

BCM56025 B0

BCM56026 A0 24-Port Integrated L2 Switch and CPU

BCM56026 B0

BCM56100 BCM56100 A0 24-Port Fast Ethernet and 2-Port Gigabit Ethernet Multilayer Switch BCM56100 A1

BCM56101 A0 24-Port Fast Ethernet and 2-Port Gigabit Ethernet Multilayer Switch with One 10-Gigabit Ethernet/HiGig Port

BCM56101 A1

BCM56102 A0 24-Port Fast Ethernet and 2-Port Gigabit Ethernet Multilayer Switch with Two 10-Gigabit Ethernet/HiGig Ports

Table 52: Switch Devices

Family Devices Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 101 of 112

BCM56102 A1

BCM56105 A0 24-Port Fast Ethernet and 2-Port Gigabit Ethernet Layer 2 Switch

BCM56105 A1

BCM56106 A0 24-Port Fast Ethernet and 2-Port Gigabit Ethernet Layer 2 Switch with One 10-Gigabit Ethernet/HiGig Port

BCM56106 A1

BCM56107 A0 24-Port Fast Ethernet and 2-Port Gigabit Ethernet Layer 2 Switch with Two 10-Gigabit Ethernet/HiGig Ports

BCM56107 A1

BCM56110 BCM56110 A0 24-Port Fast Ethernet and 2-Port Gigabit Ethernet Multilayer Switch BCM56111 A0 24-Port Fast Ethernet and 2-Port Gigabit Ethernet Multilayer Switch with One 10-Gigabit

Ethernet/HiGig Port BCM56112 A0 24-Port Fast Ethernet and 2-Port Gigabit Ethernet Multilayer Switch with Two 10-Gigabit

Ethernet/HiGig Ports BCM56115 A0 24-Port Fast Ethernet and 2-Port Gigabit Ethernet Layer 2 Switch

BCM56116 A0 24-Port Fast Ethernet and 2-Port Gigabit Ethernet Layer 2 Switch with One 10-Gigabit Ethernet/HiGig Port

BCM56117 A0 24-Port Fast Ethernet and 2-Port Gigabit Ethernet Layer 2 Switch with Two 10-Gigabit Ethernet/HiGig Ports

BCM56210 BCM56212 A0

BCM56212 A1

BCM56212 A2

BCM56213 A0

BCM56213 A1

BCM56213 A2

BCM56214 A0 BCM56214 Integrated Multilayer Switch and CPU

BCM56214 A1

BCM56214 A2

BCM56215 A0

BCM56215 A1

BCM56215 A2

BCM56216 A0 BCM56216 Integrated Multilayer Switch and CPU

BCM56216 A1

BCM56216 A2

BCM56217 A0

BCM56217 A1

BCM56217 A2

BCM56218 A0 BCM56218 Integrated Multilayer Switch and CPU

BCM56218 A1

BCM56218 A2

BCM56219 A0 BCM56219 Integrated Multilayer Switch and CPU

BCM56219 A1

BCM56219 A2

BCM56220 BCM56224 A0 24 GbE + 4 x 1 Gb/2.5 Gb, L3/L2+

Table 52: Switch Devices

Family Devices Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 102 of 112

BCM56224 B0 24 GbE + 4 x 1 Gb/2.5 Gb, L3/L2+

BCM56225 A0 24 GbE + 4 x 1 Gb/2.5 Gb, L2+

BCM56225 B0 24 GbE + 4 x 1 Gb/2.5 Gb, L2+

BCM56226 A0 16 GbE + 4 x 1 Gb/2.5 Gb, L3/L2+

BCM56226 B0 16 GbE + 4 x 1 Gb/2.5 Gb, L3/L2+

BCM56227 A0 16 GbE + 4 x 1 Gb/2.5 Gb, L2+

BCM56227 B0 16 GbE + 4 x 1 Gb/2.5 Gb, L2+

BCM56228 A0 8 GbE + 4 x 1 Gb/2.5 Gb, L3/L2+

BCM56228 B0 8 GbE + 4 x 1 Gb/2.5 Gb, L3/L2+

BCM56229 A0 8 GbE + 4 x 1 Gb/2.5 Gb, L2+

BCM56229 B0 8 GbE + 4 x 1 Gb/2.5 Gb, L2+

BCM56300 BCM56300 A0 24-Port Gigabit Ethernet Multilayer Switch BCM56300 A1

BCM56300 B0

BCM56300 B1

BCM56301 A0 Four 10-Gigabit Ethernet/HiGig+ Ports

BCM56301 A1

BCM56301 B0

BCM56301 B1

BCM56302 A0 24-Port Gigabit Ethernet Multilayer Switch with Two 10-Gigabit Ethernet/HiGig+ Ports

BCM56302 A1

BCM56302 B0

BCM56302 B1

BCM56303 A0 24-Port Gigabit Ethernet Multilayer Switch with Three 10 Gigabit Ethernet/HiGig+ Ports

BCM56303 A1

BCM56303 B0

BCM56303 B1

BCM56304 A0 24-Port Gigabit Ethernet Multilayer Switch with Four 10-Gigabit Ethernet/HiGig+ Ports

BCM56304 A1

BCM56304 B0

BCM56304 B1

BCM56305 A0 24-Port Gigabit Ethernet Multilayer Switch

BCM56305 A1

BCM56305 B0

BCM56305 B1

BCM56306 A0 16 Port Gigabit Ethernet Switch

BCM56306 A1

BCM56306 B0

BCM56306 B1

BCM56307 A0 24-Port GE L2 Switch with Two 10 GE/HiGig+ Ports

BCM56307 A1

Table 52: Switch Devices

Family Devices Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 103 of 112

BCM56307 B0

BCM56307 B1

BCM56308 A0 24-Port GE L2 Switch with Three 10 GE/HiGig+ Ports

BCM56308 A1

BCM56308 B0

BCM56308 B1

BCM56309 A0 24-Port GE L2 Switch with Four 10 GE/HiGig+ Ports

BCM56309 A1

BCM56309 B0

BCM56309 B1

BCM56310 BCM56310 A0 BCM56310 Series 24-Port GbE Multilayer Switch with Four 10-GbE/HiGig+ Uplink Ports BCM56311 A0 Four 10-Gigabit Ethernet/HiGig+ Ports

BCM56312 A0 24-Port Gigabit Ethernet Multilayer Switch with Two 10-Gigabit Ethernet/HiGig+ Ports

BCM56313 A0 24-Port Gigabit Ethernet Multilayer Switch with Three 10-Gigabit Ethernet/HiGig+ Ports

BCM56314 A0 24-Port Gigabit Ethernet Multilayer Switch with Four 10-Gigabit Ethernet/HiGig+ Ports

BCM56315 A0 BCM56310 Series 24-Port GbE Layer 2 Switch with Four 10-GbE/HiGig+ Uplink Ports

BCM56316 A0 Four 10-Gigabit Ethernet/HiGig+ Ports

BCM56317 A0 24-Port Gigabit Ethernet Layer 2 Switch with Two 10-Gigabit Ethernet/HiGig+ Ports

BCM56318 A0 24-Port Gigabit Ethernet Layer 2 Switch with Three 10-Gigabit Ethernet/HiGig+ Ports

BCM56319 A0 24-Port Gigabit Ethernet Layer 2 Switch with Four 10-Gigabit Ethernet/HiGig+ Ports

BCM56500 BCM56500 A0 24-Port Gigabit Ethernet Multilayer Switch BCM56500 A1

BCM56500 B0

BCM56500 B1

BCM56500 B2

BCM56501 A0 Four 10-Gigabit Ethernet/HiGig+ Ports

BCM56501 A1

BCM56501 B0

BCM56501 B1

BCM56501 B2

BCM56502 A0 24-Port GbE Multilayer Switch with Two 10-GbE/HiGig+ Ports

BCM56502 A1

BCM56502 B0

BCM56502 B1

BCM56502 B2

BCM56503 A0 24-Port GbE Multilayer Switch with Three 10-GbE/HiGig+ Ports

BCM56503 A1

BCM56503 B0

BCM56503 B1

BCM56503 B2

BCM56504 A0 24-Port GbE Multilayer Switch with Four 10-GbE/HiGig+ Ports

Table 52: Switch Devices

Family Devices Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 104 of 112

BCM56504 A1

BCM56504 B0

BCM56504 B1

BCM56504 B2

BCM56505 A0 24-Port GbE Layer 2 Switch

BCM56505 A1

BCM56505 B0

BCM56505 B1

BCM56505 B2

BCM56506 A0 Four 10-Gigabit Ethernet/HiGig+ Ports

BCM56506 A1

BCM56506 B0

BCM56506 B1

BCM56506 B2

BCM56507 A0 24-Port GbE Layer 2 Switch with Two 10-GbE/HiGig+ Ports

BCM56507 A1

BCM56507 B0

BCM56507 B1

BCM56507 B2

BCM56508 A0 24-Port GbE Layer 2 Switch with Three 10-GbE/HiGig+ Ports

BCM56508 A1

BCM56508 B0

BCM56508 B1

BCM56508 B2

BCM56509 A0 24-Port GbE Layer 2 Switch with Four 10-GbE/HiGig+ Ports

BCM56509 A1

BCM56509 B0

BCM56509 B1

BCM56509 B2

BCM56510 BCM56510 A0 24-Port Gigabit Ethernet Multilayer Switch BCM56511 A0 Four-Port 10-GbE/HiGig+ Multilayer Switch

BCM56512 A0 24-Port GbE Multilayer Switch With Two 10-GbE/HiGig+ Ports

BCM56513 A0 24-Port GbE Multilayer Switch With Three 10-GbE/HiGig+ Ports

BCM56514 A0 24-Port GbE Multilayer Switch With Four 10-GbE/HiGig+ Ports

BCM56580 BCM56580 A0 16 x 2.5 GbE + 4 x 10 GbE Ethernet Multilayer Switch BCM56600 BCM56600 A0 12 x GbE High-Feature Ethernet Multilayer Switch

BCM56600 B0

BCM56600 C0

BCM56601 A0 12 x GbE High-Feature Ethernet Multilayer Switch With HiGig+ Uplink

BCM56601 B0

BCM56601 C0

Table 52: Switch Devices

Family Devices Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 105 of 112

BCM56602 A0 10-GbE High-Feature Ethernet Multilayer Switch With HiGig+ Uplink

BCM56602 B0

BCM56602 C0

BCM56603 A0 HG+ High-Feature Ethernet Multilayer Proxy

BCM56603 B0

BCM56603 C0

BCM56605 A0 12 x GbE High-Feature Ethernet Multilayer Switch

BCM56605 B0

BCM56605 C0

BCM56606 A0 12 x GbE High-Feature Ethernet Multilayer Switch With HiGig+ Uplink

BCM56606 B0

BCM56606 C0

BCM56607 A0 10-GbE High-Feature Ethernet Multilayer Switch With HiGig+ Uplink

BCM56607 B0

BCM56607 C0

BCM56608 A0 HG+ High-Feature Ethernet Multilayer Proxy

BCM56608 B0

BCM56608 C0

BCM56620 BCM56620 A0

BCM56620 A1

BCM56620 B0

BCM56620 B1

BCM56624 A0 49 port 1-GbE Multilayer Ethernet Switch with 4 x 10-GbE/HiGig2 Uplink ports and External Table Expansion

BCM56624 A1

BCM56624 B0

BCM56624 B1

BCM56626 A0 25 port 1-GbE Multilayer Ethernet Switch with 6 x 10-GbE/HiGig2 Uplink ports and External Table Expansion

BCM56626 A1

BCM56626 B0

BCM56626 B1

BCM56628 A0 8 port 10-GbE/HiGig2 Multilayer Ethernet Switch with External Table Expansion

BCM56628 A1

BCM56628 B0

BCM56628 B1

BCM56629 B0 25 port 1-GbE Multilayer Ethernet Switch with 8 x 10-GbE/HiGig2 Uplink ports and External Table Expansion

BCM56629 B1

BCM56680 BCM56680 A0 25 port 1-GbE/2.5GbE Multilayer Ethernet Switch with 4 x 10-GbE/HiGig2 Uplink ports BCM56680 A1

BCM56680 B0

Table 52: Switch Devices

Family Devices Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 106 of 112

PHYS

BCM56680 B1

BCM56684 A0 24 port 1-GbE/2.5GbE Multilayer Ethernet Switch with 4 x 10-GbE/HiGig2 Uplink ports

BCM56684 A1

BCM56684 B0

BCM56684 B1

BCM56700 BCM56700 A0 16-Port, 192-Gbps Lossless Switch Fabric BCM56701 A0 12-Port, 144-Gbps Lossless Switch Fabric

BCM56720 BCM56720 A0 16 Port, 16-Gbps HiGig2 Switch Fabric BCM56721 A0 12 Port, 16-Gbps HiGig2 Switch Fabric

BCM56725 BCM56725 A0 8 Port, 20-Gbps + 4 Port, 16-Gbps HiGig2 Switch Fabric BCM56800 BCM56800 A0 20-Port 10-Gigabit Ethernet Multilayer Switch

BCM56801 A0 10-Port 10-Gigabit Ethernet and 8-Port HiGig2/10GbE Multilayer Switch

BCM56802 A0 16-Port 10-GbE/HiGig2 Multilayer Switch

BCM56803 A0 12 Port 10GE/HiGig2 Multilayer Switch

BCM56820 BCM56820 A0 24 x 10-GbE + 4 x 1-GbE Multilayer Ethernet Switch BCM56821 A0 12 x 10-GbE + 8 x HiGig2 + 4 x 1-GbE Multilayer Ethernet Switch

BCM56822 A0 12 x 10-GbE + 4 x 20-Gbps HiGig2 + 4 x 1-GbE Multilayer Ethernet Switch

BCM56823 A0 8 x 10-GbE + 4 x 20-Gbps HiGig2 + 4 x 1-GbE Multilayer Ethernet Switch

BCM88020 BCM88020 A0 Fully Programmable Carrier Packet Processor with 24 GbE Ports, 2 10GbE Ports and 2 SPI Interfaces

BCM88020 A1

BCM88020 A2

BCM88025 BCM88025 A0 Fully Programmable Carrier Packet Processor with 24 GbE Ports, 2 10GbE Ports and 2 SPI Interfaces

BCM88130 BCM88130 A0 630 Gbps Bandwidth Manager and Switching Engine BCM88130 A1

BME-3200 BME-3200 A0 SBX Fabric Bandwidth Manager with 32 SCI control ports and up to 40 SFI data ports BME-3200 B0

QE-2000 QE-2000 A1 SBX Fabric Queueing Engine with 49 SPI 4.2 subports QE-2000 A2

QE-2000 A3

QE-2000 A4

Table 53: PHYs

Device Driver Family DescriptionBCM5218 522x 10/100Base-TX/FX Octal-PHY(tm) Transceiver BCM5220 522x 10/100BASE-TX/FX Mini-F(tm) Transceiver BCM5221 522x 10/100BASE-TX/FX Mini-F(tm) Transceiver BCM5226 522x 10/100 BASE- TX/FX Hex-PHY(tm) Transceiver BCM5228 522x 10/100BASE-TX/FX Octal-F(tm) Transceiver

Table 52: Switch Devices

Family Devices Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 107 of 112

OPERATING SYSTEMS

The SDK Provides the SAL and BDE abstraction implementations necessary for running the SDK on the following operating sys-tems. Please see the Platform Guide (56XX-PG807-R2) for instructions on porting the SDK to another platform.

BCM5238 522x 10/100BASE-TX OCTAL-f(tm) Transceiver BCM5248 522x 10/100BASE-TX Octal-F(tm) Transceiver BCM5401 5401 10/100/1000BASE-T Gigabit Copper Transceiver BCM5402 5402 10/100/1000BASE-T Gigabit Copper Transceiver BCM5404 5404 Quad-Port 10/100/1000BASE-T Gigabit Copper Transceiver BCM5424 5424 Quad 10/100/1000BASE-T Gigabit Ethernet Transceiver BCM5434 5424 Quad 10/100/1000BASE-T Gigabit Ethernet Transceiver BCM5411 5411 10/100/1000BASE-T Gigabit Copper Transceiver BCM5421 5421S 10/100/1000BASE-T Gigabit Copper Transceiver BCM5421S 5421S 10/100/1000BASE-T Gigabit Copper Transceiver with SerDes BCM5461 5464 10/100/1000BASE-T Gigabit Ethernet Transceiver BCM5464 5464 Quad-Port 10/100/1000BASE-T Gigabit Copper Transceiver BCM5464R 5464 Quad-Port 10/100/1000BASE-T Gigabit Copper Transceiver BCM5464SR 5464 Quad-Port Gigabit Copper Transceiver with Copper/Fiber Media Interface BCM5464S 5464 Quad-Port Gigabit Copper Transceiver with Copper/Fiber Media Interface BCM5466 5464 Quad-Port 10/100/1000BASE-T Gigabit Copper Transceiver BCM5466R 5464 Quad-Port 10/100/1000BASE-T Gigabit Copper Transceiver BCM5466SR 5464 Quad-Port Gigabit Copper Transceiver with Copper/Fiber Media Interface BCM5466S 5464 Quad-Port Gigabit Copper Transceiver with Copper/Fiber Media Interface BCM5482 5482 Dual-Port 10/100/1000BASE-T Gigabit Ethernet Transceiver BCM5488 5464 Octal 1000/100/10BASE-T Gigabit Ethernet Transceiver BCM54980 54980 Octal 1000/100/10BASE-T Gigabit Ethernet Transceiver BCM54680 5464 Octal-Port 10/100/1000BASE-T Gigabit Ethernet Transceiver BCM54684 54684 Octal-Port 10/100/1000BASE-T Gigabit Ethernet Transceiver BCM54580 54580 Octal 1000/100/10BASE-T Gigabit Ethernet Transceiver (Needs additional software

component) BCM54584 54580 Octal 1000/100/10BASE-T Gigabit Ethernet Transceiver (Needs additional software

component) BCM8040 8040 Eight-Channel Multirate 1-Gbps - 3.2-Gbps Retimer/Switch BCM8703 8703 Serial 10G Ethernet/Fibre Channel Transceiver with XAUI Interface BCM8704 8703 Serial 10-Gigabit Ethernet/Fibre Channel Transceiver with XAUI Interface BCM8705 8705 Serial 10-Gigabit Ethernet/Fibre Channel Transceiver with WIS Layer and XAUI Interface BCM8725 8705 Dual Serial 10-Gigabit Ethernet/Fibre Channel Transceiver with WIS Layer and XAUI

Interface BCM8726_A0 8706 Dual Serial 10-Gigabit Ethernet/Fibre Channel Transceiver with XAUI Interface BCM8726_B1 8706 Dual Serial 10-Gigabit Ethernet/Fibre Channel Transceiver with XAUI(TM) Interface BCM8727 8706 Dual Serial 10-Gigabit Ethernet/Fibre Channel Transceiver with XAUI Interface BCM8481_B0 8481 10GBASE-T Transceiver BCM8072 8072 Dual-Channel Serial 10-GbE BASE-KR to XAUI Transceiver BCM8073 8072 Dual-Channel Serial 10-GbE BASE-KR to XAUI Transceiver

Table 53: PHYs

Device Driver Family Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 108 of 112

CPU SUBSYSTEMS

CPU AND OPERATING SYSTEM COMBINATIONS

The following CPU and Operating System combinations are supported by the SDK (in addition to the above):

Table 54: Operating Systems

Operating SystemVxWorks 5.5 VxWorks 6.2 VxWorks 6.4 VxWorks 6.5 Linux 2.4.20 User Mode Linux 2.4.20 Kernel Resident Mode Linux 2.6.14 User Mode Linux 2.6.14 Kernel Resident Mode Linux 2.6.21 User Mode Linux 2.6.21 Kernel Resident Mode Linux 2.6.25 User Mode Linux 2.6.25 Kernel Resident Mode POSIX Compliant (SAL ONLY)

Table 55: CPU Subsystems

CPU Subsystem DescriptionBCM95836 CPCI 32-bit MIPS with BCM5836 Processor BCM98245 CPCI 32-bit PPC with Motorola 8245 Processor BCM91125 CPCI 32/64-bit MIPS with BCM1125 SiByte Processor BCM98548XMC XMC 32-bit PPC with Freescale 8548 Processor BCM91125XMC XMC 32/64-bit MIPS with BCM1125 SiByte Processor BCM5621X Integrated MIPS CPU on BCM5621X Switch Devices BCM5622X Integrated MIPS CPU on BCM5622X Switch Devices BCM5331X Integrated MIPS CPU on BCM5331X Switch Devices

Table 56: CPU and Operating System Combinations

CPU Subsystem Operating System DescriptionBCM95836 VxWorks 5.5 BSP Provided BCM95836 Linux 2.4.20 Available through MontaVista 3.1 Preview kit BCM95836 Linux 2.6.14 Available through Windriver Linux 1.5 BCM95836 Linux 2.6.21 Available through WindRiver Linux 2.0

BCM98245 VxWorks 5.5 BSP Provided BCM98245 VxWorks 6.2 BSP Provided

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 109 of 112

REFERENCE DESIGNS

The following Switch Reference Designs are available from Broadcom and are supported in the SDK.

BCM98245 Linux 2.4.20 Available through MontaVista 3.1 Preview kit BCM98245 Linux 2.6.14 Available through WindRiver Linux 1.4/1.5 BCM98245 Linux 2.6.21 Available through WindRiver Linux 2.0

BCM91125 VxWorks 5.5 BSP Provided BCM91125 VxWorks 6.2 BSP Provided BCM91125 VxWorks 6.4 BSP Provided BCM91125 Linux 2.4.20 Available through MontaVista 3.1 Preview kit BCM91125 Linux 2.6.10 Available through MontaVista 4.0 Professional BCM91125 Linux 2.6.14 Available through WindRiver Linux 1.5 BCM91125 Linux 2.6.21 Available through WindRiver Linux 2.0

BCM5621X VxWorks 5.5 BSP Provided BCM5621X VxWorks 6.4 BSP Provided BCM5621X Linux 2.6.14 Available through WindRiver Linux 1.5 bcm_ntswics BCM5621X Linux 2.6.21 Available through WindRiver Linux 2.0 bcm_ntswics

BCM91125XMC VxWorks 5.5 BSP Provided BCM91125XMC VxWorks 6.2 BSP Provided BCM91125XMC VxWorks 6.4 BSP Provided BCM91125XMC Linux 2.6.14 Available through WindRiver Linux 1.5

BCM5331X VxWorks 5.5 BSP Provided BCM5331X VxWorks 6.4 BSP Provided BCM5331X Linux 2.6.14 Available through WindRiver Linux 1.5 bcm_ntswics BCM5331X Linux 2.6.21 Available through WindRiver Linux 2.0 bcm_ntswics

BCM98548XMC VxWorks 6.4 BSP Provided BCM98548XMC VxWorks 6.5 BSP Provided BCM98548XMC Linux 2.6.21 Available through WindRiver Linux 2.0

Generic X86 Linux 2.6.25

Table 57: Reference Designs

Platform DescriptionBCM953115R5GM 5-port GE + 1-port serdes 53115 Ref. Design BCM95324R24GM 24-port FE + 2-port GE 5324 SW Ref. Design BCM953242R24M 24-port FE + 2-port GE 53242 SW Ref. Design BCM953262R24M 24-port FE + 4-port GE 53262 SW Ref. Design BCM95347R24M 24-port FE + 4 GE 5348 - 5836 CPU Managed Switch Ref. Design BCM95348R48M 48-port FE + 4 GE 5348 - 5836 CPU Managed Switch Ref. Design

Table 56: CPU and Operating System Combinations

CPU Subsystem Operating System Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 110 of 112

BCM95395R5GM 5-port GE 5395 Switch Ref Design - Managed (BCM5836) BCM95396R16GM 16-port GE + 1-port FE(SFP) 5396 Switch Ref Design - Managed

(BCM5836) BCM953300 24-port GE 53300 Switch Ref Design BCM953302 48-port GE 53302 Switch Ref Design BCM953314K 24-port GE - 53314 System Verification Kit BCM953314R24GS 24-port GE - 53314 Switch Ref Design BCM956018K48T 48-port FE + 2-port GE + 2-port HGL(CAT 7) - 56018 SVK BCM956024K24T 24-port FE + 4-port HGL(CAT 7) - 56024 SVK BCM956102R48XS 48-port FE + 4 port GE 56102 SW Ref Design w/2-HiGig/10GE BCM956112R48XS-02 48-port FE + 4 port GE 56112 SW Ref Design w/2-HiGig/10GE - PPC8245 BCM956214R26T 26-port GE (2 TX/SX) + 2-port HGL(CAT 7) - 56214 Reference Design BCM956219K50T 50-port GE + 2-port HGL(CAT 7) - 56218 - PPC8245 SVK BCM956218K50T 50-port GE + 2-port HGL(CAT 7) - 56218 System Verification Kit BCM956224K24T 24-port GE + 4-port HGL(CAT 7) - 56224 SVK BCM956224R24F 24-port GE + 4-port GE SFP - BCM56224 Reference board. BCM956300R24 24-port GE 56300 Switch Ref Design BCM956304R24XS 24-port GE (2 TX/SX) 56304 SW Ref Des w/2-HiGig + 2-10GE BCM956314R24ST 24-port GE + 4 HiGig/2.5GE(CAT 7) 56314 Ref Design BCM956314R24XST 24-port GE + 4 10GE/HiGig/2.5GE(CX4) - 56314 Ref Design BCM956500R24 24-port GE 56500 Switch Ref Design BCM956504R24XS 24-port GE (2 TX/SX) 56504 SW Ref Des w/2-HiGig + 2-10GE BCM956504R48XSP 48-port GE (12 w/POE) 56504 Switch Ref Design 4 - HiGig/10GE BCM95650K24 24-port FE + 4 port GE Switch Development Kit BCM95650R24 24-port FE + 4 port GE (TX or SFP) Reference Design BCM956514R24XST 24-port GE + 4 10GE/HiGig/2.5GE(CX4) - 56514 Ref Design BCM956514R48XSP 48-port GE (12 w/POE) 56514 Switch Ref Design 4 - HiGig/10GE BCM956580K16TXS 16-port 2.5G SFP Fibre + 4 HiGig/10GE 56580 SDK BCM956601K12D 12-port GE + 1-HiGig 56601 DDR SDRAM SDK BCM956601K12N 12-port GE + 1-HiGig 56601 Netlogic TCAM SDK BCM956602KXSN 1-HiGig + 1-10GE 56602 Netlogic TCAM SDK BCM95665K48 48-port FE + 4 port GE TX/SX + 1HiGig Switch Development Kit BCM956700K16S 16-port HiGig CX4 56700 SDK BCM95670K8 8-port 5670 GE Switch Development Kit BCM95673K2S 2 x 5673 10-GE + HiGig Switch Development Kit BCM95673R8 8-port 5673 10 GE XFP Switch Reference Design BCM95673R8CX4 8-port 5673 10 GE CX4 Switch Reference Design BCM95675K8 8-port 5675 GE Switch Development Kit BCM95675K8U 8-port 5675 GE Switch Development Kit - PPC8245 BCM956800K20X 20-port 10 GE CX4 56800 SDK BCM95690K24S 24-port 5690 GE Switch Development Kit w/2HiGig BCM95690K24 24-port 5690 GE Switch Development Kit BCM95690P24REF 24-port 5690 GE + 5671 w/2HiGig Ports Reference Design BCM95690R24 24-port 5690 GE Ports Reference Design BCM95690R24S 24-port 5690 GE + 5671 w/2HiGig Ports Reference Design BCM95690R48S 48-port 5690 GE + 5670 w/4HiGig Ports Reference Design BCM95690R48X2S 48-port 5690 GE + 5670 w/2-HiGig Ports + 2-10-GE Ports Ref. Design BCM95691K12 12-port 5691 GE Switch Development Kit BCM95695K24 24-port 5695 GE Switch Development Kit BCM95695R24S 24-port 5695 GE + 5671 w/2HiGig Ports Reference Design BCM95695R24X2S 24-port 5695 GE + 2-port 5675 HiGig + 2-port 5674 10GE CX4

Table 57: Reference Designs

Platform Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 111 of 112

Note: The flash sizes of some old BCM53XX platforms are 4 MBytes only. As the code size of SDK increases, the 4MB flash is not enough for this release. Please replace the flash to 8MB or above for those reference designs.

BCM95695R48X2S 48-port 5695 GE + 5670 w/2-HiGig Ports + 2-10-GE Ports Ref. Design BCM91125CFM16 BCM956010CS Dual 5675 Fabric + 1125H CPU BCM91125CFM8 BCM956006CS Single 5675 Fabric + 1125H CPU BCM956501LM 12-port 10GE CX4 56501/5675 Line Module BCM956504LM 48-port GE 56504 Line Module BCM956700CFM16 16-HiGig 56700 Fabric + BCM1125 CPU Module BCM95674LM 6-port 10GE CX4 5674/5675 Line Module BCM956802LM 12-port 10GE CX4 56802 Line Module BCM95695LM 48-port GE 5695/5675 Line Module BCM956802CFM8 BCM956006CS 56802 Fabric + 8 10GE + 1125H CPU BCM956680K24TS_02/BCM956680K24TS_05 25 port 1-GbE/2.5GbE Multilayer Ethernet Switch with 4 x 10-GbE/

HiGig2 Uplink ports SVK BCM956624K49TS_02/ BCM956624K49TS_05 49 port 1-GbE Multilayer Ethernet Switch with 4 x 10-GbE/HiGig2 Uplink

ports and External Table Expansion SVK BCM956624R49S_02 49 port 1-GbE Multilayer Ethernet Switch with 4 x 10-GbE SFP+ Uplink

ports BCM56624 reference board BCM956820K24XG_02/BCM956820K24XG_05 24 x 10-GbE + 4 x 1-GbE Multilayer Ethernet Switch SVK BCM956820R24XG_02 24 x 10-GbE + 4 x 1-GbE BCM56820 Multilayer Ethernet Switch

Reference board with SFP+ interface. BCM956720K16S_02/BCM956720K16S_05 16-Port, 256-Gbps Switch Fabric + 4 x 1-GbE SVK BCM956725K16S_02/BCM956725K16S_05 8-Port (20Gbps) + 4-port (16Gbps) Switch Fabric + 4 x 1-GbE SVK BCM988020QSK24X2 Carrier Ethernet 24-port GE + 2-port 10GbE Reference Design (also

known as Metrocore) BCM988130FK24X2 Carrier Ethernet 24-port GE + 2-port 10GbE Reference Design (also

known as Polaris Line card) BCM953724R26WS 26-Port, 26-Gbps Integrated Multilayer Switch and CPU BCM956628K8TS 8 port 10-GbE/HiGig2 Multilayer Ethernet Switch with External Table

Expansion BCM956620K24TS 24 port 1-GbE Multilayer Ethernet Switch with 4 x 10-GbE/HiGig2 Uplink

ports BCM956684K24TS 24 port 1-GbE/2.5GbE Multilayer Ethernet Switch with 4 x 10-GbE/

HiGig2 Uplink ports BCM956725K16S 8 Port, 20-Gbps + 4 Port, 16-Gbps HiGig2 Switch Fabric BCM956626K8TS 25 port 1-GbE Multilayer Ethernet Switch with 6 x 10-GbE/HiGig2 Uplink

ports and External Table Expansion BCM956629K24S 25 port 1-GbE Multilayer Ethernet Switch with 8 x 10-GbE/HiGig2 Uplink

ports and External Table Expansion BCM956224R50T 50-port GE + 2-port HGL(CAT 7) - 2 X BCM56224 BCM956024R50T 48-port FE + 2-port GE + 2-port HGL(CAT 7) - 2 X BCM56024 BCM956524K24S_02 24xGE + 4 x XAUI/HG (iPass) with BCM56524 switch

Table 57: Reference Designs

Platform Description

SDK 5.6.1 Release Notes

Broadcom Proprietary and Confidential Page 112 of 112