Imported Upstream version 16.07-rc5 91/2091/1
authorRicardo Salveti <ricardo.salveti@linaro.org>
Tue, 26 Jul 2016 17:11:48 +0000 (14:11 -0300)
committerRicardo Salveti <ricardo.salveti@linaro.org>
Tue, 26 Jul 2016 17:12:04 +0000 (14:12 -0300)
Change-Id: I3f93dd2982ddb9c0209bc44466d05a2320175938
Signed-off-by: Ricardo Salveti <ricardo.salveti@linaro.org>
MAINTAINERS
app/test/Makefile
drivers/net/i40e/i40e_ethdev.c
examples/ptpclient/Makefile
lib/librte_eal/common/include/rte_version.h
lib/librte_mempool/rte_mempool.c
lib/librte_ring/rte_ring.h
lib/librte_timer/rte_timer.c
lib/librte_vhost/vhost_rxtx.c
mk/rte.lib.mk
mk/toolchain/clang/rte.toolchain-compat.mk

index 92ea5d7..d099131 100644 (file)
@@ -30,6 +30,9 @@ F: scripts/checkpatches.sh
 F: scripts/load-devel-config.sh
 F: scripts/test-build.sh
 
+Stable Branches
+---------------
+T: git://dpdk.org/dpdk-stable
 
 Security Issues
 ---------------
index 6015b19..49ea195 100644 (file)
@@ -158,7 +158,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline_string.c
 SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline_lib.c
 
 ifeq ($(CONFIG_RTE_LIBRTE_SCHED),y)
-LDLIBS += -lrt
 SRCS-y += test_red.c
 SRCS-y += test_sched.c
 endif
index 11a5804..d0aeb70 100644 (file)
@@ -4110,7 +4110,6 @@ i40e_vsi_release(struct i40e_vsi *vsi)
                TAILQ_FOREACH_SAFE(vsi_list, &vsi->veb->head, list, temp) {
                        if (i40e_vsi_release(vsi_list->vsi) != I40E_SUCCESS)
                                return -1;
-                       TAILQ_REMOVE(&vsi->veb->head, vsi_list, list);
                }
                i40e_veb_release(vsi->veb);
        }
@@ -4119,7 +4118,6 @@ i40e_vsi_release(struct i40e_vsi *vsi)
                TAILQ_FOREACH_SAFE(vsi_list, &vsi->floating_veb->head, list, temp) {
                        if (i40e_vsi_release(vsi_list->vsi) != I40E_SUCCESS)
                                return -1;
-                       TAILQ_REMOVE(&vsi->floating_veb->head, vsi_list, list);
                }
        }
 
index d241730..b77cf71 100644 (file)
@@ -46,7 +46,6 @@ SRCS-y := ptpclient.c
 
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
-LDLIBS += -lrt
 
 # workaround for a gcc bug with noreturn attribute
 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603
