Skip to content

Commit 9c5988f

Browse files
VitalyVovnoboylguohan
authored andcommitted
Add Marvell platform (#765)
* Adding Marvell platform.
1 parent 7fca49e commit 9c5988f

19 files changed

+261
-0
lines changed
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# docker image for orchagent
2+
3+
DOCKER_ORCHAGENT_MRVL = docker-orchagent-mrvl.gz
4+
$(DOCKER_ORCHAGENT_MRVL)_PATH = $(DOCKERS_PATH)/docker-orchagent
5+
$(DOCKER_ORCHAGENT_MRVL)_DEPENDS += $(SWSS) $(REDIS_TOOLS)
6+
$(DOCKER_ORCHAGENT_MRVL)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE)
7+
SONIC_DOCKER_IMAGES += $(DOCKER_ORCHAGENT_MRVL)
8+
SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_ORCHAGENT_MRVL)
9+
10+
$(DOCKER_ORCHAGENT_MRVL)_CONTAINER_NAME = swss
11+
$(DOCKER_ORCHAGENT_MRVL)_RUN_OPT += --net=host --privileged -t
12+
$(DOCKER_ORCHAGENT_MRVL)_RUN_OPT += -v /etc/network/interfaces:/etc/network/interfaces:ro
13+
$(DOCKER_ORCHAGENT_MRVL)_RUN_OPT += -v /etc/network/interfaces.d/:/etc/network/interfaces.d/:ro
14+
$(DOCKER_ORCHAGENT_MRVL)_RUN_OPT += -v /host/machine.conf:/host/machine.conf
15+
$(DOCKER_ORCHAGENT_MRVL)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
16+
17+
$(DOCKER_ORCHAGENT_MRVL)_BASE_IMAGE_FILES += swssloglevel:/usr/bin/swssloglevel
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# docker image for mrvl syncd with rpc
2+
3+
DOCKER_SYNCD_MRVL_RPC = docker-syncd-mrvl-rpc.gz
4+
$(DOCKER_SYNCD_MRVL_RPC)_PATH = $(PLATFORM_PATH)/docker-syncd-mrvl-rpc
5+
$(DOCKER_SYNCD_MRVL_RPC)_DEPENDS += $(SYNCD_RPC) $(LIBTHRIFT)
6+
$(DOCKER_SYNCD_MRVL_RPC)_LOAD_DOCKERS += $(DOCKER_SYNCD_MRVL)
7+
SONIC_DOCKER_IMAGES += $(DOCKER_SYNCD_MRVL_RPC)
8+
ifeq ($(ENABLE_SYNCD_RPC),y)
9+
SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_SYNCD_MRVL_RPC)
10+
endif
11+
12+
$(DOCKER_SYNCD_MRVL_RPC)_CONTAINER_NAME = syncd
13+
$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --net=host --privileged -t
14+
$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf
15+
$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
sysctl -w net.core.rmem_max=509430500
2+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
FROM docker-syncd-mrvl
2+
3+
## Make apt-get non-interactive
4+
ENV DEBIAN_FRONTEND=noninteractive
5+
6+
COPY \
7+
{% for deb in docker_syncd_mrvl_rpc_debs.split(' ') -%}
8+
debs/{{ deb }}{{' '}}
9+
{%- endfor -%}
10+
debs/
11+
12+
RUN dpkg -P syncd
13+
14+
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } ; \
15+
{% for deb in docker_syncd_mrvl_rpc_debs.split(' ') -%}
16+
dpkg_apt debs/{{ deb }}{{'; '}}
17+
{%- endfor %}
18+
19+
## Pre-install the fundamental packages
20+
RUN apt-get update \
21+
&& apt-get -y install \
22+
net-tools \
23+
python-pip \
24+
build-essential \
25+
libssl-dev \
26+
libffi-dev \
27+
python-dev \
28+
wget \
29+
cmake \
30+
&& wget https://github.com/nanomsg/nanomsg/archive/1.0.0.tar.gz \
31+
&& tar xvfz 1.0.0.tar.gz \
32+
&& cd nanomsg-1.0.0 \
33+
&& mkdir -p build \
34+
&& cmake . \
35+
&& make install \
36+
&& ldconfig \
37+
&& cd .. \
38+
&& rm -fr nanomsg-1.0.0 \
39+
&& rm -f 1.0.0.tar.gz \
40+
&& pip install cffi==1.7.0 \
41+
&& pip install --upgrade cffi==1.7.0 \
42+
&& pip install nnpy \
43+
&& mkdir -p /opt \
44+
&& cd /opt \
45+
&& wget https://raw.githubusercontent.com/p4lang/ptf/master/ptf_nn/ptf_nn_agent.py \
46+
&& apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y \
47+
&& rm -rf /root/deps
48+
49+
COPY ["ptf_nn_agent.conf", "/etc/supervisor/conf.d/"]
50+
51+
ENTRYPOINT ["/usr/bin/supervisord"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[program:ptf_nn_agent]
2+
command=/usr/bin/python /opt/ptf_nn_agent.py --device-socket 1@tcp://0.0.0.0:10900 -i 1-3@Ethernet12 --set-iface-rcv-buffer=109430400
3+
process_name=ptf_nn_agent
4+
stdout_logfile=/tmp/ptf_nn_agent.out.log
5+
stderr_logfile=/tmp/ptf_nn_agent.err.log
6+
redirect_stderr=false
7+
autostart=true
8+
autorestart=true
9+
startsecs=1
10+
numprocs=1

platform/marvell/docker-syncd-mrvl.mk

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# docker image for mrvl syncd
2+
3+
DOCKER_SYNCD_MRVL = docker-syncd-mrvl.gz
4+
$(DOCKER_SYNCD_MRVL)_PATH = $(PLATFORM_PATH)/docker-syncd-mrvl
5+
$(DOCKER_SYNCD_MRVL)_DEPENDS += $(SYNCD) $(MRVL_FPA) $(REDIS_TOOLS)
6+
$(DOCKER_SYNCD_MRVL)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE)
7+
SONIC_DOCKER_IMAGES += $(DOCKER_SYNCD_MRVL)
8+
ifneq ($(ENABLE_SYNCD_RPC),y)
9+
SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_SYNCD_MRVL)
10+
endif
11+
12+
$(DOCKER_SYNCD_MRVL)_CONTAINER_NAME = syncd
13+
$(DOCKER_SYNCD_MRVL)_RUN_OPT += --net=host --privileged -t
14+
$(DOCKER_SYNCD_MRVL)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf
15+
$(DOCKER_SYNCD_MRVL)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
FROM docker-config-engine
2+
3+
## Make apt-get non-interactive
4+
ENV DEBIAN_FRONTEND=noninteractive
5+
6+
RUN apt-get update
7+
8+
COPY \
9+
{% for deb in docker_syncd_mrvl_debs.split(' ') -%}
10+
debs/{{ deb }}{{' '}}
11+
{%- endfor -%}
12+
debs/
13+
14+
RUN apt-get -y install libpcap-dev libxml2-dev python-dev swig libsensors4-dev libjemalloc1 nfs-common
15+
16+
RUN dpkg -i \
17+
{% for deb in docker_syncd_mrvl_debs.split(' ') -%}
18+
debs/{{ deb }}{{' '}}
19+
{%- endfor %}
20+
21+
COPY ["start.sh", "syncd.sh", "/usr/bin/"]
22+
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
23+
24+
## Clean up
25+
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
26+
RUN rm -rf /debs
27+
28+
ENTRYPOINT ["/usr/bin/supervisord"]
29+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/usr/bin/env bash
2+
3+
rm -f /var/run/rsyslogd.pid
4+
5+
supervisorctl start rsyslogd
6+
7+
supervisorctl start syncd
8+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
[supervisord]
2+
logfile_maxbytes=1MB
3+
logfile_backups=2
4+
nodaemon=true
5+
6+
[program:start.sh]
7+
command=/usr/bin/start.sh
8+
priority=1
9+
autostart=true
10+
autorestart=false
11+
stdout_logfile=syslog
12+
stderr_logfile=syslog
13+
14+
[program:rsyslogd]
15+
command=/usr/sbin/rsyslogd -n
16+
priority=2
17+
autostart=false
18+
autorestart=false
19+
stdout_logfile=syslog
20+
stderr_logfile=syslog
21+
22+
[program:syncd]
23+
command=/usr/bin/syncd_start.sh
24+
priority=3
25+
autostart=false
26+
autorestart=false
27+
stdout_logfile=syslog
28+
stderr_logfile=syslog
29+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env bash
2+
3+
function clean_up {
4+
service syncd stop
5+
exit
6+
}
7+
8+
trap clean_up SIGTERM SIGKILL
9+
10+
service syncd start
11+
12+
read

