From 8fc8578c4d0db0fb176884484596207bfe83e0f1 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Tue, 4 Apr 2023 14:55:27 +0800 Subject: [PATCH 01/17] [submodule] Update submodule to the latest HEAD automatically (#14491) --- src/linkmgrd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/linkmgrd b/src/linkmgrd index 4945d49dc0a3..7c56dc83be78 160000 --- a/src/linkmgrd +++ b/src/linkmgrd @@ -1 +1 @@ -Subproject commit 4945d49dc0a31645c2b037762d20702ae63758cc +Subproject commit 7c56dc83be7847ee2967e04159a6dfa981e1a5b9 From c4435e833b0c850684161ca255a8e0f5c484a0ef Mon Sep 17 00:00:00 2001 From: Santhosh Kumar T <53558409+santhosh-kt@users.noreply.github.com> Date: Tue, 4 Apr 2023 22:49:47 +0530 Subject: [PATCH 02/17] [DellEMC] S6100 - Adding logger to fetch SSD FW Upgrade status (#14247) Adding logger to fetch SSD FW Upgrade status --- .../s6100/scripts/s6100_ssd_upgrade_status.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh index b06de8184ca0..4a750b78a5ff 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh @@ -23,25 +23,32 @@ SMART_CMD=`smartctl -a /dev/sda` SSD_FW_VERSION=$(echo "$iSMART_CMD" | grep "FW Version" | awk '{print $NF}') SSD_FW_VERSION=${SSD_FW_VERSION,,} SSD_MODEL=$(echo "$iSMART_CMD" | grep "Model" | awk '{print $NF}') +logger -p user.crit -t DELL_S6100_SSD_MON "SSD Model = $SSD_MODEL ; FWVERSION = $SSD_FW_VERSION" if [ -e $SSD_FW_UPGRADE/GPIO7_pending_upgrade ]; then if [ $SSD_MODEL == "3IE" ] && [ $SSD_FW_VERSION == "s141002c" ]; then # If SSD Firmware is not upgraded + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is running older firmware. Do not power-cycle/reboot this unit." + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." exit 0 fi if [ $SSD_FW_VERSION == "s16425c1" ] || [ $SSD_FW_VERSION == "s16425cq" ]; then # If SSD Firmware is not upgraded + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is running older firmware. Do not power-cycle/reboot this unit." + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." exit 0 fi fi echo "$0 `date` SSD FW upgrade logs post reboot." >> $SSD_UPGRADE_LOG +logger -p user.crit -t DELL_S6100_SSD_MON "SSD FW upgrade logs post reboot." SSD_UPGRADE_STATUS1=`io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 09 --offset 211; io_rd_wr.py --get --offset 212` SSD_UPGRADE_STATUS1=$(echo "$SSD_UPGRADE_STATUS1" | awk '{print $NF}') SSD_UPGRADE_STATUS2=`io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 0A --offset 211; io_rd_wr.py --get --offset 212` SSD_UPGRADE_STATUS2=$(echo "$SSD_UPGRADE_STATUS2" | awk '{print $NF}') +logger -p user.crit -t DELL_S6100_SSD_MON "SSD Status REG1 = $SSD_UPGRADE_STATUS1 ; REG2 = $SSD_UPGRADE_STATUS2" if [ $SSD_UPGRADE_STATUS1 == "2" ]; then rm -rf $SSD_FW_UPGRADE/GPIO7_* @@ -71,11 +78,14 @@ elif [ $SSD_FW_VERSION == "s210506g" ] || [ $SSD_FW_VERSION == "s16425cg" ]; the rm -rf $SSD_FW_UPGRADE/GPIO7_* touch $SSD_FW_UPGRADE/GPIO7_high systemctl start --no-block s6100-ssd-monitor.timer + logger -p user.crit -t DELL_S6100_SSD_MON "SSD FW upgraded already." if [ $SSD_UPGRADE_STATUS1 == "0" ]; then if [ $SSD_MODEL == "3IE" ];then echo "$0 `date` SSD FW upgraded from S141002C to S210506G in first mp_64." >> $SSD_UPGRADE_LOG + logger -p user.crit -t DELL_S6100_SSD_MON "SSD FW upgraded from S141002C to S210506G" else echo "$0 `date` SSD FW upgraded from S16425c1 to S16425cG in first mp_64." >> $SSD_UPGRADE_LOG + logger -p user.crit -t DELL_S6100_SSD_MON "SSD FW upgraded from S16425c1 to S16425cG" fi elif [ $SSD_MODEL == "3IE3" ] && [ $SSD_UPGRADE_STATUS2 == "1" ]; then rm -rf $SSD_FW_UPGRADE/GPIO7_* @@ -93,6 +103,7 @@ else touch $SSD_FW_UPGRADE/GPIO7_pending_upgrade echo "$0 `date` SSD upgrade didn’t happen." >> $SSD_UPGRADE_LOG + logger -p user.crit -t DELL_S6100_SSD_MON "No SSD upgrade attempted." elif [ $SSD_UPGRADE_STATUS1 == "1" ]; then rm -rf $SSD_FW_UPGRADE/GPIO7_* From d3f3ac6411dbdec5174b3f20228f0648e7a32ef8 Mon Sep 17 00:00:00 2001 From: Ying Xie Date: Tue, 4 Apr 2023 16:23:00 -0700 Subject: [PATCH 03/17] Delay mux/sflow/snmp timer after interface-config service (#14506) Why I did it All these 3 services started after swss service, which used to start after interface-config service. But #13084 remove the time constraints for swss. After that, these 3 services has the chance of start earlier when the inteface-config service is restarting the networking service, which could cause db connect request to fail. How I did it Delay mux/sflow/snmp timer after the interface-config service. How to verify it PR test. Config reload can repro the issue in 1-3 retries. With this change. config reload run 30+ iterations without hitting the issue. Signed-off-by: Ying Xie --- files/build_templates/mux.service.j2 | 2 +- files/build_templates/sflow.service.j2 | 2 +- files/build_templates/snmp.timer | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/files/build_templates/mux.service.j2 b/files/build_templates/mux.service.j2 index ee1f8ce75389..dbb65ac9eb2b 100644 --- a/files/build_templates/mux.service.j2 +++ b/files/build_templates/mux.service.j2 @@ -1,7 +1,7 @@ [Unit] Description=MUX Cable Container Requires=database.service updategraph.service swss.service -After=swss.service +After=swss.service interfaces-config.service BindsTo=sonic.target After=sonic.target StartLimitIntervalSec=1200 diff --git a/files/build_templates/sflow.service.j2 b/files/build_templates/sflow.service.j2 index 9a734742ed0e..fd366fa9d6d9 100644 --- a/files/build_templates/sflow.service.j2 +++ b/files/build_templates/sflow.service.j2 @@ -1,7 +1,7 @@ [Unit] Description=sFlow container Requisite=swss.service -After=swss.service syncd.service hostcfgd.service +After=swss.service syncd.service hostcfgd.service interfaces-config.service BindsTo=sonic.target After=sonic.target Before=ntp-config.service diff --git a/files/build_templates/snmp.timer b/files/build_templates/snmp.timer index 0d17391a73f6..bcbe4963adc4 100644 --- a/files/build_templates/snmp.timer +++ b/files/build_templates/snmp.timer @@ -1,7 +1,7 @@ [Unit] Description=Delays snmp container until SONiC has started PartOf=snmp.service -After=swss.service +After=swss.service interfaces-config.service [Timer] OnUnitActiveSec=0 sec From 41c46aedf64c0e00511b84e4f11428bc221ed13f Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Wed, 5 Apr 2023 18:36:57 +0800 Subject: [PATCH 04/17] [ci/build]: Upgrade SONiC package versions (#14528) --- .../versions-deb-bullseye | 1 - .../versions-deb-buster | 5 ---- files/build/versions/default/versions-git | 6 ++-- files/build/versions/default/versions-mirror | 24 +++++++-------- .../dockers/docker-ptf/versions-deb-buster | 4 +-- .../docker-sflow/versions-deb-bullseye | 30 +++++++++++++++++++ .../dockers/docker-sflow/versions-deb-buster | 22 -------------- .../versions-deb-bullseye | 2 +- .../sonic-slave-buster/versions-deb-buster | 8 ++--- 9 files changed, 52 insertions(+), 50 deletions(-) create mode 100644 files/build/versions/dockers/docker-sflow/versions-deb-bullseye delete mode 100644 files/build/versions/dockers/docker-sflow/versions-deb-buster diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye index 129678eea319..b636f54033a4 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye @@ -40,7 +40,6 @@ linux-headers-5.10.0-18-2-common==5.10.140-1 lldpd==1.0.4-1 lm-sensors==1:3.6.0-7 mft==4.22.1-15 -mlnx-sai==1.mlnx.SAIBuild2211.23.1.0 net-tools==1.60+git20181103.0eebece-1 python-thrift==0.11.0-4 python3-swsscommon==1.0.0 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster index e4fb59e8acf6..850c2bfc402e 100644 --- a/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster +++ b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster @@ -7,15 +7,10 @@ libnl-nf-3-dev==3.5.0-1 libsaimetadata==1.0.0 libsaimetadata-dev==1.0.0 libsairedis==1.0.0 -libsairedis-dev==1.0.0 libsaivs==1.0.0 libsaivs-dev==1.0.0 libswsscommon==1.0.0 libswsscommon-dev==1.0.0 -libteam-dev==1.30-1 -libteam-utils==1.30-1 -libteam5==1.30-1 -libteamdctl0==1.30-1 libthrift-0.11.0==0.11.0-4 libthrift-dev==0.11.0-4 libthrift0==0.14.1 diff --git a/files/build/versions/default/versions-git b/files/build/versions/default/versions-git index e9dbe6933fc4..7ec661ed98e0 100644 --- a/files/build/versions/default/versions-git +++ b/files/build/versions/default/versions-git @@ -1,11 +1,11 @@ -https://chromium.googlesource.com/chromium/tools/depot_tools.git==401f0f6e433c9143bef1ac901f230f82e5f7c180 +https://chromium.googlesource.com/chromium/tools/depot_tools.git==61ebd177abdc56bd373fc05c0101e2e506f9d758 https://github.com/aristanetworks/swi-tools.git==b5f087e4774168bf536360d43c9c509c8f14ad9f https://github.com/CESNET/libyang.git==9a4e5b2ce30b9696116d6e654ee55caab5aafed8 https://github.com/daveolson53/audisp-tacplus.git==559c9f22edd4f2dea0ecedffb3ad9502b12a75b6 https://github.com/daveolson53/libnss-tacplus.git==19008ab68d9d504aa58eb34d5f564755a1613b8b https://github.com/dyninc/OpenBFDD.git==e35f43ad8d2b3f084e96a84c392528a90d05a287 https://github.com/flashrom/flashrom.git==3ed016f08faa011736443f3b39bf68187d974781 -https://github.com/FreeRADIUS/freeradius-server.git==0ea1d92947f40d5e446c582ba32bdfe03550232d +https://github.com/FreeRADIUS/freeradius-server.git==35fac8b271348a2e6ba24fe36e63a916f149ad9c https://github.com/FreeRADIUS/pam_radius.git==8d373539bb9f13b0abfe8bcae0095a930a00fad0 https://github.com/jeroennijhof/pam_tacplus.git==4284d9016e64def2bb81d5f50f96dc3b59bfdc39 https://github.com/jpirko/libteam.git==61e27812c1074a865d7e1a778c0ce442837c28d7 @@ -14,7 +14,7 @@ https://github.com/Marvell-switching/mrvl-prestera.git==9dbae444204a2c27b33be698 https://github.com/Mellanox/libpsample.git==62bb27d9a49424e45191eee81df7ce0d8c74e774 https://github.com/p4lang/ptf.git==7494366607e2e4c171439df3585eba3c9769fad8 https://github.com/p4lang/scapy-vxlan.git==85ffe83da156568ee47a0750f638227e6e1d7479 -https://github.com/sflow/host-sflow==65be65ce6ac1d00441c4d08fceb0ba3681c8b59b +https://github.com/sflow/host-sflow==ae3d577fc497388d1dd75987fe131c1ad02c01d6 https://github.com/sflow/sflowtool==4ce1223bb4c2cd0cbb1dd688dc0914561fcbb6c4 https://github.com/thom311/libnl==cbafad9ddf24caef5230fef715d34f0539603be0 https://salsa.debian.org/debian/libteam.git==48142125234a665ad5367b724af36a58fb484d3d diff --git a/files/build/versions/default/versions-mirror b/files/build/versions/default/versions-mirror index e20e885c6d47..3dac370628c3 100644 --- a/files/build/versions/default/versions-mirror +++ b/files/build/versions/default/versions-mirror @@ -1,15 +1,15 @@ deb.nodesource.com_node%5f14.x_dists_bullseye==2023-02-17T00:35:28Z deb.nodesource.com_node%5f14.x_dists_buster==2023-02-17T00:35:28Z -debian==20230402T000158Z -debian-security==20230402T000159Z -download.docker.com_linux_debian_dists_bullseye==2023-03-31T22:52:46Z -download.docker.com_linux_debian_dists_buster==2023-03-31T22:52:46Z +debian==20230404T000134Z +debian-security==20230405T000526Z +download.docker.com_linux_debian_dists_bullseye==2023-04-04T23:38:54Z +download.docker.com_linux_debian_dists_buster==2023-04-04T23:38:54Z packages.microsoft.com_repos_sonic-dev_dists_jessie==2022-10-31T19:34:29Z -packages.trafficmanager.net_snapshot_debian-security_20230402T000159Z_dists_bullseye-security==2023-04-01T15:23:02Z -packages.trafficmanager.net_snapshot_debian-security_20230402T000159Z_dists_buster_updates==2023-04-01T15:23:02Z -packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_bullseye==2022-12-17T10:14:37Z -packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_bullseye-backports==2023-04-01T20:14:08Z -packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_bullseye-updates==2023-04-01T20:14:08Z -packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_buster==2022-09-10T11:30:54Z -packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_buster-backports==2023-04-01T20:14:08Z -packages.trafficmanager.net_snapshot_debian_20230402T000158Z_dists_buster-updates==2023-04-01T20:14:08Z +packages.trafficmanager.net_snapshot_debian-security_20230405T000526Z_dists_bullseye-security==2023-04-04T23:52:40Z +packages.trafficmanager.net_snapshot_debian-security_20230405T000526Z_dists_buster_updates==2023-04-04T23:52:40Z +packages.trafficmanager.net_snapshot_debian_20230404T000134Z_dists_bullseye==2022-12-17T10:14:37Z +packages.trafficmanager.net_snapshot_debian_20230404T000134Z_dists_bullseye-backports==2023-04-03T20:15:17Z +packages.trafficmanager.net_snapshot_debian_20230404T000134Z_dists_bullseye-updates==2023-04-03T20:15:16Z +packages.trafficmanager.net_snapshot_debian_20230404T000134Z_dists_buster==2022-09-10T11:30:54Z +packages.trafficmanager.net_snapshot_debian_20230404T000134Z_dists_buster-backports==2023-04-03T20:15:17Z +packages.trafficmanager.net_snapshot_debian_20230404T000134Z_dists_buster-updates==2023-04-03T20:15:17Z diff --git a/files/build/versions/dockers/docker-ptf/versions-deb-buster b/files/build/versions/dockers/docker-ptf/versions-deb-buster index 088eacd0eb5b..e7765a68d8a4 100644 --- a/files/build/versions/dockers/docker-ptf/versions-deb-buster +++ b/files/build/versions/dockers/docker-ptf/versions-deb-buster @@ -180,8 +180,8 @@ libgnutls30==3.6.7-4+deb10u10 libgomp1==8.3.0-6 libgpm2==1.20.7-5 libgraphite2-3==1.3.13-7 -libgs9==9.27~dfsg-2+deb10u6 -libgs9-common==9.27~dfsg-2+deb10u6 +libgs9==9.27~dfsg-2+deb10u7 +libgs9-common==9.27~dfsg-2+deb10u7 libgssapi-krb5-2==1.17-3+deb10u5 libgstreamer-plugins-base1.0-0==1.14.4-2+deb10u1 libgstreamer1.0-0==1.14.4-1 diff --git a/files/build/versions/dockers/docker-sflow/versions-deb-bullseye b/files/build/versions/dockers/docker-sflow/versions-deb-bullseye new file mode 100644 index 000000000000..182fc765a007 --- /dev/null +++ b/files/build/versions/dockers/docker-sflow/versions-deb-bullseye @@ -0,0 +1,30 @@ +dmidecode==3.3-2 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +hsflowd==2.0.35-1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbgsym==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +psample==1.1-1 +sflowtool==5.04 +sshpass==1.09-1+b1 +strace==5.10-1 +swss-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-sflow/versions-deb-buster b/files/build/versions/dockers/docker-sflow/versions-deb-buster deleted file mode 100644 index da149bd692e3..000000000000 --- a/files/build/versions/dockers/docker-sflow/versions-deb-buster +++ /dev/null @@ -1,22 +0,0 @@ -dmidecode==3.2-1 -gdb==8.2.1-2+b3 -gdbserver==8.2.1-2+b3 -hsflowd==2.0.35-1 -libbabeltrace1==1.5.6-2+deb10u1 -libbsd0==0.9.1-2+deb10u1 -libdw1==0.176-1.1 -libedit2==3.1-20181209-1 -libglib2.0-0==2.58.3-2+deb10u4 -libgpm2==1.20.7-5 -libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 -libipt2==2.0-2 -libpopt0==1.16-12 -libswsscommon-dbgsym==1.0.0 -libunwind8==1.2.1-10~deb10u1 -openssh-client==1:7.9p1-10+deb10u2 -psample==1.1-1 -sflowtool==5.04 -sshpass==1.06-1 -strace==4.26-0.2 -vim==2:8.1.0875-5+deb10u4 -vim-runtime==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye index ecabbf7de5c0..db1108f2876a 100644 --- a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye @@ -95,7 +95,7 @@ docbook-utils==0.6.14-3.4 docbook-xml==4.5-9 docker-ce==5:20.10.14~3-0~debian-bullseye docker-ce-cli==5:20.10.14~3-0~debian-bullseye -docker-ce-rootless-extras==5:23.0.2-1~debian.11~bullseye +docker-ce-rootless-extras==5:23.0.3-1~debian.11~bullseye docker-scan-plugin==0.23.0~debian-bullseye docutils-common==0.16+dfsg-4 dosfstools==4.2-1 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster index f2e2a9235892..a51ddc9e0514 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster @@ -93,7 +93,7 @@ docbook-utils==0.6.14-3.3 docbook-xml==4.5-8 docker-ce==5:20.10.21~3-0~debian-buster docker-ce-cli==5:20.10.21~3-0~debian-buster -docker-ce-rootless-extras==5:23.0.2-1~debian.10~buster +docker-ce-rootless-extras==5:23.0.3-1~debian.10~buster docker-scan-plugin==0.23.0~debian-buster docutils-common==0.14+dfsg-4 docutils-doc==0.14+dfsg-4 @@ -144,7 +144,7 @@ gettext==0.19.8.1-9 gettext-base==0.19.8.1-9 gfortran==4:8.3.0-1 gfortran-8==8.3.0-6 -ghostscript==9.27~dfsg-2+deb10u6 +ghostscript==9.27~dfsg-2+deb10u7 gir1.2-atk-1.0==2.30.0-2 gir1.2-atspi-2.0==2.30.0-7 gir1.2-freedesktop==1.58.3-2 @@ -588,8 +588,8 @@ libgraphite2-3==1.3.13-7 libgraphite2-dev==1.3.13-7 libgrpc++1==1.16.1-1 libgrpc6==1.16.1-1 -libgs9==9.27~dfsg-2+deb10u6 -libgs9-common==9.27~dfsg-2+deb10u6 +libgs9==9.27~dfsg-2+deb10u7 +libgs9-common==9.27~dfsg-2+deb10u7 libgsm1==1.0.18-2 libgssapi-krb5-2==1.17-3+deb10u5 libgssrpc4==1.17-3+deb10u5 From e17e4fc4c0b835de99a185df889550b035179a99 Mon Sep 17 00:00:00 2001 From: Hua Liu <58683130+liuh-80@users.noreply.github.com> Date: Wed, 5 Apr 2023 21:34:31 -0700 Subject: [PATCH 05/17] [S6100] Improve S6100 serial-getty monitor, wait and re-check when getty not running to avoid false alert. (#14402) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [S6100] Improve S6100 serial-getty monitor, wait and re-check when getty not running to avoid false alert. #### Why I did it On S6100, the serial-getty service some time can't auto-restart by systemd. So there is a monit unit to check serial-getty service status and restart it. However, this monit will report false alert, because in most case when serial-getty not running, systemd can restart it successfully. To avoid the false alert, improve the monitor to wait and re-check. Steps to reproduce this issue: 1. User login to device via console, and keep the connection. 2. User login to device via SSH, check the serial-getty@ttyS1.service service, it's running. 3. Run 'monit reload' from SSH connection. 4. Check syslog 1 minutes later, there will be false alert: ' 'serial-getty' process is not running' #### How I did it Add check-getty.sh script to recheck again later when getty service not running. And update monit unit to check serial-getty service status with this script to avoid false alert. #### How to verify it Pass all UT. Manually check fixed code work correctly: ``` admin@***:~$ sudo systemctl stop  serial-getty@ttyS1.service admin@***:~$ sudo /usr/local/bin/check-getty.sh  admin@***:~$ echo $? 1 admin@***:~$ sudo systemctl status serial-getty@ttyS1.service ● serial-getty@ttyS1.service - Serial Getty on ttyS1      Loaded: loaded (/lib/systemd/system/serial-getty@.service; enabled-runtime; vendor preset: enabled)      Active: inactive (dead) since Tue 2023-03-28 07:15:21 UTC; 1min 13s ago admin@***:~$ sudo /usr/local/bin/check-getty.sh  admin@***:~$ echo $? 0 admin@***:~$ sudo systemctl status serial-getty@ttyS1.service ● serial-getty@ttyS1.service - Serial Getty on ttyS1      Loaded: loaded (/lib/systemd/system/serial-getty@.service; enabled-runtime; vendor preset: enabled) ``` syslog: ``` Mar 28 07:10:37.597458 *** INFO systemd[1]: serial-getty@ttyS1.service: Succeeded. Mar 28 07:12:43.010550 *** ERR monit[593]: 'serial-getty' status failed (1) -- no output Mar 28 07:12:43.010744 *** INFO monit[593]: 'serial-getty' trying to restart Mar 28 07:12:43.010846 *** INFO monit[593]: 'serial-getty' stop: '/bin/systemctl stop serial-getty@ttyS1.service' Mar 28 07:12:43.132172 *** INFO monit[593]: 'serial-getty' start: '/bin/systemctl start serial-getty@ttyS1.service' Mar 28 07:13:43.286276 *** INFO monit[593]: 'serial-getty' status succeeded (0) -- no output ``` #### Description for the changelog [S6100] Improve S6100 serial-getty monitor. #### Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU. --- .../debian/platform-modules-s6100.install | 1 + .../s6100/scripts/check-getty.sh | 17 +++++++++++++++++ .../s6100/scripts/s6100_serial_getty_monitor | 3 ++- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/scripts/check-getty.sh diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install index 22378cf0eb8b..ab20e29e188d 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install @@ -35,6 +35,7 @@ s6100/systemd/s6100-ssd-upgrade-status.service etc/systemd/system s6100/systemd/s6100-reboot-cause.service etc/systemd/system s6100/systemd/s6100-platform-startup.service etc/systemd/system s6100/scripts/s6100_serial_getty_monitor etc/monit/conf.d +s6100/scripts/check-getty.sh usr/local/bin common/fw-updater usr/local/bin common/onie_mode_set usr/local/bin common/onie_version usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/check-getty.sh b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/check-getty.sh new file mode 100755 index 000000000000..9c6412eddf0b --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/check-getty.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +RETRY=0 +while [ $RETRY -lt 5 ]; do + let RETRY=$RETRY+1 + + /bin/systemctl --quiet is-active serial-getty@ttyS1.service + status=$? + if [ $status == 0 ]; then + exit 0 + fi + + # when serial-getty not running, recheck later, beause systemd will restart serial-getty automatically. + sleep 1 +done + +exit 1 \ No newline at end of file diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_serial_getty_monitor b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_serial_getty_monitor index 1b5d0c90db37..f57ae3679016 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_serial_getty_monitor +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_serial_getty_monitor @@ -1,4 +1,5 @@ #Dell S6100 serial getty monitor -check process serial-getty matching "ttyS" +check program serial-getty with path /usr/local/bin/check-getty.sh start program = "/bin/systemctl start serial-getty@ttyS1.service" stop program = "/bin/systemctl stop serial-getty@ttyS1.service" +if status != 0 then restart \ No newline at end of file From 9b769244d58bdc76a4074e2ddd7e64901323673f Mon Sep 17 00:00:00 2001 From: xumia <59720581+xumia@users.noreply.github.com> Date: Thu, 6 Apr 2023 16:42:59 +0800 Subject: [PATCH 06/17] [Build] Fix the SLAVE_DRI not defined issue in the slave container issue (#14297) Why I did it It is to fix the issue #13773 It only has impact on the build triggered manually inside of the slave container. Developers can go to the slave container do a build, it will print a skippable error message complaining the variable not found. How I did it Add the default value for variable SLAVE_DRI. How to verify it --- slave.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/slave.mk b/slave.mk index 1d5c3dde7846..94254d3e2808 100644 --- a/slave.mk +++ b/slave.mk @@ -45,6 +45,7 @@ DBG_IMAGE_MARK = dbg DBG_SRC_ARCHIVE_FILE = $(TARGET_PATH)/sonic_src.tar.gz BUILD_WORKDIR = /sonic DPKG_ADMINDIR_PATH = $(BUILD_WORKDIR)/dpkg +SLAVE_DIR ?= sonic-slave-$(BLDENV) CONFIGURED_PLATFORM := $(shell [ -f .platform ] && cat .platform || echo generic) PLATFORM_PATH = platform/$(CONFIGURED_PLATFORM) From 6f5425137512912283d941f3b311655597818a87 Mon Sep 17 00:00:00 2001 From: snider-nokia <76123698+snider-nokia@users.noreply.github.com> Date: Thu, 6 Apr 2023 11:04:45 -0400 Subject: [PATCH 07/17] [armhf][Nokia-7215]Add SFP refactor support for Nokia-7215 platform (#14396) --- .../armhf-nokia_ixs7215_52x-r0/platform.json | 8 +- .../7215/sonic_platform/sfp.py | 958 ++---------------- 2 files changed, 97 insertions(+), 869 deletions(-) diff --git a/device/nokia/armhf-nokia_ixs7215_52x-r0/platform.json b/device/nokia/armhf-nokia_ixs7215_52x-r0/platform.json index 4f4585b1e4de..2e4cae1219e3 100644 --- a/device/nokia/armhf-nokia_ixs7215_52x-r0/platform.json +++ b/device/nokia/armhf-nokia_ixs7215_52x-r0/platform.json @@ -267,16 +267,16 @@ "name": "Ethernet47" }, { - "name": "Ethernet48" + "name": "SFP48" }, { - "name": "Ethernet49" + "name": "SFP49" }, { - "name": "Ethernet50" + "name": "SFP50" }, { - "name": "Ethernet51" + "name": "SFP51" } ] }, diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py index 7babb45d40ae..e05908386d39 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py @@ -1,20 +1,22 @@ -############################################################################# -# Nokia +# Name: sfp.py, version: 1.0 +# +# Description: Module contains the definitions of SFP related APIs +# for Nokia IXR 7250 platform. +# +# Copyright (c) 2023, Nokia +# All rights reserved. # -############################################################################# - -import subprocess try: - from sonic_platform_base.sfp_base import SfpBase - from sonic_platform_base.sonic_sfp.sff8472 import sff8472InterfaceId - from sonic_platform_base.sonic_sfp.sff8472 import sff8472Dom - from sonic_platform_base.sonic_sfp.sfputilhelper import SfpUtilHelper - from sonic_py_common import logger - from sonic_py_common.general import getstatusoutput_noshell + from sonic_platform_base.sonic_xcvr.sfp_optoe_base import SfpOptoeBase + from sonic_py_common.logger import Logger + from sonic_py_common import device_info + except ImportError as e: raise ImportError(str(e) + "- required module not found") +import subprocess as cmd + smbus_present = 1 try: @@ -22,77 +24,6 @@ except ImportError as e: smbus_present = 0 - -INFO_OFFSET = 128 -DOM_OFFSET = 0 - -# definitions of the offset and width for values in XCVR info eeprom -XCVR_INTFACE_BULK_OFFSET = 0 - -XCVR_INTFACE_BULK_WIDTH_SFP = 21 -XCVR_TYPE_OFFSET = 0 -XCVR_TYPE_WIDTH = 1 -XCVR_EXT_TYPE_OFFSET = 1 -XCVR_EXT_TYPE_WIDTH = 1 -XCVR_CONNECTOR_OFFSET = 2 -XCVR_CONNECTOR_WIDTH = 1 -XCVR_COMPLIANCE_CODE_OFFSET = 3 -XCVR_COMPLIANCE_CODE_WIDTH = 8 -XCVR_ENCODING_OFFSET = 11 -XCVR_ENCODING_WIDTH = 1 -XCVR_NBR_OFFSET = 12 -XCVR_NBR_WIDTH = 1 -XCVR_EXT_RATE_SEL_OFFSET = 13 -XCVR_EXT_RATE_SEL_WIDTH = 1 -XCVR_CABLE_LENGTH_OFFSET = 14 - -XCVR_CABLE_LENGTH_WIDTH_SFP = 6 -XCVR_VENDOR_NAME_OFFSET = 20 -XCVR_VENDOR_NAME_WIDTH = 16 -XCVR_VENDOR_OUI_OFFSET = 37 -XCVR_VENDOR_OUI_WIDTH = 3 -XCVR_VENDOR_PN_OFFSET = 40 -XCVR_VENDOR_PN_WIDTH = 16 -XCVR_HW_REV_OFFSET = 56 - -XCVR_HW_REV_WIDTH_SFP = 4 -XCVR_VENDOR_SN_OFFSET = 68 -XCVR_VENDOR_SN_WIDTH = 16 -XCVR_VENDOR_DATE_OFFSET = 84 -XCVR_VENDOR_DATE_WIDTH = 8 -XCVR_DOM_CAPABILITY_OFFSET = 92 -XCVR_DOM_CAPABILITY_WIDTH = 2 -XCVR_INTERFACE_DATA_START = 0 -XCVR_INTERFACE_DATA_SIZE = 92 - -SFP_DOM_BULK_DATA_START = 96 -SFP_DOM_BULK_DATA_SIZE = 10 - -SFP_MODULE_ADDRA2_OFFSET = 256 -SFP_MODULE_THRESHOLD_OFFSET = 0 -SFP_MODULE_THRESHOLD_WIDTH = 56 -SFP_CHANNL_THRESHOLD_OFFSET = 112 -SFP_CHANNL_THRESHOLD_WIDTH = 2 - -SFP_TEMPE_OFFSET = 96 -SFP_TEMPE_WIDTH = 2 -SFP_VOLT_OFFSET = 98 -SFP_VOLT_WIDTH = 2 -SFP_CHANNL_MON_OFFSET = 100 -SFP_CHANNL_MON_WIDTH = 6 -SFP_CHANNL_STATUS_OFFSET = 110 -SFP_CHANNL_STATUS_WIDTH = 1 - -sfp_cable_length_tup = ('LengthSMFkm-UnitsOfKm', 'LengthSMF(UnitsOf100m)', - 'Length50um(UnitsOf10m)', 'Length62.5um(UnitsOfm)', - 'LengthCable(UnitsOfm)', 'LengthOM3(UnitsOf10m)') - -sfp_compliance_code_tup = ('10GEthernetComplianceCode', 'InfinibandComplianceCode', - 'ESCONComplianceCodes', 'SONETComplianceCodes', - 'EthernetComplianceCodes', 'FibreChannelLinkLength', - 'FibreChannelTechnology', 'SFP+CableTechnology', - 'FibreChannelTransmissionMedia', 'FibreChannelSpeed') - COPPER_TYPE = "COPPER" SFP_TYPE = "SFP" @@ -100,689 +31,155 @@ SFP_PORT_START = 49 SFP_PORT_END = 52 -SYSLOG_IDENTIFIER = "xcvrd" -sonic_logger = logger.Logger(SYSLOG_IDENTIFIER) - +logger = Logger() -class Sfp(SfpBase): - """Platform-specific Sfp class""" +class Sfp(SfpOptoeBase): """ - Nokia platform-specific Sfp class + Nokia IXR-7215 Platform-specific Sfp refactor class """ + instances = [] # Paths PLATFORM_ROOT_PATH = "/usr/share/sonic/device" PMON_HWSKU_PATH = "/usr/share/sonic/hwsku" - HOST_CHK_CMD = ["docker"] + HOST_CHK_CMD = "docker > /dev/null 2>&1" PLATFORM = "armhf-nokia_ixs7215_52x-r0" HWSKU = "Nokia-7215" port_to_i2c_mapping = 0 + # def __init__(self, index, sfp_type, stub): def __init__(self, index, sfp_type, eeprom_path, port_i2c_map): - SfpBase.__init__(self) + SfpOptoeBase.__init__(self) self.index = index self.port_num = index self.sfp_type = sfp_type self.eeprom_path = eeprom_path self.port_to_i2c_mapping = port_i2c_map + self.name = sfp_type + str(index-1) self.port_name = sfp_type + str(index) self.port_to_eeprom_mapping = {} self.port_to_eeprom_mapping[index] = eeprom_path - self.info_dict_keys = ['type', 'vendor_rev', 'serial', 'manufacturer', - 'model', 'connector', 'encoding', 'ext_identifier', - 'ext_rateselect_compliance', 'cable_type', 'cable_length', - 'nominal_bit_rate', 'specification_compliance', - 'type_abbrv_name', 'vendor_date', 'vendor_oui'] - - self.dom_dict_keys = ['rx_los', 'tx_fault', 'reset_status', 'power_lpmode', - 'tx_disable', 'tx_disable_channel', 'temperature', - 'voltage', 'rx1power', 'rx2power', 'rx3power', - 'rx4power', 'tx1bias', 'tx2bias', 'tx3bias', 'tx4bias', - 'tx1power', 'tx2power', 'tx3power', 'tx4power'] - - self.threshold_dict_keys = ['temphighalarm', 'temphighwarning', 'templowalarm', - 'templowwarning', 'vcchighalarm', 'vcchighwarning', - 'vcclowalarm', 'vcclowwarning', 'rxpowerhighalarm', - 'rxpowerhighwarning', 'rxpowerlowalarm', 'rxpowerlowwarning', - 'txpowerhighalarm', 'txpowerhighwarning', 'txpowerlowalarm', - 'txpowerlowwarning', 'txbiashighalarm', 'txbiashighwarning', - 'txbiaslowalarm', 'txbiaslowwarning'] - - self.dom_supported = False - self.dom_temp_supported = False - self.dom_volt_supported = False - self.dom_rx_power_supported = False - self.dom_tx_power_supported = False - self.calibration = 0 - - def __convert_string_to_num(self, value_str): - if "-inf" in value_str: - return 'N/A' - elif "Unknown" in value_str: - return 'N/A' - elif 'dBm' in value_str: - t_str = value_str.rstrip('dBm') - return float(t_str) - elif 'mA' in value_str: - t_str = value_str.rstrip('mA') - return float(t_str) - elif 'C' in value_str: - t_str = value_str.rstrip('C') - return float(t_str) - elif 'Volts' in value_str: - t_str = value_str.rstrip('Volts') - return float(t_str) - else: - return 'N/A' - - def __is_host(self): - return subprocess.call(self.HOST_CHK_CMD) == 0 - - def __get_path_to_port_config_file(self): - platform_path = "/".join([self.PLATFORM_ROOT_PATH, self.PLATFORM]) - hwsku_path = "/".join([platform_path, self.HWSKU] - ) if self.__is_host() else self.PMON_HWSKU_PATH - return "/".join([hwsku_path, "port_config.ini"]) - - def __read_eeprom_specific_bytes(self, offset, num_bytes): - sysfsfile_eeprom = None - - eeprom_raw = [] - for i in range(0, num_bytes): - eeprom_raw.append("0x00") - - sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom_mapping[self.port_num] - - try: - sysfsfile_eeprom = open( - sysfs_sfp_i2c_client_eeprom_path, mode="rb", buffering=0) - sysfsfile_eeprom.seek(offset) - raw = sysfsfile_eeprom.read(num_bytes) - for n in range(0, num_bytes): - eeprom_raw[n] = hex(raw[n])[2:].zfill(2) - except Exception as e: - pass - finally: - if sysfsfile_eeprom: - sysfsfile_eeprom.close() - return eeprom_raw - - def _dom_capability_detect(self): - if self.sfp_type == "SFP": - sfpi_obj = sff8472InterfaceId() - if sfpi_obj is None: - return None - sfp_dom_capability_raw = self.__read_eeprom_specific_bytes( - XCVR_DOM_CAPABILITY_OFFSET, XCVR_DOM_CAPABILITY_WIDTH) - if sfp_dom_capability_raw is not None: - sfp_dom_capability = int(sfp_dom_capability_raw[0], 16) - self.dom_supported = (sfp_dom_capability & 0x40 != 0) - if self.dom_supported: - self.dom_temp_supported = True - self.dom_volt_supported = True - self.dom_rx_power_supported = True - self.dom_tx_power_supported = True - if sfp_dom_capability & 0x20 != 0: - self.calibration = 1 - elif sfp_dom_capability & 0x10 != 0: - self.calibration = 2 - else: - self.calibration = 0 - else: - self.dom_temp_supported = False - self.dom_volt_supported = False - self.dom_rx_power_supported = False - self.dom_tx_power_supported = False - self.calibration = 0 - self.dom_tx_disable_supported = ( - int(sfp_dom_capability_raw[1], 16) & 0x40 != 0) - else: - self.dom_supported = False - self.dom_temp_supported = False - self.dom_volt_supported = False - self.dom_rx_power_supported = False - self.dom_tx_power_supported = False - - def get_transceiver_info(self): - """ - Retrieves transceiver info of this SFP - Returns: - A dict which contains following keys/values : - ======================================================================== - keys |Value Format |Information - ---------------------------|---------------|---------------------------- - type |1*255VCHAR |type of SFP - vendor_rev |1*255VCHAR |vendor revision of SFP - serial |1*255VCHAR |serial number of the SFP - manufacturer |1*255VCHAR |SFP vendor name - model |1*255VCHAR |SFP model name - connector |1*255VCHAR |connector information - encoding |1*255VCHAR |encoding information - ext_identifier |1*255VCHAR |extend identifier - ext_rateselect_compliance |1*255VCHAR |extended rateSelect compliance - cable_length |INT |cable length in m - nominal_bit_rate |INT |nominal bit rate by 100Mbs - specification_compliance |1*255VCHAR |specification compliance - type_abbrv_name |1*255VCHAR |type of SFP (abbreviated) - vendor_date |1*255VCHAR |vendor date - vendor_oui |1*255VCHAR |vendor OUI - application_advertisement |1*255VCHAR |supported applications advertisement - ======================================================================== - """ - - if self.sfp_type == COPPER_TYPE: - return None + self._version_info = device_info.get_sonic_version_info() + self.lastPresence = False - compliance_code_dict = {} - transceiver_info_dict = dict.fromkeys(self.info_dict_keys, 'N/A') + logger.log_debug("Sfp __init__ index {} setting name to {} and eeprom_path to {}".format(index, self.name, self.eeprom_path)) - if not self.get_presence(): - return transceiver_info_dict - - if self.sfp_type == SFP_TYPE: - offset = 0 - vendor_rev_width = XCVR_HW_REV_WIDTH_SFP - interface_info_bulk_width = XCVR_INTFACE_BULK_WIDTH_SFP - - sfpi_obj = sff8472InterfaceId() - if sfpi_obj is None: - print("Error: sfp_object open failed") - return None - - sfp_interface_bulk_raw = self.__read_eeprom_specific_bytes( - offset + XCVR_INTERFACE_DATA_START, XCVR_INTERFACE_DATA_SIZE) - if sfp_interface_bulk_raw is None: - return None - - start = XCVR_INTFACE_BULK_OFFSET - XCVR_INTERFACE_DATA_START - end = start + interface_info_bulk_width - sfp_interface_bulk_data = sfpi_obj.parse_sfp_info_bulk( - sfp_interface_bulk_raw[start: end], 0) - - start = XCVR_VENDOR_NAME_OFFSET - XCVR_INTERFACE_DATA_START - end = start + XCVR_VENDOR_NAME_WIDTH - sfp_vendor_name_data = sfpi_obj.parse_vendor_name( - sfp_interface_bulk_raw[start: end], 0) - - start = XCVR_VENDOR_PN_OFFSET - XCVR_INTERFACE_DATA_START - end = start + XCVR_VENDOR_PN_WIDTH - sfp_vendor_pn_data = sfpi_obj.parse_vendor_pn( - sfp_interface_bulk_raw[start: end], 0) - - start = XCVR_HW_REV_OFFSET - XCVR_INTERFACE_DATA_START - end = start + vendor_rev_width - sfp_vendor_rev_data = sfpi_obj.parse_vendor_rev( - sfp_interface_bulk_raw[start: end], 0) - - start = XCVR_VENDOR_SN_OFFSET - XCVR_INTERFACE_DATA_START - end = start + XCVR_VENDOR_SN_WIDTH - sfp_vendor_sn_data = sfpi_obj.parse_vendor_sn( - sfp_interface_bulk_raw[start: end], 0) - - start = XCVR_VENDOR_OUI_OFFSET - XCVR_INTERFACE_DATA_START - end = start + XCVR_VENDOR_OUI_WIDTH - sfp_vendor_oui_data = sfpi_obj.parse_vendor_oui( - sfp_interface_bulk_raw[start: end], 0) - - start = XCVR_VENDOR_DATE_OFFSET - XCVR_INTERFACE_DATA_START - end = start + XCVR_VENDOR_DATE_WIDTH - sfp_vendor_date_data = sfpi_obj.parse_vendor_date( - sfp_interface_bulk_raw[start: end], 0) - - transceiver_info_dict['type'] = sfp_interface_bulk_data \ - ['data']['type']['value'] - transceiver_info_dict['manufacturer'] = sfp_vendor_name_data \ - ['data']['Vendor Name']['value'] - transceiver_info_dict['model'] = sfp_vendor_pn_data \ - ['data']['Vendor PN']['value'] - transceiver_info_dict['vendor_rev'] = sfp_vendor_rev_data \ - ['data']['Vendor Rev']['value'] - transceiver_info_dict['serial'] = sfp_vendor_sn_data \ - ['data']['Vendor SN']['value'] - transceiver_info_dict['vendor_oui'] = sfp_vendor_oui_data \ - ['data']['Vendor OUI']['value'] - transceiver_info_dict['vendor_date'] = sfp_vendor_date_data \ - ['data']['VendorDataCode(YYYY-MM-DD Lot)']['value'] - transceiver_info_dict['connector'] = sfp_interface_bulk_data \ - ['data']['Connector']['value'] - transceiver_info_dict['encoding'] = sfp_interface_bulk_data \ - ['data']['EncodingCodes']['value'] - transceiver_info_dict['ext_identifier'] = sfp_interface_bulk_data \ - ['data']['Extended Identifier']['value'] - transceiver_info_dict['ext_rateselect_compliance'] = sfp_interface_bulk_data \ - ['data']['RateIdentifier']['value'] - transceiver_info_dict['type_abbrv_name'] = sfp_interface_bulk_data \ - ['data']['type_abbrv_name']['value'] - - for key in sfp_cable_length_tup: - if key in sfp_interface_bulk_data['data']: - transceiver_info_dict['cable_type'] = key - transceiver_info_dict['cable_length'] = \ - str(sfp_interface_bulk_data['data'][key]['value']) - - for key in sfp_compliance_code_tup: - if key in sfp_interface_bulk_data['data']['Specification compliance']['value']: - compliance_code_dict[key] = sfp_interface_bulk_data \ - ['data']['Specification compliance']['value'][key]['value'] - - transceiver_info_dict['specification_compliance'] = \ - str(compliance_code_dict) - transceiver_info_dict['nominal_bit_rate'] = \ - str(sfp_interface_bulk_data['data']['NominalSignallingRate(UnitsOf100Mbd)']['value']) - transceiver_info_dict['application_advertisement'] = 'N/A' - - return transceiver_info_dict - - def get_transceiver_bulk_status(self): - """ - Retrieves transceiver bulk status of this SFP - Returns: - A dict which contains following keys/values : - ======================================================================== - keys |Value Format |Information - ---------------------------|---------------|---------------------------- - rx_los |BOOLEAN |RX loss-of-signal status, True if has RX los, False if not. - tx_fault |BOOLEAN |TX fault status, True if has TX fault, False if not. - reset_status |BOOLEAN |reset status, True if SFP in reset, False if not. - lp_mode |BOOLEAN |low power mode status, True in lp mode, False if not. - tx_disable |BOOLEAN |TX disable status, True TX disabled, False if not. - tx_disabled_channel |HEX |disabled TX channels in hex, bits 0 to 3 represent channel 0 - | |to channel 3. - temperature |INT |module temperature in Celsius - voltage |INT |supply voltage in mV - txbias |INT |TX Bias Current in mA, n is the channel number, - | |for example, tx2bias stands for tx bias of channel 2. - rxpower |INT |received optical power in mW, n is the channel number, - | |for example, rx2power stands for rx power of channel 2. - txpower |INT |TX output power in mW, n is the channel number, - | |for example, tx2power stands for tx power of channel 2. - ======================================================================== - """ - - transceiver_dom_info_dict = dict.fromkeys(self.dom_dict_keys, 'N/A') - - if self.sfp_type == COPPER_TYPE: - return transceiver_dom_info_dict - - if self.sfp_type == SFP_TYPE: - - self._dom_capability_detect() - if not self.dom_supported: - return transceiver_dom_info_dict - - offset = 256 - sfpd_obj = sff8472Dom() - if sfpd_obj is None: - return transceiver_dom_info_dict - sfpd_obj._calibration_type = self.calibration - - dom_data_raw = self.__read_eeprom_specific_bytes( - (offset + SFP_DOM_BULK_DATA_START), SFP_DOM_BULK_DATA_SIZE) - - start = SFP_TEMPE_OFFSET - SFP_DOM_BULK_DATA_START - end = start + SFP_TEMPE_WIDTH - dom_temperature_data = sfpd_obj.parse_temperature( - dom_data_raw[start: end], 0) - - start = SFP_VOLT_OFFSET - SFP_DOM_BULK_DATA_START - end = start + SFP_VOLT_WIDTH - dom_voltage_data = sfpd_obj.parse_voltage( - dom_data_raw[start: end], 0) - - start = SFP_CHANNL_MON_OFFSET - SFP_DOM_BULK_DATA_START - end = start + SFP_CHANNL_MON_WIDTH - dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params( - dom_data_raw[start: end], 0) - - transceiver_dom_info_dict['temperature'] = self.__convert_string_to_num( - dom_temperature_data['data']['Temperature']['value']) - transceiver_dom_info_dict['voltage'] = self.__convert_string_to_num( - dom_voltage_data['data']['Vcc']['value']) - transceiver_dom_info_dict['rx1power'] = self.__convert_string_to_num( - dom_channel_monitor_data['data']['RXPower']['value']) - transceiver_dom_info_dict['tx1bias'] = self.__convert_string_to_num( - dom_channel_monitor_data['data']['TXBias']['value']) - transceiver_dom_info_dict['tx1power'] = self.__convert_string_to_num( - dom_channel_monitor_data['data']['TXPower']['value']) - - transceiver_dom_info_dict['rx_los'] = self.get_rx_los() - transceiver_dom_info_dict['tx_fault'] = self.get_tx_fault() - transceiver_dom_info_dict['reset_status'] = self.get_reset_status() - transceiver_dom_info_dict['lp_mode'] = self.get_lpmode() - - return transceiver_dom_info_dict - - def get_transceiver_threshold_info(self): - """ - Retrieves transceiver threshold info of this SFP - Returns: - A dict which contains following keys/values : - ======================================================================== - keys |Value Format |Information - ---------------------------|---------------|---------------------------- - temphighalarm |FLOAT |High Alarm Threshold value of temperature in Celsius. - templowalarm |FLOAT |Low Alarm Threshold value of temperature in Celsius. - temphighwarning |FLOAT |High Warning Threshold value of temperature in Celsius. - templowwarning |FLOAT |Low Warning Threshold value of temperature in Celsius. - vcchighalarm |FLOAT |High Alarm Threshold value of supply voltage in mV. - vcclowalarm |FLOAT |Low Alarm Threshold value of supply voltage in mV. - vcchighwarning |FLOAT |High Warning Threshold value of supply voltage in mV. - vcclowwarning |FLOAT |Low Warning Threshold value of supply voltage in mV. - rxpowerhighalarm |FLOAT |High Alarm Threshold value of received power in dBm. - rxpowerlowalarm |FLOAT |Low Alarm Threshold value of received power in dBm. - rxpowerhighwarning |FLOAT |High Warning Threshold value of received power in dBm. - rxpowerlowwarning |FLOAT |Low Warning Threshold value of received power in dBm. - txpowerhighalarm |FLOAT |High Alarm Threshold value of transmit power in dBm. - txpowerlowalarm |FLOAT |Low Alarm Threshold value of transmit power in dBm. - txpowerhighwarning |FLOAT |High Warning Threshold value of transmit power in dBm. - txpowerlowwarning |FLOAT |Low Warning Threshold value of transmit power in dBm. - txbiashighalarm |FLOAT |High Alarm Threshold value of tx Bias Current in mA. - txbiaslowalarm |FLOAT |Low Alarm Threshold value of tx Bias Current in mA. - txbiashighwarning |FLOAT |High Warning Threshold value of tx Bias Current in mA. - txbiaslowwarning |FLOAT |Low Warning Threshold value of tx Bias Current in mA. - ======================================================================== - """ - transceiver_dom_threshold_info_dict = dict.fromkeys( - self.threshold_dict_keys, 'N/A') - - if self.sfp_type == COPPER_TYPE: - return transceiver_dom_threshold_info_dict - - if self.sfp_type == SFP_TYPE: - - offset = SFP_MODULE_ADDRA2_OFFSET - - self._dom_capability_detect() - if not self.dom_supported: - return transceiver_dom_threshold_info_dict - - sfpd_obj = sff8472Dom(None, self.calibration) - if sfpd_obj is None: - return transceiver_dom_threshold_info_dict - - dom_module_threshold_raw = self.__read_eeprom_specific_bytes((offset + SFP_MODULE_THRESHOLD_OFFSET), - SFP_MODULE_THRESHOLD_WIDTH) - if dom_module_threshold_raw is not None: - dom_module_threshold_data = sfpd_obj.parse_alarm_warning_threshold( - dom_module_threshold_raw, 0) - else: - return transceiver_dom_threshold_info_dict - - # Threshold Data - transceiver_dom_threshold_info_dict['temphighalarm'] = dom_module_threshold_data['data']['TempHighAlarm']['value'] - transceiver_dom_threshold_info_dict['templowalarm'] = dom_module_threshold_data['data']['TempLowAlarm']['value'] - transceiver_dom_threshold_info_dict['temphighwarning'] = dom_module_threshold_data['data']['TempHighWarning']['value'] - transceiver_dom_threshold_info_dict['templowwarning'] = dom_module_threshold_data['data']['TempLowWarning']['value'] - transceiver_dom_threshold_info_dict['vcchighalarm'] = dom_module_threshold_data['data']['VoltageHighAlarm']['value'] - transceiver_dom_threshold_info_dict['vcclowalarm'] = dom_module_threshold_data['data']['VoltageLowAlarm']['value'] - transceiver_dom_threshold_info_dict['vcchighwarning'] = dom_module_threshold_data[ - 'data']['VoltageHighWarning']['value'] - transceiver_dom_threshold_info_dict['vcclowwarning'] = dom_module_threshold_data['data']['VoltageLowWarning']['value'] - transceiver_dom_threshold_info_dict['txbiashighalarm'] = dom_module_threshold_data['data']['BiasHighAlarm']['value'] - transceiver_dom_threshold_info_dict['txbiaslowalarm'] = dom_module_threshold_data['data']['BiasLowAlarm']['value'] - transceiver_dom_threshold_info_dict['txbiashighwarning'] = dom_module_threshold_data['data']['BiasHighWarning']['value'] - transceiver_dom_threshold_info_dict['txbiaslowwarning'] = dom_module_threshold_data['data']['BiasLowWarning']['value'] - transceiver_dom_threshold_info_dict['txpowerhighalarm'] = dom_module_threshold_data['data']['TXPowerHighAlarm']['value'] - transceiver_dom_threshold_info_dict['txpowerlowalarm'] = dom_module_threshold_data['data']['TXPowerLowAlarm']['value'] - transceiver_dom_threshold_info_dict['txpowerhighwarning'] = dom_module_threshold_data['data']['TXPowerHighWarning']['value'] - transceiver_dom_threshold_info_dict['txpowerlowwarning'] = dom_module_threshold_data['data']['TXPowerLowWarning']['value'] - transceiver_dom_threshold_info_dict['rxpowerhighalarm'] = dom_module_threshold_data['data']['RXPowerHighAlarm']['value'] - transceiver_dom_threshold_info_dict['rxpowerlowalarm'] = dom_module_threshold_data['data']['RXPowerLowAlarm']['value'] - transceiver_dom_threshold_info_dict['rxpowerhighwarning'] = dom_module_threshold_data['data']['RXPowerHighWarning']['value'] - transceiver_dom_threshold_info_dict['rxpowerlowwarning'] = dom_module_threshold_data['data']['RXPowerLowWarning']['value'] - - return transceiver_dom_threshold_info_dict + Sfp.instances.append(self) + + def get_eeprom_path(self): + return self.eeprom_path - def get_reset_status(self): + def get_presence(self): """ - Retrieves the reset status of SFP + Retrieves the presence Returns: - A Boolean, True if reset enabled, False if disabled + bool: True if is present, False if not """ - self._dom_capability_detect() - if not self.dom_supported: - return False if self.sfp_type == COPPER_TYPE: return False - if self.sfp_type == SFP_TYPE: - offset = 0 - - dom_channel_monitor_raw = self.__read_eeprom_specific_bytes( - (offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH) - - if dom_channel_monitor_raw is not None: - return False - else: - return True - - def get_rx_los(self): - """ - Retrieves the RX LOS (lost-of-signal) status of SFP - Returns: - A Boolean, True if SFP has RX LOS, False if not. - """ - if self.sfp_type == COPPER_TYPE: - return None - if not self.dom_supported: - return None - rx_los_list = [] - - offset = 256 - dom_channel_monitor_raw = self.__read_eeprom_specific_bytes((offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH) - if dom_channel_monitor_raw is not None: - rx_los_data = int(dom_channel_monitor_raw[0], 16) - rx_los_list.append(rx_los_data & 0x02 != 0) + if smbus_present == 0: # if called from sfputil outside of pmon + cmdstatus, sfpstatus = cmd.getstatusoutput('sudo i2cget -y 0 0x41 0x3') + sfpstatus = int(sfpstatus, 16) else: - return None + bus = smbus.SMBus(0) + DEVICE_ADDRESS = 0x41 + DEVICE_REG = 0x3 + sfpstatus = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - return rx_los_list + pos = [1, 2, 4, 8] + bit_pos = pos[self.index-SFP_PORT_START] + sfpstatus = sfpstatus & (bit_pos) - def get_tx_fault(self): - """ - Retrieves the TX fault status of SFP - Returns: - A Boolean, True if SFP has TX fault, False if not - Note : TX fault status is lached until a call to get_tx_fault or a reset. - """ - if self.sfp_type == COPPER_TYPE: - return None - if not self.dom_supported: - return None - tx_fault_list = [] - - offset = 256 - dom_channel_monitor_raw = self.__read_eeprom_specific_bytes((offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH) - if dom_channel_monitor_raw is not None: - tx_fault_data = int(dom_channel_monitor_raw[0], 16) - tx_fault_list.append(tx_fault_data & 0x04 != 0) - else: - return None - return tx_fault_list + if sfpstatus == 0: + return True + return False - def get_tx_disable(self): + def get_name(self): """ - Retrieves the tx_disable status of this SFP - Returns: - A Boolean, True if tx_disable is enabled, False if disabled + Retrieves the name of the device + Returns: + string: The name of the device """ + return self.name - if self.sfp_type == COPPER_TYPE: - return None - if not self.dom_supported: - return None - - tx_disable_list = [] - offset = 256 - dom_channel_monitor_raw = self.__read_eeprom_specific_bytes((offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH) - if dom_channel_monitor_raw is not None: - tx_disable_data = int(dom_channel_monitor_raw[0], 16) - tx_disable_list.append(tx_disable_data & 0xC0 != 0) - else: - return None - - return tx_disable_list - - def get_tx_disable_channel(self): + def get_position_in_parent(self): """ - Retrieves the TX disabled channels in this SFP + Retrieves 1-based relative physical position in parent device. Returns: - A hex of 4 bits (bit 0 to bit 3 as channel 0 to channel 3) to represent - TX channels which have been disabled in this SFP. - As an example, a returned value of 0x5 indicates that channel 0 - and channel 2 have been disabled. + integer: The 1-based relative physical position in parent device or + -1 if cannot determine the position """ - tx_disable_list = self.get_tx_disable() - if tx_disable_list is None: - return 0 - tx_disabled = 0 - for i in range(len(tx_disable_list)): - if tx_disable_list[i]: - tx_disabled |= 1 << i - return tx_disabled + return -1 - def get_lpmode(self): + def is_replaceable(self): """ - Retrieves the lpmode (low power mode) status of this SFP + Indicate whether this device is replaceable. Returns: - A Boolean, True if lpmode is enabled, False if disabled + bool: True if it is replaceable. """ - if self.sfp_type == COPPER_TYPE: - return False - if self.sfp_type == SFP_TYPE: - return False - def get_power_override(self): - """ - Retrieves the power-override status of this SFP - Returns: - A Boolean, True if power-override is enabled, False if disabled - """ - if self.sfp_type == COPPER_TYPE: - return False - if self.sfp_type == SFP_TYPE: + if self.sfp_type == "SFP": + return True + else: return False - def get_temperature(self): + def _get_error_code(self): """ - Retrieves the temperature of this SFP + Get error code of the SFP module + Returns: - An integer number of current temperature in Celsius + The error code """ - if self.sfp_type == COPPER_TYPE: - return None - - transceiver_bulk_status = self.get_transceiver_bulk_status() - return transceiver_bulk_status.get("temperature", "N/A") + return NotImplementedError - def get_voltage(self): - """ - Retrieves the supply voltage of this SFP - Returns: - An integer number of supply voltage in mV + def get_error_description(self): """ - if self.sfp_type == COPPER_TYPE: - return None + Get error description - transceiver_bulk_status = self.get_transceiver_bulk_status() - return transceiver_bulk_status.get("voltage", "N/A") + Args: + error_code: The error code returned by _get_error_code - def get_tx_bias(self): - """ - Retrieves the TX bias current of this SFP Returns: - + The error description """ - if self.sfp_type == COPPER_TYPE: - return None - - tx_bias_list = [] - transceiver_bulk_status = self.get_transceiver_bulk_status() - tx_bias_list.append(transceiver_bulk_status.get("tx1bias", "N/A")) - - return tx_bias_list + if not self.get_presence(): + error_description = self.SFP_STATUS_UNPLUGGED + else: + error_description = self.SFP_STATUS_OK + return error_description + # return NotImplementedError - def get_rx_power(self): + def get_reset_status(self): """ - Retrieves the received optical power for this SFP + Retrieves the reset status of SFP Returns: - A list of four integer numbers, representing received optical - power in mW for channel 0 to channel 4. - Ex. ['1.77', '1.71', '1.68', '1.70'] + A Boolean, True if reset enabled, False if disabled """ - rx_power_list = [] if self.sfp_type == COPPER_TYPE: - return None - + return False if self.sfp_type == SFP_TYPE: + return False - offset = 256 - - sfpd_obj = sff8472Dom() - if sfpd_obj is None: - return None - - self._dom_capability_detect() - if self.dom_supported: - sfpd_obj._calibration_type = self.calibration - - dom_channel_monitor_raw = self.__read_eeprom_specific_bytes( - (offset + SFP_CHANNL_MON_OFFSET), SFP_CHANNL_MON_WIDTH) - if dom_channel_monitor_raw is not None: - dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params( - dom_channel_monitor_raw, 0) - rx_power_list.append(self.__convert_string_to_num( - dom_channel_monitor_data['data']['RXPower']['value'])) - else: - return None - else: - return None - - return rx_power_list - - def get_tx_power(self): + def get_status(self): """ - Retrieves the TX power of this SFP - Returns: - A list of four integer numbers, representing TX power in mW - for channel 0 to channel 4. - Ex. ['1.86', '1.86', '1.86', '1.86'] + Retrieves the operational status of the device """ - tx_power_list = [] - - if self.sfp_type == COPPER_TYPE: - return None + reset = self.get_reset_status() - if self.sfp_type == SFP_TYPE: + if reset is True: + status = False + else: + status = True - offset = 256 - sfpd_obj = sff8472Dom() - if sfpd_obj is None: - return None - - self._dom_capability_detect() - if self.dom_supported: - sfpd_obj._calibration_type = self.calibration - - dom_channel_monitor_raw = self.__read_eeprom_specific_bytes( - (offset + SFP_CHANNL_MON_OFFSET), SFP_CHANNL_MON_WIDTH) - if dom_channel_monitor_raw is not None: - dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params( - dom_channel_monitor_raw, 0) - tx_power_list.append(self.__convert_string_to_num( - dom_channel_monitor_data['data']['TXPower']['value'])) - else: - return None - else: - return None - return tx_power_list + return status def reset(self): """ @@ -793,64 +190,6 @@ def reset(self): # RJ45 and SFP ports not resettable return False - def tx_disable(self, tx_disable): - """ - Disable SFP TX - Args: - tx_disable : A Boolean, True to enable tx_disable mode, False to disable - tx_disable mode. - Returns: - A boolean, True if tx_disable is set successfully, False if not - """ - if self.sfp_type == COPPER_TYPE: - return False - - if smbus_present == 0: # if called from sfputil outside of pmon - cmdstatus, register = getstatusoutput_noshell(['sudo', 'i2cget', '-y', '0', '0x41', '0x5']) - if cmdstatus: - sonic_logger.log_warning("sfp cmdstatus i2c get failed %s" % register ) - return False - register = int(register, 16) - else: - bus = smbus.SMBus(0) - DEVICE_ADDRESS = 0x41 - DEVICE_REG = 0x5 - register = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - - pos = [1, 2, 4, 8] - mask = pos[self.index-SFP_PORT_START] - if tx_disable is True: - setbits = register | mask - else: - setbits = register & ~mask - - if smbus_present == 0: # if called from sfputil outside of pmon - cmdstatus, output = getstatusoutput_noshell(['sudo', 'i2cset', '-y', '-m', '0x0f', '0', '0x41', '0x5', str(setbits)]) - if cmdstatus: - sonic_logger.log_warning("sfp cmdstatus i2c write failed %s" % output ) - return False - else: - bus = smbus.SMBus(0) - DEVICE_ADDRESS = 0x41 - DEVICE_REG = 0x5 - bus.write_byte_data(DEVICE_ADDRESS, DEVICE_REG, setbits) - - return True - - def tx_disable_channel(self, channel, disable): - """ - Sets the tx_disable for specified SFP channels - Args: - channel : A hex of 4 bits (bit 0 to bit 3) which represent channel 0 to 3, - e.g. 0x5 for channel 0 and channel 2. - disable : A boolean, True to disable TX channels specified in channel, - False to enable - Returns: - A boolean, True if successful, False if not - """ - - return NotImplementedError - def set_lpmode(self, lpmode): """ Sets the lpmode (low power mode) of SFP @@ -865,124 +204,13 @@ def set_lpmode(self, lpmode): if self.sfp_type == SFP_TYPE: return False - def set_power_override(self, power_override, power_set): - """ - Sets SFP power level using power_override and power_set - Args: - power_override : - A Boolean, True to override set_lpmode and use power_set - to control SFP power, False to disable SFP power control - through power_override/power_set and use set_lpmode - to control SFP power. - power_set : - Only valid when power_override is True. - A Boolean, True to set SFP to low power mode, False to set - SFP to high power mode. - Returns: - A boolean, True if power-override and power_set are set successfully, - False if not - """ - - return NotImplementedError - - def get_name(self): - """ - Retrieves the name of the device - Returns: - string: The name of the device - """ - sfputil_helper = SfpUtilHelper() - sfputil_helper.read_porttab_mappings( - self.__get_path_to_port_config_file()) - name = sfputil_helper.logical[self.index-1] or "Unknown" - return name - - def get_presence(self): + def get_lpmode(self): """ - Retrieves the presence + Retrieves the lpmode (low power mode) status of this SFP Returns: - bool: True if is present, False if not + A Boolean, True if lpmode is enabled, False if disabled """ if self.sfp_type == COPPER_TYPE: return False - - if smbus_present == 0: # if called from sfputil outside of pmon - cmdstatus, sfpstatus = getstatusoutput_noshell(['sudo', 'i2cget', '-y', '0', '0x41', '0x3']) - sfpstatus = int(sfpstatus, 16) - else: - bus = smbus.SMBus(0) - DEVICE_ADDRESS = 0x41 - DEVICE_REG = 0x3 - sfpstatus = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - - pos = [1, 2, 4, 8] - bit_pos = pos[self.index-SFP_PORT_START] - sfpstatus = sfpstatus & (bit_pos) - - if sfpstatus == 0: - return True - - return False - - def get_model(self): - """ - Retrieves the model number (or part number) of the device - Returns: - string: Model/part number of device - """ - transceiver_dom_info_dict = self.get_transceiver_info() - return transceiver_dom_info_dict.get("model", "N/A") - - def get_serial(self): - """ - Retrieves the serial number of the device - Returns: - string: Serial number of device - """ - transceiver_dom_info_dict = self.get_transceiver_info() - return transceiver_dom_info_dict.get("serial", "N/A") - - def get_status(self): - """ - Retrieves the operational status of the device - Returns: - A boolean value, True if device is operating properly, False if not - """ - return self.get_presence() - - def is_replaceable(self): - """ - Indicate whether this device is replaceable. - Returns: - bool: True if it is replaceable. - """ - - if self.sfp_type == "SFP": - return True - else: + if self.sfp_type == SFP_TYPE: return False - - def get_position_in_parent(self): - """ - Retrieves 1-based relative physical position in parent device - Returns: - integer: The 1-based relative physical position in parent device - """ - return self.index - - def get_error_description(self): - """ - Retrives the error descriptions of the SFP module - - Returns: - String that represents the current error descriptions of vendor specific errors - In case there are multiple errors, they should be joined by '|', - like: "Bad EEPROM|Unsupported cable" - """ - - if not self.get_presence(): - error_description = self.SFP_STATUS_UNPLUGGED - else: - error_description = self.SFP_STATUS_OK - - return error_description From 6c04ed987df090eb866bd4ebe51838ac93b6b779 Mon Sep 17 00:00:00 2001 From: Ye Jianquan Date: Fri, 7 Apr 2023 01:36:10 +0800 Subject: [PATCH 08/17] Revert "chassis-packet: resolve the missing static routes (#14230)" (#14544) This reverts commit a8f8ea3b505d2659fa4c20f1ca9550a317c93ea2. --- files/build_templates/arp_update_vars.j2 | 3 +-- files/scripts/arp_update | 27 +++++++----------------- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/files/build_templates/arp_update_vars.j2 b/files/build_templates/arp_update_vars.j2 index 9f4ba4a42050..91992e781ac0 100644 --- a/files/build_templates/arp_update_vars.j2 +++ b/files/build_templates/arp_update_vars.j2 @@ -4,6 +4,5 @@ "pc_interface" : "{% for (name, prefix) in PORTCHANNEL_INTERFACE|pfx_filter %}{% if prefix|ipv6 %}{{ name }} {% endif %}{% endfor %}", "vlan_sub_interface": "{% for (name, prefix) in VLAN_SUB_INTERFACE|pfx_filter %}{% if prefix|ipv6 %}{{ name }} {% endif %}{% endfor %}", "vlan" : "{% if VLAN %}{{ VLAN.keys() | join(' ') }}{% endif %}", - "static_route_nexthops": "{% if STATIC_ROUTE %}{% for static_route_prefix, static_route_attr in STATIC_ROUTE.items() %}{%- if static_route_prefix -%}{{ static_route_attr['nexthop'].split(',') | join(' ') | lower + " " }}{%- endif -%}{% endfor %}{% endif %}", - "static_route_ifnames": "{% if STATIC_ROUTE %}{% for static_route_prefix, static_route_attr in STATIC_ROUTE.items() %}{%- if static_route_prefix -%}{{ static_route_attr['ifname'].split(',') | join(' ') + " " }}{%- endif -%}{% endfor %}{% endif %}" + "static_route_nexthops": "{% if STATIC_ROUTE %}{% for static_route_prefix, static_route_attr in STATIC_ROUTE.items() %}{%- if static_route_prefix -%}{{ static_route_attr['nexthop'].split(',') | join(' ') | lower + " " }}{%- endif -%}{% endfor %}{% endif %}" } diff --git a/files/scripts/arp_update b/files/scripts/arp_update index 2725f034668b..b686e1a93e24 100755 --- a/files/scripts/arp_update +++ b/files/scripts/arp_update @@ -14,16 +14,13 @@ while /bin/true; do ARP_UPDATE_VARS=$(sonic-cfggen -d -t ${ARP_UPDATE_VARS_FILE}) SWITCH_TYPE=$(echo $ARP_UPDATE_VARS | jq -r '.switch_type') if [[ "$SWITCH_TYPE" == "chassis-packet" ]]; then - # Get array of Nexthops and ifnames. Nexthops and ifnames are mapped one to one - STATIC_ROUTE_NEXTHOPS=($(echo $ARP_UPDATE_VARS | jq -r '.static_route_nexthops')) - STATIC_ROUTE_IFNAMES=($(echo $ARP_UPDATE_VARS | jq -r '.static_route_ifnames')) + STATIC_ROUTE_NEXTHOPS=$(echo $ARP_UPDATE_VARS | jq -r '.static_route_nexthops') # on supervisor/rp exit the script gracefully - if [[ -z "$STATIC_ROUTE_NEXTHOPS" ]] || [[ -z "$STATIC_ROUTE_IFNAMES" ]]; then + if [[ -z "$STATIC_ROUTE_NEXTHOPS" ]]; then logger "arp_update: exiting as no static route in packet based chassis" exit 0 fi - for i in ${!STATIC_ROUTE_NEXTHOPS[@]}; do - nexthop="${STATIC_ROUTE_NEXTHOPS[i]}" + for nexthop in $STATIC_ROUTE_NEXTHOPS; do if [[ $nexthop == *"."* ]]; then neigh_state=( $(ip -4 neigh show | grep -w $nexthop | tr -s ' ' | cut -d ' ' -f 3,4) ) ping_prefix=ping @@ -31,19 +28,11 @@ while /bin/true; do neigh_state=( $(ip -6 neigh show | grep -w $nexthop | tr -s ' ' | cut -d ' ' -f 3,4) ) ping_prefix=ping6 fi - if [[ -z "${neigh_state}" ]] || [[ "${neigh_state[1]}" == "INCOMPLETE" ]] || [[ "${neigh_state[1]}" == "FAILED" ]]; then - interface="${STATIC_ROUTE_IFNAMES[i]}" - if [[ -z "$interface" ]]; then - # should never be here, handling just in case - logger "ERR: arp_update: missing interface entry for static route $nexthop" - interface=${neigh_state[0]} - fi - intf_up=$(ip link show $interface | grep "state UP") - if [[ -n "$intf_up" ]]; then - pingcmd="timeout 0.2 $ping_prefix -I ${interface} -n -q -i 0 -c 1 -W 1 $nexthop >/dev/null" - eval $pingcmd - logger "arp_update: static route nexthop not resolved, pinging $nexthop on ${neigh_state[0]}" - fi + + if [[ "${neigh_state[1]}" == "INCOMPLETE" ]] || [[ "${neigh_state[1]}" == "FAILED" ]]; then + pingcmd="timeout 0.2 $ping_prefix -I ${neigh_state[0]} -n -q -i 0 -c 1 -W 1 $nexthop >/dev/null" + eval $pingcmd + logger "arp_update: sttaic route nexthop not resolved, pinging $nexthop on ${neigh_state[0]}" fi done From 8ddfaec34f52a3b4b0ad2b6649343a817057cd5c Mon Sep 17 00:00:00 2001 From: kenneth-arista <93353051+kenneth-arista@users.noreply.github.com> Date: Thu, 6 Apr 2023 10:53:42 -0700 Subject: [PATCH 09/17] [devices/arista] Update asic_port_name in Arista LCs (#14234) Updated asic_port_names for all Arista LC SKUs to follow latest naming conventions to remove redundant ASICx suffix. For Arista-7800R3-48CQ2-C48, added the asic_port_name mapping. --- .../Arista-7800R3-48CQ2-C48/port_config.ini | 102 +++++++++--------- .../Arista-7800R3A-36D2-C36/0/port_config.ini | 40 +++---- .../Arista-7800R3A-36D2-C36/1/port_config.ini | 40 +++---- .../Arista-7800R3A-36D2-C72/0/port_config.ini | 76 ++++++------- .../Arista-7800R3A-36D2-C72/1/port_config.ini | 76 ++++++------- .../Arista-7800R3A-36D2-D36/0/port_config.ini | 40 +++---- .../Arista-7800R3A-36D2-D36/1/port_config.ini | 40 +++---- 7 files changed, 207 insertions(+), 207 deletions(-) diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini index ca11e4c0dd6b..07a78421dd4b 100644 --- a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini @@ -1,51 +1,51 @@ -# name lanes alias index role speed coreId corePortId numVoq -Ethernet0 6,7 Ethernet1/1 1 Ext 100000 0 1 8 -Ethernet4 2,3 Ethernet2/1 2 Ext 100000 0 2 8 -Ethernet8 4,5 Ethernet3/1 3 Ext 100000 0 3 8 -Ethernet12 0,1 Ethernet4/1 4 Ext 100000 0 4 8 -Ethernet16 14,15 Ethernet5/1 5 Ext 100000 0 5 8 -Ethernet20 10,11 Ethernet6/1 6 Ext 100000 0 6 8 -Ethernet24 12,13 Ethernet7/1 7 Ext 100000 0 7 8 -Ethernet28 8,9 Ethernet8/1 8 Ext 100000 0 8 8 -Ethernet32 22,23 Ethernet9/1 9 Ext 100000 0 9 8 -Ethernet36 18,19 Ethernet10/1 10 Ext 100000 0 10 8 -Ethernet40 20,21 Ethernet11/1 11 Ext 100000 0 11 8 -Ethernet44 16,17 Ethernet12/1 12 Ext 100000 0 12 8 -Ethernet48 30,31 Ethernet13/1 13 Ext 100000 0 13 8 -Ethernet52 26,27 Ethernet14/1 14 Ext 100000 0 14 8 -Ethernet56 28,29 Ethernet15/1 15 Ext 100000 0 15 8 -Ethernet60 24,25 Ethernet16/1 16 Ext 100000 0 16 8 -Ethernet64 38,39 Ethernet17/1 17 Ext 100000 0 17 8 -Ethernet68 34,35 Ethernet18/1 18 Ext 100000 0 18 8 -Ethernet72 36,37 Ethernet19/1 19 Ext 100000 0 19 8 -Ethernet76 32,33 Ethernet20/1 20 Ext 100000 0 20 8 -Ethernet80 46,47 Ethernet21/1 21 Ext 100000 0 21 8 -Ethernet84 42,43 Ethernet22/1 22 Ext 100000 0 22 8 -Ethernet88 44,45 Ethernet23/1 23 Ext 100000 0 23 8 -Ethernet92 40,41 Ethernet24/1 24 Ext 100000 0 24 8 -Ethernet96 94,95 Ethernet25/1 25 Ext 100000 1 25 8 -Ethernet100 90,91 Ethernet26/1 26 Ext 100000 1 26 8 -Ethernet104 92,93 Ethernet27/1 27 Ext 100000 1 27 8 -Ethernet108 88,89 Ethernet28/1 28 Ext 100000 1 28 8 -Ethernet112 86,87 Ethernet29/1 29 Ext 100000 1 29 8 -Ethernet116 82,83 Ethernet30/1 30 Ext 100000 1 30 8 -Ethernet120 84,85 Ethernet31/1 31 Ext 100000 1 31 8 -Ethernet124 80,81 Ethernet32/1 32 Ext 100000 1 32 8 -Ethernet128 78,79 Ethernet33/1 33 Ext 100000 1 33 8 -Ethernet132 74,75 Ethernet34/1 34 Ext 100000 1 34 8 -Ethernet136 76,77 Ethernet35/1 35 Ext 100000 1 35 8 -Ethernet140 72,73 Ethernet36/1 36 Ext 100000 1 36 8 -Ethernet144 70,71 Ethernet37/1 37 Ext 100000 1 37 8 -Ethernet148 66,67 Ethernet38/1 38 Ext 100000 1 38 8 -Ethernet152 68,69 Ethernet39/1 39 Ext 100000 1 39 8 -Ethernet156 64,65 Ethernet40/1 40 Ext 100000 1 40 8 -Ethernet160 62,63 Ethernet41/1 41 Ext 100000 1 41 8 -Ethernet164 58,59 Ethernet42/1 42 Ext 100000 1 42 8 -Ethernet168 60,61 Ethernet43/1 43 Ext 100000 1 43 8 -Ethernet172 56,57 Ethernet44/1 44 Ext 100000 1 44 8 -Ethernet176 54,55 Ethernet45/1 45 Ext 100000 1 45 8 -Ethernet180 50,51 Ethernet46/1 46 Ext 100000 1 46 8 -Ethernet184 52,53 Ethernet47/1 47 Ext 100000 1 47 8 -Ethernet188 48,49 Ethernet48/1 48 Ext 100000 1 48 8 -Ethernet-Rec0 249 Recirc0/0 51 Rec 400000 0 49 8 -Ethernet-IB0 250 Recirc0/1 52 Inb 400000 1 50 8 +# name lanes alias index role speed asic_port_name coreId corePortId numVoq +Ethernet0 6,7 Ethernet1/1 1 Ext 100000 Eth0 0 1 8 +Ethernet4 2,3 Ethernet2/1 2 Ext 100000 Eth4 0 2 8 +Ethernet8 4,5 Ethernet3/1 3 Ext 100000 Eth8 0 3 8 +Ethernet12 0,1 Ethernet4/1 4 Ext 100000 Eth12 0 4 8 +Ethernet16 14,15 Ethernet5/1 5 Ext 100000 Eth16 0 5 8 +Ethernet20 10,11 Ethernet6/1 6 Ext 100000 Eth20 0 6 8 +Ethernet24 12,13 Ethernet7/1 7 Ext 100000 Eth24 0 7 8 +Ethernet28 8,9 Ethernet8/1 8 Ext 100000 Eth28 0 8 8 +Ethernet32 22,23 Ethernet9/1 9 Ext 100000 Eth32 0 9 8 +Ethernet36 18,19 Ethernet10/1 10 Ext 100000 Eth36 0 10 8 +Ethernet40 20,21 Ethernet11/1 11 Ext 100000 Eth40 0 11 8 +Ethernet44 16,17 Ethernet12/1 12 Ext 100000 Eth44 0 12 8 +Ethernet48 30,31 Ethernet13/1 13 Ext 100000 Eth48 0 13 8 +Ethernet52 26,27 Ethernet14/1 14 Ext 100000 Eth52 0 14 8 +Ethernet56 28,29 Ethernet15/1 15 Ext 100000 Eth56 0 15 8 +Ethernet60 24,25 Ethernet16/1 16 Ext 100000 Eth60 0 16 8 +Ethernet64 38,39 Ethernet17/1 17 Ext 100000 Eth64 0 17 8 +Ethernet68 34,35 Ethernet18/1 18 Ext 100000 Eth68 0 18 8 +Ethernet72 36,37 Ethernet19/1 19 Ext 100000 Eth72 0 19 8 +Ethernet76 32,33 Ethernet20/1 20 Ext 100000 Eth76 0 20 8 +Ethernet80 46,47 Ethernet21/1 21 Ext 100000 Eth80 0 21 8 +Ethernet84 42,43 Ethernet22/1 22 Ext 100000 Eth84 0 22 8 +Ethernet88 44,45 Ethernet23/1 23 Ext 100000 Eth88 0 23 8 +Ethernet92 40,41 Ethernet24/1 24 Ext 100000 Eth92 0 24 8 +Ethernet96 94,95 Ethernet25/1 25 Ext 100000 Eth96 1 25 8 +Ethernet100 90,91 Ethernet26/1 26 Ext 100000 Eth100 1 26 8 +Ethernet104 92,93 Ethernet27/1 27 Ext 100000 Eth104 1 27 8 +Ethernet108 88,89 Ethernet28/1 28 Ext 100000 Eth108 1 28 8 +Ethernet112 86,87 Ethernet29/1 29 Ext 100000 Eth112 1 29 8 +Ethernet116 82,83 Ethernet30/1 30 Ext 100000 Eth116 1 30 8 +Ethernet120 84,85 Ethernet31/1 31 Ext 100000 Eth120 1 31 8 +Ethernet124 80,81 Ethernet32/1 32 Ext 100000 Eth124 1 32 8 +Ethernet128 78,79 Ethernet33/1 33 Ext 100000 Eth128 1 33 8 +Ethernet132 74,75 Ethernet34/1 34 Ext 100000 Eth132 1 34 8 +Ethernet136 76,77 Ethernet35/1 35 Ext 100000 Eth136 1 35 8 +Ethernet140 72,73 Ethernet36/1 36 Ext 100000 Eth140 1 36 8 +Ethernet144 70,71 Ethernet37/1 37 Ext 100000 Eth144 1 37 8 +Ethernet148 66,67 Ethernet38/1 38 Ext 100000 Eth148 1 38 8 +Ethernet152 68,69 Ethernet39/1 39 Ext 100000 Eth152 1 39 8 +Ethernet156 64,65 Ethernet40/1 40 Ext 100000 Eth156 1 40 8 +Ethernet160 62,63 Ethernet41/1 41 Ext 100000 Eth160 1 41 8 +Ethernet164 58,59 Ethernet42/1 42 Ext 100000 Eth164 1 42 8 +Ethernet168 60,61 Ethernet43/1 43 Ext 100000 Eth168 1 43 8 +Ethernet172 56,57 Ethernet44/1 44 Ext 100000 Eth172 1 44 8 +Ethernet176 54,55 Ethernet45/1 45 Ext 100000 Eth176 1 45 8 +Ethernet180 50,51 Ethernet46/1 46 Ext 100000 Eth180 1 46 8 +Ethernet184 52,53 Ethernet47/1 47 Ext 100000 Eth184 1 47 8 +Ethernet188 48,49 Ethernet48/1 48 Ext 100000 Eth188 1 48 8 +Ethernet-Rec0 249 Recirc0/0 51 Rec 400000 Rcy0 0 49 8 +Ethernet-IB0 250 Recirc0/1 52 Inb 400000 Rcy1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini index f8448735b26f..a67c9b3f7d2f 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini @@ -1,21 +1,21 @@ # name lanes alias index role speed asic_port_name coreId corePortId numVoq -Ethernet0 72,73,74,75 Ethernet1/1 1 Ext 100000 Eth0-ASIC0 1 1 8 -Ethernet8 80,81,82,83 Ethernet2/1 2 Ext 100000 Eth8-ASIC0 1 2 8 -Ethernet16 88,89,90,91 Ethernet3/1 3 Ext 100000 Eth16-ASIC0 1 3 8 -Ethernet24 96,97,98,99 Ethernet4/1 4 Ext 100000 Eth24-ASIC0 1 4 8 -Ethernet32 104,105,106,107 Ethernet5/1 5 Ext 100000 Eth32-ASIC0 1 5 8 -Ethernet40 112,113,114,115 Ethernet6/1 6 Ext 100000 Eth40-ASIC0 1 6 8 -Ethernet48 120,121,122,123 Ethernet7/1 7 Ext 100000 Eth48-ASIC0 1 7 8 -Ethernet56 128,129,130,131 Ethernet8/1 8 Ext 100000 Eth56-ASIC0 1 8 8 -Ethernet64 136,137,138,139 Ethernet9/1 9 Ext 100000 Eth64-ASIC0 1 9 8 -Ethernet72 64,65,66,67 Ethernet10/1 10 Ext 100000 Eth72-ASIC0 0 10 8 -Ethernet80 56,57,58,59 Ethernet11/1 11 Ext 100000 Eth80-ASIC0 0 11 8 -Ethernet88 48,49,50,51 Ethernet12/1 12 Ext 100000 Eth88-ASIC0 0 12 8 -Ethernet96 40,41,42,43 Ethernet13/1 13 Ext 100000 Eth96-ASIC0 0 13 8 -Ethernet104 32,33,34,35 Ethernet14/1 14 Ext 100000 Eth104-ASIC0 0 14 8 -Ethernet112 24,25,26,27 Ethernet15/1 15 Ext 100000 Eth112-ASIC0 0 15 8 -Ethernet120 16,17,18,19 Ethernet16/1 16 Ext 100000 Eth120-ASIC0 0 16 8 -Ethernet128 8,9,10,11 Ethernet17/1 17 Ext 100000 Eth128-ASIC0 0 17 8 -Ethernet136 0,1,2,3 Ethernet18/1 18 Ext 100000 Eth136-ASIC0 0 18 8 -Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 49 8 -Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 50 8 +Ethernet0 72,73,74,75 Ethernet1/1 1 Ext 100000 Eth0 1 1 8 +Ethernet8 80,81,82,83 Ethernet2/1 2 Ext 100000 Eth8 1 2 8 +Ethernet16 88,89,90,91 Ethernet3/1 3 Ext 100000 Eth16 1 3 8 +Ethernet24 96,97,98,99 Ethernet4/1 4 Ext 100000 Eth24 1 4 8 +Ethernet32 104,105,106,107 Ethernet5/1 5 Ext 100000 Eth32 1 5 8 +Ethernet40 112,113,114,115 Ethernet6/1 6 Ext 100000 Eth40 1 6 8 +Ethernet48 120,121,122,123 Ethernet7/1 7 Ext 100000 Eth48 1 7 8 +Ethernet56 128,129,130,131 Ethernet8/1 8 Ext 100000 Eth56 1 8 8 +Ethernet64 136,137,138,139 Ethernet9/1 9 Ext 100000 Eth64 1 9 8 +Ethernet72 64,65,66,67 Ethernet10/1 10 Ext 100000 Eth72 0 10 8 +Ethernet80 56,57,58,59 Ethernet11/1 11 Ext 100000 Eth80 0 11 8 +Ethernet88 48,49,50,51 Ethernet12/1 12 Ext 100000 Eth88 0 12 8 +Ethernet96 40,41,42,43 Ethernet13/1 13 Ext 100000 Eth96 0 13 8 +Ethernet104 32,33,34,35 Ethernet14/1 14 Ext 100000 Eth104 0 14 8 +Ethernet112 24,25,26,27 Ethernet15/1 15 Ext 100000 Eth112 0 15 8 +Ethernet120 16,17,18,19 Ethernet16/1 16 Ext 100000 Eth120 0 16 8 +Ethernet128 8,9,10,11 Ethernet17/1 17 Ext 100000 Eth128 0 17 8 +Ethernet136 0,1,2,3 Ethernet18/1 18 Ext 100000 Eth136 0 18 8 +Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0 0 49 8 +Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini index b15b00ca0953..4af1dc77b2a6 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini @@ -1,21 +1,21 @@ # name lanes alias index role speed asic_port_name coreId corePortId numVoq -Ethernet144 72,73,74,75 Ethernet19/1 19 Ext 100000 Eth0-ASIC1 1 1 8 -Ethernet152 80,81,82,83 Ethernet20/1 20 Ext 100000 Eth8-ASIC1 1 2 8 -Ethernet160 88,89,90,91 Ethernet21/1 21 Ext 100000 Eth16-ASIC1 1 3 8 -Ethernet168 96,97,98,99 Ethernet22/1 22 Ext 100000 Eth24-ASIC1 1 4 8 -Ethernet176 104,105,106,107 Ethernet23/1 23 Ext 100000 Eth32-ASIC1 1 5 8 -Ethernet184 112,113,114,115 Ethernet24/1 24 Ext 100000 Eth40-ASIC1 1 6 8 -Ethernet192 120,121,122,123 Ethernet25/1 25 Ext 100000 Eth48-ASIC1 1 7 8 -Ethernet200 128,129,130,131 Ethernet26/1 26 Ext 100000 Eth56-ASIC1 1 8 8 -Ethernet208 136,137,138,139 Ethernet27/1 27 Ext 100000 Eth64-ASIC1 1 9 8 -Ethernet216 64,65,66,67 Ethernet28/1 28 Ext 100000 Eth72-ASIC1 0 10 8 -Ethernet224 56,57,58,59 Ethernet29/1 29 Ext 100000 Eth80-ASIC1 0 11 8 -Ethernet232 48,49,50,51 Ethernet30/1 30 Ext 100000 Eth88-ASIC1 0 12 8 -Ethernet240 40,41,42,43 Ethernet31/1 31 Ext 100000 Eth96-ASIC1 0 13 8 -Ethernet248 32,33,34,35 Ethernet32/1 32 Ext 100000 Eth104-ASIC1 0 14 8 -Ethernet256 24,25,26,27 Ethernet33/1 33 Ext 100000 Eth112-ASIC1 0 15 8 -Ethernet264 16,17,18,19 Ethernet34/1 34 Ext 100000 Eth120-ASIC1 0 16 8 -Ethernet272 8,9,10,11 Ethernet35/1 35 Ext 100000 Eth128-ASIC1 0 17 8 -Ethernet280 0,1,2,3 Ethernet36/1 36 Ext 100000 Eth136-ASIC1 0 18 8 -Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 49 8 -Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 50 8 +Ethernet144 72,73,74,75 Ethernet19/1 19 Ext 100000 Eth0 1 1 8 +Ethernet152 80,81,82,83 Ethernet20/1 20 Ext 100000 Eth8 1 2 8 +Ethernet160 88,89,90,91 Ethernet21/1 21 Ext 100000 Eth16 1 3 8 +Ethernet168 96,97,98,99 Ethernet22/1 22 Ext 100000 Eth24 1 4 8 +Ethernet176 104,105,106,107 Ethernet23/1 23 Ext 100000 Eth32 1 5 8 +Ethernet184 112,113,114,115 Ethernet24/1 24 Ext 100000 Eth40 1 6 8 +Ethernet192 120,121,122,123 Ethernet25/1 25 Ext 100000 Eth48 1 7 8 +Ethernet200 128,129,130,131 Ethernet26/1 26 Ext 100000 Eth56 1 8 8 +Ethernet208 136,137,138,139 Ethernet27/1 27 Ext 100000 Eth64 1 9 8 +Ethernet216 64,65,66,67 Ethernet28/1 28 Ext 100000 Eth72 0 10 8 +Ethernet224 56,57,58,59 Ethernet29/1 29 Ext 100000 Eth80 0 11 8 +Ethernet232 48,49,50,51 Ethernet30/1 30 Ext 100000 Eth88 0 12 8 +Ethernet240 40,41,42,43 Ethernet31/1 31 Ext 100000 Eth96 0 13 8 +Ethernet248 32,33,34,35 Ethernet32/1 32 Ext 100000 Eth104 0 14 8 +Ethernet256 24,25,26,27 Ethernet33/1 33 Ext 100000 Eth112 0 15 8 +Ethernet264 16,17,18,19 Ethernet34/1 34 Ext 100000 Eth120 0 16 8 +Ethernet272 8,9,10,11 Ethernet35/1 35 Ext 100000 Eth128 0 17 8 +Ethernet280 0,1,2,3 Ethernet36/1 36 Ext 100000 Eth136 0 18 8 +Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0 0 49 8 +Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/port_config.ini index baa0572b6686..f9f02ffb83a0 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/port_config.ini @@ -1,39 +1,39 @@ # name lanes alias index role speed asic_port_name coreId corePortId numVoq -Ethernet0 72,73,74,75 Ethernet1/1 1 Ext 100000 Eth0-ASIC0 1 1 8 -Ethernet4 76,77,78,79 Ethernet1/5 1 Ext 100000 Eth4-ASIC0 1 2 8 -Ethernet8 80,81,82,83 Ethernet2/1 2 Ext 100000 Eth8-ASIC0 1 3 8 -Ethernet12 84,85,86,87 Ethernet2/5 2 Ext 100000 Eth12-ASIC0 1 4 8 -Ethernet16 88,89,90,91 Ethernet3/1 3 Ext 100000 Eth16-ASIC0 1 5 8 -Ethernet20 92,93,94,95 Ethernet3/5 3 Ext 100000 Eth20-ASIC0 1 6 8 -Ethernet24 96,97,98,99 Ethernet4/1 4 Ext 100000 Eth24-ASIC0 1 7 8 -Ethernet28 100,101,102,103 Ethernet4/5 4 Ext 100000 Eth28-ASIC0 1 8 8 -Ethernet32 104,105,106,107 Ethernet5/1 5 Ext 100000 Eth32-ASIC0 1 9 8 -Ethernet36 108,109,110,111 Ethernet5/5 5 Ext 100000 Eth36-ASIC0 1 10 8 -Ethernet40 112,113,114,115 Ethernet6/1 6 Ext 100000 Eth40-ASIC0 1 11 8 -Ethernet44 116,117,118,119 Ethernet6/5 6 Ext 100000 Eth44-ASIC0 1 12 8 -Ethernet48 120,121,122,123 Ethernet7/1 7 Ext 100000 Eth48-ASIC0 1 13 8 -Ethernet52 124,125,126,127 Ethernet7/5 7 Ext 100000 Eth52-ASIC0 1 14 8 -Ethernet56 128,129,130,131 Ethernet8/1 8 Ext 100000 Eth56-ASIC0 1 15 8 -Ethernet60 132,133,134,135 Ethernet8/5 8 Ext 100000 Eth60-ASIC0 1 16 8 -Ethernet64 136,137,138,139 Ethernet9/1 9 Ext 100000 Eth64-ASIC0 1 17 8 -Ethernet68 140,141,142,143 Ethernet9/5 9 Ext 100000 Eth68-ASIC0 1 18 8 -Ethernet72 64,65,66,67 Ethernet10/1 10 Ext 100000 Eth72-ASIC0 0 19 8 -Ethernet76 68,69,70,71 Ethernet10/5 10 Ext 100000 Eth76-ASIC0 0 20 8 -Ethernet80 56,57,58,59 Ethernet11/1 11 Ext 100000 Eth80-ASIC0 0 21 8 -Ethernet84 60,61,62,63 Ethernet11/5 11 Ext 100000 Eth84-ASIC0 0 22 8 -Ethernet88 48,49,50,51 Ethernet12/1 12 Ext 100000 Eth88-ASIC0 0 23 8 -Ethernet92 52,53,54,55 Ethernet12/5 12 Ext 100000 Eth92-ASIC0 0 24 8 -Ethernet96 40,41,42,43 Ethernet13/1 13 Ext 100000 Eth96-ASIC0 0 25 8 -Ethernet100 44,45,46,47 Ethernet13/5 13 Ext 100000 Eth100-ASIC0 0 26 8 -Ethernet104 32,33,34,35 Ethernet14/1 14 Ext 100000 Eth104-ASIC0 0 27 8 -Ethernet108 36,37,38,39 Ethernet14/5 14 Ext 100000 Eth108-ASIC0 0 28 8 -Ethernet112 24,25,26,27 Ethernet15/1 15 Ext 100000 Eth112-ASIC0 0 29 8 -Ethernet116 28,29,30,31 Ethernet15/5 15 Ext 100000 Eth116-ASIC0 0 30 8 -Ethernet120 16,17,18,19 Ethernet16/1 16 Ext 100000 Eth120-ASIC0 0 31 8 -Ethernet124 20,21,22,23 Ethernet16/5 16 Ext 100000 Eth124-ASIC0 0 32 8 -Ethernet128 8,9,10,11 Ethernet17/1 17 Ext 100000 Eth128-ASIC0 0 33 8 -Ethernet132 12,13,14,15 Ethernet17/5 17 Ext 100000 Eth132-ASIC0 0 34 8 -Ethernet136 0,1,2,3 Ethernet18/1 18 Ext 100000 Eth136-ASIC0 0 35 8 -Ethernet140 4,5,6,7 Ethernet18/5 18 Ext 100000 Eth140-ASIC0 0 36 8 -Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 221 8 -Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 222 8 +Ethernet0 72,73,74,75 Ethernet1/1 1 Ext 100000 Eth0 1 1 8 +Ethernet4 76,77,78,79 Ethernet1/5 1 Ext 100000 Eth4 1 2 8 +Ethernet8 80,81,82,83 Ethernet2/1 2 Ext 100000 Eth8 1 3 8 +Ethernet12 84,85,86,87 Ethernet2/5 2 Ext 100000 Eth12 1 4 8 +Ethernet16 88,89,90,91 Ethernet3/1 3 Ext 100000 Eth16 1 5 8 +Ethernet20 92,93,94,95 Ethernet3/5 3 Ext 100000 Eth20 1 6 8 +Ethernet24 96,97,98,99 Ethernet4/1 4 Ext 100000 Eth24 1 7 8 +Ethernet28 100,101,102,103 Ethernet4/5 4 Ext 100000 Eth28 1 8 8 +Ethernet32 104,105,106,107 Ethernet5/1 5 Ext 100000 Eth32 1 9 8 +Ethernet36 108,109,110,111 Ethernet5/5 5 Ext 100000 Eth36 1 10 8 +Ethernet40 112,113,114,115 Ethernet6/1 6 Ext 100000 Eth40 1 11 8 +Ethernet44 116,117,118,119 Ethernet6/5 6 Ext 100000 Eth44 1 12 8 +Ethernet48 120,121,122,123 Ethernet7/1 7 Ext 100000 Eth48 1 13 8 +Ethernet52 124,125,126,127 Ethernet7/5 7 Ext 100000 Eth52 1 14 8 +Ethernet56 128,129,130,131 Ethernet8/1 8 Ext 100000 Eth56 1 15 8 +Ethernet60 132,133,134,135 Ethernet8/5 8 Ext 100000 Eth60 1 16 8 +Ethernet64 136,137,138,139 Ethernet9/1 9 Ext 100000 Eth64 1 17 8 +Ethernet68 140,141,142,143 Ethernet9/5 9 Ext 100000 Eth68 1 18 8 +Ethernet72 64,65,66,67 Ethernet10/1 10 Ext 100000 Eth72 0 19 8 +Ethernet76 68,69,70,71 Ethernet10/5 10 Ext 100000 Eth76 0 20 8 +Ethernet80 56,57,58,59 Ethernet11/1 11 Ext 100000 Eth80 0 21 8 +Ethernet84 60,61,62,63 Ethernet11/5 11 Ext 100000 Eth84 0 22 8 +Ethernet88 48,49,50,51 Ethernet12/1 12 Ext 100000 Eth88 0 23 8 +Ethernet92 52,53,54,55 Ethernet12/5 12 Ext 100000 Eth92 0 24 8 +Ethernet96 40,41,42,43 Ethernet13/1 13 Ext 100000 Eth96 0 25 8 +Ethernet100 44,45,46,47 Ethernet13/5 13 Ext 100000 Eth100 0 26 8 +Ethernet104 32,33,34,35 Ethernet14/1 14 Ext 100000 Eth104 0 27 8 +Ethernet108 36,37,38,39 Ethernet14/5 14 Ext 100000 Eth108 0 28 8 +Ethernet112 24,25,26,27 Ethernet15/1 15 Ext 100000 Eth112 0 29 8 +Ethernet116 28,29,30,31 Ethernet15/5 15 Ext 100000 Eth116 0 30 8 +Ethernet120 16,17,18,19 Ethernet16/1 16 Ext 100000 Eth120 0 31 8 +Ethernet124 20,21,22,23 Ethernet16/5 16 Ext 100000 Eth124 0 32 8 +Ethernet128 8,9,10,11 Ethernet17/1 17 Ext 100000 Eth128 0 33 8 +Ethernet132 12,13,14,15 Ethernet17/5 17 Ext 100000 Eth132 0 34 8 +Ethernet136 0,1,2,3 Ethernet18/1 18 Ext 100000 Eth136 0 35 8 +Ethernet140 4,5,6,7 Ethernet18/5 18 Ext 100000 Eth140 0 36 8 +Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0 0 221 8 +Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1 1 222 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/port_config.ini index 4241f33ca6c1..53988f0b7a26 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/port_config.ini @@ -1,39 +1,39 @@ # name lanes alias index role speed asic_port_name coreId corePortId numVoq -Ethernet144 72,73,74,75 Ethernet19/1 19 Ext 100000 Eth144-ASIC1 1 1 8 -Ethernet148 76,77,78,79 Ethernet19/5 19 Ext 100000 Eth148-ASIC1 1 2 8 -Ethernet152 80,81,82,83 Ethernet20/1 20 Ext 100000 Eth152-ASIC1 1 3 8 -Ethernet156 84,85,86,87 Ethernet20/5 20 Ext 100000 Eth156-ASIC1 1 4 8 -Ethernet160 88,89,90,91 Ethernet21/1 21 Ext 100000 Eth160-ASIC1 1 5 8 -Ethernet164 92,93,94,95 Ethernet21/5 21 Ext 100000 Eth164-ASIC1 1 6 8 -Ethernet168 96,97,98,99 Ethernet22/1 22 Ext 100000 Eth168-ASIC1 1 7 8 -Ethernet172 100,101,102,103 Ethernet22/5 22 Ext 100000 Eth172-ASIC1 1 8 8 -Ethernet176 104,105,106,107 Ethernet23/1 23 Ext 100000 Eth176-ASIC1 1 9 8 -Ethernet180 108,109,110,111 Ethernet23/5 23 Ext 100000 Eth180-ASIC1 1 10 8 -Ethernet184 112,113,114,115 Ethernet24/1 24 Ext 100000 Eth184-ASIC1 1 11 8 -Ethernet188 116,117,118,119 Ethernet24/5 24 Ext 100000 Eth188-ASIC1 1 12 8 -Ethernet192 120,121,122,123 Ethernet25/1 25 Ext 100000 Eth192-ASIC1 1 13 8 -Ethernet196 124,125,126,127 Ethernet25/5 25 Ext 100000 Eth196-ASIC1 1 14 8 -Ethernet200 128,129,130,131 Ethernet26/1 26 Ext 100000 Eth200-ASIC1 1 15 8 -Ethernet204 132,133,134,135 Ethernet26/5 26 Ext 100000 Eth204-ASIC1 1 16 8 -Ethernet208 136,137,138,139 Ethernet27/1 27 Ext 100000 Eth208-ASIC1 1 17 8 -Ethernet212 140,141,142,143 Ethernet27/5 27 Ext 100000 Eth212-ASIC1 1 18 8 -Ethernet216 64,65,66,67 Ethernet28/1 28 Ext 100000 Eth216-ASIC1 0 19 8 -Ethernet220 68,69,70,71 Ethernet28/5 28 Ext 100000 Eth220-ASIC1 0 20 8 -Ethernet224 56,57,58,59 Ethernet29/1 29 Ext 100000 Eth224-ASIC1 0 21 8 -Ethernet228 60,61,62,63 Ethernet29/5 29 Ext 100000 Eth228-ASIC1 0 22 8 -Ethernet232 48,49,50,51 Ethernet30/1 30 Ext 100000 Eth232-ASIC1 0 23 8 -Ethernet236 52,53,54,55 Ethernet30/5 30 Ext 100000 Eth236-ASIC1 0 24 8 -Ethernet240 40,41,42,43 Ethernet31/1 31 Ext 100000 Eth240-ASIC1 0 25 8 -Ethernet244 44,45,46,47 Ethernet31/5 31 Ext 100000 Eth244-ASIC1 0 26 8 -Ethernet248 32,33,34,35 Ethernet32/1 32 Ext 100000 Eth248-ASIC1 0 27 8 -Ethernet252 36,37,38,39 Ethernet32/5 32 Ext 100000 Eth252-ASIC1 0 28 8 -Ethernet256 24,25,26,27 Ethernet33/1 33 Ext 100000 Eth256-ASIC1 0 29 8 -Ethernet260 28,29,30,31 Ethernet33/5 33 Ext 100000 Eth260-ASIC1 0 30 8 -Ethernet264 16,17,18,19 Ethernet34/1 34 Ext 100000 Eth264-ASIC1 0 31 8 -Ethernet268 20,21,22,23 Ethernet34/5 34 Ext 100000 Eth268-ASIC1 0 32 8 -Ethernet272 8,9,10,11 Ethernet35/1 35 Ext 100000 Eth272-ASIC1 0 33 8 -Ethernet276 12,13,14,15 Ethernet35/5 35 Ext 100000 Eth276-ASIC1 0 34 8 -Ethernet280 0,1,2,3 Ethernet36/1 36 Ext 100000 Eth280-ASIC1 0 35 8 -Ethernet284 4,5,6,7 Ethernet36/5 36 Ext 100000 Eth284-ASIC1 0 36 8 -Ethernet-Rec1 221 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 221 8 -Ethernet-IB1 222 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 222 8 +Ethernet144 72,73,74,75 Ethernet19/1 19 Ext 100000 Eth144 1 1 8 +Ethernet148 76,77,78,79 Ethernet19/5 19 Ext 100000 Eth148 1 2 8 +Ethernet152 80,81,82,83 Ethernet20/1 20 Ext 100000 Eth152 1 3 8 +Ethernet156 84,85,86,87 Ethernet20/5 20 Ext 100000 Eth156 1 4 8 +Ethernet160 88,89,90,91 Ethernet21/1 21 Ext 100000 Eth160 1 5 8 +Ethernet164 92,93,94,95 Ethernet21/5 21 Ext 100000 Eth164 1 6 8 +Ethernet168 96,97,98,99 Ethernet22/1 22 Ext 100000 Eth168 1 7 8 +Ethernet172 100,101,102,103 Ethernet22/5 22 Ext 100000 Eth172 1 8 8 +Ethernet176 104,105,106,107 Ethernet23/1 23 Ext 100000 Eth176 1 9 8 +Ethernet180 108,109,110,111 Ethernet23/5 23 Ext 100000 Eth180 1 10 8 +Ethernet184 112,113,114,115 Ethernet24/1 24 Ext 100000 Eth184 1 11 8 +Ethernet188 116,117,118,119 Ethernet24/5 24 Ext 100000 Eth188 1 12 8 +Ethernet192 120,121,122,123 Ethernet25/1 25 Ext 100000 Eth192 1 13 8 +Ethernet196 124,125,126,127 Ethernet25/5 25 Ext 100000 Eth196 1 14 8 +Ethernet200 128,129,130,131 Ethernet26/1 26 Ext 100000 Eth200 1 15 8 +Ethernet204 132,133,134,135 Ethernet26/5 26 Ext 100000 Eth204 1 16 8 +Ethernet208 136,137,138,139 Ethernet27/1 27 Ext 100000 Eth208 1 17 8 +Ethernet212 140,141,142,143 Ethernet27/5 27 Ext 100000 Eth212 1 18 8 +Ethernet216 64,65,66,67 Ethernet28/1 28 Ext 100000 Eth216 0 19 8 +Ethernet220 68,69,70,71 Ethernet28/5 28 Ext 100000 Eth220 0 20 8 +Ethernet224 56,57,58,59 Ethernet29/1 29 Ext 100000 Eth224 0 21 8 +Ethernet228 60,61,62,63 Ethernet29/5 29 Ext 100000 Eth228 0 22 8 +Ethernet232 48,49,50,51 Ethernet30/1 30 Ext 100000 Eth232 0 23 8 +Ethernet236 52,53,54,55 Ethernet30/5 30 Ext 100000 Eth236 0 24 8 +Ethernet240 40,41,42,43 Ethernet31/1 31 Ext 100000 Eth240 0 25 8 +Ethernet244 44,45,46,47 Ethernet31/5 31 Ext 100000 Eth244 0 26 8 +Ethernet248 32,33,34,35 Ethernet32/1 32 Ext 100000 Eth248 0 27 8 +Ethernet252 36,37,38,39 Ethernet32/5 32 Ext 100000 Eth252 0 28 8 +Ethernet256 24,25,26,27 Ethernet33/1 33 Ext 100000 Eth256 0 29 8 +Ethernet260 28,29,30,31 Ethernet33/5 33 Ext 100000 Eth260 0 30 8 +Ethernet264 16,17,18,19 Ethernet34/1 34 Ext 100000 Eth264 0 31 8 +Ethernet268 20,21,22,23 Ethernet34/5 34 Ext 100000 Eth268 0 32 8 +Ethernet272 8,9,10,11 Ethernet35/1 35 Ext 100000 Eth272 0 33 8 +Ethernet276 12,13,14,15 Ethernet35/5 35 Ext 100000 Eth276 0 34 8 +Ethernet280 0,1,2,3 Ethernet36/1 36 Ext 100000 Eth280 0 35 8 +Ethernet284 4,5,6,7 Ethernet36/5 36 Ext 100000 Eth284 0 36 8 +Ethernet-Rec1 221 Recirc0/0 39 Rec 400000 Rcy0 0 221 8 +Ethernet-IB1 222 Recirc0/1 40 Inb 400000 Rcy1 1 222 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini index de840da3eb9a..d6b5da8404dd 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini @@ -1,21 +1,21 @@ # name lanes alias index role speed asic_port_name coreId corePortId numVoq -Ethernet0 72,73,74,75,76,77,78,79 Ethernet1/1 1 Ext 400000 Eth0-ASIC0 1 1 8 -Ethernet8 80,81,82,83,84,85,86,87 Ethernet2/1 2 Ext 400000 Eth8-ASIC0 1 2 8 -Ethernet16 88,89,90,91,92,93,94,95 Ethernet3/1 3 Ext 400000 Eth16-ASIC0 1 3 8 -Ethernet24 96,97,98,99,100,101,102,103 Ethernet4/1 4 Ext 400000 Eth24-ASIC0 1 4 8 -Ethernet32 104,105,106,107,108,109,110,111 Ethernet5/1 5 Ext 400000 Eth32-ASIC0 1 5 8 -Ethernet40 112,113,114,115,116,117,118,119 Ethernet6/1 6 Ext 400000 Eth40-ASIC0 1 6 8 -Ethernet48 120,121,122,123,124,125,126,127 Ethernet7/1 7 Ext 400000 Eth48-ASIC0 1 7 8 -Ethernet56 128,129,130,131,132,133,134,135 Ethernet8/1 8 Ext 400000 Eth56-ASIC0 1 8 8 -Ethernet64 136,137,138,139,140,141,142,143 Ethernet9/1 9 Ext 400000 Eth64-ASIC0 1 9 8 -Ethernet72 64,65,66,67,68,69,70,71 Ethernet10/1 10 Ext 400000 Eth72-ASIC0 0 10 8 -Ethernet80 56,57,58,59,60,61,62,63 Ethernet11/1 11 Ext 400000 Eth80-ASIC0 0 11 8 -Ethernet88 48,49,50,51,52,53,54,55 Ethernet12/1 12 Ext 400000 Eth88-ASIC0 0 12 8 -Ethernet96 40,41,42,43,44,45,46,47 Ethernet13/1 13 Ext 400000 Eth96-ASIC0 0 13 8 -Ethernet104 32,33,34,35,36,37,38,39 Ethernet14/1 14 Ext 400000 Eth104-ASIC0 0 14 8 -Ethernet112 24,25,26,27,28,29,30,31 Ethernet15/1 15 Ext 400000 Eth112-ASIC0 0 15 8 -Ethernet120 16,17,18,19,20,21,22,23 Ethernet16/1 16 Ext 400000 Eth120-ASIC0 0 16 8 -Ethernet128 8,9,10,11,12,13,14,15 Ethernet17/1 17 Ext 400000 Eth128-ASIC0 0 17 8 -Ethernet136 0,1,2,3,4,5,6,7 Ethernet18/1 18 Ext 400000 Eth136-ASIC0 0 18 8 -Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 49 8 -Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 50 8 +Ethernet0 72,73,74,75,76,77,78,79 Ethernet1/1 1 Ext 400000 Eth0 1 1 8 +Ethernet8 80,81,82,83,84,85,86,87 Ethernet2/1 2 Ext 400000 Eth8 1 2 8 +Ethernet16 88,89,90,91,92,93,94,95 Ethernet3/1 3 Ext 400000 Eth16 1 3 8 +Ethernet24 96,97,98,99,100,101,102,103 Ethernet4/1 4 Ext 400000 Eth24 1 4 8 +Ethernet32 104,105,106,107,108,109,110,111 Ethernet5/1 5 Ext 400000 Eth32 1 5 8 +Ethernet40 112,113,114,115,116,117,118,119 Ethernet6/1 6 Ext 400000 Eth40 1 6 8 +Ethernet48 120,121,122,123,124,125,126,127 Ethernet7/1 7 Ext 400000 Eth48 1 7 8 +Ethernet56 128,129,130,131,132,133,134,135 Ethernet8/1 8 Ext 400000 Eth56 1 8 8 +Ethernet64 136,137,138,139,140,141,142,143 Ethernet9/1 9 Ext 400000 Eth64 1 9 8 +Ethernet72 64,65,66,67,68,69,70,71 Ethernet10/1 10 Ext 400000 Eth72 0 10 8 +Ethernet80 56,57,58,59,60,61,62,63 Ethernet11/1 11 Ext 400000 Eth80 0 11 8 +Ethernet88 48,49,50,51,52,53,54,55 Ethernet12/1 12 Ext 400000 Eth88 0 12 8 +Ethernet96 40,41,42,43,44,45,46,47 Ethernet13/1 13 Ext 400000 Eth96 0 13 8 +Ethernet104 32,33,34,35,36,37,38,39 Ethernet14/1 14 Ext 400000 Eth104 0 14 8 +Ethernet112 24,25,26,27,28,29,30,31 Ethernet15/1 15 Ext 400000 Eth112 0 15 8 +Ethernet120 16,17,18,19,20,21,22,23 Ethernet16/1 16 Ext 400000 Eth120 0 16 8 +Ethernet128 8,9,10,11,12,13,14,15 Ethernet17/1 17 Ext 400000 Eth128 0 17 8 +Ethernet136 0,1,2,3,4,5,6,7 Ethernet18/1 18 Ext 400000 Eth136 0 18 8 +Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0 0 49 8 +Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini index 68db8fb44969..6e6b7765b749 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini @@ -1,21 +1,21 @@ # name lanes alias index role speed asic_port_name coreId corePortId numVoq -Ethernet144 72,73,74,75,76,77,78,79 Ethernet19/1 19 Ext 400000 Eth0-ASIC1 1 1 8 -Ethernet152 80,81,82,83,84,85,86,87 Ethernet20/1 20 Ext 400000 Eth8-ASIC1 1 2 8 -Ethernet160 88,89,90,91,92,93,94,95 Ethernet21/1 21 Ext 400000 Eth16-ASIC1 1 3 8 -Ethernet168 96,97,98,99,100,101,102,103 Ethernet22/1 22 Ext 400000 Eth24-ASIC1 1 4 8 -Ethernet176 104,105,106,107,108,109,110,111 Ethernet23/1 23 Ext 400000 Eth32-ASIC1 1 5 8 -Ethernet184 112,113,114,115,116,117,118,119 Ethernet24/1 24 Ext 400000 Eth40-ASIC1 1 6 8 -Ethernet192 120,121,122,123,124,125,126,127 Ethernet25/1 25 Ext 400000 Eth48-ASIC1 1 7 8 -Ethernet200 128,129,130,131,132,133,134,135 Ethernet26/1 26 Ext 400000 Eth56-ASIC1 1 8 8 -Ethernet208 136,137,138,139,140,141,142,143 Ethernet27/1 27 Ext 400000 Eth64-ASIC1 1 9 8 -Ethernet216 64,65,66,67,68,69,70,71 Ethernet28/1 28 Ext 400000 Eth72-ASIC1 0 10 8 -Ethernet224 56,57,58,59,60,61,62,63 Ethernet29/1 29 Ext 400000 Eth80-ASIC1 0 11 8 -Ethernet232 48,49,50,51,52,53,54,55 Ethernet30/1 30 Ext 400000 Eth88-ASIC1 0 12 8 -Ethernet240 40,41,42,43,44,45,46,47 Ethernet31/1 31 Ext 400000 Eth96-ASIC1 0 13 8 -Ethernet248 32,33,34,35,36,37,38,39 Ethernet32/1 32 Ext 400000 Eth104-ASIC1 0 14 8 -Ethernet256 24,25,26,27,28,29,30,31 Ethernet33/1 33 Ext 400000 Eth112-ASIC1 0 15 8 -Ethernet264 16,17,18,19,20,21,22,23 Ethernet34/1 34 Ext 400000 Eth120-ASIC1 0 16 8 -Ethernet272 8,9,10,11,12,13,14,15 Ethernet35/1 35 Ext 400000 Eth128-ASIC1 0 17 8 -Ethernet280 0,1,2,3,4,5,6,7 Ethernet36/1 36 Ext 400000 Eth136-ASIC1 0 18 8 -Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 49 8 -Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 50 8 +Ethernet144 72,73,74,75,76,77,78,79 Ethernet19/1 19 Ext 400000 Eth0 1 1 8 +Ethernet152 80,81,82,83,84,85,86,87 Ethernet20/1 20 Ext 400000 Eth8 1 2 8 +Ethernet160 88,89,90,91,92,93,94,95 Ethernet21/1 21 Ext 400000 Eth16 1 3 8 +Ethernet168 96,97,98,99,100,101,102,103 Ethernet22/1 22 Ext 400000 Eth24 1 4 8 +Ethernet176 104,105,106,107,108,109,110,111 Ethernet23/1 23 Ext 400000 Eth32 1 5 8 +Ethernet184 112,113,114,115,116,117,118,119 Ethernet24/1 24 Ext 400000 Eth40 1 6 8 +Ethernet192 120,121,122,123,124,125,126,127 Ethernet25/1 25 Ext 400000 Eth48 1 7 8 +Ethernet200 128,129,130,131,132,133,134,135 Ethernet26/1 26 Ext 400000 Eth56 1 8 8 +Ethernet208 136,137,138,139,140,141,142,143 Ethernet27/1 27 Ext 400000 Eth64 1 9 8 +Ethernet216 64,65,66,67,68,69,70,71 Ethernet28/1 28 Ext 400000 Eth72 0 10 8 +Ethernet224 56,57,58,59,60,61,62,63 Ethernet29/1 29 Ext 400000 Eth80 0 11 8 +Ethernet232 48,49,50,51,52,53,54,55 Ethernet30/1 30 Ext 400000 Eth88 0 12 8 +Ethernet240 40,41,42,43,44,45,46,47 Ethernet31/1 31 Ext 400000 Eth96 0 13 8 +Ethernet248 32,33,34,35,36,37,38,39 Ethernet32/1 32 Ext 400000 Eth104 0 14 8 +Ethernet256 24,25,26,27,28,29,30,31 Ethernet33/1 33 Ext 400000 Eth112 0 15 8 +Ethernet264 16,17,18,19,20,21,22,23 Ethernet34/1 34 Ext 400000 Eth120 0 16 8 +Ethernet272 8,9,10,11,12,13,14,15 Ethernet35/1 35 Ext 400000 Eth128 0 17 8 +Ethernet280 0,1,2,3,4,5,6,7 Ethernet36/1 36 Ext 400000 Eth136 0 18 8 +Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0 0 49 8 +Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1 1 50 8 From 990993e3f421deedb1ee1704c798aa6125e4a627 Mon Sep 17 00:00:00 2001 From: arista-nwolfe <94405414+arista-nwolfe@users.noreply.github.com> Date: Thu, 6 Apr 2023 10:58:01 -0700 Subject: [PATCH 10/17] [devices/arista]: Added recycle ports required for egress mirroring (#13967) Why I did it Support Egress Mirroring on supported Arista platforms How I did it Add necessary soc properties for egress mirroring recycle ports to be created Signed-off-by: Nathan Wolfe --- .../jr2-a7280cr3-32d4-40x100G.config.bcm | 95 +++++++++++-------- .../0/j2p-a7800r3a-36d-36x400G.config.bcm | 40 ++++++++ .../1/j2p-a7800r3a-36d-36x400G.config.bcm | 40 ++++++++ .../0/j2p-a7800r3a-36d-36x400G.config.bcm | 40 ++++++++ .../1/j2p-a7800r3a-36d-36x400G.config.bcm | 40 ++++++++ .../0/j2p-a7800r3a-36d-36x400G.config.bcm | 40 ++++++++ .../1/j2p-a7800r3a-36d-36x400G.config.bcm | 40 ++++++++ src/sonic-device-data/tests/config_checker | 2 + 8 files changed, 297 insertions(+), 40 deletions(-) diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm index a10f1f5c6f24..e91b3f356d4e 100644 --- a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm @@ -426,46 +426,61 @@ port_init_speed_cc.BCM8869X=200000 port_init_speed_cd.BCM8869X=400000 port_init_speed_il.BCM8869X=10312 -#ucode_port_100.BCM8869X=RCY_MIRROR.0:core_0.100 -#ucode_port_101.BCM8869X=RCY_MIRROR.1:core_0.101 -#ucode_port_102.BCM8869X=RCY_MIRROR.2:core_0.102 -#ucode_port_103.BCM8869X=RCY_MIRROR.3:core_0.103 -#ucode_port_104.BCM8869X=RCY_MIRROR.4:core_0.104 -#ucode_port_105.BCM8869X=RCY_MIRROR.5:core_0.105 -#ucode_port_106.BCM8869X=RCY_MIRROR.6:core_0.106 -#ucode_port_107.BCM8869X=RCY_MIRROR.7:core_0.107 -#ucode_port_108.BCM8869X=RCY_MIRROR.8:core_0.108 -#ucode_port_109.BCM8869X=RCY_MIRROR.9:core_0.109 -#ucode_port_110.BCM8869X=RCY_MIRROR.10:core_0.110 -#ucode_port_111.BCM8869X=RCY_MIRROR.11:core_0.111 -#ucode_port_112.BCM8869X=RCY_MIRROR.12:core_0.112 -#ucode_port_113.BCM8869X=RCY_MIRROR.13:core_0.113 -#ucode_port_114.BCM8869X=RCY_MIRROR.14:core_0.114 -#ucode_port_115.BCM8869X=RCY_MIRROR.15:core_0.115 -#ucode_port_116.BCM8869X=RCY_MIRROR.16:core_0.116 -#ucode_port_117.BCM8869X=RCY_MIRROR.17:core_0.117 -#ucode_port_118.BCM8869X=RCY_MIRROR.18:core_0.118 -#ucode_port_119.BCM8869X=RCY_MIRROR.19:core_0.119 -#ucode_port_120.BCM8869X=RCY_MIRROR.0:core_1.120 -#ucode_port_121.BCM8869X=RCY_MIRROR.1:core_1.121 -#ucode_port_122.BCM8869X=RCY_MIRROR.2:core_1.122 -#ucode_port_123.BCM8869X=RCY_MIRROR.3:core_1.123 -#ucode_port_124.BCM8869X=RCY_MIRROR.4:core_1.124 -#ucode_port_125.BCM8869X=RCY_MIRROR.5:core_1.125 -#ucode_port_126.BCM8869X=RCY_MIRROR.6:core_1.126 -#ucode_port_127.BCM8869X=RCY_MIRROR.7:core_1.127 -#ucode_port_128.BCM8869X=RCY_MIRROR.8:core_1.128 -#ucode_port_129.BCM8869X=RCY_MIRROR.9:core_1.129 -#ucode_port_130.BCM8869X=RCY_MIRROR.10:core_1.130 -#ucode_port_131.BCM8869X=RCY_MIRROR.11:core_1.131 -#ucode_port_132.BCM8869X=RCY_MIRROR.12:core_1.132 -#ucode_port_133.BCM8869X=RCY_MIRROR.13:core_1.133 -#ucode_port_134.BCM8869X=RCY_MIRROR.14:core_1.134 -#ucode_port_135.BCM8869X=RCY_MIRROR.15:core_1.135 -#ucode_port_136.BCM8869X=RCY_MIRROR.16:core_1.136 -#ucode_port_137.BCM8869X=RCY_MIRROR.17:core_1.137 -#ucode_port_138.BCM8869X=RCY_MIRROR.18:core_1.138 -#ucode_port_139.BCM8869X=RCY_MIRROR.19:core_1.139 +ucode_port_100.BCM8869X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8869X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8869X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8869X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8869X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8869X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8869X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8869X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8869X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8869X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8869X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8869X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8869X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8869X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8869X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8869X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8869X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8869X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8869X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8869X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8869X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8869X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8869X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8869X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8869X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8869X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8869X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8869X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8869X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8869X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8869X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8869X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8869X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8869X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8869X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8869X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8869X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8869X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8869X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8869X=RCY_MIRROR.19:core_1.139 +ucode_port_140.BCM8869X=RCY_MIRROR.20:core_0.130 +ucode_port_141.BCM8869X=RCY_MIRROR.21:core_0.131 +ucode_port_142.BCM8869X=RCY_MIRROR.22:core_0.132 +ucode_port_143.BCM8869X=RCY_MIRROR.23:core_0.133 +ucode_port_144.BCM8869X=RCY_MIRROR.24:core_0.134 +ucode_port_145.BCM8869X=RCY_MIRROR.25:core_0.135 +ucode_port_146.BCM8869X=RCY_MIRROR.20:core_1.142 +ucode_port_147.BCM8869X=RCY_MIRROR.21:core_1.143 +ucode_port_148.BCM8869X=RCY_MIRROR.22:core_1.144 +ucode_port_149.BCM8869X=RCY_MIRROR.23:core_1.145 +ucode_port_150.BCM8869X=RCY_MIRROR.24:core_1.140 +ucode_port_151.BCM8869X=RCY_MIRROR.26:core_1.141 +ucode_port_152.BCM8869X=RCY_MIRROR.27:core_0.136 +ucode_port_153.BCM8869X=RCY_MIRROR.28:core_0.137 +ucode_port_154.BCM8869X=RCY_MIRROR.27:core_1.142 port_priorities.BCM8869X=8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm index 658a42c6e986..4aec99c3a3e1 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm @@ -261,6 +261,46 @@ tm_port_header_type_out_50=ETH tm_port_header_type_in_50=ETH port_init_speed_49=400000 port_init_speed_50=400000 +ucode_port_100.BCM8885X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8885X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8885X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8885X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8885X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8885X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8885X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8885X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8885X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8885X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8885X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8885X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8885X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8885X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8885X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8885X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8885X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8885X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8885X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8885X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8885X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8885X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8885X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8885X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8885X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8885X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8885X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8885X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8885X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8885X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8885X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8885X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8885X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8885X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8885X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8885X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8885X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8885X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8885X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8885X=RCY_MIRROR.19:core_1.139 #OLP port tm_port_header_type_in_240=INJECTED_2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm index 74b50739d937..de953301cc1b 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm @@ -261,6 +261,46 @@ tm_port_header_type_out_50=ETH tm_port_header_type_in_50=ETH port_init_speed_49=400000 port_init_speed_50=400000 +ucode_port_100.BCM8885X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8885X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8885X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8885X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8885X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8885X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8885X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8885X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8885X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8885X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8885X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8885X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8885X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8885X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8885X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8885X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8885X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8885X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8885X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8885X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8885X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8885X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8885X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8885X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8885X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8885X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8885X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8885X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8885X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8885X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8885X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8885X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8885X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8885X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8885X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8885X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8885X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8885X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8885X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8885X=RCY_MIRROR.19:core_1.139 #OLP port tm_port_header_type_in_240=INJECTED_2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/j2p-a7800r3a-36d-36x400G.config.bcm index 1ec47834148d..aa4efbbcfea8 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/0/j2p-a7800r3a-36d-36x400G.config.bcm @@ -279,6 +279,46 @@ tm_port_header_type_out_222=ETH tm_port_header_type_in_222=ETH port_init_speed_221=400000 port_init_speed_222=400000 +ucode_port_100.BCM8885X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8885X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8885X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8885X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8885X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8885X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8885X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8885X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8885X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8885X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8885X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8885X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8885X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8885X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8885X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8885X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8885X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8885X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8885X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8885X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8885X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8885X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8885X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8885X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8885X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8885X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8885X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8885X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8885X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8885X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8885X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8885X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8885X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8885X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8885X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8885X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8885X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8885X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8885X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8885X=RCY_MIRROR.19:core_1.139 #OLP port tm_port_header_type_in_240=INJECTED_2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/j2p-a7800r3a-36d-36x400G.config.bcm index 5e7d3e9a4ac4..a62b21a9b5a0 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C72/1/j2p-a7800r3a-36d-36x400G.config.bcm @@ -279,6 +279,46 @@ tm_port_header_type_out_222=ETH tm_port_header_type_in_222=ETH port_init_speed_221=400000 port_init_speed_222=400000 +ucode_port_100.BCM8885X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8885X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8885X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8885X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8885X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8885X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8885X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8885X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8885X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8885X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8885X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8885X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8885X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8885X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8885X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8885X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8885X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8885X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8885X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8885X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8885X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8885X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8885X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8885X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8885X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8885X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8885X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8885X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8885X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8885X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8885X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8885X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8885X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8885X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8885X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8885X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8885X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8885X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8885X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8885X=RCY_MIRROR.19:core_1.139 #OLP port tm_port_header_type_in_240=INJECTED_2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm index 9758cd3f7d0e..2a0b21aeadb1 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm @@ -261,6 +261,46 @@ tm_port_header_type_out_50=ETH tm_port_header_type_in_50=ETH port_init_speed_49=400000 port_init_speed_50=400000 +ucode_port_100.BCM8885X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8885X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8885X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8885X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8885X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8885X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8885X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8885X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8885X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8885X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8885X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8885X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8885X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8885X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8885X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8885X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8885X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8885X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8885X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8885X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8885X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8885X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8885X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8885X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8885X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8885X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8885X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8885X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8885X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8885X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8885X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8885X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8885X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8885X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8885X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8885X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8885X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8885X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8885X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8885X=RCY_MIRROR.19:core_1.139 #OLP port tm_port_header_type_in_240=INJECTED_2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm index e719a1ea64df..a6edcba21460 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm @@ -261,6 +261,46 @@ tm_port_header_type_out_50=ETH tm_port_header_type_in_50=ETH port_init_speed_49=400000 port_init_speed_50=400000 +ucode_port_100.BCM8885X=RCY_MIRROR.0:core_0.100 +ucode_port_101.BCM8885X=RCY_MIRROR.1:core_0.101 +ucode_port_102.BCM8885X=RCY_MIRROR.2:core_0.102 +ucode_port_103.BCM8885X=RCY_MIRROR.3:core_0.103 +ucode_port_104.BCM8885X=RCY_MIRROR.4:core_0.104 +ucode_port_105.BCM8885X=RCY_MIRROR.5:core_0.105 +ucode_port_106.BCM8885X=RCY_MIRROR.6:core_0.106 +ucode_port_107.BCM8885X=RCY_MIRROR.7:core_0.107 +ucode_port_108.BCM8885X=RCY_MIRROR.8:core_0.108 +ucode_port_109.BCM8885X=RCY_MIRROR.9:core_0.109 +ucode_port_110.BCM8885X=RCY_MIRROR.10:core_0.110 +ucode_port_111.BCM8885X=RCY_MIRROR.11:core_0.111 +ucode_port_112.BCM8885X=RCY_MIRROR.12:core_0.112 +ucode_port_113.BCM8885X=RCY_MIRROR.13:core_0.113 +ucode_port_114.BCM8885X=RCY_MIRROR.14:core_0.114 +ucode_port_115.BCM8885X=RCY_MIRROR.15:core_0.115 +ucode_port_116.BCM8885X=RCY_MIRROR.16:core_0.116 +ucode_port_117.BCM8885X=RCY_MIRROR.17:core_0.117 +ucode_port_118.BCM8885X=RCY_MIRROR.18:core_0.118 +ucode_port_119.BCM8885X=RCY_MIRROR.19:core_0.119 +ucode_port_120.BCM8885X=RCY_MIRROR.0:core_1.120 +ucode_port_121.BCM8885X=RCY_MIRROR.1:core_1.121 +ucode_port_122.BCM8885X=RCY_MIRROR.2:core_1.122 +ucode_port_123.BCM8885X=RCY_MIRROR.3:core_1.123 +ucode_port_124.BCM8885X=RCY_MIRROR.4:core_1.124 +ucode_port_125.BCM8885X=RCY_MIRROR.5:core_1.125 +ucode_port_126.BCM8885X=RCY_MIRROR.6:core_1.126 +ucode_port_127.BCM8885X=RCY_MIRROR.7:core_1.127 +ucode_port_128.BCM8885X=RCY_MIRROR.8:core_1.128 +ucode_port_129.BCM8885X=RCY_MIRROR.9:core_1.129 +ucode_port_130.BCM8885X=RCY_MIRROR.10:core_1.130 +ucode_port_131.BCM8885X=RCY_MIRROR.11:core_1.131 +ucode_port_132.BCM8885X=RCY_MIRROR.12:core_1.132 +ucode_port_133.BCM8885X=RCY_MIRROR.13:core_1.133 +ucode_port_134.BCM8885X=RCY_MIRROR.14:core_1.134 +ucode_port_135.BCM8885X=RCY_MIRROR.15:core_1.135 +ucode_port_136.BCM8885X=RCY_MIRROR.16:core_1.136 +ucode_port_137.BCM8885X=RCY_MIRROR.17:core_1.137 +ucode_port_138.BCM8885X=RCY_MIRROR.18:core_1.138 +ucode_port_139.BCM8885X=RCY_MIRROR.19:core_1.139 #OLP port tm_port_header_type_in_240=INJECTED_2 diff --git a/src/sonic-device-data/tests/config_checker b/src/sonic-device-data/tests/config_checker index 76fdde17d288..f7198bd8febb 100755 --- a/src/sonic-device-data/tests/config_checker +++ b/src/sonic-device-data/tests/config_checker @@ -35,6 +35,8 @@ def check_file(file_name): # Remove trailing chip name "bcm8869x" p = re.sub(r"\.bcm8869x(_adapter|_[a-z]\d)?$", "", p) + # Remove trailing chip name "bcm8885x" + p = re.sub(r"\.bcm8885x(_adapter|_[a-z]\d)?$", "", p) # Remove trailing unit ".$" p = re.sub(r"\.[0-9]+$", '', p) # Remove trailing port name From 63cee3ff3c03aa53b2f73921cff850fe13594d8f Mon Sep 17 00:00:00 2001 From: mihirpat1 <112018033+mihirpat1@users.noreply.github.com> Date: Thu, 6 Apr 2023 10:59:47 -0700 Subject: [PATCH 11/17] [yang]: Modify yang model to handle subport in PORT table (#14519) Based on the port breakout HLD, we are now using subport instead of channel in the CONFIG_DB PORT table to handle port breakout. The yang schema needs to be modified accordingly to handle the corresponding change. The corresponding code changes have been merged through sonic-net/sonic-platform-daemons/pull/342 merged Signed-off-by: Mihir Patel --- src/sonic-yang-models/doc/Configuration.md | 4 ++-- .../tests/files/sample_config_db.json | 18 +++++++++--------- .../tests/yang_model_tests/tests/port.json | 8 ++++---- .../yang_model_tests/tests_config/port.json | 14 +++++++------- .../yang-models/sonic-port.yang | 4 ++-- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index 3b8def2fdbc2..c0bec1558f6f 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -1501,7 +1501,7 @@ optional attributes. "mtu": "9100", "alias": "etp1a", "speed": "100000", - "channel": 1 + "subport": 1 }, "Ethernet4": { "admin_status": "up", @@ -1511,7 +1511,7 @@ optional attributes. "mtu": "9100", "alias": "etp1b", "speed": "100000", - "channel": 2 + "subport": 2 }, } } diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json index 977be6ded22b..66adb918f34c 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -559,7 +559,7 @@ "autoneg": "on", "adv_speeds": "all", "adv_interface_types": "all", - "channel" : "0" + "subport" : "0" }, "Ethernet3": { "alias": "Eth1/4", @@ -568,7 +568,7 @@ "speed": "11100", "tpid": "0x88A8", "admin_status": "up", - "channel": "1" + "subport": "1" }, "Ethernet4": { "alias": "Eth2/1", @@ -577,7 +577,7 @@ "speed": "11100", "tpid": "0x9100", "admin_status": "up", - "channel": "2" + "subport": "2" }, "Ethernet5": { "alias": "Eth2/2", @@ -586,7 +586,7 @@ "speed": "11100", "tpid": "0x9200", "admin_status": "up", - "channel": "3" + "subport": "3" }, "Ethernet6": { "alias": "Eth2/3", @@ -595,7 +595,7 @@ "speed": "11100", "tpid": "0x8100", "admin_status": "up", - "channel": "4" + "subport": "4" }, "Ethernet7": { "alias": "Eth2/4", @@ -604,7 +604,7 @@ "speed": "11100", "tpid": "0x8100", "admin_status": "up", - "channel": "5" + "subport": "5" }, "Ethernet8": { "alias": "Eth3/1", @@ -613,7 +613,7 @@ "speed": "11100", "tpid": "0x8100", "admin_status": "up", - "channel": "6" + "subport": "6" }, "Ethernet9": { "alias": "Eth3/2", @@ -622,7 +622,7 @@ "speed": "11100", "tpid": "0x8100", "admin_status": "up", - "channel": "7" + "subport": "7" }, "Ethernet10": { "alias": "Eth3/3", @@ -631,7 +631,7 @@ "speed": "11100", "tpid": "0x8100", "admin_status": "up", - "channel": "8" + "subport": "8" }, "Ethernet11": { "alias": "Eth3/4", diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/port.json b/src/sonic-yang-models/tests/yang_model_tests/tests/port.json index e02df9d54d7a..cbcd1def5b25 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/port.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/port.json @@ -121,11 +121,11 @@ "desc": "PORT_INVALID_MULTIASIC_TEST invalid role pattern, expect fail", "eStrKey": "Pattern" }, - "PORT_VALID_CHANNEL_NUMBER": { - "desc": "PORT_VALID_CHANNEL_NUMBER no failure." + "PORT_VALID_SUBPORT_NUMBER": { + "desc": "PORT_VALID_SUBPORT_NUMBER no failure." }, - "PORT_INVALID_CHANNEL_NUMBER": { - "desc": "Out of range channel number", + "PORT_INVALID_SUBPORT_NUMBER": { + "desc": "Out of range subport number", "eStrKey": "Range", "eStr": "0..8" } diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/port.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/port.json index 39b31dbb699b..869d00ded1d4 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/port.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/port.json @@ -516,7 +516,7 @@ } }, - "PORT_INVALID_CHANNEL_NUMBER": { + "PORT_INVALID_SUBPORT_NUMBER": { "sonic-port:sonic-port": { "sonic-port:PORT": { "PORT_LIST": [ @@ -525,14 +525,14 @@ "alias": "etp1a", "lanes": "60, 61", "speed": 100000, - "channel": 9 + "subport": 9 } ] } } }, - "PORT_VALID_CHANNEL_NUMBER": { + "PORT_VALID_SUBPORT_NUMBER": { "sonic-port:sonic-port": { "sonic-port:PORT": { "PORT_LIST": [ @@ -541,28 +541,28 @@ "alias": "etp1a", "lanes": "60, 61", "speed": 100000, - "channel": 1 + "subport": 1 }, { "name": "Ethernet2", "alias": "etp1b", "lanes": "62, 63", "speed": 100000, - "channel": 2 + "subport": 2 }, { "name": "Ethernet4", "alias": "etp1c", "lanes": "64, 65", "speed": 100000, - "channel": 3 + "subport": 3 }, { "name": "Ethernet6", "alias": "etp1d", "lanes": "66, 67", "speed": 100000, - "channel": 4 + "subport": 4 } ] } diff --git a/src/sonic-yang-models/yang-models/sonic-port.yang b/src/sonic-yang-models/yang-models/sonic-port.yang index 667b3b1f359a..ce091bad579e 100644 --- a/src/sonic-yang-models/yang-models/sonic-port.yang +++ b/src/sonic-yang-models/yang-models/sonic-port.yang @@ -121,8 +121,8 @@ module sonic-port{ } } - leaf channel { - description "Logical channel(s) for physical port breakout"; + leaf subport { + description "Logical subport(s) for physical port breakout"; type uint8 { range 0..8; } From dd6659ae079cd2ffd7bd379557f173d8f6ce4408 Mon Sep 17 00:00:00 2001 From: shdasari <53248666+shdasari@users.noreply.github.com> Date: Fri, 7 Apr 2023 00:44:01 +0530 Subject: [PATCH 12/17] Modify common-auth-sonic to take care of case where no RADIUS servers are configured. (#14514) #### Why I did it Fixes #14277. Fixes the inconsistent fallback behaviour for RADIUS authentication when AAA authentication is configured as "radius, local". #### How I did it Modified common-auth-sonic.j2 template to make sure that when no RADIUS servers are configured (with AAA authentication login method set to radius, local), the system falls back to local authentication successfully. #### How to verify it 1. Configure authentication based on RADIUS and local. config aaa authentication login radius local 2. Configure an unreachable RADIUS server. config radius add 6.6.6.6 3. Try to login to switch with existing admin user credentials. This is successful. 4. Remove RADIUS server configuration. config radius delete 6.6.6.6 5. Try to login to switch with admin user credentials. This is successful. --- src/sonic-host-services-data/templates/common-auth-sonic.j2 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/sonic-host-services-data/templates/common-auth-sonic.j2 b/src/sonic-host-services-data/templates/common-auth-sonic.j2 index a890556a36c0..b20c9f4eebc7 100644 --- a/src/sonic-host-services-data/templates/common-auth-sonic.j2 +++ b/src/sonic-host-services-data/templates/common-auth-sonic.j2 @@ -40,7 +40,11 @@ auth [success=1 default=ignore] pam_exec.so /usr/sbin/cache_radius {% elif auth['login'] == 'radius,local' %} # root user can only be authenticated locally. Jump to local. +{% if servers | count %} auth [success={{ (servers | count) }} default=ignore] pam_succeed_if.so user = root +{% else %} +auth [success=ok default=ignore] pam_succeed_if.so user = root +{% endif %} # For the RADIUS servers, on success jump to the cache the MPL(Privilege) {% for server in servers %} auth [success={{ (servers | count) + 1 - loop.index0 }} new_authtok_reqd=done default=ignore{{ ' auth_err=die' if not auth['failthrough'] }}] pam_radius_auth.so conf=/etc/pam_radius_auth.d/{{ server.ip }}_{{ server.auth_port }}.conf privilege_level protocol={{ server.auth_type }} retry={{ server.retransmit }}{% if server.nas_ip is defined %} nas_ip_address={{ server.nas_ip }}{% endif %}{% if server.nas_id is defined %} client_id={{ server.nas_id }}{% endif %}{% if debug %} debug{% endif %}{% if trace %} trace{% endif %}{% if server.statistics %} statistics={{ server.ip }}{% endif %} try_first_pass From cffd87a6270f39d883583471f6f654372d78b16f Mon Sep 17 00:00:00 2001 From: Kuanyu Chen Date: Fri, 7 Apr 2023 03:19:11 +0800 Subject: [PATCH 13/17] Add monit_snmp file to monitor memory usage (#14464) #### Why I did it When CPU is busy, the sonic_ax_impl may not have sufficient speed to handle the notification message sent from REDIS. Thus, the message will keep stacking in the memory space of sonic_ax_impl. If the condition continues, the memory usage will keep increasing. #### How I did it Add a monit file to check if the SNMP container where sonic_ax_impl resides in use more than 4GB memory. If yes, restart the sonic_ax_impl process. #### How to verify it Run a lot of this command: `while true; do ret=$(redis-cli -n 0 set LLDP_ENTRY_TABLE:test1 test1); sleep 0.1; done;` And check the memory used by sonic_ax_impl keeps increasing. After a period, make sure the sonic_ax_impl is restarted when the memory usage reaches the 4GB threshold. And verify the memory usage of sonic_ax_impl drops down from 4GB. --- dockers/docker-snmp/base_image_files/monit_snmp | 5 +++++ rules/docker-snmp.mk | 1 + 2 files changed, 6 insertions(+) create mode 100644 dockers/docker-snmp/base_image_files/monit_snmp diff --git a/dockers/docker-snmp/base_image_files/monit_snmp b/dockers/docker-snmp/base_image_files/monit_snmp new file mode 100644 index 000000000000..979e3c60d682 --- /dev/null +++ b/dockers/docker-snmp/base_image_files/monit_snmp @@ -0,0 +1,5 @@ +############################################################################### +## Monit configuration for snmp container +############################################################################### +check program container_memory_snmp with path "/usr/bin/memory_checker snmp 4294967296" + if status == 3 for 10 times within 20 cycles then exec "/usr/bin/docker exec snmp supervisorctl restart snmp-subagent" diff --git a/rules/docker-snmp.mk b/rules/docker-snmp.mk index 313b233a8557..037d58936170 100644 --- a/rules/docker-snmp.mk +++ b/rules/docker-snmp.mk @@ -32,6 +32,7 @@ $(DOCKER_SNMP)_RUN_OPT += --privileged -t $(DOCKER_SNMP)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SNMP)_RUN_OPT += -v /usr/share/sonic/scripts:/usr/share/sonic/scripts:ro $(DOCKER_SNMP)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) +$(DOCKER_SNMP)_BASE_IMAGE_FILES += monit_snmp:/etc/monit/conf.d SONIC_BULLSEYE_DOCKERS += $(DOCKER_SNMP) SONIC_BULLSEYE_DBG_DOCKERS += $(DOCKER_SNMP_DBG) From 737d0e57ad49d0da154ae5fbfea7e57484b36b97 Mon Sep 17 00:00:00 2001 From: Ying Xie Date: Thu, 6 Apr 2023 13:54:56 -0700 Subject: [PATCH 14/17] [write standby] force DB connections to use unix socket to connect (#14524) Why I did it At service start up time, there are chances that the networking service is being restarted by interface-config service. When that happens, write_standby could fail to make DB connections due to loopback interface is being reconfigured. How I did it Force the db connector to use unix socket to avoid loopback reconfig timing window. How to verify it Run config reload test 20+ times and no issue encountered. Signed-off-by: Ying Xie * use unix socket instead Signed-off-by: Ying Xie --- files/scripts/write_standby.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/files/scripts/write_standby.py b/files/scripts/write_standby.py index 13c5b17ea64e..745b9c503d20 100755 --- a/files/scripts/write_standby.py +++ b/files/scripts/write_standby.py @@ -37,7 +37,7 @@ def config_db(self): Initializes the connector during the first call """ if self.config_db_connector is None: - self.config_db_connector = ConfigDBConnector() + self.config_db_connector = ConfigDBConnector(use_unix_socket_path=True) self.config_db_connector.connect() return self.config_db_connector @@ -69,7 +69,7 @@ def asic_db(self): Initializes the connector during the first call """ if self.asic_db_connector is None: - self.asic_db_connector = SonicV2Connector() + self.asic_db_connector = SonicV2Connector(use_unix_socket_path=True) self.asic_db_connector.connect('ASIC_DB') return self.asic_db_connector From 46cb2ad03d883328b32da1ac4cab3acf46599e2c Mon Sep 17 00:00:00 2001 From: xumia <59720581+xumia@users.noreply.github.com> Date: Fri, 7 Apr 2023 09:35:02 +0800 Subject: [PATCH 15/17] [Ci] Fix the wrong SONIC_BUILD_JOBS build variable used issue in Azp (#14071) Why I did it [Ci] Fix the no parallel jobs in some of the platforms issue We observed some of the pipelines running more time than expected. The issue is the SONIC_BUILD_JOBS using the wrong value 1. It is caused by the runtime variable issue, there is additional single quota mark character added in the make command line. make 'SONIC_BUILD_JOBS=$(nproc)' targe/xxxx Need to change to make SONIC_BUILD_JOBS=$(nproc) targe/xxxx It is to improve the build performance for some of the platforms using the variable SONIC_BUILD_JOBS=1. Good one vs: https://dev.azure.com/mssonic/build/_build/results?buildId=227986&view=logs&j=cef3d8a9-152e-5193-620b-567dc18af272&t=cf595088-5c84-5cf1-9d7e-03331f31d795 "SONIC_BUILD_JOBS" : "8" Bad one barefoot: https://dev.azure.com/mssonic/build/_build/results?buildId=227379&view=logs&j=993d6e22-aeec-5c03-fa19-35ecba587dd9&t=7be0d2ec-661f-5569-462c-2d9b7ca4ca5d "SONIC_BUILD_JOBS" : "1" How I did it Expand the BUILD_OPTIONS variable for all platforms. --- .azure-pipelines/azure-pipelines-image-template.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.azure-pipelines/azure-pipelines-image-template.yml b/.azure-pipelines/azure-pipelines-image-template.yml index d4d2c96e1c61..1311ab0608c9 100644 --- a/.azure-pipelines/azure-pipelines-image-template.yml +++ b/.azure-pipelines/azure-pipelines-image-template.yml @@ -28,11 +28,12 @@ jobs: - template: .azure-pipelines/cleanup.yml@buildimage - ${{ parameters.preSteps }} - script: | + BUILD_OPTIONS="$(BUILD_OPTIONS)" if [ -n "$(CACHE_MODE)" ] && echo $(PLATFORM_AZP) | grep -E -q "^(vs|broadcom|mellanox|marvell-armhf)$"; then CACHE_OPTIONS="SONIC_DPKG_CACHE_METHOD=$(CACHE_MODE) SONIC_DPKG_CACHE_SOURCE=/nfs/dpkg_cache/$(PLATFORM_AZP)" BUILD_OPTIONS="$(BUILD_OPTIONS) $CACHE_OPTIONS" - echo "##vso[task.setvariable variable=BUILD_OPTIONS]$BUILD_OPTIONS" fi + echo "##vso[task.setvariable variable=BUILD_OPTIONS]$BUILD_OPTIONS" displayName: "Set cache options" - checkout: self submodules: recursive From 6e43b5c5155d2403b9183a4a91afd4938d72c797 Mon Sep 17 00:00:00 2001 From: xumia <59720581+xumia@users.noreply.github.com> Date: Fri, 7 Apr 2023 11:05:51 +0800 Subject: [PATCH 16/17] [Build] Support to use the snapshot mirror for debian base image (#14474) Why I did it [Build] Support to use the snapshot mirror for debian base image How I did it If the MIRROR_SNAPSHOT=n, then use the default mirror http://deb.debian.org/debian If the MIRROR_SNAPSHOT=y, then use the snapshot mirror, for instance http://packages.trafficmanager.net/snapshot/debian/20230330T000330Z/. How to verify it + scripts/build_debian_base_system.sh amd64 bullseye ./fsroot-vs I: Target architecture can be executed I: Retrieving InRelease I: Checking Release signature I: Valid Release signature (key id A4285295FC7B1A81600062A9605C66F00D6C9793) I: Retrieving Packages I: Validating Packages I: Resolving dependencies of required packages... I: Resolving dependencies of base packages... I: Checking component main on http://packages.trafficmanager.net/snapshot/debian/20230331T000125Z... I: Retrieving libacl1 2.2.53-10 --- scripts/build_debian_base_system.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/build_debian_base_system.sh b/scripts/build_debian_base_system.sh index 07f240812b07..7ea150ff5e29 100755 --- a/scripts/build_debian_base_system.sh +++ b/scripts/build_debian_base_system.sh @@ -23,6 +23,12 @@ generate_version_file() sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c "dpkg-query -W -f '\${Package}==\${Version}\n'" > $TARGET_BASEIMAGE_PATH/versions-deb-${IMAGE_DISTRO}-${CONFIGURED_ARCH} } +MIRROR_URL=http://deb.debian.org/debian +if [ "$MIRROR_SNAPSHOT" == y ]; then + SNAPSHOT_TIMESTAMP=$(grep "^debian==" $TARGET/versions/default/versions-mirror | tail -n 1 | sed 's/.*==//') + MIRROR_URL=http://packages.trafficmanager.net/snapshot/debian/$SNAPSHOT_TIMESTAMP +fi + if [ "$ENABLE_VERSION_CONTROL_DEB" != "y" ] || [ ! -d files/build/versions/host-base-image ]; then if [[ $CONFIGURED_ARCH == armhf || $CONFIGURED_ARCH == arm64 ]]; then if [[ $MULTIARCH_QEMU_ENVIRON == y || $CROSS_BUILD_ENVIRON == y ]]; then @@ -30,13 +36,13 @@ if [ "$ENABLE_VERSION_CONTROL_DEB" != "y" ] || [ ! -d files/build/versions/host- sudo mkdir -p $FILESYSTEM_ROOT/usr/bin sudo cp /usr/bin/qemu*static $FILESYSTEM_ROOT/usr/bin || true fi - sudo http_proxy=$HTTP_PROXY SKIP_BUILD_HOOK=y debootstrap --foreign --variant=minbase --arch $CONFIGURED_ARCH $IMAGE_DISTRO $FILESYSTEM_ROOT http://deb.debian.org/debian + sudo http_proxy=$HTTP_PROXY SKIP_BUILD_HOOK=y debootstrap --foreign --variant=minbase --arch $CONFIGURED_ARCH $IMAGE_DISTRO $FILESYSTEM_ROOT "$MIRROR_URL" sudo rm $FILESYSTEM_ROOT/proc -rf sudo mkdir $FILESYSTEM_ROOT/proc sudo mount -t proc proc $FILESYSTEM_ROOT/proc sudo LANG=C chroot $FILESYSTEM_ROOT /debootstrap/debootstrap --second-stage else - sudo http_proxy=$HTTP_PROXY SKIP_BUILD_HOOK=y debootstrap --variant=minbase --arch $CONFIGURED_ARCH $IMAGE_DISTRO $FILESYSTEM_ROOT http://debian-archive.trafficmanager.net/debian + sudo http_proxy=$HTTP_PROXY SKIP_BUILD_HOOK=y debootstrap --variant=minbase --arch $CONFIGURED_ARCH $IMAGE_DISTRO $FILESYSTEM_ROOT "$MIRROR_URL" fi RET=$? if [ $RET -ne 0 ]; then From d74055e12ca0ac4f44342e74ea097f03720663f7 Mon Sep 17 00:00:00 2001 From: Devesh Pathak <54966909+devpatha@users.noreply.github.com> Date: Thu, 6 Apr 2023 20:30:58 -0700 Subject: [PATCH 17/17] Increase wait_for_tunnel() timeout to 90s (#14279) Why I did it Orchagent sometimes take additional time to execute Tunnel tasks. This cause write_standby script to error out and mux state machines are not initialized. It results in show mux status missing some ports in output. Mar 13 20:36:52.337051 m64-tor-0-yy41 INFO systemd[1]: Starting MUX Cable Container... Mar 13 20:37:52.480322 m64-tor-0-yy41 ERR write_standby: Timed out waiting for tunnel MuxTunnel0, mux state will not be written Mar 13 20:37:58.983412 m64-tor-0-yy41 NOTICE swss#orchagent: :- doTask: Tunnel(s) added to ASIC_DB. How I did it Increase timeout from 60s to 90s How to verify it Verified that mux state machine is initialized and show mux status has all needed ports in it. --- files/scripts/write_standby.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/scripts/write_standby.py b/files/scripts/write_standby.py index 745b9c503d20..13009922f577 100755 --- a/files/scripts/write_standby.py +++ b/files/scripts/write_standby.py @@ -136,7 +136,7 @@ def tunnel_exists(self): tunnel_key_pattern = 'ASIC_STATE:SAI_OBJECT_TYPE_TUNNEL:*' return len(self.asic_db.keys('ASIC_DB', tunnel_key_pattern)) > 0 - def wait_for_tunnel(self, interval=1, timeout=60): + def wait_for_tunnel(self, interval=1, timeout=90): """ Waits until the IP-in-IP tunnel has been created