index bbffecf..1e14761 100644 (file)
@@ -77,7 +77,7 @@ extern "C" {
  *   0-15 = release candidates
  *   16   = release
  */
-#define RTE_VER_RELEASE 4
+#define RTE_VER_RELEASE 5
 
 /**
  * Macro to compute a version number usable for comparisons
index 8806633..2e28e2e 100644 (file)
@@ -1283,12 +1283,13 @@ void rte_mempool_walk(void (*func)(struct rte_mempool *, void *),
 {
        struct rte_tailq_entry *te = NULL;
        struct rte_mempool_list *mempool_list;
+       void *tmp_te;
 
        mempool_list = RTE_TAILQ_CAST(rte_mempool_tailq.head, rte_mempool_list);
 
        rte_rwlock_read_lock(RTE_EAL_MEMPOOL_RWLOCK);
 
-       TAILQ_FOREACH(te, mempool_list, next) {
+       TAILQ_FOREACH_SAFE(te, mempool_list, next, tmp_te) {
                (*func)((struct rte_mempool *) te->data, arg);
        }
 
index f928324..0e22e69 100644 (file)
@@ -756,7 +756,7 @@ __rte_ring_sc_do_dequeue(struct rte_ring *r, void **obj_table,
 
        /* copy in table */
        DEQUEUE_PTRS();
-       rte_smp_wmb();
+       rte_smp_rmb();
 
        __RING_STAT_ADD(r, deq_success, n);
        r->cons.tail = cons_next;
index 3dcdab5..43da836 100644 (file)
@@ -69,6 +69,9 @@ struct priv_timer {
 
        unsigned prev_lcore;              /**< used for lcore round robin */
 
+       /** running timer on this lcore now */
+       struct rte_timer *running_tim;
+
 #ifdef RTE_LIBRTE_TIMER_DEBUG
        /** per-lcore statistics */
        struct rte_timer_debug_stats stats;
@@ -135,9 +138,12 @@ timer_set_config_state(struct rte_timer *tim,
        while (success == 0) {
                prev_status.u32 = tim->status.u32;
 
-               /* timer is running on another core, exit */
+               /* timer is running on another core
+                * or ready to run on local core, exit
+                */
                if (prev_status.state == RTE_TIMER_RUNNING &&
-                   prev_status.owner != (uint16_t)lcore_id)
+                   (prev_status.owner != (uint16_t)lcore_id ||
+                    tim != priv_timer[lcore_id].running_tim))
                        return -1;
 
                /* timer is being configured on another core */
@@ -543,6 +549,8 @@ void rte_timer_manage(void)
        /* break the existing list at current time point */
        timer_get_prev_entries(cur_time, lcore_id, prev);
        for (i = priv_timer[lcore_id].curr_skiplist_depth -1; i >= 0; i--) {
+               if (prev[i] == &priv_timer[lcore_id].pending_head)
+                       continue;
                priv_timer[lcore_id].pending_head.sl_next[i] =
                    prev[i]->sl_next[i];
                if (prev[i]->sl_next[i] == NULL)
@@ -562,10 +570,9 @@ void rte_timer_manage(void)
                        pprev = &tim->sl_next[0];
                } else {
                        /* another core is trying to re-config this one,
-                        * remove it from local expired list and put it
-                        * back on the priv_timer[] skip list */
+                        * remove it from local expired list
+                        */
                        *pprev = next_tim;
-                       timer_add(tim, lcore_id, 1);
                }
        }
 
@@ -580,6 +587,7 @@ void rte_timer_manage(void)
        for (tim = run_first_tim; tim != NULL; tim = next_tim) {
                next_tim = tim->sl_next[0];
                priv_timer[lcore_id].updated = 0;
+               priv_timer[lcore_id].running_tim = tim;
 
                /* execute callback function with list unlocked */
                tim->f(tim, tim->arg);
@@ -610,6 +618,7 @@ void rte_timer_manage(void)
                        rte_spinlock_unlock(&priv_timer[lcore_id].list_lock);
                }
        }
+       priv_timer[lcore_id].running_tim = NULL;
 }
 
 /* dump statistics about timers */
index bc00518..08a73fd 100644 (file)
@@ -748,7 +748,7 @@ copy_desc_to_mbuf(struct virtio_net *dev, struct vhost_virtqueue *vq,
                                break;
 
                        if (unlikely(desc->next >= vq->size ||
-                                    ++nr_desc >= vq->size))
+                                    ++nr_desc > vq->size))
                                return -1;
                        desc = &vq->desc[desc->next];
 
index 0187ae8..830f81a 100644 (file)
@@ -93,8 +93,12 @@ O_TO_A_DO = @set -e; \
        $(O_TO_A) && \
        echo $(O_TO_A_CMD) > $(call exe2cmd,$(@))
 
+ifneq ($(CC_SUPPORTS_Z),false)
+NO_UNDEFINED := -z defs
+endif
+
 O_TO_S = $(LD) -L$(RTE_SDK_BIN)/lib $(_CPU_LDFLAGS) $(EXTRA_LDFLAGS) \
-         -shared $(OBJS-y) -z defs $(LDLIBS) -Wl,-soname,$(LIB) -o $(LIB)
+         -shared $(OBJS-y) $(NO_UNDEFINED) $(LDLIBS) -Wl,-soname,$(LIB) -o $(LIB)
 O_TO_S_STR = $(subst ','\'',$(O_TO_S)) #'# fix syntax highlight
 O_TO_S_DISP = $(if $(V),"$(O_TO_S_STR)","  LD $(@)")
 O_TO_S_DO = @set -e; \
index f995b0b..b734413 100644 (file)
 
 # find out CLANG version
 
-CLANG_MAJOR_VERSION = $(shell $(CC) -dumpversion | cut -f1 -d.)
+CLANG_VERSION := $(shell $(CC) -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/")
 
-CLANG_MINOR_VERSION = $(shell $(CC) -dumpversion | cut -f2 -d.)
+CLANG_MAJOR_VERSION := $(shell echo $(CLANG_VERSION) | cut -f1 -d.)
+
+CLANG_MINOR_VERSION := $(shell echo $(CLANG_VERSION) | cut -f2 -d.)
+
+ifeq ($(shell test $(CLANG_MAJOR_VERSION)$(CLANG_MINOR_VERSION) -lt 35 && echo 1), 1)
+       CC_SUPPORTS_Z := false
+endif