platform/marvell/libsaithrift-dev.mk

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# libsaithrift-dev package
2+
3+
LIBSAITHRIFT_DEV_MRVL = libsaithrift-dev_0.9.4_amd64.deb
4+
$(LIBSAITHRIFT_DEV_MRVL)_SRC_PATH = $(SRC_PATH)/SAI
5+
$(LIBSAITHRIFT_DEV_MRVL)_DEPENDS += $(LIBTHRIFT) $(LIBTHRIFT_DEV) $(THRIFT_COMPILER) $(MRVL_FPA) $(MRVL_SAI)
6+
$(LIBSAITHRIFT_DEV_MRVL)_RDEPENDS += $(LIBTHRIFT) $(MRVL_SAI)
7+
SONIC_DPKG_DEBS += $(LIBSAITHRIFT_DEV_MRVL)

platform/marvell/one-image.mk

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# sonic marvell one image installer
2+
3+
SONIC_ONE_IMAGE = sonic-marvell.bin
4+
$(SONIC_ONE_IMAGE)_MACHINE = marvell
5+
$(SONIC_ONE_IMAGE)_IMAGE_TYPE = onie
6+
$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES)
7+
SONIC_INSTALLERS += $(SONIC_ONE_IMAGE)

platform/marvell/platform.conf

