Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion device/arista/x86_64-arista_7060_cx32s/platform_asic
Original file line number Diff line number Diff line change
@@ -1 +1 @@
broadcom
broadcom-legacy
52 changes: 52 additions & 0 deletions platform/broadcom/docker-syncd-brcm-legacy.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# docker image for brcm-legacy syncd

DOCKER_SYNCD_LEGACY_BASE = docker-syncd-brcm-legacy.gz
DOCKER_SYNCD_LEGACY_BASE_DBG = docker-syncd-brcm-legacy-$(DBG_IMAGE_MARK).gz
DOCKER_SYNCD_LEGACY_PLATFORM_CODE = brcm-legacy

$(DOCKER_SYNCD_LEGACY_BASE)_PATH = $(PLATFORM_PATH)/docker-syncd-$(DOCKER_SYNCD_LEGACY_PLATFORM_CODE)

$(DOCKER_SYNCD_LEGACY_BASE)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BOOKWORM)
$(DOCKER_SYNCD_LEGACY_BASE)_DBG_DEPENDS += $($(DOCKER_CONFIG_ENGINE_BOOKWORM)_DBG_DEPENDS)
$(DOCKER_SYNCD_LEGACY_BASE)_DBG_IMAGE_PACKAGES = $($(DOCKER_CONFIG_ENGINE_BOOKWORM)_DBG_IMAGE_PACKAGES)

SONIC_DOCKER_IMAGES += $(DOCKER_SYNCD_LEGACY_BASE)
ifneq ($(ENABLE_SYNCD_RPC),y)
SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_SYNCD_LEGACY_BASE)
endif

SONIC_DOCKER_DBG_IMAGES += $(DOCKER_SYNCD_LEGACY_BASE_DBG)
ifneq ($(ENABLE_SYNCD_RPC),y)
SONIC_INSTALL_DOCKER_DBG_IMAGES += $(DOCKER_SYNCD_LEGACY_BASE_DBG)
endif


$(DOCKER_SYNCD_LEGACY_BASE)_DEPENDS += $(SYNCD)
$(DOCKER_SYNCD_LEGACY_BASE)_DEPENDS += $(BRCM_LEGACY_SAI)
$(DOCKER_SYNCD_LEGACY_BASE)_DEPENDS += $(SSWSYNCD)
$(DOCKER_SYNCD_LEGACY_BASE)_FILES += $(RDB-CLI)

ifeq ($(INSTALL_DEBUG_TOOLS), y)
$(DOCKER_SYNCD_LEGACY_BASE)_DBG_DEPENDS += $(SYNCD_DBG) \
$(LIBSWSSCOMMON_DBG) \
$(LIBSAIMETADATA_DBG) \
$(LIBSAIREDIS_DBG)
endif

$(DOCKER_SYNCD_LEGACY_BASE)_VERSION = 1.0.0
$(DOCKER_SYNCD_LEGACY_BASE)_PACKAGE_NAME = syncd-legacy
$(DOCKER_SYNCD_LEGACY_BASE)_MACHINE = broadcom-legacy
$(DOCKER_SYNCD_LEGACY_BASE)_AFTER = $(DOCKER_SYNCD_DNX_BASE)
$(DOCKER_SYNCD_LEGACY_BASE)_CONTAINER_NAME = syncd

$(DOCKER_SYNCD_LEGACY_BASE)_RUN_OPT += --privileged -t
$(DOCKER_SYNCD_LEGACY_BASE)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf
$(DOCKER_SYNCD_LEGACY_BASE)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
$(DOCKER_SYNCD_LEGACY_BASE)_RUN_OPT += -v /host/warmboot:/var/warmboot

$(DOCKER_SYNCD_LEGACY_BASE)_BASE_IMAGE_FILES += bcmcmd:/usr/bin/bcmcmd
$(DOCKER_SYNCD_LEGACY_BASE)_BASE_IMAGE_FILES += bcmsh:/usr/bin/bcmsh
$(DOCKER_SYNCD_LEGACY_BASE)_BASE_IMAGE_FILES += bcm_common:/usr/bin/bcm_common

SONIC_BOOKWORM_DOCKERS += $(DOCKER_SYNCD_LEGACY_BASE)
SONIC_BOOKWORM_DBG_DOCKERS += $(DOCKER_SYNCD_LEGACY_BASE_DBG)
38 changes: 38 additions & 0 deletions platform/broadcom/docker-syncd-brcm-legacy/Dockerfile.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{% from "dockers/dockerfile-macros.j2" import install_debian_packages, install_python_wheels, copy_files %}
ARG BASE=docker-config-engine-bookworm-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}}

