From 53663339a2503c985117eb691b961dba1054fadd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B3=93=E5=B0=91=E9=88=BA?= <51807939+geans-pin@users.noreply.github.com> Date: Fri, 4 Jun 2021 14:18:02 +0800 Subject: [PATCH] Per-switching silicon Common config for Broadcom Supported Platforms (#7493) * Per-switching silicon Common config for Broadcom Supported Platforms * Per-switching silicon Common config for Broadcom Supported Platforms * Per-switching silicon Common config for Broadcom Supported Platforms * Remove property readme * Add common config readme --- .../common_config_readme | 226 ++++++++++++++++++ .../broadcom-sonic-td3.config.bcm | 12 + .../broadcom-sonic-td2.config.bcm | 6 + .../broadcom-sonic-td3.config.bcm | 8 + .../broadcom-sonic-th.config.bcm | 9 + .../broadcom-sonic-th2.config.bcm | 31 +++ .../broadcom-sonic-th3.config.bcm | 28 +++ platform/broadcom/docker-syncd-brcm.mk | 1 + src/sonic-device-data/tests/permitted_list | 13 + 9 files changed, 334 insertions(+) create mode 100644 device/broadcom/x86_64-broadcom_common/common_config_readme create mode 100644 device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b77/broadcom-sonic-td3.config.bcm create mode 100644 device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b85/broadcom-sonic-td2.config.bcm create mode 100644 device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b87/broadcom-sonic-td3.config.bcm create mode 100644 device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b96/broadcom-sonic-th.config.bcm create mode 100644 device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b97/broadcom-sonic-th2.config.bcm create mode 100644 device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b98/broadcom-sonic-th3.config.bcm diff --git a/device/broadcom/x86_64-broadcom_common/common_config_readme b/device/broadcom/x86_64-broadcom_common/common_config_readme new file mode 100644 index 0000000000..9e02d61c8a --- /dev/null +++ b/device/broadcom/x86_64-broadcom_common/common_config_readme @@ -0,0 +1,226 @@ +/* Enable/Disable Memory table cache */ +#define spn_MEM_CACHE_ENABLE "mem_cache_enable" + +/* Property to explicitly enable InPorts Qualifier support in Ingress Field Module. */ +#define spn_IFP_INPORTS_SUPPORT_ENABLE "ifp_inports_support_enable" + +/* Enable IPv6 128b prefix LPM routes. */ +#define spn_IPV6_LPM_128B_ENABLE "ipv6_lpm_128b_enable" + +/* Control the scalability of ECMP groups */ +#define spn_L3_MAX_ECMP_MODE "l3_max_ecmp_mode" + +/* + * 1: Allow adding 64B IPV6 LPM entries in unreserved paired TCAM. + * 0: Do not allow adding 64B IPV6 LPM entries in paired TCAM. + */ +#define spn_LPM_SCALING_ENABLE "lpm_scaling_enable" + +/* Initial number of CoS queues bcm_init() configures the chip for. */ +#define spn_BCM_NUM_COS "bcm_num_cos" + +/* Set the default MMU lossless behavior */ +#define spn_MMU_LOSSLESS "mmu_lossless" + +/* + * This soc property is used to enable/disable HOST AS ROUTE feature + * which allows the entry to be automatically added to the route table + * if the host table is either full or there is a hash collision by calling + * bcm_l3_host_add API with BCM_L3_HOST_AS_ROUTE flag. + * 0 = Enable HOST AS ROUTE(default). 1 = Disable HOST AS ROUTE. + */ +#define spn_HOST_AS_ROUTE_DISABLE "host_as_route_disable" + +/* + * Enable/Disable Flex flows Vs Legacy VXLAN module. + * flow_init_mode = 0 loads Legacy VXLAN module on sdk initialization. + * flow_init_mode = 1 loads flex flow module on sdk initialization. + */ +#define spn_FLOW_INIT_MODE "flow_init_mode" + +/* Number of widest MPLS mem entries. */ +#define spn_MPLS_MEM_ENTRIES "mpls_mem_entries" + +/* Number of VLAN_XLATE_1 mem entries. */ +#define spn_VLAN_XLATE_1_MEM_ENTRIES "vlan_xlate_1_mem_entries" + +/* Number of VLAN_XLATE_2 mem entries. */ +#define spn_VLAN_XLATE_2_MEM_ENTRIES "vlan_xlate_2_mem_entries" + +/* + * 1 - enable flow tracker(FTv1) embedded app + * 2 - enable flow tracker(FTv2) embedded app + * default value: 0 (disabled) + */ +#define spn_FLOWTRACKER_ENABLE "flowtracker_enable" +/* + * Maximum number of flow groups monitored by flowtracker embedded app + * default value: 255 + */ +#define spn_FLOWTRACKER_MAX_FLOW_GROUPS "flowtracker_max_flow_groups" +/* + * Maximum number of flows that can be learnt. In multi-pipe devices, the flow limit + * is equally distributed among all the pipes, per pipe flow limit can be imposed by + * suffixing with _pipe + * default value: 16K + */ +#define spn_FLOWTRACKER_MAX_FLOWS "flowtracker_max_flows" +/* + * Maximum number of counters that can be assigned to a single flow. + * Valid values currently supported are 1, 2 and 4. + * default value: 1 + */ +#define spn_FLOWTRACKER_MAX_COUNTERS_PER_FLOW "flowtracker_max_counters_per_flow" +/* + * Maximum length of an export packet in bytes that will be sent by Flowtracker embedded app + * default value: 1500 + */ +#define spn_FLOWTRACKER_MAX_EXPORT_PKT_LENGTH "flowtracker_max_export_pkt_length" + +/* Enable elephant monitoring, 0 - Disable, 1 - Enable */ +#define spn_FLOWTRACKER_ELEPHANT_ENABLE "flowtracker_elephant_enable" + +/* Interval at which the flow table is scanned to detect elephant flows. */ +#define spn_FLOWTRACKER_ELEPHANT_SCAN_INTERVAL_USECS "flowtracker_elephant_scan_interval_usecs" + +/* Enables the tracking the flow start timestamp information element, 0 - Disable, 1 - Enable. */ +#define spn_FLOWTRACKER_FLOW_START_TIMESTAMP_IE_ENABLE "flowtracker_flow_start_timestamp_ie_enable" + +/* Export interval of the active flows in usecs */ +#define spn_FLOWTRACKER_EXPORT_INTERVAL_USECS "flowtracker_export_interval_usecs" +/* + * Expected time required to drain the egress COS queues. Used to + * prevent re-ordering when demoting elephant flows to mice + */ +#define spn_FLOWTRACKER_ELEPHANT_EXPECTED_QUEUE_DRAIN_TIME_USECS "flowtracker_elephant_expected_queue_drain_time_usecs" + +/* Enterprise number to be used when exporting template sets containing enterprise specific information elements */ +#define spn_FLOWTRACKER_ENTERPRISE_NUMBER "flowtracker_enterprise_number" + +/* Drop monitoring, 0 - Disable, 1 - Enable */ +#define spn_FLOWTRACKER_DROP_MONITOR_ENABLE "flowtracker_drop_monitor_enable" + +/* Enable host memory access 0 - Disable, 1 - Enable */ +#define spn_FLOWTRACKER_HOSTMEM_ENABLE "flowtracker_hostmem_enable" + +/* Maximum length of the reinjected FSP packet. Packets larger than this number are truncated prior to re-injection */ +#define spn_FLOWTRACKER_FSP_REINJECT_MAX_LENGTH "flowtracker_fsp_reinject_max_length" + +/* Interval at which the flow table is scanned to collect counter information in micro seconds. Minimum value allowed is 100000 micro seconds */ +#define spn_FLOWTRACKER_SCAN_INTERVAL_USECS "flowtracker_scan_interval_usecs" + +/* + * Normally, the system will use polling for register/memory S-Channel + * operations and interrupts for time-consuming operations such as ARL + * insert/delete. If this schan_intr_enable is set to 0, polling will be + * used for ALL operations. + */ +#define spn_SCHAN_INTR_ENABLE "schan_intr_enable" + +/* + * Mode control to select L2 Table DMA mode aka L2MODE_POLL (0) or + * L2MOD_FIFO mechanism aka L2MODE_FIFO (1) for L2 table change notification. + */ +#define spn_L2XMSG_MODE "l2xmsg_mode" + +/* + * Timeout for hardware-accelerated ARL delete operations including: + * delete by port, delete by port+modid, delete by VLAN, delete by trunk. + */ +#define spn_ARL_CLEAN_TIMEOUT_USEC "arl_clean_timeout_usec" + +/* + * BCM56960/BCM56970 : MMU Cell Buffer Allocation Profile to support ASF (cut-thru) Forwarding + * 0: No cut-through support + * 1: Similar speed profile (Default) + * 2: Extreme speed profile + */ +#define spn_ASF_MEM_PROFILE "asf_mem_profile" + +/* + * Flag values to be ORd together: + * 0x0 indicates that counter DMA should NOT be used + * 0x1 indicates that counter DMA should be used (default). + */ +#define spn_BCM_STAT_FLAGS "bcm_stat_flags" + +/* + * Threshold value for oversize (*OVR) frame size. + * Values over 1518 affect the *OVR statistics computation + */ +#define spn_BCM_STAT_JUMBO "bcm_stat_jumbo" + +/* Counter DMA collection pass timeout in microseconds */ +#define spn_CDMA_TIMEOUT_USEC "cdma_timeout_usec" + +/* SBUSDMA descriptor mode operation timeout in microseconds */ +#define spn_DMA_DESC_TIMEOUT_USEC "dma_desc_timeout_usec" + +/* + * The maximum number of virtual port trunk groups + * (default is the maximum number supported by the device). + */ +#define spn_MAX_VP_LAGS "max_vp_lags" + +/* + * If miim_intr_enable variable is set to 1, the system will use + * interrupts for MII operations since they take a while (70 usec or so). + * If this variable is set to 0, polling will be used for all MII + * operations. + */ +#define spn_MIIM_INTR_ENABLE "miim_intr_enable" + +/* Device that can support more than 32 ports per single modid will operate in configuration where all ports are mapped to the base modid */ +#define spn_MODULE_64PORTS "module_64ports" + +/* + * Config to describe the system Linerate or Oversubscribe mode. + * 0: Linerate only (default). + * 1: Oversubscribe mode (all ports will be oversub). + * 2: Mixed mode. Check device specification for applicability. Port bitmap specified via pbmp_oversubscribe. + */ +#define spn_OVERSUBSCRIBE_MODE "oversubscribe_mode" + + +/* + * If phy_null_ is set to 1, the port will use the null PHY driver. + * This is useful for configuring direct-connect GMII links such as the + * chip-to-chip links on a 48-port board (example shown for 48 port board). + */ +#define spn_PHY_NULL "phy_null" + +/* Core clock frequency applied to switch chip, any unsupported frequency will be ignored */ +#define spn_CORE_CLOCK_FREQUENCY "core_clock_frequency" + +/* DPR clock frequency applied to switch chip, any unsupported frequency will be ignored. */ +#define spn_DPR_CLOCK_FREQUENCY "dpr_clock_frequency" + +/* + * Indicates that the port module(macro) on which this physical port resides + * is flex enable or not. + * For BCM56860 based devices, the following applies: + * This property is per port macro. For port macros consisting of multiple + * smaller port macros, enabling flex on that port macro also enables + * flex on the smaller port macros. + * port_flex_enable{physical port number}=1 or 0 + * Valid values are 0 or 1. Default value is 0. + * The given physical port number has to be the first physical port residing + * on the port macro. + */ +#define spn_PORT_FLEX_ENABLE "port_flex_enable" + +/* + * Number of unicast and multicast queues per port + * mmu_port_num_mc_queue = 0 (12 unicast, 0 multicast) + * mmu_port_num_mc_queue = 1 (10 unicast, 2 multicast) + * mmu_port_num_mc_queue = 2 (8 unicast, 4 multicast) + * mmu_port_num_mc_queue = 3 (6 unicast, 6 multicast) + */ +#define spn_MMU_PORT_NUM_MC_QUEUE "mmu_port_num_mc_queue" + +/* + * In BCM568xx and BCM567xx devices, some L2 and L3 multicast + * information is stored in a shared resource. This value describes + * the number of resource entries devoted to L2 multicast. + */ +#define spn_MULTICAST_L2_RANGE "multicast_l2_range" \ No newline at end of file diff --git a/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b77/broadcom-sonic-td3.config.bcm b/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b77/broadcom-sonic-td3.config.bcm new file mode 100644 index 0000000000..9dc71f839d --- /dev/null +++ b/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b77/broadcom-sonic-td3.config.bcm @@ -0,0 +1,12 @@ +mem_cache_enable=0 +ifp_inports_support_enable=1 +ipv6_lpm_128b_enable=0x1 +l3_max_ecmp_mode=1 +lpm_scaling_enable=0 +bcm_num_cos=10 +default_cpu_tx_queue=9 +mmu_lossless=0 +host_as_route_disable=1 +sai_eapp_config_file=/etc/broadcom/eapps_cfg.json +sai_fast_convergence_support=1 +flow_init_mode=1 diff --git a/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b85/broadcom-sonic-td2.config.bcm b/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b85/broadcom-sonic-td2.config.bcm new file mode 100644 index 0000000000..01d767530d --- /dev/null +++ b/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b85/broadcom-sonic-td2.config.bcm @@ -0,0 +1,6 @@ +mmu_lossless=0 +#PTP +num_queues_pci=24 +num_queues_uc0=1 +num_queues_uc1=19 +sai_fast_convergence_support=1 diff --git a/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b87/broadcom-sonic-td3.config.bcm b/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b87/broadcom-sonic-td3.config.bcm new file mode 100644 index 0000000000..1439c8d875 --- /dev/null +++ b/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b87/broadcom-sonic-td3.config.bcm @@ -0,0 +1,8 @@ +mem_cache_enable=0 +ifp_inports_support_enable=1 +ipv6_lpm_128b_enable=0x1 +l3_max_ecmp_mode=1 +lpm_scaling_enable=0 +bcm_num_cos=10 +default_cpu_tx_queue=9 +mmu_lossless=0 diff --git a/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b96/broadcom-sonic-th.config.bcm b/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b96/broadcom-sonic-th.config.bcm new file mode 100644 index 0000000000..e8b5b7d885 --- /dev/null +++ b/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b96/broadcom-sonic-th.config.bcm @@ -0,0 +1,9 @@ +mmu_lossless=0 +bcm_num_cos=10 +default_cpu_tx_queue=9 +#PTP +num_queues_pci=24 +num_queues_uc0=1 +num_queues_uc1=1 +sai_fast_convergence_support=1 + diff --git a/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b97/broadcom-sonic-th2.config.bcm b/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b97/broadcom-sonic-th2.config.bcm new file mode 100644 index 0000000000..039932b58f --- /dev/null +++ b/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b97/broadcom-sonic-th2.config.bcm @@ -0,0 +1,31 @@ +schan_intr_enable=0 +l2xmsg_mode=1 +mmu_lossless=0 +arl_clean_timeout_usec=15000000 +asf_mem_profile=2 +bcm_stat_flags=1 +bcm_stat_jumbo=9236 +cdma_timeout_usec=15000000 +dma_desc_timeout_usec=15000000 +ipv6_lpm_128b_enable=1 +lpm_scaling_enable=0 +max_vp_lags=0 +miim_intr_enable=0 +module_64ports=1 +oversubscribe_mode=1 +bcm_num_cos=10 +default_cpu_tx_queue=9 +# Drop monitor configuration +flowtracker_enable=2 +flowtracker_max_flows=48000 +flowtracker_drop_monitor_enable=1 +flowtracker_export_interval_usecs=1000000 +flowtracker_max_export_pkt_length=9000 +flowtracker_fsp_reinject_max_length=128 +flow_init_mode=1 +num_queues_pci=46 +num_queues_uc0=1 +num_queues_uc1=1 +sai_eapp_config_file=/etc/broadcom/eapps_cfg.json +sai_fast_convergence_support=1 + diff --git a/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b98/broadcom-sonic-th3.config.bcm b/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b98/broadcom-sonic-th3.config.bcm new file mode 100644 index 0000000000..460fb5186b --- /dev/null +++ b/device/broadcom/x86_64-broadcom_common/x86_64-broadcom_b98/broadcom-sonic-th3.config.bcm @@ -0,0 +1,28 @@ +phy_null=1 +pll_bypass=1 +core_clock_frequency=1325 +dpr_clock_frequency=1000 +device_clock_frequency=1325 +port_flex_enable=1 +l2xmsg_mode.0=1 +mmu_port_num_mc_queue.0=1 +module_64ports.0=1 +multicast_l2_range.0=511 +oversubscribe_mode=1 +bcm_num_cos=8 +default_cpu_tx_queue=7 +mmu_lossless=0 +# Drop monitor configuration +flowtracker_enable=2 +flowtracker_max_flows=48000 +flowtracker_drop_monitor_enable=1 +flowtracker_export_interval_usecs=1000000 +flowtracker_max_export_pkt_length=9000 +flowtracker_fsp_reinject_max_length=128 +flow_init_mode=1 +num_queues_pci=46 +num_queues_uc0=1 +num_queues_uc1=1 +sai_eapp_config_file=/etc/broadcom/eapps_cfg.json +sai_fast_convergence_support=1 + diff --git a/platform/broadcom/docker-syncd-brcm.mk b/platform/broadcom/docker-syncd-brcm.mk index 72210c0c72..b1c4500de4 100644 --- a/platform/broadcom/docker-syncd-brcm.mk +++ b/platform/broadcom/docker-syncd-brcm.mk @@ -15,6 +15,7 @@ $(DOCKER_SYNCD_BASE)_VERSION = 1.0.0 $(DOCKER_SYNCD_BASE)_PACKAGE_NAME = syncd $(DOCKER_SYNCD_BASE)_RUN_OPT += -v /host/warmboot:/var/warmboot +$(DOCKER_SYNCD_BASE)_RUN_OPT += -v /usr/share/sonic/device/x86_64-broadcom_common:/usr/share/sonic/device/x86_64-broadcom_common:ro $(DOCKER_SYNCD_BASE)_BASE_IMAGE_FILES += bcmcmd:/usr/bin/bcmcmd $(DOCKER_SYNCD_BASE)_BASE_IMAGE_FILES += bcmsh:/usr/bin/bcmsh diff --git a/src/sonic-device-data/tests/permitted_list b/src/sonic-device-data/tests/permitted_list index f152140e90..0b43720081 100644 --- a/src/sonic-device-data/tests/permitted_list +++ b/src/sonic-device-data/tests/permitted_list @@ -167,6 +167,19 @@ ifp_inports_support_enable port_flex_enable pdma_descriptor_prefetch_enable pktdma_poll_mode_channel_bitmap +num_queues_pci +num_queues_uc0 +num_queues_uc1 +flow_init_mode +sai_eapp_config_file +flowtracker_enable +flowtracker_max_flows +flowtracker_drop_monitor_enable +flowtracker_export_interval_usecs +flowtracker_max_export_pkt_length +flowtracker_fsp_reinject_max_length +host_as_route_disable +sai_fast_convergence_support ccm_dma_enable ccmdma_intr_enable phy_enable