Whitespace-only changes.

platform/marvell/python-saithrift.mk

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# python-saithrift package
2+
3+
PYTHON_SAITHRIFT_MRVL = python-saithrift_0.9.4_amd64.deb
4+
$(PYTHON_SAITHRIFT_MRVL)_SRC_PATH = $(SRC_PATH)/SAI
5+
$(PYTHON_SAITHRIFT_MRVL)_DEPENDS += $(MRVL_FPA) $(MRVL_SAI) $(THRIFT_COMPILER) $(PYTHON_THRIFT) $(LIBTHRIFT_DEV)
6+
SONIC_DPKG_DEBS += $(PYTHON_SAITHRIFT_MRVL)

platform/marvell/rules.mk

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
include $(PLATFORM_PATH)/sdk.mk
2+
include $(PLATFORM_PATH)/sai.mk
3+
include $(PLATFORM_PATH)/docker-syncd-mrvl.mk
4+
include $(PLATFORM_PATH)/docker-syncd-mrvl-rpc.mk
5+
include $(PLATFORM_PATH)/docker-orchagent-mrvl.mk
6+
include $(PLATFORM_PATH)/libsaithrift-dev.mk
7+
include $(PLATFORM_PATH)/python-saithrift.mk
8+
include $(PLATFORM_PATH)/one-image.mk
9+
10+
SONIC_ALL += $(SONIC_ONE_IMAGE) \
11+
$(DOCKER_FPM) \
12+
$(DOCKER_SYNCD_MRVL_RPC)
13+
14+
# Inject mrvl sai into sairedis
15+
$(LIBSAIREDIS)_DEPENDS += $(MRVL_FPA) $(MRVL_SAI) $(LIBSAITHRIFT_DEV_MRVL)
16+
17+
# Runtime dependency on mrvl sai is set only for syncd
18+
$(SYNCD)_RDEPENDS += $(MRVL_SAI)

platform/marvell/sai.mk

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Marvell SAI
2+
3+
export MRVL_SAI_VERSION = 1.0.1
4+
export MRVL_SAI_TAG = SONiC.201705
5+
export MRVL_SAI = mrvllibsai_$(MRVL_SAI_VERSION).deb
6+
7+
$(MRVL_SAI)_SRC_PATH = $(PLATFORM_PATH)/sai
8+
$(MRVL_SAI)_DEPENDS += $(MRVL_FPA)
9+
SONIC_MAKE_DEBS += $(MRVL_SAI)

platform/marvell/sai/Makefile

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.ONESHELL:
2+
SHELL = /bin/bash
3+
.SHELLFLAGS += -e
4+
5+
MRVL_SAI_URL = https://github.com/Marvell-switching/SAI-plugin/raw/$(MRVL_SAI_TAG)/sai_deb/$(MRVL_SAI)
6+
7+
$(addprefix $(DEST)/, $(MRVL_SAI)): $(DEST)/% :
8+
# get deb package
9+
wget -O $(DEST)/$(MRVL_SAI) $(MRVL_SAI_URL)

platform/marvell/sdk.mk

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Marvell FPA
2+
3+
export MRVL_FPA_VERSION = 1.0.1
4+
export MRVL_FPA_TAG = SONiC.201705
5+
export MRVL_FPA = mrvllibfpa_$(MRVL_FPA_VERSION).deb
6+
7+
$(MRVL_FPA)_SRC_PATH = $(PLATFORM_PATH)/sdk
8+
SONIC_MAKE_DEBS += $(MRVL_FPA)

platform/marvell/sdk/Makefile

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.ONESHELL:
2+
SHELL = /bin/bash
3+
.SHELLFLAGS += -e
4+
5+
MRVL_FPA_URL = https://github.com/Marvell-switching/SAI-plugin/raw/$(MRVL_FPA_TAG)/sdk_deb/$(MRVL_FPA)
6+
7+
$(addprefix $(DEST)/, $(MRVL_FPA)): $(DEST)/% :
8+
# get deb package
9+
wget -O $(DEST)/$(MRVL_FPA) $(MRVL_FPA_URL)

0 commit comments

Comments
 (0)