Skip to content

Commit 91a306d

Browse files
Merge pull request sonic-net#265 from Yakiv-Huryk/kernel-upgrade
Merge remote-tracking branch 'sonic-net/master' into bluefield
2 parents 992ea25 + 6bca726 commit 91a306d

File tree

328 files changed

+7586
-1452
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

328 files changed

+7586
-1452
lines changed

.azure-pipelines/azure-pipelines-UpgrateVersion.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,8 @@ stages:
161161
git branch -u remote/$BRANCH_NAME
162162
163163
echo $GIT_PASSWORD | gh auth login --with-token
164-
TITLE="Upgrade SONiC Versions"
165-
BODY="Upgrade SONiC Versions"
164+
TITLE="[${SOURCE_BRANCH#refs/heads/}] Upgrade SONiC package Versions"
165+
BODY=$TITLE
166166
RET=0
167167
if ! gh pr create -t "$TITLE" -b "$BODY" -B $(Build.SourceBranch) -R $(Build.Repository.Name) > pr.log 2>&1; then
168168
if ! grep -q "already exists" pr.log; then

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,6 @@ htmlcov/
105105
# Debian mirror Sources
106106
sources.list.*
107107
!sources.list*.j2
108+
109+
# Generated mirror configs
110+
apt-retries-count

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,6 @@
118118
[submodule "src/sonic-dash-api/sonic-dash-api"]
119119
path = src/sonic-dash-api/sonic-dash-api
120120
url = https://github.com/sonic-net/sonic-dash-api.git
121+
[submodule "platform/marvell-arm64/mrvl-prestera"]
122+
path = platform/marvell-arm64/mrvl-prestera
123+
url = https://github.com/Marvell-switching/mrvl-prestera.git

Makefile.cache

+30-3
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,22 @@ define SAVE_CACHE
357357
$(if $(call CHECK_WCACHE_ENABLED,$(1)), $(call SAVE_INTO_CACHE,$(1),$(2)))
358358
endef
359359

360+
RFS_DEP_FILES := $(wildcard \
361+
$(addprefix scripts/, build_debian_base_system.sh prepare_debian_image_buildinfo.sh build_mirror_config.sh) \
362+
$(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(INITRAMFS_TOOLS) $(LINUX_KERNEL)) \
363+
$(shell git ls-files files/initramfs-tools) \
364+
$(shell git ls-files files/image_config) \
365+
$(shell git ls-files files/apparmor) \
366+
$(shell git ls-files files/apt) \
367+
$(shell git ls-files files/sshd) \
368+
$(shell git ls-files files/dhcp) \
369+
src/sonic-build-hooks/buildinfo/trusted.gpg.d \
370+
platform/$(CONFIGURED_PLATFORM)/modules \
371+
files/docker/docker.service.conf \
372+
files/build_templates/default_users.json.j2 \
373+
files/build_scripts/generate_asic_config_checksum.py \
374+
files/scripts/core_cleanup.py \
375+
build_debian.sh onie-image.conf)
360376

361377

362378
# Set the target path for each target.
@@ -384,11 +400,17 @@ $(foreach pkg, $(SONIC_INSTALL_PKGS), \
384400
$(eval $(pkg)_DST_PATH := $(if $($(pkg)_DST_PATH), $($(pkg)_DST_PATH), $(FSROOT_PATH))) \
385401
$(eval $(FSROOT_PATH)/$(pkg)_TARGET := $(pkg)) )
386402

403+
$(foreach pkg, $(SONIC_RFS_TARGETS), \
404+
$(eval $(pkg)_DST_PATH := $(if $($(pkg)_DST_PATH), $($(pkg)_DST_PATH), $(TARGET_PATH))) \
405+
$(eval $(pkg)_CACHE_MODE := GIT_CONTENT_SHA) \
406+
$(eval $(pkg)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST)) \
407+
$(eval $(pkg)_DEP_FILES := $(SONIC_COMMON_BASE_FILES_LIST) $(RFS_DEP_FILES)) \
408+
$(eval $(TARGET_PATH)/$(pkg)_TARGET := $(pkg)) )
387409

