Commit 3a6cef8c authored by Shah Rinku's avatar Shah Rinku

Working solution for dispatcher NIC offload

parent 2867ff9b
......@@ -7,3 +7,29 @@ secrets.json
resource_system/bin/**
resource_system/version.linux
local_experiments/
.vscode
p4src/Makefile-nfp4build
p4src/app_master.list/
p4src/blm0.list/
p4src/echo.nffw
p4src/echo.yml
p4src/flowcache_timeout_emu0.list/
p4src/gro0.list/
p4src/gro1.list/
p4src/nbi_init_csr.list/
p4src/nfd_pcie0_notify.list/
p4src/nfd_pcie0_pci_in_gather.list/
p4src/nfd_pcie0_pci_in_issue0.list/
p4src/nfd_pcie0_pci_in_issue1.list/
p4src/nfd_pcie0_pci_out_me0.list/
p4src/nfd_pcie0_pd0.list/
p4src/nfd_pcie0_pd1.list/
p4src/nfd_pcie0_sb.list/
p4src/nfd_svc.list/
p4src/out/
p4src/pif_app_nfd.list/
client/Makefile-nfp4build
*.list
p4src/out_dir
*.nffw
import socket
import struct
import time
import threading
import random
import time
import argparse
parser = argparse.ArgumentParser(description='Mininet demo')
parser.add_argument('--fid', help='Funtion id',
type=int, action="store", required=False)
parser.add_argument('--c', help='Concurrency',
type=int, action="store", required=True)
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--rps', help='Requests per second',
type=int, action="store")
group.add_argument('--n', help='Number of requests to send',
type=int, action="store")
args = parser.parse_args()
PORT = 8000
dataInt = 0
fid = args.fid
SERVER_IP = "192.168.2.3"
egress_time = []
ingress_time = []
stop_thread = False
def receive():
global egress_time, stop_thread
CLIENT_IP = "0.0.0.0"
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((CLIENT_IP, 8080))
print "listening to {} at port {}".format(CLIENT_IP, 8080)
run_status = {}
while True:
if stop_thread:
break
packet, addr = s.recvfrom(1024)
# print packet
base = 0
chain_id = struct.unpack(">I", packet[base:base + 4])[0]
base += 4
exec_id = struct.unpack(">I", packet[base:base + 4])[0]
base += 4
function_id = struct.unpack(">I", packet[base:base + 4])[0]
base += 4
data = struct.unpack(">I", packet[base:base + 4])[0]
base += 4
function_count = struct.unpack("B", packet[base])[0]
t = int(time.time() * 1000) % 1000000000
data = int(data) - t
print "rec", chain_id, exec_id, data, function_id, function_count,
def genPacket():
global fid
packet = None
exec_id = random.randint(0, 2 ** 30)
print exec_id
chain_id = 1
function_count = 5
function_id = fid if (fid) else 1
f0 = 0; f1 = 1; f2 = 2; f3 = 0; f4 = 0
print chain_id, exec_id, "function_id", function_id, function_count, \
f0, f1, f2, f3, f4
chain_id = struct.pack(">I", chain_id) # chain id
exec_id = struct.pack(">I", exec_id) # execution id
dataInt = int(time.time() * 1000) % 1000000000
data = struct.pack(">I", dataInt) # data
function_count = struct.pack("B", function_count) # function count
function_id_packed = struct.pack(">I", function_id)
f0 = struct.pack("B", f0) # f0
f1 = struct.pack("B", f1) # f1
f2 = struct.pack("B", f2) # f2 -> f0
f3 = struct.pack("B", f3) # f3 -> f1 f2
f4 = struct.pack("B", f4) # f4 -> f3
packet = chain_id + exec_id + function_id_packed + data + function_count + f0 + f1 + f2 + f3 + f4
# print dataInt, offload_status
return packet, function_id
def sendThread(start_time, runtime, sleep_time):
global ingress_time
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
packet, function_id = genPacket()
if time.time() - start_time > runtime:
break
s.sendto(packet, (SERVER_IP, PORT))
ingress_time.append(time.time())
time.sleep(sleep_time)
def send():
global egress_time, ingress_time
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
print "Sending packet to %s at port %s" % (SERVER_IP, PORT)
print "chain id, exec id, data, function count, functions dependencies..."
# op = struct.unpack("B", packet[0])
packet, _ = genPacket()
if args.n is not None:
for i in range(args.req_count):
s.sendto(packet, (SERVER_IP, PORT))
ingress_time.append(time.time())
elif args.rps is not None:
runtime = 10
thread_count = args.c
start_time = time.time()
sleep_time = thread_count / float(args.rps)
print "calculated inter-arrival time, offload mode", sleep_time
for i in range(thread_count):
t = threading.Thread(target=sendThread, args=[
start_time, runtime, sleep_time])
t.daemon = True
t.start()
time.sleep(runtime)
stop_thread = True
# s.sendto(packet, (SERVER_IP, PORT))
# r.join()
r = threading.Thread(name="receive", target=receive)
r.daemon = True
r.start()
time.sleep(1)
send()
r.join()
......@@ -13,6 +13,7 @@
"body-parser": "^1.19.0",
"express": "^4.17.1",
"express-fileupload": "^1.1.6",
"jspack": "^0.0.4",
"kafka-node": "^5.0.0",
"morgan": "^1.9.1",
"mqtt": "^3.0.0",
......
#
# Generated Makefile for test
#
ifndef SDKDIR
export SDKDIR=/opt/netronome
endif
ifndef SDKTOOLSDIR
SDKTOOLSDIR=$(SDKDIR)/bin
endif
ifndef SDKP4DIR
SDKP4DIR=$(SDKDIR)/p4
endif
ifndef OUTDIR
OUTDIR=p4src
endif
ifndef PIFOUTDIR
PIFOUTDIR=p4src/out
endif
NFP4C_FOUND = $(shell if [ -x $(SDKP4DIR)/bin/nfp4c ]; then echo "found"; fi)
ifneq ($(NFP4C_FOUND),found)
$(warning warning: nfp4c not found or not executable, on windows please run nfp4term.bat)
endif
NFIRC_FOUND = $(shell if [ -x $(SDKP4DIR)/bin/nfirc ]; then echo "found"; fi)
ifneq ($(NFIRC_FOUND),found)
$(warning warning: nfirc not found or not executable, on windows please run nfp4term.bat)
endif
NFLD_FOUND = $(shell if [ -x $(SDKTOOLSDIR)/nfld ]; then echo "found"; fi)
ifneq ($(NFLD_FOUND),found)
$(warning warning: nfld not found or not executable, on windows please run nfp4term.bat)
endif
NFCC_FOUND = $(shell if [ -x $(SDKTOOLSDIR)/nfcc ]; then echo "found"; fi)
ifneq ($(NFCC_FOUND),found)
$(warning warning: nfcc not found or not executable, on windows please run nfp4term.bat)
endif
NFAS_FOUND = $(shell if [ -x $(SDKTOOLSDIR)/nfas ]; then echo "found"; fi)
ifneq ($(NFAS_FOUND),found)
$(warning warning: nfas not found or not executable, on windows please run nfp4term.bat)
endif
NFP4C_FOUND = $(shell if [ -x $(SDKP4DIR)/bin/nfp4c ]; then echo "found"; fi)
ifneq ($(NFP4C_FOUND),found)
$(warning warning: nfp4c not found or not executable, on windows please run nfp4term.bat)
endif
NFIRC_FOUND = $(shell if [ -x $(SDKP4DIR)/bin/nfirc ]; then echo "found"; fi)
ifneq ($(NFIRC_FOUND),found)
$(warning warning: nfirc not found or not executable, on windows please run nfp4term.bat)
endif
NFLD_FOUND = $(shell if [ -x $(SDKTOOLSDIR)/nfld ]; then echo "found"; fi)
ifneq ($(NFLD_FOUND),found)
$(warning warning: nfld not found or not executable, on windows please run nfp4term.bat)
endif
NFCC_FOUND = $(shell if [ -x $(SDKTOOLSDIR)/nfcc ]; then echo "found"; fi)
ifneq ($(NFCC_FOUND),found)
$(warning warning: nfcc not found or not executable, on windows please run nfp4term.bat)
endif
NFAS_FOUND = $(shell if [ -x $(SDKTOOLSDIR)/nfas ]; then echo "found"; fi)
ifneq ($(NFAS_FOUND),found)
$(warning warning: nfas not found or not executable, on windows please run nfp4term.bat)
endif
NFP4C_FOUND = $(shell if [ -x $(SDKP4DIR)/bin/nfp4c ]; then echo "found"; fi)
ifneq ($(NFP4C_FOUND),found)
$(warning warning: nfp4c not found or not executable, on windows please run nfp4term.bat)
endif
NFIRC_FOUND = $(shell if [ -x $(SDKP4DIR)/bin/nfirc ]; then echo "found"; fi)
ifneq ($(NFIRC_FOUND),found)
$(warning warning: nfirc not found or not executable, on windows please run nfp4term.bat)
endif
NFLD_FOUND = $(shell if [ -x $(SDKTOOLSDIR)/nfld ]; then echo "found"; fi)
ifneq ($(NFLD_FOUND),found)
$(warning warning: nfld not found or not executable, on windows please run nfp4term.bat)
endif
NFCC_FOUND = $(shell if [ -x $(SDKTOOLSDIR)/nfcc ]; then echo "found"; fi)
ifneq ($(NFCC_FOUND),found)
$(warning warning: nfcc not found or not executable, on windows please run nfp4term.bat)
endif
NFAS_FOUND = $(shell if [ -x $(SDKTOOLSDIR)/nfas ]; then echo "found"; fi)
ifneq ($(NFAS_FOUND),found)
$(warning warning: nfas not found or not executable, on windows please run nfp4term.bat)
endif
NFP4C_FOUND = $(shell if [ -x $(SDKP4DIR)/bin/nfp4c ]; then echo "found"; fi)
ifneq ($(NFP4C_FOUND),found)
$(warning warning: nfp4c not found or not executable, on windows please run nfp4term.bat)
endif
NFIRC_FOUND = $(shell if [ -x $(SDKP4DIR)/bin/nfirc ]; then echo "found"; fi)
ifneq ($(NFIRC_FOUND),found)
$(warning warning: nfirc not found or not executable, on windows please run nfp4term.bat)
endif
NFLD_FOUND = $(shell if [ -x $(SDKTOOLSDIR)/nfld ]; then echo "found"; fi)
ifneq ($(NFLD_FOUND),found)
$(warning warning: nfld not found or not executable, on windows please run nfp4term.bat)
endif
NFCC_FOUND = $(shell if [ -x $(SDKTOOLSDIR)/nfcc ]; then echo "found"; fi)
ifneq ($(NFCC_FOUND),found)
$(warning warning: nfcc not found or not executable, on windows please run nfp4term.bat)
endif
NFAS_FOUND = $(shell if [ -x $(SDKTOOLSDIR)/nfas ]; then echo "found"; fi)
ifneq ($(NFAS_FOUND),found)
$(warning warning: nfas not found or not executable, on windows please run nfp4term.bat)
endif
$(OUTDIR)/test.nffw: $(OUTDIR)/nfd_pcie0_pd0.list/nfd_pcie0_pd0.list \
$(OUTDIR)/nfd_pcie0_pci_in_issue1.list/nfd_pcie0_pci_in_issue1.list \
$(OUTDIR)/nfd_pcie0_pci_out_me0.list/nfd_pcie0_pci_out_me0.list \
$(OUTDIR)/nbi_init_csr.list/nbi_init_csr.list \
$(OUTDIR)/nfd_pcie0_pd1.list/nfd_pcie0_pd1.list \
$(OUTDIR)/nfd_pcie0_pci_in_issue0.list/nfd_pcie0_pci_in_issue0.list \
$(OUTDIR)/gro1.list/gro1.list \
$(OUTDIR)/pif_app_nfd.list/pif_app_nfd.list \
$(OUTDIR)/app_master.list/app_master.list \
$(OUTDIR)/nfd_svc.list/nfd_svc.list \
$(OUTDIR)/blm0.list/blm0.list \
$(OUTDIR)/gro0.list/gro0.list \
$(OUTDIR)/nfd_pcie0_notify.list/nfd_pcie0_notify.list \
$(OUTDIR)/nfd_pcie0_pci_in_gather.list/nfd_pcie0_pci_in_gather.list \
$(OUTDIR)/flowcache_timeout_emu0.list/flowcache_timeout_emu0.list \
$(OUTDIR)/nfd_pcie0_sb.list/nfd_pcie0_sb.list \
$(PIFOUTDIR)/build_info.json \
$(MAKEFILE_LIST)
@echo ---------
@echo linking $@
@echo ---------
$(SDKTOOLSDIR)/nfld -rtsyms -mip -user_note_f pif_debug_json "$(PIFOUTDIR)/pif_debug.json" -user_note_f build_info_json "$(PIFOUTDIR)/build_info.json" -g -user_note_f pif_design_json "$(PIFOUTDIR)/pif_design.json" \
-i i8 -e $(SDKDIR)/components/standardlibrary/picocode/nfp6000/catamaran/catamaran.npfw \
-chip nfp-4xxxc-b0 -g -o $@ \
-u i36.me9 $(OUTDIR)/nfd_pcie0_pd0.list/nfd_pcie0_pd0.list \
-u pcie0.me3 $(OUTDIR)/nfd_pcie0_pci_in_issue1.list/nfd_pcie0_pci_in_issue1.list \
-u pcie0.me0 $(OUTDIR)/nfd_pcie0_pci_out_me0.list/nfd_pcie0_pci_out_me0.list \
-u i36.me7 $(OUTDIR)/nfd_pcie0_pd1.list/nfd_pcie0_pd1.list \
-u pcie0.me2 $(OUTDIR)/nfd_pcie0_pci_in_issue0.list/nfd_pcie0_pci_in_issue0.list \
-u i48.me1 $(OUTDIR)/gro1.list/gro1.list \
-u i32.me0 i33.me0 i34.me0 i35.me0 i36.me0 i32.me1 i33.me1 \
i34.me1 i35.me1 i36.me1 i32.me2 i33.me2 i34.me2 i35.me2 \
i36.me2 i32.me3 i33.me3 i34.me3 i35.me3 i36.me3 i32.me4 \
i33.me4 i34.me4 i35.me4 i36.me4 i32.me5 i33.me5 i34.me5 \
i35.me5 i36.me5 i32.me6 i33.me6 i34.me6 i35.me6 i32.me7 \
i33.me7 i34.me7 i35.me7 i32.me8 i33.me8 i34.me8 i35.me8 \
i32.me9 i33.me9 i34.me9 i35.me9 i32.me10 i33.me10 i34.me10 \
i35.me10 i32.me11 i33.me11 i34.me11 i35.me11 $(OUTDIR)/pif_app_nfd.list/pif_app_nfd.list \
-u i36.me11 $(OUTDIR)/app_master.list/app_master.list \
-u i48.me2 $(OUTDIR)/nfd_svc.list/nfd_svc.list \
-u i48.me3 $(OUTDIR)/blm0.list/blm0.list \
-u i48.me0 $(OUTDIR)/gro0.list/gro0.list \
-u i36.me6 $(OUTDIR)/nfd_pcie0_notify.list/nfd_pcie0_notify.list \
-u pcie0.me1 $(OUTDIR)/nfd_pcie0_pci_in_gather.list/nfd_pcie0_pci_in_gather.list \
-u i36.me10 $(OUTDIR)/flowcache_timeout_emu0.list/flowcache_timeout_emu0.list \
-u i36.me8 $(OUTDIR)/nfd_pcie0_sb.list/nfd_pcie0_sb.list \
-L $(OUTDIR)/nbi_init_csr.list/nbi_init_csr.list
#
# Generate build info json
#
$(PIFOUTDIR)/build_info.json: $(MAKEFILE_LIST)
@echo ---------
@echo generating $@
@echo ---------
@mkdir -p $(PIFOUTDIR)
@echo -n {\"sku\": \"nfp-4xxxc-b0\", \"worker_mes\": [\"i32.me0\", \"i33.me0\", \"i34.me0\", \"i35.me0\", \"i36.me0\", \"i32.me1\", \"i33.me1\", \"i34.me1\", \"i35.me1\", \"i36.me1\", \"i32.me2\", \"i33.me2\", \"i34.me2\", \"i35.me2\", \"i36.me2\", \"i32.me3\", \"i33.me3\", \"i34.me3\", \"i35.me3\", \"i36.me3\", \"i32.me4\", \"i33.me4\", \"i34.me4\", \"i35.me4\", \"i36.me4\", \"i32.me5\", \"i33.me5\", \"i34.me5\", \"i35.me5\", \"i36.me5\", \"i32.me6\", \"i33.me6\", \"i34.me6\", \"i35.me6\", \"i32.me7\", \"i33.me7\", \"i34.me7\", \"i35.me7\", \"i32.me8\", \"i33.me8\", \"i34.me8\", \"i35.me8\", \"i32.me9\", \"i33.me9\", \"i34.me9\", \"i35.me9\", \"i32.me10\", \"i33.me10\", \"i34.me10\", \"i35.me10\", \"i32.me11\", \"i33.me11\", \"i34.me11\", \"i35.me11\"], \"reduced_thread_usage\": true, \"debug_info\": true, \"simulation\": false} >$@
#
# Generate IR from P4
#
$(OUTDIR)/test.yml: p4src/test.p4 \
$(MAKEFILE_LIST)
@echo ---------
@echo compiling p4 $@
@echo ---------
@mkdir -p $(PIFOUTDIR)
$(SDKP4DIR)/bin/nfp4c -o $(OUTDIR)/test.yml \
--p4-version 16 \
--p4-compiler p4c-nfp \
--source_info \
p4src/test.p4
#
# Generate PIF from IR
#
$(PIFOUTDIR)/pif_design%c \
$(PIFOUTDIR)/pif_design%h \
$(PIFOUTDIR)/pif_parrep%c \
$(PIFOUTDIR)/pif_parrep%h \
$(PIFOUTDIR)/pif_actions%c \
$(PIFOUTDIR)/pif_actions%h \
$(PIFOUTDIR)/pif_global%c \
$(PIFOUTDIR)/pif_global%h \
$(PIFOUTDIR)/pif_ctlflow%c \
$(PIFOUTDIR)/pif_ctlflow%h \
$(PIFOUTDIR)/pif_tables%c \
$(PIFOUTDIR)/pif_tables%h \
$(PIFOUTDIR)/pif_deparse%c \
$(PIFOUTDIR)/pif_digests%c \
$(PIFOUTDIR)/pif_digests%h \
$(PIFOUTDIR)/pif_meters%c \
$(PIFOUTDIR)/pif_meters%h \
$(PIFOUTDIR)/pif_registers%c \
$(PIFOUTDIR)/pif_registers%h \
$(PIFOUTDIR)/pif_pkt_recurse%c \
$(PIFOUTDIR)/pif_pkt_recurse%h \
$(PIFOUTDIR)/pif_pkt_clone%c \
$(PIFOUTDIR)/pif_pkt_clone%h \
$(PIFOUTDIR)/pif_flcalc%c \
$(PIFOUTDIR)/pif_flcalc%h \
$(PIFOUTDIR)/pif_field_lists%h \
$(PIFOUTDIR)/pif_parrep_pvs_sync%c : $(OUTDIR)/test%yml $(MAKEFILE_LIST)
@echo ---------
@echo generating pif $@
@echo ---------
@mkdir -p $(PIFOUTDIR)
$(SDKP4DIR)/bin/nfirc -o $(PIFOUTDIR)/ \
--p4info $(OUTDIR)/test.p4info.json \
--debugpoints \
--mac_ingress_timestamp \
$(OUTDIR)/test.yml
#
# NFD_PCIE0_PD0
#
$(OUTDIR)/nfd_pcie0_pd0.list/nfd_pcie0_pd0.list: $(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_out_pd.uc \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo assembling $@
@echo ---------
@mkdir -p $(OUTDIR)/nfd_pcie0_pd0.list
$(SDKTOOLSDIR)/nfas -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DSTAGE_BATCH_MANAGER_CTX=0 \
-DNFD_OUT_SB_WQ_NUM=15 \
-DNFD_OUT_STAGE_ME="__nfp_idstr2meid(\"i36.me8\")" \
-DPCIE_ISL=0 \
-chip nfp-4xxxc-b0 \
-go \
-t \
-W3 \
-R \
-lm 0 \
-C \
-Of \
-Os \
-O \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_h \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_uc \
-I$(SDKDIR)/components/flowenv/me/blocks/blm \
-I$(SDKDIR)/components/flowenv/me/blocks \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKDIR)/components/ng_nfd/me/blocks/vnic \
-I$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared \
-I$(SDKDIR)/components/ng_nfd/me/blocks \
-I$(SDKDIR)/components/ng_nfd/shared \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKDIR)/components/flowenv/me/include \
-I$(PIFOUTDIR)/ \
-I$(SDKDIR)/components/standardlibrary/microcode/src \
-I$(SDKDIR)/components/standardlibrary/microcode/include \
-I$(SDKDIR)/components/standardlibrary/include \
-include $(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-o $@ $(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_out_pd.uc
#
# NFD_PCIE0_PCI_IN_ISSUE1
#
$(OUTDIR)/nfd_pcie0_pci_in_issue1.list/nfd_pcie0_pci_in_issue1.list: $(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_in_me1.c \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/utils/libutils.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared/nfd_cfg.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo compiling $@
@echo ---------
@mkdir -p $(OUTDIR)/nfd_pcie0_pci_in_issue1.list
$(SDKTOOLSDIR)/nfcc -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DNFD_IN_NOTIFY_ME="__nfp_idstr2meid(\"i36.me6\")" \
-DPCI_IN_ISSUE_DMA_IDX=1 \
-DPCIE_ISL=0 \
-chip nfp-4xxxc-b0 \
-W3 \
-Qno_decl_volatile \
-O2 \
-mIPOPT_nfp=2 \
-Zi \
-ng \
-Qnctx=4 \
-Qnctx_mode=4 \
-Qlmpt_reserve_option=0xc \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_h \
-I$(SDKDIR)/components/flowenv/me/blocks \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKDIR)/components/ng_nfd/me/blocks \
-I$(SDKDIR)/components/ng_nfd/shared \
-I$(SDKDIR)/components/ng_nfd \
-I$(SDKDIR)/components/standardlibrary/microc/include \
-I$(SDKDIR)/components/standardlibrary/microc/src \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKDIR)/components/flowenv/me/include \
-I$(SDKDIR)/components/flowenv/me/include/nfp6000 \
-I$(SDKDIR)/components/flowenv/me/lib \
-I$(SDKDIR)/components/flowenv/me/lib/nfp \
-I$(PIFOUTDIR)/ \
-I$(PIFOUTDIR)/callbackapi \
-I$(SDKDIR)/components/standardlibrary/include \
-FI$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-Fo$(OUTDIR)/nfd_pcie0_pci_in_issue1.list/ \
-Fe$(OUTDIR)/nfd_pcie0_pci_in_issue1.list/nfd_pcie0_pci_in_issue1 $(NFCC_FLAGS) \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_in_me1.c \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/utils/libutils.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared/nfd_cfg.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c
#
# NFD_PCIE0_PCI_OUT_ME0
#
$(OUTDIR)/nfd_pcie0_pci_out_me0.list/nfd_pcie0_pci_out_me0.list: $(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_out_me0.c \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/utils/libutils.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared/nfd_cfg.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo compiling $@
@echo ---------
@mkdir -p $(OUTDIR)/nfd_pcie0_pci_out_me0.list
$(SDKTOOLSDIR)/nfcc -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DNFD_CFG_SIG_NEXT_ME="nfd_cfg_sig_sb" \
-DNFD_CFG_NEXT_ME="__nfp_idstr2meid(\"i36.me8\")" \
-DPCIE_ISL=0 \
-chip nfp-4xxxc-b0 \
-W3 \
-Qno_decl_volatile \
-O2 \
-mIPOPT_nfp=2 \
-Zi \
-ng \
-Qnctx=8 \
-Qnctx_mode=8 \
-Qlm_start=512 \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_h \
-I$(SDKDIR)/components/flowenv/me/blocks \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKDIR)/components/ng_nfd/me/blocks \
-I$(SDKDIR)/components/ng_nfd/shared \
-I$(SDKDIR)/components/ng_nfd \
-I$(SDKDIR)/components/standardlibrary/microc/include \
-I$(SDKDIR)/components/standardlibrary/microc/src \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKDIR)/components/flowenv/me/include \
-I$(SDKDIR)/components/flowenv/me/include/nfp6000 \
-I$(SDKDIR)/components/flowenv/me/lib \
-I$(SDKDIR)/components/flowenv/me/lib/nfp \
-I$(PIFOUTDIR)/ \
-I$(PIFOUTDIR)/callbackapi \
-I$(SDKDIR)/components/standardlibrary/include \
-FI$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-Fo$(OUTDIR)/nfd_pcie0_pci_out_me0.list/ \
-Fe$(OUTDIR)/nfd_pcie0_pci_out_me0.list/nfd_pcie0_pci_out_me0 $(NFCC_FLAGS) \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_out_me0.c \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/utils/libutils.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared/nfd_cfg.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c
#
# NBI_INIT_CSR
#
$(OUTDIR)/nbi_init_csr.list/nbi_init_csr.list: $(SDKP4DIR)/components/nfp_pif/me/apps/common/src/nbi_init.uc \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo assembling $@
@echo ---------
@mkdir -p $(OUTDIR)/nbi_init_csr.list
$(SDKTOOLSDIR)/nfas -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-chip nfp-4xxxc-b0 \
-go \
-W3 \
-R \
-C \
-permit_dram_unaligned \
-preproc64 \
-keep_unreachable_code \
-lm 0 \
-codeless \
-I$(SDKDIR)/components/flowenv/me/blocks/init \
-I$(SDKDIR)/components/flowenv/me/blocks/init/_uc \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKDIR)/components/standardlibrary/microcode/src \
-I$(SDKDIR)/components/standardlibrary/microcode/include \
-I$(PIFOUTDIR)/ \
-I$(SDKDIR)/components/standardlibrary/include \
-include $(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-o $@ $(SDKP4DIR)/components/nfp_pif/me/apps/common/src/nbi_init.uc
#
# NFD_PCIE0_PD1
#
$(OUTDIR)/nfd_pcie0_pd1.list/nfd_pcie0_pd1.list: $(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_out_pd.uc \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo assembling $@
@echo ---------
@mkdir -p $(OUTDIR)/nfd_pcie0_pd1.list
$(SDKTOOLSDIR)/nfas -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DSTAGE_BATCH_MANAGER_CTX=0 \
-DNFD_OUT_SB_WQ_NUM=15 \
-DNFD_OUT_STAGE_ME="__nfp_idstr2meid(\"i36.me8\")" \
-DPCIE_ISL=0 \
-chip nfp-4xxxc-b0 \
-go \
-t \
-W3 \
-R \
-lm 0 \
-C \
-Of \
-Os \
-O \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_h \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_uc \
-I$(SDKDIR)/components/flowenv/me/blocks/blm \
-I$(SDKDIR)/components/flowenv/me/blocks \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKDIR)/components/ng_nfd/me/blocks/vnic \
-I$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared \
-I$(SDKDIR)/components/ng_nfd/me/blocks \
-I$(SDKDIR)/components/ng_nfd/shared \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKDIR)/components/flowenv/me/include \
-I$(PIFOUTDIR)/ \
-I$(SDKDIR)/components/standardlibrary/microcode/src \
-I$(SDKDIR)/components/standardlibrary/microcode/include \
-I$(SDKDIR)/components/standardlibrary/include \
-include $(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-o $@ $(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_out_pd.uc
#
# NFD_PCIE0_PCI_IN_ISSUE0
#
$(OUTDIR)/nfd_pcie0_pci_in_issue0.list/nfd_pcie0_pci_in_issue0.list: $(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_in_me1.c \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/utils/libutils.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared/nfd_cfg.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo compiling $@
@echo ---------
@mkdir -p $(OUTDIR)/nfd_pcie0_pci_in_issue0.list
$(SDKTOOLSDIR)/nfcc -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DNFD_IN_NOTIFY_ME="__nfp_idstr2meid(\"i36.me6\")" \
-DPCI_IN_ISSUE_DMA_IDX=0 \
-DPCIE_ISL=0 \
-chip nfp-4xxxc-b0 \
-W3 \
-Qno_decl_volatile \
-O2 \
-mIPOPT_nfp=2 \
-Zi \
-ng \
-Qnctx=4 \
-Qnctx_mode=4 \
-Qlmpt_reserve_option=0xc \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_h \
-I$(SDKDIR)/components/flowenv/me/blocks \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKDIR)/components/ng_nfd/me/blocks \
-I$(SDKDIR)/components/ng_nfd/shared \
-I$(SDKDIR)/components/ng_nfd \
-I$(SDKDIR)/components/standardlibrary/microc/include \
-I$(SDKDIR)/components/standardlibrary/microc/src \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKDIR)/components/flowenv/me/include \
-I$(SDKDIR)/components/flowenv/me/include/nfp6000 \
-I$(SDKDIR)/components/flowenv/me/lib \
-I$(SDKDIR)/components/flowenv/me/lib/nfp \
-I$(PIFOUTDIR)/ \
-I$(PIFOUTDIR)/callbackapi \
-I$(SDKDIR)/components/standardlibrary/include \
-FI$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-Fo$(OUTDIR)/nfd_pcie0_pci_in_issue0.list/ \
-Fe$(OUTDIR)/nfd_pcie0_pci_in_issue0.list/nfd_pcie0_pci_in_issue0 $(NFCC_FLAGS) \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_in_me1.c \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/utils/libutils.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared/nfd_cfg.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c
#
# GRO1
#
$(OUTDIR)/gro1.list/gro1.list: $(SDKP4DIR)/components/gro/me/gro_out.uc \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo assembling $@
@echo ---------
@mkdir -p $(OUTDIR)/gro1.list
$(SDKTOOLSDIR)/nfas -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DNFD_VERSION=0x03010000 \
-DNFP_LIB_ANY_NFAS_VERSION \
-DGRO_BLOCK_NUM=1 \
-chip nfp-4xxxc-b0 \
-go \
-W3 \
-R \
-C \
-indirect_ref_format_nfp6000 \
-third_party_addressing_40_bit \
-permit_dram_unaligned \
-preproc64 \
-keep_unreachable_code \
-lm 0 \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/src \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKP4DIR)/components/gro \
-I$(SDKP4DIR)/components/gro/me \
-I$(PIFOUTDIR)/ \
-I$(SDKDIR)/components/standardlibrary/microcode/src \
-I$(SDKDIR)/components/standardlibrary/microcode/include \
-I$(SDKDIR)/components/standardlibrary/include \
-include $(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-o $@ $(SDKP4DIR)/components/gro/me/gro_out.uc
#
# PIF_APP_NFD
#
$(OUTDIR)/pif_app_nfd.list/pif_app_nfd.list: $(SDKP4DIR)/components/nfp_pif/me/apps/common/src/fc.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/hashmap/src/camp_hash.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_remove.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_timestamp.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_lock.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/mem_atomic_indirect.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/mem_cam_add_inc.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/cluster_target.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/cam.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/pif_app_nfd.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/pkt_clone.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/mcast.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/pif_app_controller.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/cflow_tstamp/src/cflow_tstamp.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/dcfl_init.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/system_init.c \
$(SDKDIR)/components/flowenv/me/lib/pktio/libpktio.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/libnfd.c \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/macflush/libmacflushuser.c \
$(PIFOUTDIR)/pif_design.c \
$(PIFOUTDIR)/pif_parrep.c \
$(PIFOUTDIR)/pif_actions.c \
$(PIFOUTDIR)/pif_global.c \
$(PIFOUTDIR)/pif_ctlflow.c \
$(PIFOUTDIR)/pif_tables.c \
$(PIFOUTDIR)/pif_deparse.c \
$(PIFOUTDIR)/pif_digests.c \
$(PIFOUTDIR)/pif_meters.c \
$(PIFOUTDIR)/pif_registers.c \
$(PIFOUTDIR)/pif_pkt_recurse.c \
$(PIFOUTDIR)/pif_pkt_clone.c \
$(PIFOUTDIR)/pif_flcalc.c \
$(SDKP4DIR)/components/gro/libgro.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/mac_time_user.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_action_common.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_meter.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_lookup.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_pkt.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_counters.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_init.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_flcalc_algorithms.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_memops.c \
$(SDKP4DIR)/components/dcfl/me/lib/dcfl/libdcfl.c \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo compiling $@
@echo ---------
@mkdir -p $(OUTDIR)/pif_app_nfd.list
$(SDKTOOLSDIR)/nfcc -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DPIF_APP_MASTER_ME=0x204 \
-DHASHMAP_CAMPHASH \
-chip nfp-4xxxc-b0 \
-W3 \
-Qno_decl_volatile \
-O2 \
-mIPOPT_nfp=2 \
-Zi \
-ng \
-Qnctx=4 \
-Qnctx_mode=4 \
-Qnn_mode=1 \
-Qspill=3 \
-I$(SDKP4DIR)/components/nfp_pif/me/lib/hashmap/include \
-I$(SDKP4DIR)/components/flowcache/me/lib/flowcache \
-I$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary \
-I$(SDKP4DIR)/components/nfp_pif/me/lib/cflow_tstamp/include \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKP4DIR)/components/nfp_pif/shared/include \
-I$(SDKDIR)/components/ng_nfd/me/lib \
-I$(SDKDIR)/components/ng_nfd/me/blocks \
-I$(SDKDIR)/components/ng_nfd/shared \
-I$(SDKDIR)/components/ng_nfd \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_h \
-I$(SDKDIR)/components/flowenv/me/blocks \
-I$(SDKP4DIR)/components/nfp_pif/me/lib \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKP4DIR)/components/gro \
-I$(SDKDIR)/components/standardlibrary/microc/include \
-I$(SDKDIR)/components/standardlibrary/microc/src \
-I$(SDKDIR)/components/flowenv/me/include \
-I$(SDKDIR)/components/flowenv/me/include/nfp6000 \
-I$(SDKDIR)/components/flowenv/me/lib \
-I$(SDKDIR)/components/flowenv/me/lib/nfp \
-I$(PIFOUTDIR)/ \
-I$(PIFOUTDIR)/callbackapi \
-I$(SDKP4DIR)/components/nfp_pif/me/lib/pif/include \
-I$(SDKP4DIR)/components/dcfl/me/lib/dcfl \
-I$(SDKP4DIR)/components/dcfl/shared/include/dcfl \
-I$(SDKDIR)/components/standardlibrary/include \
-FI$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-Fo$(OUTDIR)/pif_app_nfd.list/ \
-Fe$(OUTDIR)/pif_app_nfd.list/pif_app_nfd $(NFCC_FLAGS) \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/fc.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/hashmap/src/camp_hash.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_remove.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_timestamp.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_lock.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/mem_atomic_indirect.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/mem_cam_add_inc.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/cluster_target.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/cam.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/pif_app_nfd.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/pkt_clone.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/mcast.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/pif_app_controller.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/cflow_tstamp/src/cflow_tstamp.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/dcfl_init.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/system_init.c \
$(SDKDIR)/components/flowenv/me/lib/pktio/libpktio.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/libnfd.c \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/macflush/libmacflushuser.c \
$(PIFOUTDIR)/pif_design.c \
$(PIFOUTDIR)/pif_parrep.c \
$(PIFOUTDIR)/pif_actions.c \
$(PIFOUTDIR)/pif_global.c \
$(PIFOUTDIR)/pif_ctlflow.c \
$(PIFOUTDIR)/pif_tables.c \
$(PIFOUTDIR)/pif_deparse.c \
$(PIFOUTDIR)/pif_digests.c \
$(PIFOUTDIR)/pif_meters.c \
$(PIFOUTDIR)/pif_registers.c \
$(PIFOUTDIR)/pif_pkt_recurse.c \
$(PIFOUTDIR)/pif_pkt_clone.c \
$(PIFOUTDIR)/pif_flcalc.c \
$(SDKP4DIR)/components/gro/libgro.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/mac_time_user.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_action_common.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_meter.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_lookup.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_pkt.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_counters.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_init.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_flcalc_algorithms.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_memops.c \
$(SDKP4DIR)/components/dcfl/me/lib/dcfl/libdcfl.c
#
# APP_MASTER
#
$(OUTDIR)/app_master.list/app_master.list: $(SDKP4DIR)/components/nfp_pif/me/lib/hashmap/src/camp_hash.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/dcfl_init.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/system_init.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/libnfd.c \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/macflush/libmacflushuser.c \
$(SDKP4DIR)/components/gro/libgro.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/src/app_master.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/app_master_common.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_init.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/mac_time.c \
$(PIFOUTDIR)/pif_digests.c \
$(PIFOUTDIR)/pif_parrep_pvs_sync.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/macflush/libmacflush.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_remove.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_timestamp.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_lock.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/mem_atomic_indirect.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/mem_cam_add_inc.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/cluster_target.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/cam.c \
$(SDKP4DIR)/components/dcfl/me/lib/dcfl/libdcfl.c \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo compiling $@
@echo ---------
@mkdir -p $(OUTDIR)/app_master.list
$(SDKTOOLSDIR)/nfcc -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DPKT_MOD_SCRIPT_INIT_CSR \
-DGLOBAL_INIT \
-DHASHMAP_CAMPHASH \
-chip nfp-4xxxc-b0 \
-W3 \
-Qno_decl_volatile \
-O2 \
-mIPOPT_nfp=2 \
-Zi \
-ng \
-Qnctx=8 \
-Qnctx_mode=8 \
-Qnn_mode=1 \
-Qspill=3 \
-I$(SDKP4DIR)/components/nfp_pif/me/lib/hashmap/include \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKP4DIR)/components/nfp_pif/shared/include \
-I$(SDKDIR)/components/ng_nfd/me/lib \
-I$(SDKDIR)/components/ng_nfd/me/blocks \
-I$(SDKDIR)/components/ng_nfd/shared \
-I$(SDKDIR)/components/ng_nfd \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_h \
-I$(SDKDIR)/components/flowenv/me/blocks \
-I$(SDKP4DIR)/components/nfp_pif/me/lib \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKP4DIR)/components/gro \
-I$(SDKP4DIR)/components/nfp_pif/me/lib/pif/include \
-I$(SDKP4DIR)/components/nfp_pif/me/lib/macflush \
-I$(SDKDIR)/components/standardlibrary/microc/include \
-I$(SDKDIR)/components/standardlibrary/microc/src \
-I$(SDKDIR)/components/flowenv/me/include \
-I$(SDKDIR)/components/flowenv/me/include/nfp6000 \
-I$(SDKDIR)/components/flowenv/me/lib \
-I$(SDKDIR)/components/flowenv/me/lib/nfp \
-I$(PIFOUTDIR)/ \
-I$(PIFOUTDIR)/callbackapi \
-I$(SDKP4DIR)/components/flowcache/me/lib/flowcache \
-I$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary \
-I$(SDKP4DIR)/components/dcfl/me/lib/dcfl \
-I$(SDKP4DIR)/components/dcfl/shared/include/dcfl \
-I$(SDKDIR)/components/standardlibrary/include \
-FI$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-Fo$(OUTDIR)/app_master.list/ \
-Fe$(OUTDIR)/app_master.list/app_master $(NFCC_FLAGS) \
$(SDKP4DIR)/components/nfp_pif/me/lib/hashmap/src/camp_hash.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/dcfl_init.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/system_init.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/libnfd.c \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/macflush/libmacflushuser.c \
$(SDKP4DIR)/components/gro/libgro.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/src/app_master.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/app_master_common.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/pif_init.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/pif/src/mac_time.c \
$(PIFOUTDIR)/pif_digests.c \
$(PIFOUTDIR)/pif_parrep_pvs_sync.c \
$(SDKP4DIR)/components/nfp_pif/me/lib/macflush/libmacflush.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_remove.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_timestamp.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_lock.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/mem_atomic_indirect.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/mem_cam_add_inc.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/cluster_target.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/cam.c \
$(SDKP4DIR)/components/dcfl/me/lib/dcfl/libdcfl.c
#
# NFD_SVC
#
$(OUTDIR)/nfd_svc.list/nfd_svc.list: $(SDKDIR)/components/ng_nfd/me/blocks/vnic/svc_me.c \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/utils/libutils.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared/nfd_cfg.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo compiling $@
@echo ---------
@mkdir -p $(OUTDIR)/nfd_svc.list
$(SDKTOOLSDIR)/nfcc -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DNFD_CFG_NEXT_ME0="__nfp_idstr2meid(\"i36.me11\")" \
-DNFD_CFG_SIG_NEXT_ME0="nfd_cfg_sig_app_master0" \
-DNFD_CFG_NEXT_ME1="__nfp_idstr2meid(\"i36.me11\")" \
-DNFD_CFG_SIG_NEXT_ME1="nfd_cfg_sig_app_master1" \
-DNFD_CFG_NEXT_ME2="__nfp_idstr2meid(\"i36.me11\")" \
-DNFD_CFG_SIG_NEXT_ME2="nfd_cfg_sig_app_master2" \
-DNFD_CFG_NEXT_ME3="__nfp_idstr2meid(\"i36.me11\")" \
-DNFD_CFG_SIG_NEXT_ME3="nfd_cfg_sig_app_master3" \
-chip nfp-4xxxc-b0 \
-W3 \
-Qno_decl_volatile \
-O2 \
-mIPOPT_nfp=2 \
-Zi \
-ng \
-Qnctx=8 \
-Qnctx_mode=8 \
-Qnn_mode=1 \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_h \
-I$(SDKDIR)/components/flowenv/me/blocks \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKDIR)/components/ng_nfd/me/blocks \
-I$(SDKDIR)/components/ng_nfd/shared \
-I$(SDKDIR)/components/ng_nfd \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKDIR)/components/standardlibrary/microc/include \
-I$(SDKDIR)/components/standardlibrary/microc/src \
-I$(SDKDIR)/components/flowenv/me/include \
-I$(SDKDIR)/components/flowenv/me/include/nfp6000 \
-I$(SDKDIR)/components/flowenv/me/lib \
-I$(SDKDIR)/components/flowenv/me/lib/nfp \
-I$(PIFOUTDIR)/ \
-I$(PIFOUTDIR)/callbackapi \
-I$(SDKDIR)/components/standardlibrary/include \
-FI$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-Fo$(OUTDIR)/nfd_svc.list/ \
-Fe$(OUTDIR)/nfd_svc.list/nfd_svc $(NFCC_FLAGS) \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/svc_me.c \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/utils/libutils.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared/nfd_cfg.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c
#
# BLM0
#
$(OUTDIR)/blm0.list/blm0.list: $(SDKDIR)/components/flowenv/me/blocks/blm/blm_main.uc \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo assembling $@
@echo ---------
@mkdir -p $(OUTDIR)/blm0.list
$(SDKTOOLSDIR)/nfas -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DBLM_0_ISLAND_48 \
-DNBII=8 \
-DBLM_INSTANCE_ID=0 \
-DBLM_INIT_EMU_RINGS \
-DBLM_BLQ_EMEM_TYPE=emem \
-chip nfp-4xxxc-b0 \
-go \
-W3 \
-R \
-C \
-Of \
-Os \
-O \
-indirect_ref_format_nfp6000 \
-third_party_addressing_40_bit \
-permit_dram_unaligned \
-preproc64 \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_h \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_uc \
-I$(SDKDIR)/components/flowenv/me/blocks/blm \
-I$(SDKDIR)/components/flowenv/me/blocks \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKDIR)/components/standardlibrary/microcode/src \
-I$(SDKDIR)/components/standardlibrary/microcode/include \
-I$(PIFOUTDIR)/ \
-I$(SDKDIR)/components/standardlibrary/include \
-include $(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-o $@ $(SDKDIR)/components/flowenv/me/blocks/blm/blm_main.uc
#
# GRO0
#
$(OUTDIR)/gro0.list/gro0.list: $(SDKP4DIR)/components/gro/me/gro_out.uc \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo assembling $@
@echo ---------
@mkdir -p $(OUTDIR)/gro0.list
$(SDKTOOLSDIR)/nfas -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DNFD_VERSION=0x03010000 \
-DNFP_LIB_ANY_NFAS_VERSION \
-DGRO_BLOCK_NUM=0 \
-chip nfp-4xxxc-b0 \
-go \
-W3 \
-R \
-C \
-indirect_ref_format_nfp6000 \
-third_party_addressing_40_bit \
-permit_dram_unaligned \
-preproc64 \
-keep_unreachable_code \
-lm 0 \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/src \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKP4DIR)/components/gro \
-I$(SDKP4DIR)/components/gro/me \
-I$(PIFOUTDIR)/ \
-I$(SDKDIR)/components/standardlibrary/microcode/src \
-I$(SDKDIR)/components/standardlibrary/microcode/include \
-I$(SDKDIR)/components/standardlibrary/include \
-include $(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-o $@ $(SDKP4DIR)/components/gro/me/gro_out.uc
#
# NFD_PCIE0_NOTIFY
#
$(OUTDIR)/nfd_pcie0_notify.list/nfd_pcie0_notify.list: $(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_in/notify.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/utils/libutils.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared/nfd_cfg.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo compiling $@
@echo ---------
@mkdir -p $(OUTDIR)/nfd_pcie0_notify.list
$(SDKTOOLSDIR)/nfcc -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DNFD_IN_DATA_DMA_ME0="__nfp_idstr2meid(\"pcie0.me2\")" \
-DNFD_IN_DATA_DMA_ME1="__nfp_idstr2meid(\"pcie0.me3\")" \
-DPCIE_ISL=0 \
-DNFD_IN_NOTIFY_DBG_CHKS \
-chip nfp-4xxxc-b0 \
-W3 \
-Qno_decl_volatile \
-O2 \
-mIPOPT_nfp=2 \
-Zi \
-ng \
-Qnctx=4 \
-Qnctx_mode=4 \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_h \
-I$(SDKDIR)/components/flowenv/me/blocks \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKDIR)/components/ng_nfd/me/blocks \
-I$(SDKDIR)/components/ng_nfd/shared \
-I$(SDKDIR)/components/ng_nfd \
-I$(SDKDIR)/components/standardlibrary/microc/include \
-I$(SDKDIR)/components/standardlibrary/microc/src \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKDIR)/components/flowenv/me/include \
-I$(SDKDIR)/components/flowenv/me/include/nfp6000 \
-I$(SDKDIR)/components/flowenv/me/lib \
-I$(SDKDIR)/components/flowenv/me/lib/nfp \
-I$(PIFOUTDIR)/ \
-I$(PIFOUTDIR)/callbackapi \
-I$(SDKDIR)/components/standardlibrary/include \
-FI$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-Fo$(OUTDIR)/nfd_pcie0_notify.list/ \
-Fe$(OUTDIR)/nfd_pcie0_notify.list/nfd_pcie0_notify $(NFCC_FLAGS) \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_in/notify.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/utils/libutils.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared/nfd_cfg.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c
#
# NFD_PCIE0_PCI_IN_GATHER
#
$(OUTDIR)/nfd_pcie0_pci_in_gather.list/nfd_pcie0_pci_in_gather.list: $(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_in_me0.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/utils/libutils.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared/nfd_cfg.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo compiling $@
@echo ---------
@mkdir -p $(OUTDIR)/nfd_pcie0_pci_in_gather.list
$(SDKTOOLSDIR)/nfcc -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DNFD_IN_DATA_DMA_ME0="__nfp_idstr2meid(\"pcie0.me2\")" \
-DNFD_IN_DATA_DMA_ME1="__nfp_idstr2meid(\"pcie0.me3\")" \
-DNFD_OUT_CACHE_ME="__nfp_idstr2meid(\"pcie0.me0\")" \
-DPCIE_ISL=0 \
-chip nfp-4xxxc-b0 \
-W3 \
-Qno_decl_volatile \
-O2 \
-mIPOPT_nfp=2 \
-Zi \
-ng \
-Qnctx=8 \
-Qnctx_mode=8 \
-I$(SDKDIR)/components/flowenv/me/blocks/blm/_h \
-I$(SDKDIR)/components/flowenv/me/blocks \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKDIR)/components/ng_nfd/me/blocks \
-I$(SDKDIR)/components/ng_nfd/shared \
-I$(SDKDIR)/components/ng_nfd \
-I$(SDKDIR)/components/standardlibrary/microc/include \
-I$(SDKDIR)/components/standardlibrary/microc/src \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKDIR)/components/flowenv/me/include \
-I$(SDKDIR)/components/flowenv/me/include/nfp6000 \
-I$(SDKDIR)/components/flowenv/me/lib \
-I$(SDKDIR)/components/flowenv/me/lib/nfp \
-I$(PIFOUTDIR)/ \
-I$(PIFOUTDIR)/callbackapi \
-I$(SDKDIR)/components/standardlibrary/include \
-FI$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-Fo$(OUTDIR)/nfd_pcie0_pci_in_gather.list/ \
-Fe$(OUTDIR)/nfd_pcie0_pci_in_gather.list/nfd_pcie0_pci_in_gather $(NFCC_FLAGS) \
$(SDKDIR)/components/flowenv/me/blocks/blm/libblm.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_in_me0.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/utils/libutils.c \
$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared/nfd_cfg.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c
#
# FLOWCACHE_TIMEOUT_EMU0
#
$(OUTDIR)/flowcache_timeout_emu0.list/flowcache_timeout_emu0.list: $(SDKP4DIR)/components/nfp_pif/me/apps/common/src/fc.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/dcfl_init.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/system_init.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_remove.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_timeout.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_timeout_lock.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_timestamp.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/cluster_target.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/mem_atomic_indirect.c \
$(SDKP4DIR)/components/dcfl/me/lib/dcfl/libdcfl.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo compiling $@
@echo ---------
@mkdir -p $(OUTDIR)/flowcache_timeout_emu0.list
$(SDKTOOLSDIR)/nfcc -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DFC_TIMEOUT_EMU=0 \
-chip nfp-4xxxc-b0 \
-W3 \
-Qno_decl_volatile \
-O2 \
-mIPOPT_nfp=2 \
-Zi \
-ng \
-Qnctx=8 \
-Qnctx_mode=8 \
-Qnn_mode=1 \
-Qspill=3 \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKP4DIR)/components/nfp_pif/shared/include \
-I$(SDKP4DIR)/components/flowcache/me/lib/flowcache \
-I$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary \
-I$(SDKP4DIR)/components/dcfl/me/lib/dcfl \
-I$(SDKP4DIR)/components/dcfl/shared/include/dcfl \
-I$(SDKDIR)/components/standardlibrary/microc/include \
-I$(SDKDIR)/components/standardlibrary/microc/src \
-I$(SDKDIR)/components/flowenv/me/include \
-I$(SDKDIR)/components/flowenv/me/include/nfp6000 \
-I$(SDKDIR)/components/flowenv/me/lib \
-I$(SDKDIR)/components/flowenv/me/lib/nfp \
-I$(PIFOUTDIR)/ \
-I$(PIFOUTDIR)/callbackapi \
-I$(SDKDIR)/components/standardlibrary/include \
-FI$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-Fo$(OUTDIR)/flowcache_timeout_emu0.list/ \
-Fe$(OUTDIR)/flowcache_timeout_emu0.list/flowcache_timeout_emu0 $(NFCC_FLAGS) \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/fc.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/dcfl_init.c \
$(SDKP4DIR)/components/nfp_pif/me/apps/common/src/system_init.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_remove.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_timeout.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_timeout_lock.c \
$(SDKP4DIR)/components/flowcache/me/lib/flowcache/_c/flow_cache_timestamp.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/cluster_target.c \
$(SDKP4DIR)/components/flowcache/me/lib/standardlibrary/_c/mem_atomic_indirect.c \
$(SDKP4DIR)/components/dcfl/me/lib/dcfl/libdcfl.c \
$(SDKDIR)/components/standardlibrary/microc/src/intrinsic.c \
$(SDKDIR)/components/standardlibrary/microc/src/rtl.c \
$(SDKDIR)/components/flowenv/me/lib/nfp/libnfp.c \
$(SDKDIR)/components/flowenv/me/lib/std/libstd.c \
$(SDKDIR)/components/flowenv/me/lib/pkt/libpkt.c \
$(SDKDIR)/components/flowenv/me/lib/pktdma/libpktdma.c \
$(SDKDIR)/components/flowenv/me/lib/net/libnet.c \
$(SDKDIR)/components/flowenv/me/lib/modscript/libmodscript.c
#
# NFD_PCIE0_SB
#
$(OUTDIR)/nfd_pcie0_sb.list/nfd_pcie0_sb.list: $(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_out_sb.uc \
$(PIFOUTDIR)/pif_design.h \
$(MAKEFILE_LIST)
@echo ---------
@echo assembling $@
@echo ---------
@mkdir -p $(OUTDIR)/nfd_pcie0_sb.list
$(SDKTOOLSDIR)/nfas -DPLATFORM_PORT_SELECTION=H_PLATFORM \
-DPIF_APP_CONFIG=PIF_APP_DEFAULT \
-DNUM_IMU=1 \
-DNUM_EMU=1 \
-DSIMULATION=0 \
-DPIF_APP_REDUCED_THREADS=1 \
-DPIF_DEBUG=1 \
-DNFD_CFG_SIG_NEXT_ME="_nfd_cfg_sig_svc_me0" \
-DPCIE_ISL=0 \
-DSTAGE_BATCH_MANAGER_CTX=0 \
-DSTAGE_BATCH_FIRST_WORKER=1 \
-DSTAGE_BATCH_NUM_WORKERS=7 \
-DNFD_OUT_SB_WQ_NUM=15 \
-DNFD_CFG_NEXT_ME="__nfp_idstr2meid(\"i48.me2\")" \
-chip nfp-4xxxc-b0 \
-go \
-t \
-W3 \
-R \
-lm 0 \
-C \
-Of \
-Os \
-O \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include \
-I$(SDKDIR)/components/ng_nfd/me/blocks/vnic \
-I$(SDKDIR)/components/ng_nfd/me/blocks/vnic/shared \
-I$(SDKDIR)/components/ng_nfd/me/blocks \
-I$(SDKDIR)/components/ng_nfd/shared \
-I$(SDKP4DIR)/components/nfp_pif/me/apps/common/include \
-I$(SDKDIR)/components/standardlibrary/microcode/src \
-I$(SDKDIR)/components/standardlibrary/microcode/include \
-I$(PIFOUTDIR)/ \
-I$(SDKDIR)/components/standardlibrary/include \
-include $(SDKP4DIR)/components/nfp_pif/me/apps/pif_app_nfd/include/config.h \
-o $@ $(SDKDIR)/components/ng_nfd/me/blocks/vnic/pci_out_sb.uc
clean:
rm -f $(OUTDIR)/*.nffw $(OUTDIR)/*.elf \
$(OUTDIR)/*.mif $(OUTDIR)/*.mift \
$(OUTDIR)/*.uci $(OUTDIR)/*.ucp \
$(OUTDIR)/*.dbg
rm -rf $(OUTDIR)/nfd_pcie0_pd0.list
rm -rf $(OUTDIR)/nfd_pcie0_pci_in_issue1.list
rm -rf $(OUTDIR)/nfd_pcie0_pci_out_me0.list
rm -rf $(OUTDIR)/nbi_init_csr.list
rm -rf $(OUTDIR)/nfd_pcie0_pd1.list
rm -rf $(OUTDIR)/nfd_pcie0_pci_in_issue0.list
rm -rf $(OUTDIR)/gro1.list
rm -rf $(OUTDIR)/pif_app_nfd.list
rm -rf $(OUTDIR)/app_master.list
rm -rf $(OUTDIR)/nfd_svc.list
rm -rf $(OUTDIR)/blm0.list
rm -rf $(OUTDIR)/gro0.list
rm -rf $(OUTDIR)/nfd_pcie0_notify.list
rm -rf $(OUTDIR)/nfd_pcie0_pci_in_gather.list
rm -rf $(OUTDIR)/flowcache_timeout_emu0.list
rm -rf $(OUTDIR)/nfd_pcie0_sb.list
rm -f $(OUTDIR)/*.yml $(OUTDIR)/*.svg
rm -f $(PIFOUTDIR)/*.c $(PIFOUTDIR)/*.h $(PIFOUTDIR)/*.json \
$(PIFOUTDIR)/*.txt $(PIFOUTDIR)/*.svg $(PIFOUTDIR)/*.csv
rm -rf $(PIFOUTDIR)/callbackapi
......@@ -66,7 +66,7 @@ app.use(fileUpload())
app.use('/serverless/chain', chainHandler.router); // chain router (explicit_chain_handler.js) for handling explicit chains
let requestQueue = []
const WINDOW_SIZE = 10
const WINDOW_SIZE = 1
const port = constants.master_port
const registry_url = constants.registry_url
......@@ -220,6 +220,7 @@ app.post('/serverless/execute/:id', (req, res) => {
res.timestamp = Date.now()
if (functionToResource.has(id)) {
res.start = 'warmstart'
res.dispatch_time = Date.now()
libSupport.reverseProxy(req, res)
} else {
res.start = 'coldstart'
......
......@@ -77,6 +77,7 @@ function generateExecutor(functionPath, functionHash) {
* @param {JSON} res Object to use to return the response to the user
*/
async function reverseProxy(req, res) {
res.reverse_ingress = Date.now()
if (req.headers['x-chain-type'] !== 'explicit' && req.body.type === "tcp")
branchChainPredictor(req)
let runtime = req.body.runtime
......@@ -93,8 +94,10 @@ async function reverseProxy(req, res) {
let url = `http://${resource.node_id}:${resource.port}/serverless/function/execute`
// logger.info("Request received at reverseproxy. Forwarding to: " + url);
forwardTo.open_request_count += 1
heap.heapify(functionHeap, compare) // maintain loadbalancer by heapifying the Map
// forwardTo.open_request_count += 1
// TODO: stopping loadbalancer
// heap.heapify(functionHeap, compare) // maintain loadbalancer by heapifying the Map
res.lookup_time = Date.now()
var options = {
method: 'POST',
uri: url,
......@@ -153,6 +156,7 @@ async function reverseProxy(req, res) {
let payload = req.body
payload.request_id = request_id
let data = payload.data
res.data_set_time = Date.now()
let packet = packPacket({
chain_id: 0,
exec_id: request_id,
......@@ -160,8 +164,10 @@ async function reverseProxy(req, res) {
data,
function_count: 1
})
res.pack_time = Date.now()
udpProxy.send(packet, 0, packet.length, resource.port, resource.node_id, function (err, bytes) {
// logger.info(`forwarded request via UDP, IP 192.168.2.5 Port ${resource.port}`)
res.send_time = Date.now()
})
}
}
......@@ -415,6 +421,23 @@ udpProxy.on('message', (msg, rinfo) => {
let result = unpackPacket(msg)
let res = requestFlightQueue.get(result.exec_id)
res.json(result)
console.log("resource_lookup",
res.dispatch_time - res.timestamp,
"reverse_proxy_call",
res.reverse_ingress - res.dispatch_time,
"metadata_lookup",
res.lookup_time - res.reverse_ingress,
"data_set_time",
res.data_set_time - res.lookup_time,
"pack_time",
res.pack_time - res.data_set_time,
"network_send",
res.send_time - res.pack_time,
"total_dispatch_delay",
res.send_time - res.timestamp,
"E2E time:",
Date.now() - res.timestamp
)
});
udpProxy.on('listening', () => {
......@@ -459,6 +482,7 @@ function packPacket(dataPacket) {
let message = new Array(1024)
let base = 0, chain_id, exec_id, function_id, data, function_count
let f0, f1, f2, f3, f4, t1, t2, t3, t4
chain_id = struct.PackTo(">I", message, base, [dataPacket.chain_id])
base += 4
exec_id = struct.PackTo(">I", message, base, [dataPacket.exec_id])
......@@ -468,6 +492,27 @@ function packPacket(dataPacket) {
data = struct.PackTo(">I", message, base, [dataPacket.data])
base += 4
function_count = struct.PackTo("B", message, base, [dataPacket.function_count])
base += 1
f0 = struct.PackTo("B", message, base, [0])
base += 1
f1 = struct.PackTo("B", message, base, [12])
base += 1
f2 = struct.PackTo("B", message, base, [0])
base += 1
f3 = struct.PackTo("B", message, base, [34])
base += 1
f4 = struct.PackTo("B", message, base, [0])
base += 1
t1 = struct.PackTo(">I", message, base, [Date.now()])
base += 4
t2 = struct.PackTo("I", message, base, [1234])
base += 4
t3 = struct.PackTo("I", message, base, [0])
base += 8
t4 = struct.PackTo("I", message, base, [0])
message = Buffer.from(message)
return message
}
......
#
# Generated Makefile for echo
# Generated Makefile for orchestrator
#
ifndef SDKDIR
......@@ -122,7 +122,7 @@ ifneq ($(NFAS_FOUND),found)
$(warning warning: nfas not found or not executable, on windows please run nfp4term.bat)
endif
$(OUTDIR)/echo.nffw: $(OUTDIR)/nfd_pcie0_pd0.list/nfd_pcie0_pd0.list \
$(OUTDIR)/orchestrator.nffw: $(OUTDIR)/nfd_pcie0_pd0.list/nfd_pcie0_pd0.list \
$(OUTDIR)/nfd_pcie0_pci_in_issue1.list/nfd_pcie0_pci_in_issue1.list \
$(OUTDIR)/nfd_pcie0_pci_out_me0.list/nfd_pcie0_pci_out_me0.list \
$(OUTDIR)/nbi_init_csr.list/nbi_init_csr.list \
......@@ -186,17 +186,17 @@ $(PIFOUTDIR)/build_info.json: $(MAKEFILE_LIST)
# Generate IR from P4
#
$(OUTDIR)/echo.yml: p4src/echo.p4 \
$(OUTDIR)/orchestrator.yml: p4src/orchestrator.p4 \
$(MAKEFILE_LIST)
@echo ---------
@echo compiling p4 $@
@echo ---------
@mkdir -p $(PIFOUTDIR)
$(SDKP4DIR)/bin/nfp4c -o $(OUTDIR)/echo.yml \
$(SDKP4DIR)/bin/nfp4c -o $(OUTDIR)/orchestrator.yml \
--p4-version 16 \
--p4-compiler p4c-nfp \
--source_info \
p4src/echo.p4
p4src/orchestrator.p4
#
......@@ -229,15 +229,16 @@ $(PIFOUTDIR)/pif_pkt_clone%h \
$(PIFOUTDIR)/pif_flcalc%c \
$(PIFOUTDIR)/pif_flcalc%h \
$(PIFOUTDIR)/pif_field_lists%h \
$(PIFOUTDIR)/pif_parrep_pvs_sync%c : $(OUTDIR)/echo%yml $(MAKEFILE_LIST)
$(PIFOUTDIR)/pif_parrep_pvs_sync%c : $(OUTDIR)/orchestrator%yml $(MAKEFILE_LIST)
@echo ---------
@echo generating pif $@
@echo ---------
@mkdir -p $(PIFOUTDIR)
$(SDKP4DIR)/bin/nfirc -o $(PIFOUTDIR)/ \
--p4info $(OUTDIR)/echo.p4info.json \
--p4info $(OUTDIR)/orchestrator.p4info.json \
--debugpoints \
$(OUTDIR)/echo.yml
--mac_ingress_timestamp \
$(OUTDIR)/orchestrator.yml
#
......
#!/bin/bash -x
sudo ifconfig vf0_0 down
sudo ifconfig vf0_0 hw ether 00:11:11:11:11:11
sudo ifconfig vf0_1 down
sudo ifconfig vf0_1 hw ether 00:22:22:22:22:22
sudo ifconfig vf0_0 192.168.2.2/24 up
sudo ifconfig vf0_1 192.168.2.3/24 up
......@@ -7,17 +11,15 @@ sudo ifconfig vf0_1 192.168.2.3/24 up
echo "y" | docker system prune
docker network create -d macvlan --subnet=192.168.2.0/24 --aux-address="vf0_0=192.168.2.2" --aux-address="vf0_1=192.168.2.3" -o parent=vf0_1 pub_net
# move vf0_0 into its own namespace
# sudo ip netns exec ns_server ip link set vf0_0 netns 1
# sudo ip netns delete ns_server
# sudo ip netns add ns_server
move vf0_0 into its own namespace
sudo ip netns exec ns_server ip link set vf0_0 netns 1
sudo ip netns delete ns_server
sudo ip netns add ns_server
# sudo ip link set vf0_0 netns ns_server
# sudo ip netns exec ns_server ip addr add dev vf0_0 192.168.2.2/24
# sudo ip netns exec ns_server ip link set dev vf0_0 up
sudo ip link set vf0_0 netns ns_server
sudo ip netns exec ns_server ip addr add dev vf0_0 192.168.2.2/24
sudo ip netns exec ns_server ip link set dev vf0_0 up
# sudo ip netns exec ns_server arp -s 192.168.2.3 00:22:22:22:22:22 -i vf0_0
# sudo ip netns exec ns_server arp -s 192.168.2.4 00:33:33:33:33:33 -i vf0_0
sudo ip netns exec ns_server arp -s 192.168.2.3 00:22:22:22:22:22 -i vf0_0
# sudo arp -s 192.168.2.2 00:11:11:11:11:11 -i vf0_1
# sudo arp -s 192.168.2.4 00:33:33:33:33:33 -i vf0_1
\ No newline at end of file
sudo arp -s 192.168.2.2 00:11:11:11:11:11 -i vf0_1
sudo ip netns delete ns_server
sudo ip netns delete ns_client
sudo ip netns add ns_server
sudo ip netns add ns_client
echo "namespace created"
sudo ifconfig vf0_0 down
sudo ifconfig vf0_0 hw ether 00:11:11:11:11:11
sudo ip link set vf0_0 up
sudo ip address add 192.168.2.2/24 dev vf0_0
sudo ethtool --offload vf0_0 rx off tx off sg off
sudo ethtool -K vf0_0 gso off
sudo ifconfig vf0_1 down
sudo ifconfig vf0_1 hw ether 00:22:22:22:22:22
sudo ip link set vf0_1 up
sudo ip address add 192.168.2.3/24 dev vf0_1
sudo ethtool --offload vf0_1 rx off tx off sg off
sudo ethtool -K vf0_1 gso off
echo "IPs assigned"
#sudo arp -s 192.168.2.3 00:22:22:22:22:22 -i vf0_0
#sudo arp -s 192.168.2.4 00:33:33:33:33:33 -i vf0_0
#sudo arp -s 192.168.2.2 00:11:11:11:11:11 -i vf0_1
#sudo arp -s 192.168.2.4 00:33:33:33:33:33 -i vf0_1
sudo ip link set vf0_0 netns ns_server
sudo ip netns exec ns_server ip addr add dev vf0_0 192.168.2.2/24
sudo ip netns exec ns_server ip link set dev vf0_0 up
sudo ip netns exec ns_server arp -s 192.168.2.3 00:22:22:22:22:22 -i vf0_0
sudo ip netns exec ns_server arp -s 192.168.2.4 00:33:33:33:33:33 -i vf0_0
sudo ip link set vf0_1 netns ns_client
sudo ip netns exec ns_client ip addr add dev vf0_1 192.168.2.3/24
sudo ip netns exec ns_client ip link set dev vf0_1 up
sudo ip netns exec ns_client arp -s 192.168.2.2 00:11:11:11:11:11 -i vf0_1
sudo ip netns exec ns_client arp -s 192.168.2.2 00:11:11:11:11:11 -i vf0_1
sudo ip netns exec ns_client arp -s 192.168.2.4 00:33:33:33:33:33 -i vf0_1
\ No newline at end of file
......@@ -15,7 +15,7 @@ done
if [[ $compile_flag -eq 1 ]]
then
# compile the nfp code
sudo /opt/netronome/p4/bin/nfp4build -o ./p4src/echo.nffw -p ./p4src/out -4 ./p4src/echo.p4 -l lithium --nfp4c_p4_version 16 --nfp4c_p4_compiler p4c-nfp -c ./p4src/prime.c
sudo /opt/netronome/p4/bin/nfp4build -o ./p4src/orchestrator.nffw -p ./p4src/out -4 ./p4src/orchestrator.p4 -l lithium --nfp4c_p4_version 16 --nfirc_mac_ingress_timestamp --nfp4c_p4_compiler p4c-nfp -c ./p4src/prime.c
fi
if [[ $offload_flag -eq 1 ]]
......@@ -24,7 +24,7 @@ then
cd /opt/netronome/p4/bin/
# offload
sudo ./rtecli design-load -f $location/p4src/echo.nffw -c $location/p4src/echo.p4cfg -p $location/p4src/out/pif_design.json
sudo ./rtecli design-load -f $location/p4src/orchestrator.nffw -c $location/p4src/echo.p4cfg -p $location/p4src/out/pif_design.json
# returning back to base
cd $location
......
#! /bin/bash -ex
compile_flag=0
offload_flag=0
assign_ip_flag=0
location=$(pwd)
while getopts 'coi' flag; do
case "${flag}" in
c) compile_flag=1 ;;
o) offload_flag=1 ;;
i) assign_ip_flag=1 ;;
esac
done
if [[ $compile_flag -eq 1 ]]
then
# compile the nfp code
sudo /opt/netronome/p4/bin/nfp4build -o ./p4src/test.nffw -p ./p4src/out -4 ./p4src/test.p4 -l lithium --nfp4c_p4_version 16 --nfirc_mac_ingress_timestamp --nfp4c_p4_compiler p4c-nfp -e
fi
if [[ $offload_flag -eq 1 ]]
then
# move to p4 bin
cd /opt/netronome/p4/bin/
# offload
sudo ./rtecli design-load -f $location/p4src/test.nffw -c $location/p4src/test.p4cfg -p $location/p4src/out/pif_design.json
# returning back to base
cd $location
fi
if [[ $assign_ip_flag -eq 1 ]]
then
#assigning IPs to network interfaces
sudo ./assign_ip_test.sh
fi
......@@ -643,35 +643,9 @@
"source_fragment" : "dispatch_act"
}
},
{
"name" : "act",
"id" : 4,
"runtime_data" : [],
"primitives" : [
{
"op" : "assign",
"parameters" : [
{
"type" : "field",
"value" : ["map_hdr", "data"]
},
{
"type" : "hexstr",
"value" : "0x00000064"
}
],
"source_info" : {
"filename" : "p4src/echo.p4",
"line" : 51,
"column" : 9,
"source_fragment" : "hdr.map_hdr.data = 32w100"
}
}
]
},
{
"name" : "fix_checksum",
"id" : 5,
"id" : 4,
"runtime_data" : [],
"primitives" : [
{
......@@ -714,32 +688,9 @@
},
"init_table" : "node_2",
"tables" : [
{
"name" : "tbl_act",
"id" : 0,
"key" : [],
"match_type" : "exact",
"type" : "simple",
"max_size" : 1024,
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
"action_ids" : [4],
"actions" : ["act"],
"base_default_next" : "dispatch",
"next_tables" : {
"act" : "dispatch"
},
"default_entry" : {
"action_id" : 4,
"action_const" : true,
"action_data" : [],
"action_entry_const" : true
}
},
{
"name" : "dispatch",
"id" : 1,
"id" : 0,
"source_info" : {
"filename" : "p4src/echo.p4",
"line" : 40,
......@@ -775,7 +726,7 @@
},
{
"name" : "fwd",
"id" : 2,
"id" : 1,
"source_info" : {
"filename" : "p4src/echo.p4",
"line" : 16,
......@@ -811,7 +762,7 @@
},
{
"name" : "fwd",
"id" : 3,
"id" : 2,
"source_info" : {
"filename" : "p4src/echo.p4",
"line" : 16,
......@@ -888,7 +839,7 @@
}
}
},
"true_next" : "tbl_act",
"true_next" : "dispatch",
"false_next" : "fwd"
}
]
......@@ -906,7 +857,7 @@
"tables" : [
{
"name" : "tbl_fix_checksum",
"id" : 4,
"id" : 3,
"key" : [],
"match_type" : "exact",
"type" : "simple",
......@@ -914,14 +865,14 @@
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
"action_ids" : [5],
"action_ids" : [4],
"actions" : ["fix_checksum"],
"base_default_next" : null,
"next_tables" : {
"fix_checksum" : null
},
"default_entry" : {
"action_id" : 5,
"action_id" : 4,
"action_const" : true,
"action_data" : [],
"action_entry_const" : true
......
......@@ -227,12 +227,6 @@ egress::fix_checksum:
src_lineno: 75
type: action
ingress::act:
implementation: modify_field(map_hdr.data, 0x00000064);
src_filename: ''
src_lineno: 1
type: action
ingress::dispatch_act:
implementation: |-
modify_field(ipv4.dstAddr, dstAddr);
......@@ -290,17 +284,6 @@ ingress::fwd:
src_lineno: 16
type: table
ingress::tbl_act:
allowed_actions:
- ingress::act
default_entry:
action: ingress::act
const: true
max_entries: 1025
src_filename: ''
src_lineno: 1
type: table
##########################################
# Ingress conditionals sets #
......@@ -324,9 +307,8 @@ ingress_flow:
implementation: |-
digraph {
"_condition_0" -> "ingress::fwd" [condition = false]
"_condition_0" -> "ingress::tbl_act" [condition = true]
"_condition_0" -> "ingress::dispatch" [condition = true]
"ingress::fwd" -> "exit_control_flow" [action = always]
"ingress::tbl_act" -> "ingress::dispatch" [action = always]
"ingress::dispatch" -> "ingress::fwd" [action = always]
}
start_state: _condition_0
......@@ -379,7 +361,7 @@ layout:
##########################################
source_info:
date: 2021/03/04 18:32:12
date: 2021/03/19 14:57:28
output_file: p4src/echo.yml
p4_version: '16'
source_files:
......
#define REPLY_PORT 9000
#define DISPATCHER_PORT 8000
#define MDS_PORT 8000
#define NUM_CACHE 128
#define CLUSTER_COUNT 2
#define DEAD_EGRESS_PORT 9
#define CONTROLLER_IP 0x0a000002
#define SERVER_IP 0x0a000001
#define CONTROLLER_IP 0xc0a80203
#define SERVER_IP 0xc0a80202
#define NC_READ_REQUEST 0
#define NC_READ_REPLY 1
......@@ -16,8 +17,8 @@
#define PKT_INSTANCE_TYPE_NORMAL 0
#define PKT_INSTANCE_TYPE_INGRESS_CLONE 1
#define PKT_INSTANCE_TYPE_EGRESS_CLONE 2
#define PKT_INSTANCE_TYPE_COALESCED 3
#define PKT_INSTANCE_TYPE_INGRESS_RECIRC 4
#define PKT_INSTANCE_TYPE_EGRESS_CLONE 9
#define PKT_INSTANCE_TYPE_COALESCED 10
#define PKT_INSTANCE_TYPE_INGRESS_RECIRC 3
#define PKT_INSTANCE_TYPE_REPLICATION 5
#define PKT_INSTANCE_TYPE_RESUBMIT 6
\ No newline at end of file
#define PKT_INSTANCE_TYPE_RESUBMIT 4
\ No newline at end of file
struct resubmit_meta_t {
bit<8> current_state;
bit<32> data;
}
struct ingress_metadata_t {
bit<1> drop;
bit<9> egress_port;
bit<4> packet_type;
}
register< bit<8>>(16384) current_state;
register< bit<8>>(16384) dispatch_state;
header ethernet_t {
bit<48> dstAddr;
bit<48> srcAddr;
bit<16> etherType;
}
header ipv4_t {
bit<4> version;
bit<4> ihl;
bit<8> diffserv;
bit<16> totalLen;
bit<16> identification;
bit<3> flags;
bit<13> fragOffset;
bit<8> ttl;
bit<8> protocol;
bit<16> hdrChecksum;
bit<32> srcAddr;
bit<32> dstAddr;
}
header udp_t {
bit<16> srcPort;
bit<16> dstPort;
bit<16> length_;
bit<16> checksum;
}
header map_hdr_t {
bit<32> chain_id;
bit<32> exec_id;
bit<8> function_id;
bit<32> data;
bit<8> function_count;
bit<8> f0;
bit<8> f1;
bit<8> f2;
bit<8> f3;
bit<8> f4;
}
struct exec_hdr_t {
bit<8> function_count;
bit<8> function;
}
struct metadata {
@name(".ing_metadata")
ingress_metadata_t ing_metadata;
@name(".resubmit_meta")
resubmit_meta_t resubmit_meta;
@name(".exec_hdr")
exec_hdr_t exec_hdr;
}
struct headers {
@name(".ethernet")
ethernet_t ethernet;
@name(".ipv4")
ipv4_t ipv4;
@name(".udp")
udp_t udp;
@name(".map_hdr")
map_hdr_t map_hdr;
}
\ No newline at end of file
{
"program" : "p4src/orchestrator.p4",
"__meta__" : {
"version" : [2, 7],
"compiler" : "https://github.com/p4lang/p4c"
},
"header_types" : [
{
"name" : "scalars_0",
"id" : 0,
"fields" : []
},
{
"name" : "ethernet_t",
"id" : 1,
"fields" : [
["dstAddr", 48, false],
["srcAddr", 48, false],
["etherType", 16, false]
]
},
{
"name" : "ipv4_t",
"id" : 2,
"fields" : [
["version", 4, false],
["ihl", 4, false],
["diffserv", 8, false],
["totalLen", 16, false],
["identification", 16, false],
["flags", 3, false],
["fragOffset", 13, false],
["ttl", 8, false],
["protocol", 8, false],
["hdrChecksum", 16, false],
["srcAddr", 32, false],
["dstAddr", 32, false]
]
},
{
"name" : "udp_t",
"id" : 3,
"fields" : [
["srcPort", 16, false],
["dstPort", 16, false],
["length_", 16, false],
["checksum", 16, false]
]
},
{
"name" : "map_hdr_t",
"id" : 4,
"fields" : [
["chain_id", 32, false],
["exec_id", 32, false],
["function_id", 32, false],
["data", 32, false],
["function_count", 8, false],
["f0", 8, false],
["f1", 8, false],
["f2", 8, false],
["f3", 8, false],
["f4", 8, false]
]
},
{
"name" : "ingress_metadata_t",
"id" : 5,
"fields" : [
["drop", 1, false],
["egress_port", 9, false],
["packet_type", 4, false],
["_padding", 2, false]
]
},
{
"name" : "resubmit_meta_t",
"id" : 6,
"fields" : [
["current_state", 8, false],
["data", 32, false]
]
},
{
"name" : "exec_hdr_t",
"id" : 7,
"fields" : [
["function_count", 8, false],
["function", 8, false]
]
},
{
"name" : "standard_metadata",
"id" : 8,
"fields" : [
["ingress_port", 16, false],
["packet_length", 14, false],
["egress_spec", 16, false],
["egress_port", 16, false],
["egress_instance", 10, false],
["instance_type", 4, false],
["clone_spec", 32, false],
["parser_error_location", 8, false],
["parser_status", 3, false],
["checksum_error", 1, false]
]
}
],
"headers" : [
{
"name" : "scalars",
"id" : 0,
"header_type" : "scalars_0",
"metadata" : true,
"pi_omit" : true
},
{
"name" : "standard_metadata",
"id" : 1,
"header_type" : "standard_metadata",
"metadata" : true,
"pi_omit" : true
},
{
"name" : "ethernet",
"id" : 2,
"header_type" : "ethernet_t",
"metadata" : false,
"pi_omit" : true
},
{
"name" : "ipv4",
"id" : 3,
"header_type" : "ipv4_t",
"metadata" : false,
"pi_omit" : true
},
{
"name" : "udp",
"id" : 4,
"header_type" : "udp_t",
"metadata" : false,
"pi_omit" : true
},
{
"name" : "map_hdr",
"id" : 5,
"header_type" : "map_hdr_t",
"metadata" : false,
"pi_omit" : true
},
{
"name" : "ing_metadata",
"id" : 6,
"header_type" : "ingress_metadata_t",
"metadata" : true,
"pi_omit" : true
},
{
"name" : "resubmit_meta",
"id" : 7,
"header_type" : "resubmit_meta_t",
"metadata" : true,
"pi_omit" : true
},
{
"name" : "exec_hdr",
"id" : 8,
"header_type" : "exec_hdr_t",
"metadata" : true,
"pi_omit" : true
}
],
"header_stacks" : [],
"header_union_types" : [],
"header_unions" : [],
"header_union_stacks" : [],
"field_lists" : [],
"errors" : [
["NoError", 1],
["PacketTooShort", 2],
["NoMatch", 3],
["StackOutOfBounds", 4],
["HeaderTooShort", 5],
["ParserTimeout", 6]
],
"enums" : [],
"parsers" : [
{
"name" : "parser",
"id" : 0,
"init_state" : "start",
"parse_states" : [
{
"name" : "parse_ipv4",
"id" : 0,
"parser_ops" : [
{
"parameters" : [
{
"type" : "regular",
"value" : "ipv4"
}
],
"op" : "extract"
}
],
"transitions" : [
{
"value" : "0x00000511",
"mask" : "0x00000fff",
"next_state" : "parse_udp"
},
{
"value" : "default",
"mask" : null,
"next_state" : null
}
],
"transition_key" : [
{
"type" : "field",
"value" : ["ipv4", "fragOffset"]
},
{
"type" : "field",
"value" : ["ipv4", "ihl"]
},
{
"type" : "field",
"value" : ["ipv4", "protocol"]
}
],
"source_info" : {
"filename" : "p4src/includes/parsers.p4",
"line" : 3,
"column" : 31,
"source_fragment" : "parse_ipv4"
}
},
{
"name" : "parse_udp",
"id" : 1,
"parser_ops" : [
{
"parameters" : [
{
"type" : "regular",
"value" : "udp"
}
],
"op" : "extract"
}
],
"transitions" : [
{
"value" : "0x1f40",
"mask" : null,
"next_state" : "parse_map_hdr"
},
{
"value" : "0x2328",
"mask" : null,
"next_state" : "parse_map_hdr"
},
{
"value" : "default",
"mask" : null,
"next_state" : null
}
],
"transition_key" : [
{
"type" : "field",
"value" : ["udp", "dstPort"]
}
],
"source_info" : {
"filename" : "p4src/includes/parsers.p4",
"line" : 11,
"column" : 30,
"source_fragment" : "parse_udp"
}
},
{
"name" : "parse_map_hdr",
"id" : 2,
"parser_ops" : [
{
"parameters" : [
{
"type" : "regular",
"value" : "map_hdr"
}
],
"op" : "extract"
}
],
"transitions" : [
{
"value" : "default",
"mask" : null,
"next_state" : null
}
],
"transition_key" : [],
"source_info" : {
"filename" : "p4src/includes/parsers.p4",
"line" : 20,
"column" : 34,
"source_fragment" : "parse_map_hdr"
}
},
{
"name" : "start",
"id" : 3,
"parser_ops" : [
{
"parameters" : [
{
"type" : "regular",
"value" : "ethernet"
}
],
"op" : "extract"
}
],
"transitions" : [
{
"value" : "0x0800",
"mask" : null,
"next_state" : "parse_ipv4"
},
{
"value" : "default",
"mask" : null,
"next_state" : null
}
],
"transition_key" : [
{
"type" : "field",
"value" : ["ethernet", "etherType"]
}
],
"source_info" : {
"filename" : "p4src/includes/parsers.p4",
"line" : 25,
"column" : 26,
"source_fragment" : "start"
}
}
]
}
],
"deparsers" : [
{
"name" : "deparser",
"id" : 0,
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 79,
"column" : 8,
"source_fragment" : "DeparserImpl"
},
"order" : ["ethernet", "ipv4", "udp", "map_hdr"]
}
],
"meter_arrays" : [],
"counter_arrays" : [],
"register_arrays" : [
{
"name" : "current_state",
"id" : 0,
"source_info" : {
"filename" : "p4src/includes/headers.p4",
"line" : 12,
"column" : 25,
"source_fragment" : "current_state"
},
"size" : 16384,
"bitwidth" : 8
},
{
"name" : "dispatch_state",
"id" : 1,
"source_info" : {
"filename" : "p4src/includes/headers.p4",
"line" : 13,
"column" : 25,
"source_fragment" : "dispatch_state"
},
"size" : 16384,
"bitwidth" : 8
}
],
"calculations" : [
{
"name" : "calc",
"id" : 0,
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 90,
"column" : 8,
"source_fragment" : "verify_checksum( ..."
},
"algo" : "csum16",
"input" : [
{
"type" : "field",
"value" : ["ipv4", "version"]
},
{
"type" : "field",
"value" : ["ipv4", "ihl"]
},
{
"type" : "field",
"value" : ["ipv4", "diffserv"]
},
{
"type" : "field",
"value" : ["ipv4", "totalLen"]
},
{
"type" : "field",
"value" : ["ipv4", "identification"]
},
{
"type" : "field",
"value" : ["ipv4", "flags"]
},
{
"type" : "field",
"value" : ["ipv4", "fragOffset"]
},
{
"type" : "field",
"value" : ["ipv4", "ttl"]
},
{
"type" : "field",
"value" : ["ipv4", "protocol"]
},
{
"type" : "field",
"value" : ["ipv4", "srcAddr"]
},
{
"type" : "field",
"value" : ["ipv4", "dstAddr"]
}
],
"output_width" : 16
},
{
"name" : "calc_0",
"id" : 1,
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 110,
"column" : 8,
"source_fragment" : "update_checksum( ..."
},
"algo" : "csum16",
"input" : [
{
"type" : "field",
"value" : ["ipv4", "version"]
},
{
"type" : "field",
"value" : ["ipv4", "ihl"]
},
{
"type" : "field",
"value" : ["ipv4", "diffserv"]
},
{
"type" : "field",
"value" : ["ipv4", "totalLen"]
},
{
"type" : "field",
"value" : ["ipv4", "identification"]
},
{
"type" : "field",
"value" : ["ipv4", "flags"]
},
{
"type" : "field",
"value" : ["ipv4", "fragOffset"]
},
{
"type" : "field",
"value" : ["ipv4", "ttl"]
},
{
"type" : "field",
"value" : ["ipv4", "protocol"]
},
{
"type" : "field",
"value" : ["ipv4", "srcAddr"]
},
{
"type" : "field",
"value" : ["ipv4", "dstAddr"]
}
],
"output_width" : 16
}
],
"learn_lists" : [],
"actions" : [
{
"name" : "NoAction",
"id" : 0,
"runtime_data" : [],
"primitives" : [],
"source_info" : {
"filename" : "/opt/netronome/p4/include/16/p4include/core.p4",
"line" : 68,
"column" : 7,
"source_fragment" : "NoAction"
}
},
{
"name" : "NoAction",
"id" : 1,
"runtime_data" : [],
"primitives" : [],
"source_info" : {
"filename" : "/opt/netronome/p4/include/16/p4include/core.p4",
"line" : 68,
"column" : 7,
"source_fragment" : "NoAction"
}
},
{
"name" : "fwd_act",
"id" : 2,
"runtime_data" : [
{
"name" : "port",
"bitwidth" : 16
}
],
"primitives" : [
{
"op" : "assign",
"parameters" : [
{
"type" : "field",
"value" : ["standard_metadata", "egress_spec"]
},
{
"type" : "runtime_data",
"value" : 0
}
],
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 13,
"column" : 8,
"source_fragment" : "standard_metadata.egress_spec = port"
}
}
],
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 12,
"column" : 29,
"source_fragment" : "fwd_act"
}
},
{
"name" : "dispatch_act",
"id" : 3,
"runtime_data" : [
{
"name" : "dstAddr",
"bitwidth" : 32
},
{
"name" : "dstPort",
"bitwidth" : 16
},
{
"name" : "ethernetAddr",
"bitwidth" : 48
},
{
"name" : "egress_port",
"bitwidth" : 16
}
],
"primitives" : [
{
"op" : "assign",
"parameters" : [
{
"type" : "field",
"value" : ["ipv4", "dstAddr"]
},
{
"type" : "runtime_data",
"value" : 0
}
],
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 26,
"column" : 8,
"source_fragment" : "hdr.ipv4.dstAddr = dstAddr"
}
},
{
"op" : "assign",
"parameters" : [
{
"type" : "field",
"value" : ["udp", "dstPort"]
},
{
"type" : "runtime_data",
"value" : 1
}
],
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 27,
"column" : 8,
"source_fragment" : "hdr.udp.dstPort = dstPort"
}
},
{
"op" : "assign",
"parameters" : [
{
"type" : "field",
"value" : ["ethernet", "dstAddr"]
},
{
"type" : "runtime_data",
"value" : 2
}
],
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 28,
"column" : 8,
"source_fragment" : "hdr.ethernet.dstAddr = ethernetAddr"
}
}
],
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 25,
"column" : 34,
"source_fragment" : "dispatch_act"
}
},
{
"name" : "fix_checksum",
"id" : 4,
"runtime_data" : [],
"primitives" : [
{
"op" : "assign",
"parameters" : [
{
"type" : "field",
"value" : ["udp", "checksum"]
},
{
"type" : "hexstr",
"value" : "0x0000"
}
],
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 67,
"column" : 8,
"source_fragment" : "hdr.udp.checksum = 16w0"
}
}
],
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 66,
"column" : 33,
"source_fragment" : "fix_checksum"
}
}
],
"pipelines" : [
{
"name" : "ingress",
"id" : 0,
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 10,
"column" : 8,
"source_fragment" : "ingress"
},
"init_table" : "node_2",
"tables" : [
{
"name" : "dispatch",
"id" : 0,
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 31,
"column" : 29,
"source_fragment" : "dispatch"
},
"key" : [
{
"match_type" : "exact",
"target" : ["map_hdr", "function_id"],
"mask" : null
}
],
"match_type" : "exact",
"type" : "simple",
"max_size" : 1024,
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
"action_ids" : [3, 1],
"actions" : ["dispatch_act", "NoAction"],
"base_default_next" : "fwd",
"next_tables" : {
"dispatch_act" : "fwd",
"NoAction" : "fwd"
},
"default_entry" : {
"action_id" : 1,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
}
},
{
"name" : "fwd",
"id" : 1,
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 16,
"column" : 24,
"source_fragment" : "fwd"
},
"key" : [
{
"match_type" : "exact",
"target" : ["standard_metadata", "ingress_port"],
"mask" : null
}
],
"match_type" : "exact",
"type" : "simple",
"max_size" : 1024,
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
"action_ids" : [2, 0],
"actions" : ["fwd_act", "NoAction"],
"base_default_next" : null,
"next_tables" : {
"fwd_act" : null,
"NoAction" : null
},
"default_entry" : {
"action_id" : 0,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
}
},
{
"name" : "fwd",
"id" : 2,
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 16,
"column" : 24,
"source_fragment" : "fwd"
},
"key" : [
{
"match_type" : "exact",
"target" : ["standard_metadata", "ingress_port"],
"mask" : null
}
],
"match_type" : "exact",
"type" : "simple",
"max_size" : 1024,
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
"action_ids" : [2, 0],
"actions" : ["fwd_act", "NoAction"],
"base_default_next" : null,
"next_tables" : {
"fwd_act" : null,
"NoAction" : null
},
"default_entry" : {
"action_id" : 0,
"action_const" : false,
"action_data" : [],
"action_entry_const" : false
}
}
],
"action_profiles" : [],
"conditionals" : [
{
"name" : "node_2",
"id" : 0,
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 41,
"column" : 12,
"source_fragment" : "hdr.ipv4.isValid() && hdr.udp.dstPort == 8000"
},
"expression" : {
"type" : "expression",
"value" : {
"op" : "and",
"left" : {
"type" : "expression",
"value" : {
"op" : "d2b",
"left" : null,
"right" : {
"type" : "field",
"value" : ["ipv4", "$valid$"]
}
}
},
"right" : {
"type" : "expression",
"value" : {
"op" : "==",
"left" : {
"type" : "field",
"value" : ["udp", "dstPort"]
},
"right" : {
"type" : "hexstr",
"value" : "0x1f40"
}
}
}
}
},
"true_next" : "dispatch",
"false_next" : "fwd"
}
]
},
{
"name" : "egress",
"id" : 1,
"source_info" : {
"filename" : "p4src/orchestrator.p4",
"line" : 51,
"column" : 8,
"source_fragment" : "egress"
},
"init_table" : "tbl_fix_checksum",
"tables" : [
{
"name" : "tbl_fix_checksum",
"id" : 3,
"key" : [],
"match_type" : "exact",
"type" : "simple",
"max_size" : 1024,
"with_counters" : false,
"support_timeout" : false,
"direct_meters" : null,
"action_ids" : [4],
"actions" : ["fix_checksum"],
"base_default_next" : null,
"next_tables" : {
"fix_checksum" : null
},
"default_entry" : {
"action_id" : 4,
"action_const" : true,
"action_data" : [],
"action_entry_const" : true
}
}
],
"action_profiles" : [],
"conditionals" : []
}
],
"checksums" : [
{
"name" : "cksum",
"id" : 0,
"target" : ["ipv4", "hdrChecksum"],
"calculation" : "calc",
"verify" : true,
"if_cond" : {
"type" : "expression",
"value" : {
"op" : "d2b",
"left" : null,
"right" : {
"type" : "field",
"value" : ["ipv4", "$valid$"]
}
}
},
"type" : "generic"
},
{
"name" : "cksum_0",
"id" : 1,
"target" : ["ipv4", "hdrChecksum"],
"calculation" : "calc_0",
"verify" : false,
"if_cond" : {
"type" : "expression",
"value" : {
"op" : "d2b",
"left" : null,
"right" : {
"type" : "field",
"value" : ["ipv4", "$valid$"]
}
}
},
"type" : "generic"
}
],
"force_arith" : [],
"extern_instances" : [],
"extern_function_instances" : [],
"field_aliases" : [],
"flow_variables" : []
}
\ No newline at end of file
......@@ -25,16 +25,7 @@ control ingress(inout headers hdr, inout metadata meta, inout standard_metadata_
@name(".dispatch_act") action dispatch_act(bit<32> dstAddr, bit<16> dstPort, bit<48> ethernetAddr , bit<16> egress_port) {
hdr.ipv4.dstAddr = dstAddr;
hdr.udp.dstPort = dstPort;
// hdr.ethernet.dstAddr = ethernetAddr;
// standard_metadata.egress_spec = egress_port;
// bit<48> tempEth = hdr.ethernet.dstAddr;
// hdr.ethernet.dstAddr = hdr.ethernet.srcAddr;
// hdr.ethernet.srcAddr = tempEth;
// standard_metadata.egress_spec = standard_metadata.ingress_port;
// hdr.ipv4.ttl = hdr.ipv4.ttl - 8w1;
hdr.ethernet.dstAddr = ethernetAddr;
}
@name(".dispatch") table dispatch {
......@@ -48,7 +39,7 @@ control ingress(inout headers hdr, inout metadata meta, inout standard_metadata_
apply {
if (hdr.ipv4.isValid() && hdr.udp.dstPort == DISPATCHER_PORT) {
hdr.map_hdr.data = 32w100;
dispatch.apply();
fwd.apply();
} else {
......
{
"tables": [
{
"preamble": {
"id": 33595533,
"name": "fwd",
"alias": "fwd"
},
"matchFields": [
{
"id": 1,
"name": "standard_metadata.ingress_port",
"bitwidth": 16,
"matchType": "EXACT"
}
],
"actionRefs": [
{
"id": 16805069
},
{
"id": 16800567,
"annotations": [
"@defaultonly()"
]
}
],
"size": "1024"
},
{
"preamble": {
"id": 33612818,
"name": "dispatch",
"alias": "dispatch"
},
"matchFields": [
{
"id": 1,
"name": "map_hdr.function_id",
"bitwidth": 32,
"matchType": "EXACT"
}
],
"actionRefs": [
{
"id": 16786857
},
{
"id": 16800567,
"annotations": [
"@defaultonly()"
]
}
],
"size": "1024"
}
],
"actions": [
{
"preamble": {
"id": 16800567,
"name": "NoAction",
"alias": "NoAction"
}
},
{
"preamble": {
"id": 16805069,
"name": "fwd_act",
"alias": "fwd_act"
},
"params": [
{
"id": 1,
"name": "port",
"bitwidth": 16
}
]
},
{
"preamble": {
"id": 16786857,
"name": "dispatch_act",
"alias": "dispatch_act"
},
"params": [
{
"id": 1,
"name": "dstAddr",
"bitwidth": 32
},
{
"id": 2,
"name": "dstPort",
"bitwidth": 16
},
{
"id": 3,
"name": "ethernetAddr",
"bitwidth": 48
},
{
"id": 4,
"name": "egress_port",
"bitwidth": 16
}
]
},
{
"preamble": {
"id": 16841338,
"name": "fix_checksum",
"alias": "fix_checksum"
}
}
]
}
##########################################
# Header instance definitions #
##########################################
errors:
type: enum
values:
- NoError: 1
- PacketTooShort: 2
- NoMatch: 3
- StackOutOfBounds: 4
- HeaderTooShort: 5
- ParserTimeout: 6
ethernet:
fields:
- dstAddr: 48
- srcAddr: 48
- etherType: 16
type: header
exec_hdr:
fields:
- function_count: 8
- function: 8
type: metadata
ing_metadata:
fields:
- drop: 1
- egress_port: 9
- packet_type: 4
- _padding: 2
type: metadata
ipv4:
calculated_fields:
- condition: valid(ipv4)
field: hdrChecksum
func: calc
type: verify
- condition: valid(ipv4)
field: hdrChecksum
func: calc_0
type: update
fields:
- version: 4
- ihl: 4
- diffserv: 8
- totalLen: 16
- identification: 16
- flags: 3
- fragOffset: 13
- ttl: 8
- protocol: 8
- hdrChecksum: 16
- srcAddr: 32
- dstAddr: 32
type: header
map_hdr:
fields:
- chain_id: 32
- exec_id: 32
- function_id: 32
- data: 32
- function_count: 8
- f0: 8
- f1: 8
- f2: 8
- f3: 8
- f4: 8
type: header
resubmit_meta:
fields:
- current_state: 8
- data: 32
type: metadata
standard_metadata:
fields:
- ingress_port: 16
- packet_length: 14
- egress_spec: 16
- egress_port: 16
- egress_instance: 10
- instance_type: 4
- clone_spec: 32
- parser_error_location: 8
- parser_status: 3
- checksum_error: 1
type: metadata
udp:
fields:
- srcPort: 16
- dstPort: 16
- length_: 16
- checksum: 16
type: header
##########################################
# Register definitions #
##########################################
current_state:
class: global
fields:
- value: 8
instance_count: 16384
type: register
dispatch_state:
class: global
fields:
- value: 8
instance_count: 16384
type: register
##########################################
# Field list definitions #
##########################################
field_list_1:
fields:
- ipv4.version
- ipv4.ihl
- ipv4.diffserv
- ipv4.totalLen
- ipv4.identification
- ipv4.flags
- ipv4.fragOffset
- ipv4.ttl
- ipv4.protocol
- ipv4.srcAddr
- ipv4.dstAddr
type: field_list
##########################################
# Field list calculations #
##########################################
calc:
algorithm: csum16
inputs:
- field_list_1
output_width: 16
type: field_list_calculation
calc_0:
algorithm: csum16
inputs:
- field_list_1
output_width: 16
type: field_list_calculation
##########################################
# Parse states #
##########################################
parse_ipv4:
implementation: extract(ipv4);
select_value:
- ipv4.fragOffset
- ipv4.ihl
- ipv4.protocol
src_filename: p4src/includes/parsers.p4
src_lineno: 3
type: parse_state
parse_map_hdr:
implementation: extract(map_hdr);
src_filename: p4src/includes/parsers.p4
src_lineno: 20
type: parse_state
parse_udp:
implementation: extract(udp);
select_value:
- udp.dstPort
src_filename: p4src/includes/parsers.p4
src_lineno: 11
type: parse_state
start:
implementation: extract(ethernet);
select_value:
- ethernet.etherType
src_filename: p4src/includes/parsers.p4
src_lineno: 25
type: parse_state
##########################################
# Parser #
##########################################
parser:
format: dot
implementation: |-
digraph {
start -> parse_ipv4 [value="0x0800", mask="none", order="0"]
start -> exit [value="default", mask="none", order="1"]
parse_ipv4 -> parse_udp [value="0x00000511", mask="0x00000fff", order="0"]
parse_ipv4 -> exit [value="default", mask="none", order="1"]
parse_udp -> parse_map_hdr [value="0x1f40", mask="none", order="0"]
parse_udp -> parse_map_hdr [value="0x2328", mask="none", order="1"]
parse_udp -> exit [value="default", mask="none", order="2"]
parse_map_hdr -> exit [value="default", mask="none", order="0"]
}
start_state: start
type: parser
##########################################
# Action sets #
##########################################
egress::fix_checksum:
implementation: modify_field(udp.checksum, 0x0000);
src_filename: p4src/orchestrator.p4
src_lineno: 66
type: action
ingress::dispatch_act:
implementation: |-
modify_field(ipv4.dstAddr, dstAddr);
modify_field(udp.dstPort, dstPort);
modify_field(ethernet.dstAddr, ethernetAddr);
parameter_list:
- dstAddr: 32
- dstPort: 16
- ethernetAddr: 48
- egress_port: 16
src_filename: p4src/orchestrator.p4
src_lineno: 25
type: action
ingress::fwd_act:
implementation: modify_field(standard_metadata.egress_spec, port);
parameter_list:
- port: 16
src_filename: p4src/orchestrator.p4
src_lineno: 12
type: action
##########################################
# Ingress and Egress tables #
##########################################
egress::tbl_fix_checksum:
allowed_actions:
- egress::fix_checksum
default_entry:
action: egress::fix_checksum
const: true
max_entries: 1025
src_filename: ''
src_lineno: 1
type: table
ingress::dispatch:
allowed_actions:
- ingress::dispatch_act
match_on:
map_hdr.function_id: exact
max_entries: 1025
src_filename: p4src/orchestrator.p4
src_lineno: 31
type: table
ingress::fwd:
allowed_actions:
- ingress::fwd_act
match_on:
standard_metadata.ingress_port: exact
max_entries: 1025
src_filename: p4src/orchestrator.p4
src_lineno: 16
type: table
##########################################
# Ingress conditionals sets #
##########################################
_condition_0:
condition: (((valid(ipv4))) and (((udp.dstPort) == (8000))))
format: bracketed_expr
src_filename: p4src/orchestrator.p4
src_lineno: 41
type: conditional
##########################################
# Ingress control flow #
##########################################
ingress_flow:
doc: control flow for ingress
format: dot
implementation: |-
digraph {
"_condition_0" -> "ingress::fwd" [condition = false]
"_condition_0" -> "ingress::dispatch" [condition = true]
"ingress::fwd" -> "exit_control_flow" [action = always]
"ingress::dispatch" -> "ingress::fwd" [action = always]
}
start_state: _condition_0
type: control_flow
##########################################
# Egress control flow #
##########################################
egress_flow:
doc: control flow for egress
format: dot
implementation: |-
digraph {
"egress::tbl_fix_checksum" -> "exit_control_flow" [action = always]
}
start_state: egress::tbl_fix_checksum
type: control_flow
##########################################
# Deparsers #
##########################################
deparser:
order:
- ethernet
- ipv4
- udp
- map_hdr
type: deparser
##########################################
# Processor layout #
##########################################
layout:
format: list
implementation:
- parser
- ingress
- egress
type: processor_layout
##########################################
# Source info #
##########################################
source_info:
date: 2021/04/23 22:03:40
output_file: p4src/orchestrator.yml
p4_version: '16'
source_files:
- p4src/orchestrator.p4
- ''
- /opt/netronome/p4/include/16/p4include/core.p4
type: source_info
{
"program" : "test.p4",
"program" : "p4src/test.p4",
"__meta__" : {
"version" : [2, 7],
"compiler" : "https://github.com/p4lang/p4c"
......@@ -9,8 +9,7 @@
"name" : "scalars_0",
"id" : 0,
"fields" : [
["chain_state", 8, false],
["chain_state_2", 8, false]
["chain_state", 8, false]
]
},
{
......@@ -181,6 +180,228 @@
"field_lists" : [
{
"id" : 0,
"name" : "fl",
"elements" : [
{
"type" : "field",
"value" : ["standard_metadata", "ingress_port"]
},
{
"type" : "field",
"value" : ["standard_metadata", "packet_length"]
},
{