diff options
| author | root <root@atca1.(none)> | 2015-05-28 13:26:30 +0800 |
|---|---|---|
| committer | root <root@atca1.(none)> | 2015-05-28 13:26:30 +0800 |
| commit | b5c72a08da2401f6dd5084596842da9a7f95da1a (patch) | |
| tree | 2e46bea5cca17655a722212f83174b5f1c2d18fd | |
| parent | 576df4a94f5d498802ba3e5c38d42ff466729e21 (diff) | |
适配DPDK2.0.020150528
| -rw-r--r-- | driver/Makefile | 2 | ||||
| -rw-r--r-- | driver/init.c | 2 | ||||
| -rw-r--r-- | driver/nstat.h | 7 | ||||
| -rw-r--r-- | logreader/Makefile | 1 | ||||
| -rw-r--r-- | logreader/dlogreader/Makefile | 4 | ||||
| -rw-r--r-- | logreader/dlogreader/nstat.h | 7 | ||||
| -rw-r--r-- | logreader/ethreader/Makefile | 2 | ||||
| -rw-r--r-- | test/test.c | 9 | ||||
| -rw-r--r-- | worker/Makefile | 2 | ||||
| -rw-r--r-- | worker/nl2fwd.c | 33 | ||||
| -rw-r--r-- | worker/nstat.h | 5 | ||||
| -rw-r--r-- | worker/runtime.c | 37 | ||||
| -rw-r--r-- | worker/vlan.c | 2 |
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++) |
