Following is my makefile. I hope this will help.copy following content in "Makefile" and just run 1) make download_and_extract2) make HOME_DIR = $(shell pwd)DPDK_VERSION=17.05PKTGEN_VERSION=3.2.10####################################################DPDK_PACKAGE_NAME=dpdk-$(DPDK_VERSION)DPDK_TAR_FILE_NAME=$(DPDK_PACKAGE_NAME).tar.xz####################################################PKTGEN_PACKAGE_NAME=pktgen-$(PKTGEN_VERSION)PKTGEN_TAR_FILE_NAME=$(PKTGEN_PACKAGE_NAME).tar.xz####################################################DPDK_SOURCE_CODE_URL=http://fast.dpdk.org/rel/$(DPDK_TAR_FILE_NAME)PKTGEN_SOURCE_CODE_URL=http://dpdk.org/browse/apps/pktgen-dpdk/snapshot/$(PKTGEN_TAR_FILE_NAME)####################################################export RTE_SDK=$(HOME_DIR)/$(DPDK_PACKAGE_NAME)export RTE_TARGET=x86_64-native-linuxapp-gcc####################################################export PKTGEN_PATH=$(HOME_DIR)/$(PKTGEN_PACKAGE_NAME)#################################################### PATH_TO_DPDK_PACKAGE = $(HOME_DIR)/packages/$(DPDK_TAR_FILE_NAME)ifneq ("$(wildcard $(PATH_TO_DPDK_PACKAGE))","") export DPDK_PACKAGE_FILE_EXISTS = 1else export DPDK_PACKAGE_FILE_EXISTS = 0endif PATH_TO_PKTGEN_PACKAGE = $(HOME_DIR)/packages/$(PKTGEN_TAR_FILE_NAME)ifneq ("$(wildcard $(PATH_TO_PKTGEN_PACKAGE))","") export PKTGEN_PACKAGE_FILE_EXISTS = 1else export PKTGEN_PACKAGE_FILE_EXISTS = 0endif #################################################### all: banner make build_dpdk make build_dpdk_all_examples make load_module #################################################### download_and_extract: banner make download make extract download: bannerifeq ($(DPDK_PACKAGE_FILE_EXISTS),1) cp $(HOME_DIR)/packages/$(DPDK_TAR_FILE_NAME)  $(HOME_DIR)else rm -rf $(DPDK_TAR_FILE_NAME) wget $(DPDK_SOURCE_CODE_URL) mkdir -p $(HOME_DIR)/packages cp $(HOME_DIR)/$(DPDK_TAR_FILE_NAME) $(HOME_DIR)/packagesendif####ifeq ($(PKTGEN_PACKAGE_FILE_EXISTS),1) cp $(HOME_DIR)/packages/$(PKTGEN_TAR_FILE_NAME)  $(HOME_DIR)else rm -rf $(PKTGEN_TAR_FILE_NAME) wget $(PKTGEN_SOURCE_CODE_URL) mkdir -p $(HOME_DIR)/packages cp $(HOME_DIR)/$(PKTGEN_TAR_FILE_NAME) $(HOME_DIR)/packagesendif #################################################### extract: tar -xJf $(DPDK_TAR_FILE_NAME) tar -xJf $(PKTGEN_TAR_FILE_NAME) #################################################### build_dpdk: cd $(RTE_SDK) && mkdir -p $(RTE_SDK)/$(RTE_TARGET) cd $(RTE_SDK) && make config T=$(RTE_TARGET)#cd $(RTE_SDK) && sed -ri 's,(PMD_PCAP=).*,\1y,' build/.config cd $(RTE_SDK) && make T=$(RTE_TARGET) cd $(RTE_SDK) && sudo make install cd $(RTE_SDK) && cp $(RTE_SDK)/build/.config    $(RTE_SDK)/$(RTE_TARGET) cd $(RTE_SDK) && cp -r $(RTE_SDK)/build/include $(RTE_SDK)/$(RTE_TARGET) #################################################### load_module: @echo "Loading module uio_pci_generic" sudo modprobe uio_pci_generic sudo modprobe uio -sudo insmod $(RTE_SDK)/build/kmod/igb_uio.ko sudo modprobe vfio-pci #################################################### clean:  banner rm -rf $(RTE_SDK) rm -rf $(PKTGEN_PATH) #################################################### clean_all: banner rm -rf $(RTE_SDK) rm -rf $(DPDK_TAR_FILE_NAME) rm -rf $(PKTGEN_TAR_FILE_NAME) ####################################################example_helloworld: cd $(RTE_SDK)/examples/helloworld && make example_cmdline: cd $(RTE_SDK)/examples/cmdline && make example_vhost: cd $(RTE_SDK)/examples/vhost && make example_exception_path: cd $(RTE_SDK)/examples/exception_path && make example_bond: cd $(RTE_SDK)/examples/bond && make example_ethtool: cd $(RTE_SDK)/examples/ethtool && make example_ip_pipeline: cd $(RTE_SDK)/examples/ip_pipeline && make example_kni: cd $(RTE_SDK)/examples/kni && make example_l2fwd-jobstats: cd $(RTE_SDK)/examples/l2fwd-jobstats && make example_l3fwd-power: cd $(RTE_SDK)/examples/l3fwd-power && make example_performance-thread: cd $(RTE_SDK)/examples/performance-thread && make example_quota_watermark: cd $(RTE_SDK)/examples/quota_watermark && make example_tep_termination: cd $(RTE_SDK)/examples/tep_termination && make example_vmdq: cd $(RTE_SDK)/examples/vmdq && make example_ip_reassembly: cd $(RTE_SDK)/examples/ip_reassembly && make example_l2fwd: cd $(RTE_SDK)/examples/l2fwd && make example_l2fwd-keepalive: cd $(RTE_SDK)/examples/l2fwd-keepalive && make example_l3fwd-vf: cd $(RTE_SDK)/examples/l3fwd-vf && make example_multi_process: cd $(RTE_SDK)/examples/multi_process && make example_ptpclient: cd $(RTE_SDK)/examples/ptpclient && make example_rxtx_callbacks: cd $(RTE_SDK)/examples/rxtx_callbacks && make example_timer: cd $(RTE_SDK)/examples/timer && make example_vmdq_dcb: cd $(RTE_SDK)/examples/vmdq_dcb && make example_distributor: cd $(RTE_SDK)/examples/distributor && make example_ipsec-secgw: cd $(RTE_SDK)/examples/ipsec-secgw && make example_l2fwd-cat: cd $(RTE_SDK)/examples/l2fwd-cat && make example_l3fwd: cd $(RTE_SDK)/examples/l3fwd && make example_link_status_interrupt: cd $(RTE_SDK)/examples/link_status_interrupt && make example_netmap_compat: cd $(RTE_SDK)/examples/netmap_compat && make example_qos_meter: cd $(RTE_SDK)/examples/qos_meter && make example_server_node_efd: cd $(RTE_SDK)/examples/server_node_efd && make example_vm_power_manager: cd $(RTE_SDK)/examples/vm_power_manager && make example_dpdk_qat: cd $(RTE_SDK)/examples/dpdk_qat && make example_ip_fragmentation: cd $(RTE_SDK)/examples/ip_fragmentation && make example_ipv4_multicast: cd $(RTE_SDK)/examples/ipv4_multicast && make example_l2fwd-crypto: cd $(RTE_SDK)/examples/l2fwd-crypto && make example_l3fwd-acl: cd $(RTE_SDK)/examples/l3fwd-acl && make example_load_balancer: cd $(RTE_SDK)/examples/load_balancer && make example_packet_ordering: cd $(RTE_SDK)/examples/packet_ordering && make example_qos_sched: cd $(RTE_SDK)/examples/qos_sched && make example_skeleton: cd $(RTE_SDK)/examples/skeleton && make example_vhost_xen: cd $(RTE_SDK)/examples/vhost_xen && make #################################################### build_dpdk_all_examples: banner make example_vhost make example_helloworld make example_cmdline make example_exception_path make example_bond make example_ethtool make example_ip_pipeline make example_kni make example_l2fwd-jobstats make example_l3fwd-power make example_performance-thread make example_quota_watermark make example_tep_termination make example_vmdq make example_ip_reassembly make example_l2fwd make example_l2fwd-keepalive make example_l3fwd-vf make example_multi_process make example_ptpclient make example_rxtx_callbacks make example_timer make example_vmdq_dcb make example_distributor make example_ipsec-secgw make example_l3fwd make example_link_status_interrupt make example_netmap_compat make example_qos_meter make example_server_node_efd make example_ip_fragmentation make example_ipv4_multicast make example_l2fwd-crypto make example_l3fwd-acl make example_load_balancer make example_packet_ordering make example_qos_sched make example_skeleton #make example_l2fwd-cat #make example_vm_power_manager #make example_dpdk_qat #make example_vhost_xen #################################################### banner: @echo "" @echo "**************************************************" @echo "HOME_DIR=$(HOME_DIR)" @echo "DPDK_VERSION=$(DPDK_VERSION)" @echo "DPDK_PACKAGE_NAME=$(DPDK_PACKAGE_NAME)" @echo "DPDK_TAR_FILE_NAME=$(DPDK_TAR_FILE_NAME)" @echo "DPDK_SOURCE_CODE_URL=$(DPDK_SOURCE_CODE_URL)" @echo "RTE_SDK=$(RTE_SDK)" @echo "RTE_TARGET=$(RTE_TARGET)" @echo "PKTGEN_PACKAGE_NAME=$(PKTGEN_PACKAGE_NAME)" @echo "PKTGEN_TAR_FILE_NAME=$(PKTGEN_TAR_FILE_NAME)" @echo "PKTGEN_SOURCE_CODE_URL=$(PKTGEN_SOURCE_CODE_URL)" @echo "**************************************************" @echo "" #################################################### From: Shyam Shrivastav To: Sam Cc: users@dpdk.org; dev@dpdk.org Sent: Thursday, June 8, 2017 11:43 PM Subject: Re: [dpdk-users] [dpdk-dev] how to build 'example' folder in dpdk-2.2.0? For linux http://dpdk.org/doc/guides/linux_gsg/index.html http://dpdk.org/doc/guides/linux_gsg/build_dpdk.html http://dpdk.org/doc/guides/linux_gsg/build_sample_apps.html On Fri, Jun 9, 2017 at 8:31 AM, Sam wrote: > hi all, > > I want to build example(DPDK_HOME/example/*) in dpdk, and to have a look at > vhost demo. But I can't find guide in dpdk home page or document. > > So is there some document to tell me HOWTO? > From olivier.matz@6wind.com Fri Jun 9 09:18:14 2017 Return-Path: Received: from mail-wr0-f175.google.com (mail-wr0-f175.google.com [209.85.128.175]) by dpdk.org (Postfix) with ESMTP id 2FFD22BA3 for ; Fri, 9 Jun 2017 09:18:14 +0200 (CEST) Received: by mail-wr0-f175.google.com with SMTP id v111so26557264wrc.3 for ; Fri, 09 Jun 2017 00:18:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s 150623; hÚte:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pO7i/rnPOEOPRIe4apvaNwrExETLL8GKthlVCw89WlY=; b=tw7+8Iek8m+TQn0y3k9u/zM0FDidlwMg0hjYpwkopOSMDKmi7wk/GYf9SNxEHvde0K tHYv0088bTnDa1FRT8W29ZnrpNdxeyRduoJ760q2xhtX/RwsxYjwCY847WabOhh2HzGk uC0YWzdQc2Fm/xiVTxUQBAgr9iEES68bsvGegqumKigKMYBlFc4w2CalvwOtIeLHDTBr HcRd1mS9UDn4zDrRRt4t1i3qQsnVUJsjbOPqRVZLrx5x80eJ8bdgKyloTeFjleUM1LLI V+Bi4y0/XH5AmArd9JJZOqi0ZQzgb6h2qCPNLDddpUuzhewAF6fVo0kOdeMksonFdgKd udRg=X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d100.net; s 161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pO7i/rnPOEOPRIe4apvaNwrExETLL8GKthlVCw89WlY=; b=fWVygQovMtFLK1f58kjUBOuI8IBqlVer2e3bkQyJvmEB4Pbr8TGlesaAeoHHEsbTMM JHtnA2qLcjDkXUqmsjf/HLUTGCkGLKKZQRTFm55geZgcfrPjo8rvThOVM2DRri05AOmn jkZjh65diywtSqlR2cOo2mGRPmZ1llo+xSXeGsM59FM0OCe6xipFbvabpfqWnDvNcu9F aKbZwucHGkkhTgSiW21ESiAa5SOITV+0LVpJUsMYlsvwmXFC39MdG5O5zyF4OpY3gJQf XOIS0UBpRv4I2yRaOk19bEY4uzB95E+tmfncM5xkVxo3pRqtHm4ONpH8x7jTdvVgyiUS jksw=X-Gm-Message-State: AODbwcCY3qW7tyug9C6a6ZGAN72BAf8EL+LjlBLJR0XbTwtF6hXRWfAh 9fgpfMwUiq9vgDHW X-Received: by 10.223.136.14 with SMTP id d14mr26330869wrd.168.1496992693819; Fri, 09 Jun 2017 00:18:13 -0700 (PDT) Received: from platinum (2a01cb0c03c651000226b0fffeed02fc.ipv6.abo.wanadoo.fr. [2a01:cb0c:3c6:5100:226:b0ff:feed:2fc]) by smtp.gmail.com with ESMTPSA id s10sm689972wmb.8.2017.06.09.00.18.13 (version=TLS1_2 cipherìDHE-RSA-CHACHA20-POLY1305 bits%6/256); Fri, 09 Jun 2017 00:18:13 -0700 (PDT) Date: Fri, 9 Jun 2017 09:18:11 +0200 From: Olivier Matz To: "Patil, Harish" Cc: "Mody, Rasesh" , Ferruh Yigit , "dev@dpdk.org" , Dept-Eng DPDK Dev Message-ID: <20170609091811.0867b1d1@platinum> In-Reply-To: References: <1495960654-352-1-git-send-email-rasesh.mody@cavium.com> <1496821429-6954-1-git-send-email-rasesh.mody@cavium.com> <20170608142545.10cc8326@platinum> X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [dpdk-dev] [PATCH v2 1/2] mbuf: introduce new Tx offload flag for MPLS-in-UDP X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2017 07:18:14 -0000 On Thu, 8 Jun 2017 21:46:00 +0000, "Patil, Harish" wrote: > >Hi Rasesh, > > > >On Wed, 7 Jun 2017 00:43:48 -0700, Rasesh Mody > >wrote: > >> From: Harish Patil > >> > >> Some PMDs need to know the tunnel type in order to handle advance TX > >> features. This patch adds a new TX offload flag for MPLS-in-UDP packets. > >> > >> Signed-off-by: Harish Patil > >> --- > >> lib/librte_mbuf/rte_mbuf.c | 2 ++ > >> lib/librte_mbuf/rte_mbuf.h | 17 ++++++++++------- > >> 2 files changed, 12 insertions(+), 7 deletions(-) > >> > >> diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c > >> index 0e3e36a..c2793fb 100644 > >> --- a/lib/librte_mbuf/rte_mbuf.c > >> +++ b/lib/librte_mbuf/rte_mbuf.c > >> @@ -410,6 +410,7 @@ const char *rte_get_tx_ol_flag_name(uint64_t mask) > >> case PKT_TX_TUNNEL_IPIP: return "PKT_TX_TUNNEL_IPIP"; > >> case PKT_TX_TUNNEL_GENEVE: return "PKT_TX_TUNNEL_GENEVE"; > >> case PKT_TX_MACSEC: return "PKT_TX_MACSEC"; > >> + case PKT_TX_TUNNEL_MPLSINUDP: return "PKT_TX_TUNNEL_MPLSINUDP"; > >> default: return NULL; > >> } > >> } > >> @@ -441,6 +442,7 @@ const char *rte_get_tx_ol_flag_name(uint64_t mask) > >> { PKT_TX_TUNNEL_GENEVE, PKT_TX_TUNNEL_MASK, > >> "PKT_TX_TUNNEL_NONE" }, > >> { PKT_TX_MACSEC, PKT_TX_MACSEC, NULL }, > >> + { PKT_TX_TUNNEL_MPLSINUDP, PKT_TX_TUNNEL_MPLSINUDP, NULL }, > >> }; > >> const char *name; > >> unsigned int i; > >> diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h > >> index 1cb0310..27ad421 100644 > >> --- a/lib/librte_mbuf/rte_mbuf.h > >> +++ b/lib/librte_mbuf/rte_mbuf.h > >> @@ -197,19 +197,22 @@ > >> * Offload the MACsec. This flag must be set by the application to > >>enable > >> * this offload feature for a packet to be transmitted. > >> */ > >> -#define PKT_TX_MACSEC (1ULL << 44) > >> +#define PKT_TX_MACSEC (1ULL << 43) > > > >I'm not sure it is suitable to change the value of an existing > >flag, since it breaks the ABI. > > > > > >> /** > >> - * Bits 45:48 used for the tunnel type. > >> + * Bits 44:48 used for the tunnel type. > >> * When doing Tx offload like TSO or checksum, the HW needs to > >>configure the > >> * tunnel type into the HW descriptors. > >> */ > >> -#define PKT_TX_TUNNEL_VXLAN (0x1ULL << 45) > >> -#define PKT_TX_TUNNEL_GRE (0x2ULL << 45) > >> -#define PKT_TX_TUNNEL_IPIP (0x3ULL << 45) > >> -#define PKT_TX_TUNNEL_GENEVE (0x4ULL << 45) > >> +/**< TX packet with MPLS-in-UDP RFC 7510 header. */ > >> +#define PKT_TX_TUNNEL_MPLSINUDP (0x1ULL << 44) > >> + > >> +#define PKT_TX_TUNNEL_VXLAN (0x2ULL << 44) > >> +#define PKT_TX_TUNNEL_GRE (0x3ULL << 44) > >> +#define PKT_TX_TUNNEL_IPIP (0x4ULL << 44) > >> +#define PKT_TX_TUNNEL_GENEVE (0x5ULL << 45) > >> /* add new TX TUNNEL type here */ > >> -#define PKT_TX_TUNNEL_MASK (0xFULL << 45) > >> +#define PKT_TX_TUNNEL_MASK (0x1FULL << 44) > >> > >> /** > >> * Second VLAN insertion (QinQ) flag. > > > >I dont understand why adding > >#define PKT_TX_TUNNEL_MPLSINUDP (0x5ULL << 45) > >wouldn't do the job? > > > >Currently, the tunnel mask is 0xF << 45, which gives 16 possible values. > > [Harish] Hi Olivier, > Not too sure whether I understand your comment. > My understanding is that those are bitmapped values for each Tx tunnel > type in the range [48:45]. > They are not values. So defining PKT_TX_TUNNEL_MPLSINUDP (0x5ULL << 45) > won’t work. Currently, we have: #define PKT_TX_TUNNEL_VXLAN (0x1ULL << 45) in binary: 000..000[0001]000..000 #define PKT_TX_TUNNEL_GRE (0x2ULL << 45) in binary: 000..000[0010]000..000 #define PKT_TX_TUNNEL_IPIP (0x3ULL << 45) in binary: 000..000[0011]000..000 #define PKT_TX_TUNNEL_GENEVE (0x4ULL << 45) in binary: 000..000[0100]000..000 So, I'm still saying there's a room for 11 more values. Olivier