388410
# define the DEP files(.dep and .smdep) and SHA files (.sha and smsha) for each target
389411
$(foreach pkg, $(SONIC_MAKE_DEBS) $(SONIC_DPKG_DEBS) $(SONIC_ONLINE_DEBS) $(SONIC_COPY_DEBS) \
390412
$(SONIC_MAKE_FILES) $(SONIC_PYTHON_STDEB_DEBS) $(SONIC_PYTHON_WHEELS) \
391-
$(SONIC_DOCKER_IMAGES) $(SONIC_DOCKER_DBG_IMAGES) $(SONIC_INSTALL_PKGS), \
413+
$(SONIC_DOCKER_IMAGES) $(SONIC_DOCKER_DBG_IMAGES) $(SONIC_INSTALL_PKGS) $(SONIC_RFS_TARGETS), \
392414
$(eval $(pkg)_MOD_SRC_PATH:=$(if $($(pkg)_SRC_PATH),$($(pkg)_SRC_PATH),$($(pkg)_PATH))) \
393415
$(eval $(pkg)_BASE_PATH:=$(if $($(pkg)_BASE_PATH),$($(pkg)_BASE_PATH),$(CURDIR))) \
394416
$(eval $(pkg)_DEP_FLAGS_FILE:=$($(pkg)_DST_PATH)/$(pkg).flags) \
@@ -489,6 +511,7 @@ $(eval $(call FLAGS_DEP_RULES, $(SONIC_PYTHON_STDEB_DEBS), $(PYTHON_DEBS_PATH),f
489511
$(eval $(call FLAGS_DEP_RULES, $(SONIC_PYTHON_WHEELS), $(PYTHON_WHEELS_PATH),flags))
490512
$(eval $(call FLAGS_DEP_RULES, $(SONIC_DOCKER_IMAGES) $(SONIC_DOCKER_DBG_IMAGES), $(TARGET_PATH),flags))
491513
$(eval $(call FLAGS_DEP_RULES, $(SONIC_INSTALL_PKGS), $(FSROOT_PATH),flags))
514+
$(eval $(call FLAGS_DEP_RULES, $(SONIC_RFS_TARGETS), $(TARGET_PATH),flags))
492515

493516

494517

@@ -564,10 +587,12 @@ ALL_DEP_FILES_LIST += $(foreach pkg,$(2), $($(filter none,$($(1)_CACHE_MODE)), \
564587
$(addsuffix .$(3).sha,$(addprefix $(pkg)/, $(1)))))
565588
$(foreach docker, $(filter $(SONIC_DOCKER_IMAGES), $(1)), \
566589
$(eval $(docker)_DEP_FILES+=$(wildcard files/build/versions/default/*) \
567-
$(wildcard files/build/versions/dockers/$(basename $(docker))/*)))
590+
$(wildcard files/build/versions/dockers/$(basename $(docker))/*) \
591+
$(foreach docker_file, $($(docker)_FILES), $(addprefix $(if $($(docker_file)_PATH), $($(docker_file)_PATH), $(FILES_PATH))/, $(docker_file))) ))
568592
$(foreach docker, $(filter $(SONIC_DOCKER_DBG_IMAGES), $(1)), \
569593
$(eval $(docker)_DEP_FILES+=$(wildcard files/build/versions/default/*) \
570-
$(wildcard files/build/versions/dockers/$(patsubst %-$(DBG_IMAGE_MARK).gz,%,$(docker))/*)))
594+
$(wildcard files/build/versions/dockers/$(patsubst %-$(DBG_IMAGE_MARK).gz,%,$(docker))/*) \
595+
$(foreach docker_file, $($(docker)_FILES), $(addprefix $(if $($(docker_file)_PATH), $($(docker_file)_PATH), $(FILES_PATH))/, $(docker_file))) ))
571596
$(addsuffix .$(3),$(addprefix $(2)/, $(1))) : $(2)/%.$(3) : \
572597
$(2)/%.flags $$$$($$$$*_DEP_FILES) $$$$(if $$$$($$$$*_SMDEP_FILES), $(2)/%.smdep)
573598
@$$(eval $$*_DEP_FILES_MODIFIED := $$? )
@@ -583,6 +608,7 @@ $(eval $(call SHA_DEP_RULES, $(SONIC_PYTHON_STDEB_DEBS), $(PYTHON_DEBS_PATH),dep
583608
$(eval $(call SHA_DEP_RULES, $(SONIC_PYTHON_WHEELS), $(PYTHON_WHEELS_PATH),dep))
584609
$(eval $(call SHA_DEP_RULES, $(SONIC_DOCKER_IMAGES) $(SONIC_DOCKER_DBG_IMAGES), $(TARGET_PATH),dep))
585610
$(eval $(call SHA_DEP_RULES, $(SONIC_INSTALL_PKGS), $(FSROOT_PATH),dep))
611+
$(eval $(call SHA_DEP_RULES, $(SONIC_RFS_TARGETS), $(TARGET_PATH),dep))
586612

587613

588614

@@ -616,6 +642,7 @@ SONIC_CACHE_CLEAN_TARGETS = $(addsuffix -clean,$(addprefix $(TARGET_PATH)/, \
616642
$(SONIC_DOCKER_IMAGES) \
617643
$(SONIC_DOCKER_DBG_IMAGES) \
618644
$(SONIC_SIMPLE_DOCKER_IMAGES) \
645+
$(SONIC_RFS_TARGETS) \
619646
$(SONIC_INSTALLERS)))
620647
$(SONIC_CACHE_CLEAN_TARGETS) :: $(TARGET_PATH)/%-clean : .platform
621648
@rm -f $($*_DEP_FLAGS_FILE) $($*_MOD_HASH_FILE) $($*_SMOD_HASH_FILE) \

Makefile.work

+1
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,7 @@ SONIC_BUILD_INSTRUCTION := $(MAKE) \
570570
GZ_COMPRESS_PROGRAM=$(GZ_COMPRESS_PROGRAM) \
571571
MIRROR_SNAPSHOT=$(MIRROR_SNAPSHOT) \
572572
SONIC_VERSION_CONTROL_COMPONENTS=$(SONIC_VERSION_CONTROL_COMPONENTS) \
573+
ONIE_IMAGE_PART_SIZE=$(ONIE_IMAGE_PART_SIZE) \
573574
SONIC_OS_VERSION=$(SONIC_OS_VERSION) \
574575
$(SONIC_OVERRIDE_BUILD_VARS)
575576

azure-pipelines.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ stages:
123123
- script: |
124124
sudo apt-get update
125125
sudo apt-get install -y make libtool m4 autoconf dh-exec debhelper cmake pkg-config \
126-
libhiredis-dev libnl-3-dev libnl-genl-3-dev libnl-route-3-dev libnl-nf-3-dev swig3.0 \
126+
libhiredis-dev libnl-3-dev libnl-genl-3-dev libnl-route-3-dev libnl-nf-3-dev swig \
127127
libpython2.7-dev libboost-dev libboost-serialization-dev uuid-dev libzmq5 libzmq3-dev python3-pip \
128-
cmake libgtest-dev libgmock-dev libyang-dev
128+
cmake libgtest-dev libgmock-dev libyang-dev nlohmann-json3-dev
129129
sudo pip3 install pytest
130130
cd src/sonic-swss-common
131131
./autogen.sh

build_debian.sh

+67-24
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ CONFIGURED_PLATFORM=$([ -f .platform ] && cat .platform || echo vs)
3434
## docker engine version (with platform)
3535
DOCKER_VERSION=5:24.0.2-1~debian.11~$IMAGE_DISTRO
3636
CONTAINERD_IO_VERSION=1.6.21-1
37-
LINUX_KERNEL_VERSION=5.10.0-18-2
37+
LINUX_KERNEL_VERSION=5.10.0-23-2
3838

3939
## Working directory to prepare the file system
4040
FILESYSTEM_ROOT=./fsroot
@@ -59,6 +59,9 @@ TRUSTED_GPG_DIR=$BUILD_TOOL_PATH/trusted.gpg.d
5959
exit 1
6060
}
6161

62+
## Check if not a last stage of RFS build
63+
if [[ $RFS_SPLIT_LAST_STAGE != y ]]; then
64+
6265
## Prepare the file system directory
6366
if [[ -d $FILESYSTEM_ROOT ]]; then
6467
sudo rm -rf $FILESYSTEM_ROOT || die "Failed to clean chroot directory"
@@ -71,11 +74,6 @@ touch $FILESYSTEM_ROOT/$PLATFORM_DIR/firsttime
7174
## ensure proc is mounted
7275
sudo mount proc /proc -t proc || true
7376

74-
## make / as a mountpoint in chroot env, needed by dockerd
75-
pushd $FILESYSTEM_ROOT
76-
sudo mount --bind . .
77-
popd
78-
7977
## Build the host debian base system
8078
echo '[INFO] Build host debian base system...'
8179
TARGET_PATH=$TARGET_PATH scripts/build_debian_base_system.sh $CONFIGURED_ARCH $IMAGE_DISTRO $FILESYSTEM_ROOT
@@ -113,7 +111,8 @@ sudo LANG=C chroot $FILESYSTEM_ROOT mount
113111
## Pointing apt to public apt mirrors and getting latest packages, needed for latest security updates
114112
scripts/build_mirror_config.sh files/apt $CONFIGURED_ARCH $IMAGE_DISTRO
115113
sudo cp files/apt/sources.list.$CONFIGURED_ARCH $FILESYSTEM_ROOT/etc/apt/sources.list
116-
sudo cp files/apt/apt.conf.d/{81norecommends,apt-{clean,gzip-indexes,no-languages},no-check-valid-until,apt-multiple-retries} $FILESYSTEM_ROOT/etc/apt/apt.conf.d/
114+
sudo cp files/apt/apt-retries-count $FILESYSTEM_ROOT/etc/apt/apt.conf.d/
115+
sudo cp files/apt/apt.conf.d/{81norecommends,apt-{clean,gzip-indexes,no-languages},no-check-valid-until} $FILESYSTEM_ROOT/etc/apt/apt.conf.d/
117116

118117
## Note: set lang to prevent locale warnings in your chroot
119118
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y update
@@ -296,7 +295,7 @@ then
296295
install_kubernetes ${MASTER_KUBERNETES_VERSION}
297296

298297
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get update
299-
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install hyperv-daemons gnupg xmlstarlet parted
298+
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install hyperv-daemons gnupg xmlstarlet parted netcat
300299
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y remove gnupg
301300
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT curl -o /tmp/cri-dockerd.deb -fsSL \
302301
https://github.com/Mirantis/cri-dockerd/releases/download/v${MASTER_CRI_DOCKERD}/cri-dockerd_${MASTER_CRI_DOCKERD}.3-0.debian-${IMAGE_DISTRO}_amd64.deb
@@ -409,6 +408,10 @@ LogsDirectory=audit
409408
LogsDirectoryMode=0750
410409
EOF
411410

411+
# latest tcpdump control resource access with AppArmor.
412+
# override tcpdump profile to allow tcpdump access TACACS config file.
413+
sudo cp files/apparmor/usr.bin.tcpdump $FILESYSTEM_ROOT/etc/apparmor.d/local/usr.bin.tcpdump
414+
412415
if [[ $CONFIGURED_ARCH == amd64 ]]; then
413416
## Pre-install the fundamental packages for amd64 (x86)
414417
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install \
@@ -573,24 +576,11 @@ if [ -f files/image_config/ntp/ntp-systemd-wrapper ]; then
573576
sudo cp ./files/image_config/ntp/ntp-systemd-wrapper $FILESYSTEM_ROOT/usr/lib/ntp/
574577
fi
575578

576-
## Version file
579+
## Version file part 1
577580
sudo mkdir -p $FILESYSTEM_ROOT/etc/sonic
578581
if [ -f files/image_config/sonic_release ]; then
579582
sudo cp files/image_config/sonic_release $FILESYSTEM_ROOT/etc/sonic/
580583
fi
581-
export build_version="${SONIC_IMAGE_VERSION}"
582-
export debian_version="$(cat $FILESYSTEM_ROOT/etc/debian_version)"
583-
export kernel_version="${kversion}"
584-
export asic_type="${sonic_asic_platform}"
585-
export asic_subtype="${TARGET_MACHINE}"
586-
export commit_id="$(git rev-parse --short HEAD)"
587-
export branch="$(git rev-parse --abbrev-ref HEAD)"
588-
export release="$(if [ -f $FILESYSTEM_ROOT/etc/sonic/sonic_release ]; then cat $FILESYSTEM_ROOT/etc/sonic/sonic_release; fi)"
589-
export build_date="$(date -u)"
590-
export build_number="${BUILD_NUMBER:-0}"
591-
export built_by="$USER@$BUILD_HOSTNAME"
592-
export sonic_os_version="${SONIC_OS_VERSION}"
593-
j2 files/build_templates/sonic_version.yml.j2 | sudo tee $FILESYSTEM_ROOT/etc/sonic/sonic_version.yml
594584

595585
# Default users info
596586
export password_expire="$( [[ "$CHANGE_DEFAULT_PASSWORD" == "y" ]] && echo true || echo false )"
@@ -612,6 +602,60 @@ if [[ ! -f './asic_config_checksum' ]]; then
612602
fi
613603
sudo cp ./asic_config_checksum $FILESYSTEM_ROOT/etc/sonic/asic_config_checksum
614604

605+
## Check if not a last stage of RFS build
606+
fi
607+
608+
if [[ $RFS_SPLIT_FIRST_STAGE == y ]]; then
609+
echo '[INFO] Finished with RFS first stage'
610+
echo '[INFO] Umount all'
611+
612+
## Display all process details access /proc
613+
sudo LANG=C chroot $FILESYSTEM_ROOT fuser -vm /proc
614+
## Kill the processes
615+
sudo LANG=C chroot $FILESYSTEM_ROOT fuser -km /proc || true
616+
## Wait fuser fully kill the processes
617+
sudo timeout 15s bash -c 'until LANG=C chroot $0 umount /proc; do sleep 1; done' $FILESYSTEM_ROOT || true
618+
619+
sudo rm -f $TARGET_PATH/$RFS_SQUASHFS_NAME
620+
sudo mksquashfs $FILESYSTEM_ROOT $TARGET_PATH/$RFS_SQUASHFS_NAME -Xcompression-level 1
621+
622+
exit 0
623+
fi
624+
625+
if [[ $RFS_SPLIT_LAST_STAGE == y ]]; then
626+
echo '[INFO] RFS build: second stage'
627+
628+
## ensure proc is mounted
629+
sudo mount proc /proc -t proc || true
630+
631+
sudo fuser -vm $FILESYSTEM_ROOT || true
632+
sudo rm -rf $FILESYSTEM_ROOT
633+
sudo unsquashfs -d $FILESYSTEM_ROOT $TARGET_PATH/$RFS_SQUASHFS_NAME
634+
635+
## make / as a mountpoint in chroot env, needed by dockerd
636+
pushd $FILESYSTEM_ROOT
637+
sudo mount --bind . .
638+
popd
639+
640+
trap_push 'sudo LANG=C chroot $FILESYSTEM_ROOT umount /proc || true'
641+
sudo LANG=C chroot $FILESYSTEM_ROOT mount proc /proc -t proc
642+
fi
643+
644+
## Version file part 2
645+
export build_version="${SONIC_IMAGE_VERSION}"
646+
export debian_version="$(cat $FILESYSTEM_ROOT/etc/debian_version)"
647+
export kernel_version="${kversion}"
648+
export asic_type="${sonic_asic_platform}"
649+
export asic_subtype="${TARGET_MACHINE}"
650+
export commit_id="$(git rev-parse --short HEAD)"
651+
export branch="$(git rev-parse --abbrev-ref HEAD)"
652+
export release="$(if [ -f $FILESYSTEM_ROOT/etc/sonic/sonic_release ]; then cat $FILESYSTEM_ROOT/etc/sonic/sonic_release; fi)"
653+
export build_date="$(date -u)"
654+
export build_number="${BUILD_NUMBER:-0}"
655+
export built_by="$USER@$BUILD_HOSTNAME"
656+
export sonic_os_version="${SONIC_OS_VERSION}"
657+
j2 files/build_templates/sonic_version.yml.j2 | sudo tee $FILESYSTEM_ROOT/etc/sonic/sonic_version.yml
658+
615659
if [ -f sonic_debian_extension.sh ]; then
616660
./sonic_debian_extension.sh $FILESYSTEM_ROOT $PLATFORM_DIR $IMAGE_DISTRO
617661
fi
@@ -757,8 +801,7 @@ sudo LANG=C chroot $FILESYSTEM_ROOT fuser -vm /proc
757801
## Kill the processes
758802
sudo LANG=C chroot $FILESYSTEM_ROOT fuser -km /proc || true
759803
## Wait fuser fully kill the processes
760-
sleep 15
761-
sudo LANG=C chroot $FILESYSTEM_ROOT umount /proc || true
804+
sudo timeout 15s bash -c 'until LANG=C chroot $0 umount /proc; do sleep 1; done' $FILESYSTEM_ROOT || true
762805

763806
## Prepare empty directory to trigger mount move in initramfs-tools/mount_loop_root, implemented by patching
764807
sudo mkdir $FILESYSTEM_ROOT/host
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
{
2+
"interfaces": {
3+
"Ethernet0": {
4+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
5+
},
6+
"Ethernet8": {
7+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
8+
},
9+
"Ethernet16": {
10+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
11+
},
12+
"Ethernet24": {
13+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
14+
},
15+
"Ethernet32": {
16+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
17+
},
18+
"Ethernet40": {
19+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
20+
},
21+
"Ethernet48": {
22+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
23+
},
24+
"Ethernet56": {
25+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
26+
},
27+
"Ethernet64": {
28+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
29+
},
30+
"Ethernet72": {
31+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
32+
},
33+
"Ethernet80": {
34+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
35+
},
36+
"Ethernet88": {
37+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
38+
},
39+
"Ethernet96": {
40+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
41+
},
42+
"Ethernet104": {
43+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
44+
},
45+
"Ethernet112": {
46+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
47+
},
48+
"Ethernet120": {
49+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
50+
},
51+
"Ethernet128": {
52+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
53+
},
54+
"Ethernet136": {
55+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
56+
},
57+
"Ethernet144": {
58+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
59+
},
60+
"Ethernet152": {
61+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
62+
},
63+
"Ethernet160": {
64+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
65+
},
66+
"Ethernet168": {
67+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
68+
},
69+
"Ethernet176": {
70+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
71+
},
72+
"Ethernet184": {
73+
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
74+
},
75+
"Ethernet192": {
76+
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
77+
},
78+
"Ethernet200": {
79+
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
80+
},
81+
"Ethernet208": {
82+
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
83+
},
84+
"Ethernet216": {
85+
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
86+
},
87+
"Ethernet224": {
88+
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
89+
},
90+
"Ethernet232": {
91+
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
92+
},
93+
"Ethernet240": {
94+
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
95+
},
96+
"Ethernet248": {
97+
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
98+
},
99+
"Ethernet256": {
100+
"default_brkout_mode": "1x10G",
101+
"fec": "none"
102+
}
103+
}
104+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/th4-a7060dx5-32-200Gx48-100Gx32.config.bcm

0 commit comments

Comments
 (0)