FROM $BASE AS base

ARG docker_container_name

## Make apt-get non-interactive
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update

{% if docker_syncd_brcm_legacy_debs.strip() -%}
# Copy locally-built Debian package dependencies
{{ copy_files("debs/", docker_syncd_brcm_legacy_debs.split(' '), "/debs/") }}

# Install locally-built Debian packages and implicitly install their dependencies
{{ install_debian_packages(docker_syncd_brcm_legacy_debs.split(' ')) }}
{%- endif %}

## TODO: add kmod into Depends
RUN apt-get install -yf kmod

## BRCM uses ethtool to set host interface speed
RUN apt-get install -y ethtool

COPY ["start.sh", "start_led.sh", "bcmsh", "files/rdb-cli", "/usr/bin/"]
RUN chmod +x /usr/bin/rdb-cli

COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
COPY ["critical_processes", "/etc/supervisor/"]

FROM $BASE

RUN --mount=type=bind,from=base,target=/changes-to-image rsync -axAX --no-D --exclude=/sys --exclude=/proc --exclude=/dev --exclude=resolv.conf /changes-to-image/ /

ENV DEBIAN_FRONTEND=noninteractive
ENTRYPOINT ["/usr/local/bin/supervisord"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/bin/bash

function help()
{
echo "Usage: $0 -n [0 to $(($NUM_ASIC-1))]" 1>&2; exit 1;

}


DEV=""

PLATFORM=`sonic-cfggen -H -v DEVICE_METADATA.localhost.platform`

# Parse the device specific asic conf file, if it exists

ASIC_CONF=/usr/share/sonic/device/$PLATFORM/asic.conf
if [ -f "$ASIC_CONF" ]; then
source $ASIC_CONF
fi


if [[ ($NUM_ASIC -gt 1) ]]; then
OPTIND=1

while getopts ":n:h:" opt; do
case "${opt}" in
h) help
exit 0
;;
n) DEV=${OPTARG}
[ $DEV -lt $NUM_ASIC -a $DEV -ge 0 ] || help
;;
esac
done
shift "$((OPTIND-1))"

if [ -z "${DEV}" ]; then
help
fi
fi
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

BCM_COMMON=/usr/bin/bcm_common
if [ -f "$BCM_COMMON" ]; then
source $BCM_COMMON
fi
docker exec -i syncd$DEV bcmcmd "$@"

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

BCM_COMMON=/usr/bin/bcm_common
if [ -f "$BCM_COMMON" ]; then
source $BCM_COMMON
fi

docker exec -it syncd$DEV bcmsh "$@"
40 changes: 40 additions & 0 deletions platform/broadcom/docker-syncd-brcm-legacy/bcmsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/bin/bash
usage="$(basename "$0") [-h] [-q] [-t timeout] -- interactive shell for bcm service
where:
-h show this help text
-t inactivity timeout in seconds (default 300 seconds, 0 for no timeout)
-q quite, no banner (default: verbose)"

banner="Press Enter to show prompt.
Press Ctrl+C to exit.
NOTICE: Only one bcmsh or bcmcmd can connect to the shell at same time.
"

# Default verbose
quiet=false
timeout=300

while getopts 'hqt:' option; do
case "$option" in
h) echo "$usage"
exit
;;
q) quiet=true
;;
t) timeout=$OPTARG
;;
\?) printf "illegal option: -%s\n" "$OPTARG" >&2
echo "$usage" >&2
exit 1
;;
esac
done
shift $((OPTIND - 1))

if [ "$quiet" = false ]; then
echo "$banner"
fi

/usr/bin/socat -T$timeout readline UNIX-CONNECT:/var/run/sswsyncd/sswsyncd.socket

Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
program:dsserve
program:syncd
31 changes: 31 additions & 0 deletions platform/broadcom/docker-syncd-brcm-legacy/start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env bash

HWSKU_DIR=/usr/share/sonic/hwsku

SYNCD_SOCKET_FILE=/var/run/sswsyncd/sswsyncd.socket

# Remove stale files if they exist
rm -f ${SYNCD_SOCKET_FILE}

mkdir -p /etc/sai.d/

# There are two ways to specify the contents of the SAI_INIT_CONFIG_FILE and they are mutually exclusive
# via current method (sai.profile.j2) or new method (config.bcm.j2)
# If delta is large, use sai.profile.j2 which basically require the user to select which config file to use
# If delta is small, use config.bcm.j2 where additional SAI INIT config properties are added
# based on specific device metadata requirement
# in this case sai.profile should have been modified to use the path /etc/sai.d/config.bcm
# There is also a possibility that both sai.profile.j2 and config.bcm.j2 are absent. in that cacse just copy
# sai.profile to the new /etc/said directory.

