summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@atca1.(none)>2015-05-28 13:26:30 +0800
committerroot <root@atca1.(none)>2015-05-28 13:26:30 +0800
commitb5c72a08da2401f6dd5084596842da9a7f95da1a (patch)
tree2e46bea5cca17655a722212f83174b5f1c2d18fd
parent576df4a94f5d498802ba3e5c38d42ff466729e21 (diff)
适配DPDK2.0.020150528
-rw-r--r--driver/Makefile2
-rw-r--r--driver/init.c2
-rw-r--r--driver/nstat.h7
-rw-r--r--logreader/Makefile1
-rw-r--r--logreader/dlogreader/Makefile4
-rw-r--r--logreader/dlogreader/nstat.h7
-rw-r--r--logreader/ethreader/Makefile2
-rw-r--r--test/test.c9
-rw-r--r--worker/Makefile2
-rw-r--r--worker/nl2fwd.c33
-rw-r--r--worker/nstat.h5
-rw-r--r--worker/runtime.c37
-rw-r--r--worker/vlan.c2
13 files changed, 79 insertions, 34 deletions
diff --git a/driver/Makefile b/driver/Makefile
index 6c2a3f8..6ad900e 100644
--- a/driver/Makefile
+++ b/driver/Makefile
@@ -24,7 +24,7 @@ MODULES += $(APP_ROOT)/lib/libMESA_prof_load.a
CC = gcc
SRC = $(wildcard ${DIR_SRC}/*.c)
OBJ = $(patsubst %.c,${DIR_OBJ}/%.o,$(notdir ${SRC}))
-LDFLAG += -lrt -lpthread
+LDFLAG += -lrt -lpthread -ldl
CFLAGS += -g -fPIC ${OPTFLAGS} ${DIR_INC} -L${DIR_LIB} -std=gnu99 -include ${DPDK_CONFIG} $(MODULES_CFAGS) $(MACHINE_CFLAGS)
${TARGET}:${OBJ}
diff --git a/driver/init.c b/driver/init.c
index a89e1b3..780adc2 100644
--- a/driver/init.c
+++ b/driver/init.c
@@ -512,7 +512,7 @@ app_init_nics(void)
/* Init driver */
printf("Initializing the PMD driver ...\n");
-#if RTE_VER_MAJOR >=1 && RTE_VER_MINOR <= 6
+#if RTE_VERSION < RTE_VERSION_NUM(1,6,0,0)
if (rte_pmd_init_all() < 0) {
rte_panic("Cannot init PMD\n");
}
diff --git a/driver/nstat.h b/driver/nstat.h
index 6611495..ff544b0 100644
--- a/driver/nstat.h
+++ b/driver/nstat.h
@@ -3,6 +3,7 @@
#define __SERIAL_MULTIPROCESS_NSTAT_SERVER_INCLUDE_H__
#include <rte_mbuf.h>
+#include <rte_version.h>
#include <nstat_common.h>
// Get the Pkts total length.
@@ -11,7 +12,11 @@ static inline uint64_t nstat_pktslen(struct rte_mbuf ** mbufs, unsigned nb_mbufs
uint64_t datalen = 0;
for(int i = 0; i < nb_mbufs; i++)
{
- datalen += mbufs[i]->pkt.pkt_len + APP_PKT_OVERHEAD;
+#if RTE_VERSION < RTE_VERSION_NUM(1,8,0,0)
+ datalen += mbufs[i]->pkt.pkt_len + APP_PKT_OVERHEAD;
+#elif RTE_VERSION >= RTE_VERSION_NUM(1,8,0,0)
+ datalen += mbufs[i]->pkt_len + APP_PKT_OVERHEAD;
+#endif
}
return datalen;
diff --git a/logreader/Makefile b/logreader/Makefile
index 2b891b2..9f3a7b9 100644
--- a/logreader/Makefile
+++ b/logreader/Makefile
@@ -20,6 +20,7 @@ export DPDK_TARGET
export APP_ROOT
export INSTALL
export LIB_INSTALL
+export MACHINE_CFLAGS
.PHONY: install clean
diff --git a/logreader/dlogreader/Makefile b/logreader/dlogreader/Makefile
index 8c2dc09..94f5c31 100644
--- a/logreader/dlogreader/Makefile
+++ b/logreader/dlogreader/Makefile
@@ -24,8 +24,8 @@ MODULES += $(APP_ROOT)/lib/libMESA_prof_load.a
CC = gcc
SRC = $(wildcard ${DIR_SRC}/*.c)
OBJ = $(patsubst %.c,${DIR_OBJ}/%.o,$(notdir ${SRC}))
-LDFLAG += -lrt -lpthread
-CFLAGS += -g -fPIC ${OPTFLAGS} ${DIR_INC} -L${DIR_LIB} -std=gnu99 -include ${DPDK_CONFIG} $(MODULES_CFAGS)
+LDFLAG += -lrt -lpthread -ldl
+CFLAGS += -g -fPIC ${OPTFLAGS} ${DIR_INC} -L${DIR_LIB} -std=gnu99 -include ${DPDK_CONFIG} $(MODULES_CFAGS) ${MACHINE_CFLAGS}
${TARGET}:${OBJ}
${CC} ${LDFLAG} -o $@ ${OBJ} ${MODULES}
diff --git a/logreader/dlogreader/nstat.h b/logreader/dlogreader/nstat.h
index 6611495..ff544b0 100644
--- a/logreader/dlogreader/nstat.h
+++ b/logreader/dlogreader/nstat.h
@@ -3,6 +3,7 @@
#define __SERIAL_MULTIPROCESS_NSTAT_SERVER_INCLUDE_H__
#include <rte_mbuf.h>
+#include <rte_version.h>
#include <nstat_common.h>
// Get the Pkts total length.
@@ -11,7 +12,11 @@ static inline uint64_t nstat_pktslen(struct rte_mbuf ** mbufs, unsigned nb_mbufs
uint64_t datalen = 0;
for(int i = 0; i < nb_mbufs; i++)
{
- datalen += mbufs[i]->pkt.pkt_len + APP_PKT_OVERHEAD;
+#if RTE_VERSION < RTE_VERSION_NUM(1,8,0,0)
+ datalen += mbufs[i]->pkt.pkt_len + APP_PKT_OVERHEAD;
+#elif RTE_VERSION >= RTE_VERSION_NUM(1,8,0,0)
+ datalen += mbufs[i]->pkt_len + APP_PKT_OVERHEAD;
+#endif
}
return datalen;
diff --git a/logreader/ethreader/Makefile b/logreader/ethreader/Makefile
index b7ad43d..7de0848 100644
--- a/logreader/ethreader/Makefile
+++ b/logreader/ethreader/Makefile
@@ -20,7 +20,7 @@ CC = gcc
SRC = $(wildcard ${DIR_SRC}/*.c)
OBJ = $(patsubst %.c,${DIR_OBJ}/%.o,$(notdir ${SRC}))
LDFLAG += -lrt -lpthread
-CFLAGS += -g -fPIC ${OPTFLAGS} ${DIR_INC} -L${DIR_LIB} -std=gnu99 -include ${DPDK_CONFIG} $(MODULES_CFAGS)
+CFLAGS += -g -fPIC ${OPTFLAGS} ${DIR_INC} -L${DIR_LIB} -std=gnu99 -include ${DPDK_CONFIG} $(MODULES_CFAGS) ${MACHINE_CFLAGS}
${TARGET}:${OBJ}
${CC} ${LDFLAG} -o $@ ${OBJ} ${MODULES}
diff --git a/test/test.c b/test/test.c
index bff0a80..5400a6a 100644
--- a/test/test.c
+++ b/test/test.c
@@ -5,13 +5,8 @@
int l2fwd_data(const unsigned char *data,int datalen,int dst,int lcore)
{
- data = 0;
- datalen = 0;
-
- dst = 0;
- lcore = 0;
-
- return 1;
+// dpdk_send_packet_dst(data, datalen, dst);
+ return 0;
}
int main(int argc,char **argv)
diff --git a/worker/Makefile b/worker/Makefile
index 503d6f9..db99533 100644
--- a/worker/Makefile
+++ b/worker/Makefile
@@ -28,7 +28,7 @@ BSNAME = libnl2fwd.so
TARGET = libnl2fwd.so.${MAJOR_VERSION}.${SUB_VERSION}
SONAME = libnl2fwd.so.${MAJOR_VERSION}
SOFILE = ${DIR_BIN}/${TARGET}
-LDFLAG = -lpthread -lrt -lm -lpcap -lnet
+LDFLAG = -lpthread -lrt -lm -lpcap -lnet -ldl
CC = gcc
CFLAGS = -g -fPIC ${OPTFLAGS} ${DIR_INC} -L${DIR_LIB} -std=gnu99 -include ${DPDK_CONFIG} ${MODULES_CFLAG} $(MACHINE_CFLAGS)
diff --git a/worker/nl2fwd.c b/worker/nl2fwd.c
index b793efe..e21d73f 100644
--- a/worker/nl2fwd.c
+++ b/worker/nl2fwd.c
@@ -53,15 +53,6 @@
FILE *warn_output_stream = NULL;
FILE *err_output_stream = NULL;
-static inline struct rte_mbuf * rte_rxmbuf_alloc(struct rte_mempool *mp)
-{
- struct rte_mbuf *m;
- m = __rte_mbuf_raw_alloc(mp);
- __rte_mbuf_sanity_check_raw(m,RTE_MBUF_PKT,0);
-
- return (m);
-}
-
int dpdk_register_callfunc(int (*func)(const unsigned char *data,int datalen,int port_in,int lcore))
{
app.pkt_callback_f.rx_pkt_process = func;
@@ -97,7 +88,7 @@ int dpdk_send_packet_port(const unsigned char *data, int datalen, int port)
return -1;
}
- pkt_burst = rte_rxmbuf_alloc(app.lcore_params[lcore_id].pool);
+ pkt_burst = rte_pktmbuf_alloc(app.lcore_params[lcore_id].pool);
if(pkt_burst == NULL) {
fprintf(warn_output_stream,"WARNING(core_id=%d),Alloc mbuf failed,ignore the pkt\n",
@@ -105,13 +96,21 @@ int dpdk_send_packet_port(const unsigned char *data, int datalen, int port)
return -1;
}
- pkt_burst->pkt.nb_segs = 1;
- pkt_burst->pkt.next = NULL;
- pkt_burst->pkt.in_port = port;
- pkt_burst->pkt.pkt_len = datalen;
- pkt_burst->pkt.data_len = datalen;
+#if RTE_VERSION < RTE_VERSION_NUM(1,8,0,0)
+ pkt_burst->pkt.nb_segs = 1;
+ pkt_burst->pkt.next = NULL;
+ pkt_burst->pkt.in_port = port;
+ pkt_burst->pkt.pkt_len = datalen;
+ pkt_burst->pkt.data_len = datalen;
+#elif RTE_VERSION >= RTE_VERSION_NUM(1,8,0,0)
+ pkt_burst->nb_segs = 1;
+ pkt_burst->next = NULL;
+ pkt_burst->port = port;
+ pkt_burst->pkt_len = datalen;
+ pkt_burst->data_len = datalen;
+#endif
- rte_memcpy(pkt_burst->pkt.data, data, datalen);
+ rte_memcpy(rte_pktmbuf_mtod(pkt_burst, void *), data, datalen);
#if APP_MKPKT_IP_CHECKSUM
pkt_burst->ol_flags |= PKT_TX_IP_CKSUM;
@@ -183,7 +182,7 @@ void sigint_handler(int signo)
int dpdk_init(int argc,char **argv)
{
- static inited_flag = 0;
+ static int inited_flag = 0;
if(inited_flag != 0)
{
return 0;
diff --git a/worker/nstat.h b/worker/nstat.h
index dafbd8f..294982e 100644
--- a/worker/nstat.h
+++ b/worker/nstat.h
@@ -3,6 +3,7 @@
#define __SERIAL_MULTIPROCESS_NSTAT_CLIENT_INCLUDE_H__
#include <rte_mbuf.h>
+#include <rte_version.h>
#include <nstat_common.h>
#include "main.h"
@@ -12,7 +13,11 @@ static inline uint64_t nstat_pktslen(struct rte_mbuf ** mbufs, unsigned nb_mbufs
uint64_t datalen = 0;
for(int i = 0; i < nb_mbufs; i++)
{
+#if RTE_VERSION < RTE_VERSION_NUM(1,8,0,0)
datalen += mbufs[i]->pkt.pkt_len + APP_PKT_OVERHEAD;
+#elif RTE_VERSION >= RTE_VERSION_NUM(1,8,0,0)
+ datalen += mbufs[i]->pkt_len + APP_PKT_OVERHEAD;
+#endif
}
return datalen;
diff --git a/worker/runtime.c b/worker/runtime.c
index 21183d4..1e21d5b 100644
--- a/worker/runtime.c
+++ b/worker/runtime.c
@@ -110,10 +110,18 @@ pktmbuf_clone_memcpy(struct rte_mbuf * md, struct rte_mempool * mp)
return (NULL);
mi = mc;
+
+#if RTE_VERSION < RTE_VERSION_NUM(1,8,0,0)
prev = &mi->pkt.next;
pktlen = md->pkt.pkt_len;
nseg = 0;
+#elif RTE_VERSION >= RTE_VERSION_NUM(1,8,0,0)
+ prev = &mi->next;
+ pktlen = md->pkt_len;
+ nseg = 0;
+#endif
+#if RTE_VERSION < RTE_VERSION_NUM(1,8,0,0)
do {
nseg++;
rte_memcpy(rte_pktmbuf_mtod(mi,void *),
@@ -135,6 +143,29 @@ pktmbuf_clone_memcpy(struct rte_mbuf * md, struct rte_mempool * mp)
mc->pkt.nb_segs = nseg;
mc->pkt.pkt_len = pktlen;
+#elif RTE_VERSION >= RTE_VERSION_NUM(1,8,0,0)
+ do {
+ nseg++;
+ rte_memcpy(rte_pktmbuf_mtod(mi,void *),
+ rte_pktmbuf_mtod(md,void *),
+ rte_pktmbuf_data_len(md));
+
+ mi->next = NULL;
+ mi->pkt_len = rte_pktmbuf_data_len(md);
+ mi->data_len = rte_pktmbuf_data_len(md);
+ mi->nb_segs = 1;
+
+ *prev = mi;
+ prev = &mi->next;
+
+ } while ((md = md->next) != NULL &&
+ (mi = rte_pktmbuf_alloc(mp)) != NULL);
+
+ *prev = NULL;
+ mc->nb_segs = nseg;
+ mc->pkt_len = pktlen;
+#endif
+
/* Allocation of new indirect segment failed */
if (unlikely (mi == NULL)) {
rte_pktmbuf_free(mc);
@@ -184,7 +215,7 @@ app_pkt_map_call_extern_func(struct rte_mbuf *pkt)
unsigned char * pkt_data = rte_pktmbuf_mtod(pkt,void *);
int pkt_len = rte_pktmbuf_data_len(pkt);
-#if RTE_VER_MAJOR >= 1 && RTE_VER_MINOR >= 8
+#if RTE_VERSION >= RTE_VERSION_NUM(1,8,0,0)
int in_port = pkt->port;
#else
int in_port = pkt->pkt.in_port;
@@ -318,7 +349,11 @@ app_lcore_worker(
uint8_t * out_portseq = NULL;
int nb_out_portseq = 0;
+#if RTE_VERSION < RTE_VERSION_NUM(1,8,0,0)
portmap_lookup_with_application_ret(application_ret,pkt->pkt.in_port,&out_portseq,&nb_out_portseq);
+#else
+ portmap_lookup_with_application_ret(application_ret,pkt->port,&out_portseq,&nb_out_portseq);
+#endif
if(unlikely(out_portseq == NULL || nb_out_portseq == 0)) // Fail in lookup portmap
{
diff --git a/worker/vlan.c b/worker/vlan.c
index df68a98..18ea85b 100644
--- a/worker/vlan.c
+++ b/worker/vlan.c
@@ -77,7 +77,7 @@ int vlan_tag_rd_paras(char * cfg_path)
int vlan_tag_pkt(struct rte_mbuf * pkt,int port)
{
- uint8_t * data = pkt->pkt.data;
+ uint8_t * data = rte_pktmbuf_mtod(pkt, uint8_t *);
struct ether_hdr * hdr = (struct ether_hdr *)(data);
for(int i = 0; i < vlan_tag_paras.n_rules; i++)