# Create/Copy the sai.profile to /etc/sai.d/sai.profile
if [ -f $HWSKU_DIR/sai.profile.j2 ]; then
sonic-cfggen -d -t $HWSKU_DIR/sai.profile.j2 > /etc/sai.d/sai.profile
else
if [ -f $HWSKU_DIR/config.bcm.j2 ]; then
sonic-cfggen -d -t $HWSKU_DIR/config.bcm.j2 > /etc/sai.d/config.bcm
fi
if [ -f $HWSKU_DIR/sai.profile ]; then
cp $HWSKU_DIR/sai.profile /etc/sai.d/sai.profile
fi
fi
38 changes: 38 additions & 0 deletions platform/broadcom/docker-syncd-brcm-legacy/start_led.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env bash

PLATFORM_DIR=/usr/share/sonic/platform
SYNCD_SOCKET_FILE=/var/run/sswsyncd/sswsyncd.socket
LED_PROC_INIT_SOC=${PLATFORM_DIR}/led_proc_init.soc

# Function: wait until syncd has created the socket for bcmcmd to connect to
wait_syncd() {
while true; do
if [ -e ${SYNCD_SOCKET_FILE} ]; then
break
fi
sleep 1
done

# wait until bcm sdk is ready to get a request
counter=0
while true; do
/usr/bin/bcmcmd -t 1 "show unit" | grep BCM >/dev/null 2>&1
rv=$?
if [ $rv -eq 0 ]; then
break
fi
counter=$((counter+1))
if [ $counter -ge 60 ]; then
echo "syncd is not ready to take commands after $counter re-tries; Exiting!"
break
fi
sleep 1
done
}

# If this platform has an initialization file for the Broadcom LED microprocessor, load it
if [[ -r "$LED_PROC_INIT_SOC" && ! -f /var/warmboot/warm-starting ]]; then
wait_syncd
/usr/bin/bcmcmd -t 60 "rcload $LED_PROC_INIT_SOC"
fi

69 changes: 69 additions & 0 deletions platform/broadcom/docker-syncd-brcm-legacy/supervisord.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
[supervisord]
logfile_maxbytes=1MB
logfile_backups=2
nodaemon=true

[eventlistener:dependent-startup]
command=python3 -m supervisord_dependent_startup
autostart=true
autorestart=unexpected
startretries=0
exitcodes=0,3
events=PROCESS_STATE
buffer_size=1024

[eventlistener:supervisor-proc-exit-listener]
command=/usr/bin/supervisor-proc-exit-listener-rs --container-name syncd
events=PROCESS_STATE_EXITED,PROCESS_STATE_RUNNING
autostart=true
autorestart=unexpected
buffer_size=1024

[program:rsyslogd]
command=/usr/sbin/rsyslogd -n -iNONE
priority=1
autostart=false
autorestart=unexpected
stdout_logfile=NONE
stdout_syslog=true
stderr_logfile=NONE
stderr_syslog=true
dependent_startup=true

[program:start]
command=/usr/bin/start.sh
priority=2
autostart=false
autorestart=false
startsecs=0
stdout_logfile=NONE
stdout_syslog=true
stderr_logfile=NONE
stderr_syslog=true
dependent_startup=true
dependent_startup_wait_for=rsyslogd:running

[program:syncd]
command=/usr/bin/syncd_start.sh
priority=3
autostart=false
autorestart=false
stdout_logfile=NONE
stdout_syslog=true
stderr_logfile=NONE
stderr_syslog=true
dependent_startup=true
dependent_startup_wait_for=start:exited

[program:ledinit]
command=/usr/bin/start_led.sh
priority=4
autostart=false
autorestart=false
startsecs=0
stdout_logfile=NONE
stdout_syslog=true
stderr_logfile=NONE
stderr_syslog=true
dependent_startup=true
dependent_startup_wait_for=syncd:running
4 changes: 2 additions & 2 deletions platform/broadcom/one-aboot.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

SONIC_ONE_ABOOT_IMAGE = sonic-aboot-broadcom.swi
$(SONIC_ONE_ABOOT_IMAGE)_MACHINE = broadcom
$(SONIC_ONE_ABOOT_IMAGE)_DEPENDENT_MACHINE = broadcom-dnx
$(SONIC_ONE_ABOOT_IMAGE)_DEPENDENT_MACHINE = broadcom-dnx broadcom-legacy
$(SONIC_ONE_ABOOT_IMAGE)_IMAGE_TYPE = aboot
ifeq ($(INCLUDE_GBSYNCD), y)
$(SONIC_ONE_ABOOT_IMAGE)_INSTALLS += $(PHY_CREDO)
endif
$(SONIC_ONE_ABOOT_IMAGE)_INSTALLS += $(FLASHROM)
$(SONIC_ONE_ABOOT_IMAGE)_INSTALLS += $(SYSTEMD_SONIC_GENERATOR)
$(SONIC_ONE_ABOOT_IMAGE)_LAZY_BUILD_INSTALLS = $(BRCM_OPENNSL_KERNEL) $(BRCM_DNX_OPENNSL_KERNEL)
$(SONIC_ONE_ABOOT_IMAGE)_LAZY_BUILD_INSTALLS = $(BRCM_OPENNSL_KERNEL) $(BRCM_DNX_OPENNSL_KERNEL) $(BRCM_LEGACY_OPENNSL_KERNEL)
$(SONIC_ONE_ABOOT_IMAGE)_INSTALLS += $(ARISTA_PLATFORM_MODULE_PYTHON3) \
$(ARISTA_PLATFORM_MODULE_DRIVERS) \
$(ARISTA_PLATFORM_MODULE_LIBS) \
Expand Down
2 changes: 1 addition & 1 deletion platform/broadcom/one-image.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

SONIC_ONE_IMAGE = sonic-broadcom.bin
$(SONIC_ONE_IMAGE)_MACHINE = broadcom
$(SONIC_ONE_IMAGE)_DEPENDENT_MACHINE = broadcom-dnx
$(SONIC_ONE_IMAGE)_DEPENDENT_MACHINE = broadcom-dnx broadcom-legacy
$(SONIC_ONE_IMAGE)_IMAGE_TYPE = onie
$(SONIC_ONE_IMAGE)_INSTALLS += $(PDDF_PLATFORM_MODULE)
$(SONIC_ONE_IMAGE)_INSTALLS += $(SYSTEMD_SONIC_GENERATOR)
Expand Down
2 changes: 2 additions & 0 deletions platform/broadcom/rules.mk
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
include $(PLATFORM_PATH)/sai-modules.mk
include $(PLATFORM_PATH)/sai-xgs.mk
include $(PLATFORM_PATH)/sai-dnx.mk
include $(PLATFORM_PATH)/sai-legacy.mk
include $(PLATFORM_PATH)/sswsyncd.mk
# TODO(trixie): re-enable modules after updating for Trixie
include $(PLATFORM_PATH)/platform-modules-nokia.mk
Expand All @@ -26,6 +27,7 @@ include $(PLATFORM_PATH)/platform-modules-ufispace.mk
include $(PLATFORM_PATH)/docker-syncd-brcm.mk
include $(PLATFORM_PATH)/docker-syncd-brcm-rpc.mk
include $(PLATFORM_PATH)/docker-saiserver-brcm.mk
include $(PLATFORM_PATH)/docker-syncd-brcm-legacy.mk
ifeq ($(INCLUDE_PDE), y)
include $(PLATFORM_PATH)/docker-pde.mk
include $(PLATFORM_PATH)/sonic-pde-tests.mk
Expand Down
15 changes: 15 additions & 0 deletions platform/broadcom/sai-legacy.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Broadcom LEGACY SAI definitions
LIBSAIBCM_LEGACY_VERSION = 13.2.1.100
LIBSAIBCM_LEGACY_BRANCH_NAME = SAI_13.2.1_compat_OCP1.17.1

LIBSAIBCM_LEGACY_URL_PREFIX = "https://packages.trafficmanager.net/public/sai/sai-broadcom/$(LIBSAIBCM_LEGACY_BRANCH_NAME)/$(LIBSAIBCM_LEGACY_VERSION)/xgs"

# SAI module for LEGACY Asic family
BRCM_LEGACY_SAI = libsaibcm_$(LIBSAIBCM_LEGACY_VERSION)_amd64.deb
$(BRCM_LEGACY_SAI)_URL = "$(LIBSAIBCM_LEGACY_URL_PREFIX)/$(BRCM_LEGACY_SAI)"

# Package registration
SONIC_ONLINE_DEBS += $(BRCM_LEGACY_SAI)

# Version handling
$(BRCM_LEGACY_SAI)_SKIP_VERSION=y
Loading
Loading