All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
To: dev@dpdk.org
Cc: david.marchand@redhat.com, jerinj@marvell.com, mdr@ashroe.eu,
	thomas@monjalon.net, konstantin.ananyev@intel.com,
	bruce.richardson@intel.com
Subject: [dpdk-dev] [PATCH v7 3/8] fib: move lookup definition into the header file
Date: Mon, 13 Jul 2020 12:56:27 +0100	[thread overview]
Message-ID: <a3796500c2f0abe9bae4afd6cff05463611ca3c7.1594640823.git.vladimir.medvedkin@intel.com> (raw)
In-Reply-To: <cover.1594640822.git.vladimir.medvedkin@intel.com>
In-Reply-To: <cover.1594640822.git.vladimir.medvedkin@intel.com>

Move dir24_8 table layout and lookup definition into the
private header file. This is necessary for implementing a
vectorized lookup function in a separate .с file.

Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
---
 lib/librte_fib/dir24_8.c | 225 +--------------------------------------
 lib/librte_fib/dir24_8.h | 224 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 225 insertions(+), 224 deletions(-)

diff --git a/lib/librte_fib/dir24_8.c b/lib/librte_fib/dir24_8.c
index 825d061fd..9d74653cf 100644
--- a/lib/librte_fib/dir24_8.c
+++ b/lib/librte_fib/dir24_8.c
@@ -11,240 +11,17 @@
 
 #include <rte_debug.h>
 #include <rte_malloc.h>
-#include <rte_prefetch.h>
 #include <rte_errno.h>
 #include <rte_memory.h>
-#include <rte_branch_prediction.h>
 
-#include <rte_fib.h>
 #include <rte_rib.h>
+#include <rte_fib.h>
 #include "dir24_8.h"
 
 #define DIR24_8_NAMESIZE	64
 
-#define DIR24_8_TBL24_NUM_ENT		(1 << 24)
-#define DIR24_8_TBL8_GRP_NUM_ENT	256U
-#define DIR24_8_EXT_ENT			1
-#define DIR24_8_TBL24_MASK		0xffffff00
-
-#define BITMAP_SLAB_BIT_SIZE_LOG2	6
-#define BITMAP_SLAB_BIT_SIZE		(1 << BITMAP_SLAB_BIT_SIZE_LOG2)
-#define BITMAP_SLAB_BITMASK		(BITMAP_SLAB_BIT_SIZE - 1)
-
-struct dir24_8_tbl {
-	uint32_t	number_tbl8s;	/**< Total number of tbl8s */
-	uint32_t	rsvd_tbl8s;	/**< Number of reserved tbl8s */
-	uint32_t	cur_tbl8s;	/**< Current number of tbl8s */
-	enum rte_fib_dir24_8_nh_sz	nh_sz;	/**< Size of nexthop entry */
-	uint64_t	def_nh;		/**< Default next hop */
-	uint64_t	*tbl8;		/**< tbl8 table. */
-	uint64_t	*tbl8_idxes;	/**< bitmap containing free tbl8 idxes*/
-	/* tbl24 table. */
-	__extension__ uint64_t	tbl24[0] __rte_cache_aligned;
-};
-
 #define ROUNDUP(x, y)	 RTE_ALIGN_CEIL(x, (1 << (32 - y)))
 
-static inline void *
-get_tbl24_p(struct dir24_8_tbl *dp, uint32_t ip, uint8_t nh_sz)
-{
-	return (void *)&((uint8_t *)dp->tbl24)[(ip &
-		DIR24_8_TBL24_MASK) >> (8 - nh_sz)];
-}
-
-static inline  uint8_t
-bits_in_nh(uint8_t nh_sz)
-{
-	return 8 * (1 << nh_sz);
-}
-
-static inline uint64_t
-get_max_nh(uint8_t nh_sz)
-{
-	return ((1ULL << (bits_in_nh(nh_sz) - 1)) - 1);
-}
-
-static  inline uint32_t
-get_tbl24_idx(uint32_t ip)
-{
-	return ip >> 8;
-}
-
-static  inline uint32_t
-get_tbl8_idx(uint32_t res, uint32_t ip)
-{
-	return (res >> 1) * DIR24_8_TBL8_GRP_NUM_ENT + (uint8_t)ip;
-}
-
-static inline uint64_t
-lookup_msk(uint8_t nh_sz)
-{
-	return ((1ULL << ((1 << (nh_sz + 3)) - 1)) << 1) - 1;
-}
-
-static inline uint8_t
-get_psd_idx(uint32_t val, uint8_t nh_sz)
-{
-	return val & ((1 << (3 - nh_sz)) - 1);
-}
-
-static inline uint32_t
-get_tbl_idx(uint32_t val, uint8_t nh_sz)
-{
-	return val >> (3 - nh_sz);
-}
-
-static inline uint64_t
-get_tbl24(struct dir24_8_tbl *dp, uint32_t ip, uint8_t nh_sz)
-{
-	return ((dp->tbl24[get_tbl_idx(get_tbl24_idx(ip), nh_sz)] >>
-		(get_psd_idx(get_tbl24_idx(ip), nh_sz) *
-		bits_in_nh(nh_sz))) & lookup_msk(nh_sz));
-}
-
-static inline uint64_t
-get_tbl8(struct dir24_8_tbl *dp, uint32_t res, uint32_t ip, uint8_t nh_sz)
-{
-	return ((dp->tbl8[get_tbl_idx(get_tbl8_idx(res, ip), nh_sz)] >>
-		(get_psd_idx(get_tbl8_idx(res, ip), nh_sz) *
-		bits_in_nh(nh_sz))) & lookup_msk(nh_sz));
-}
-
-static inline int
-is_entry_extended(uint64_t ent)
-{
-	return (ent & DIR24_8_EXT_ENT) == DIR24_8_EXT_ENT;
-}
-
-#define LOOKUP_FUNC(suffix, type, bulk_prefetch, nh_sz)			\
-static void dir24_8_lookup_bulk_##suffix(void *p, const uint32_t *ips,	\
-	uint64_t *next_hops, const unsigned int n)			\
-{									\
-	struct dir24_8_tbl *dp = (struct dir24_8_tbl *)p;		\
-	uint64_t tmp;							\
-	uint32_t i;							\
-	uint32_t prefetch_offset =					\
-		RTE_MIN((unsigned int)bulk_prefetch, n);		\
-									\
-	for (i = 0; i < prefetch_offset; i++)				\
-		rte_prefetch0(get_tbl24_p(dp, ips[i], nh_sz));		\
-	for (i = 0; i < (n - prefetch_offset); i++) {			\
-		rte_prefetch0(get_tbl24_p(dp,				\
-			ips[i + prefetch_offset], nh_sz));		\
-		tmp = ((type *)dp->tbl24)[ips[i] >> 8];			\
-		if (unlikely(is_entry_extended(tmp)))			\
-			tmp = ((type *)dp->tbl8)[(uint8_t)ips[i] +	\
-				((tmp >> 1) * DIR24_8_TBL8_GRP_NUM_ENT)]; \
-		next_hops[i] = tmp >> 1;				\
-	}								\
-	for (; i < n; i++) {						\
-		tmp = ((type *)dp->tbl24)[ips[i] >> 8];			\
-		if (unlikely(is_entry_extended(tmp)))			\
-			tmp = ((type *)dp->tbl8)[(uint8_t)ips[i] +	\
-				((tmp >> 1) * DIR24_8_TBL8_GRP_NUM_ENT)]; \
-		next_hops[i] = tmp >> 1;				\
-	}								\
-}									\
-
-LOOKUP_FUNC(1b, uint8_t, 5, 0)
-LOOKUP_FUNC(2b, uint16_t, 6, 1)
-LOOKUP_FUNC(4b, uint32_t, 15, 2)
-LOOKUP_FUNC(8b, uint64_t, 12, 3)
-
-static inline void
-dir24_8_lookup_bulk(struct dir24_8_tbl *dp, const uint32_t *ips,
-	uint64_t *next_hops, const unsigned int n, uint8_t nh_sz)
-{
-	uint64_t tmp;
-	uint32_t i;
-	uint32_t prefetch_offset = RTE_MIN(15U, n);
-
-	for (i = 0; i < prefetch_offset; i++)
-		rte_prefetch0(get_tbl24_p(dp, ips[i], nh_sz));
-	for (i = 0; i < (n - prefetch_offset); i++) {
-		rte_prefetch0(get_tbl24_p(dp, ips[i + prefetch_offset],
-			nh_sz));
-		tmp = get_tbl24(dp, ips[i], nh_sz);
-		if (unlikely(is_entry_extended(tmp)))
-			tmp = get_tbl8(dp, tmp, ips[i], nh_sz);
-
-		next_hops[i] = tmp >> 1;
-	}
-	for (; i < n; i++) {
-		tmp = get_tbl24(dp, ips[i], nh_sz);
-		if (unlikely(is_entry_extended(tmp)))
-			tmp = get_tbl8(dp, tmp, ips[i], nh_sz);
-
-		next_hops[i] = tmp >> 1;
-	}
-}
-
-static void
-dir24_8_lookup_bulk_0(void *p, const uint32_t *ips,
-	uint64_t *next_hops, const unsigned int n)
-{
-	struct dir24_8_tbl *dp = (struct dir24_8_tbl *)p;
-
-	dir24_8_lookup_bulk(dp, ips, next_hops, n, 0);
-}
-
-static void
-dir24_8_lookup_bulk_1(void *p, const uint32_t *ips,
-	uint64_t *next_hops, const unsigned int n)
-{
-	struct dir24_8_tbl *dp = (struct dir24_8_tbl *)p;
-
-	dir24_8_lookup_bulk(dp, ips, next_hops, n, 1);
-}
-
-static void
-dir24_8_lookup_bulk_2(void *p, const uint32_t *ips,
-	uint64_t *next_hops, const unsigned int n)
-{
-	struct dir24_8_tbl *dp = (struct dir24_8_tbl *)p;
-
-	dir24_8_lookup_bulk(dp, ips, next_hops, n, 2);
-}
-
-static void
-dir24_8_lookup_bulk_3(void *p, const uint32_t *ips,
-	uint64_t *next_hops, const unsigned int n)
-{
-	struct dir24_8_tbl *dp = (struct dir24_8_tbl *)p;
-
-	dir24_8_lookup_bulk(dp, ips, next_hops, n, 3);
-}
-
-static void
-dir24_8_lookup_bulk_uni(void *p, const uint32_t *ips,
-	uint64_t *next_hops, const unsigned int n)
-{
-	struct dir24_8_tbl *dp = (struct dir24_8_tbl *)p;
-	uint64_t tmp;
-	uint32_t i;
-	uint32_t prefetch_offset = RTE_MIN(15U, n);
-	uint8_t nh_sz = dp->nh_sz;
-
-	for (i = 0; i < prefetch_offset; i++)
-		rte_prefetch0(get_tbl24_p(dp, ips[i], nh_sz));
-	for (i = 0; i < (n - prefetch_offset); i++) {
-		rte_prefetch0(get_tbl24_p(dp, ips[i + prefetch_offset],
-			nh_sz));
-		tmp = get_tbl24(dp, ips[i], nh_sz);
-		if (unlikely(is_entry_extended(tmp)))
-			tmp = get_tbl8(dp, tmp, ips[i], nh_sz);
-
-		next_hops[i] = tmp >> 1;
-	}
-	for (; i < n; i++) {
-		tmp = get_tbl24(dp, ips[i], nh_sz);
-		if (unlikely(is_entry_extended(tmp)))
-			tmp = get_tbl8(dp, tmp, ips[i], nh_sz);
-
-		next_hops[i] = tmp >> 1;
-	}
-}
-
 rte_fib_lookup_fn_t
 dir24_8_get_lookup_fn(void *p, enum rte_fib_dir24_8_lookup_type type)
 {
diff --git a/lib/librte_fib/dir24_8.h b/lib/librte_fib/dir24_8.h
index 53c5dd29e..56d038951 100644
--- a/lib/librte_fib/dir24_8.h
+++ b/lib/librte_fib/dir24_8.h
@@ -6,6 +6,9 @@
 #ifndef _DIR24_8_H_
 #define _DIR24_8_H_
 
+#include <rte_prefetch.h>
+#include <rte_branch_prediction.h>
+
 /**
  * @file
  * DIR24_8 algorithm
@@ -15,6 +18,227 @@
 extern "C" {
 #endif
 
+#define DIR24_8_TBL24_NUM_ENT		(1 << 24)
+#define DIR24_8_TBL8_GRP_NUM_ENT	256U
+#define DIR24_8_EXT_ENT			1
+#define DIR24_8_TBL24_MASK		0xffffff00
+
+#define BITMAP_SLAB_BIT_SIZE_LOG2	6
+#define BITMAP_SLAB_BIT_SIZE		(1 << BITMAP_SLAB_BIT_SIZE_LOG2)
+#define BITMAP_SLAB_BITMASK		(BITMAP_SLAB_BIT_SIZE - 1)
+
+struct dir24_8_tbl {
+	uint32_t	number_tbl8s;	/**< Total number of tbl8s */
+	uint32_t	rsvd_tbl8s;	/**< Number of reserved tbl8s */
+	uint32_t	cur_tbl8s;	/**< Current number of tbl8s */
+	enum rte_fib_dir24_8_nh_sz	nh_sz;	/**< Size of nexthop entry */
+	uint64_t	def_nh;		/**< Default next hop */
+	uint64_t	*tbl8;		/**< tbl8 table. */
+	uint64_t	*tbl8_idxes;	/**< bitmap containing free tbl8 idxes*/
+	/* tbl24 table. */
+	__extension__ uint64_t	tbl24[0] __rte_cache_aligned;
+};
+
+static inline void *
+get_tbl24_p(struct dir24_8_tbl *dp, uint32_t ip, uint8_t nh_sz)
+{
+	return (void *)&((uint8_t *)dp->tbl24)[(ip &
+		DIR24_8_TBL24_MASK) >> (8 - nh_sz)];
+}
+
+static inline  uint8_t
+bits_in_nh(uint8_t nh_sz)
+{
+	return 8 * (1 << nh_sz);
+}
+
+static inline uint64_t
+get_max_nh(uint8_t nh_sz)
+{
+	return ((1ULL << (bits_in_nh(nh_sz) - 1)) - 1);
+}
+
+static  inline uint32_t
+get_tbl24_idx(uint32_t ip)
+{
+	return ip >> 8;
+}
+
+static  inline uint32_t
+get_tbl8_idx(uint32_t res, uint32_t ip)
+{
+	return (res >> 1) * DIR24_8_TBL8_GRP_NUM_ENT + (uint8_t)ip;
+}
+
+static inline uint64_t
+lookup_msk(uint8_t nh_sz)
+{
+	return ((1ULL << ((1 << (nh_sz + 3)) - 1)) << 1) - 1;
+}
+
+static inline uint8_t
+get_psd_idx(uint32_t val, uint8_t nh_sz)
+{
+	return val & ((1 << (3 - nh_sz)) - 1);
+}
+
+static inline uint32_t
+get_tbl_idx(uint32_t val, uint8_t nh_sz)
+{
+	return val >> (3 - nh_sz);
+}
+
+static inline uint64_t
+get_tbl24(struct dir24_8_tbl *dp, uint32_t ip, uint8_t nh_sz)
+{
+	return ((dp->tbl24[get_tbl_idx(get_tbl24_idx(ip), nh_sz)] >>
+		(get_psd_idx(get_tbl24_idx(ip), nh_sz) *
+		bits_in_nh(nh_sz))) & lookup_msk(nh_sz));
+}
+
+static inline uint64_t
+get_tbl8(struct dir24_8_tbl *dp, uint32_t res, uint32_t ip, uint8_t nh_sz)
+{
+	return ((dp->tbl8[get_tbl_idx(get_tbl8_idx(res, ip), nh_sz)] >>
+		(get_psd_idx(get_tbl8_idx(res, ip), nh_sz) *
+		bits_in_nh(nh_sz))) & lookup_msk(nh_sz));
+}
+
+static inline int
+is_entry_extended(uint64_t ent)
+{
+	return (ent & DIR24_8_EXT_ENT) == DIR24_8_EXT_ENT;
+}
+
+#define LOOKUP_FUNC(suffix, type, bulk_prefetch, nh_sz)			\
+static inline void dir24_8_lookup_bulk_##suffix(void *p, const uint32_t *ips, \
+	uint64_t *next_hops, const unsigned int n)			\
+{									\
+	struct dir24_8_tbl *dp = (struct dir24_8_tbl *)p;		\
+	uint64_t tmp;							\
+	uint32_t i;							\
+	uint32_t prefetch_offset =					\
+		RTE_MIN((unsigned int)bulk_prefetch, n);		\
+									\
+	for (i = 0; i < prefetch_offset; i++)				\
+		rte_prefetch0(get_tbl24_p(dp, ips[i], nh_sz));		\
+	for (i = 0; i < (n - prefetch_offset); i++) {			\
+		rte_prefetch0(get_tbl24_p(dp,				\
+			ips[i + prefetch_offset], nh_sz));		\
+		tmp = ((type *)dp->tbl24)[ips[i] >> 8];			\
+		if (unlikely(is_entry_extended(tmp)))			\
+			tmp = ((type *)dp->tbl8)[(uint8_t)ips[i] +	\
+				((tmp >> 1) * DIR24_8_TBL8_GRP_NUM_ENT)]; \
+		next_hops[i] = tmp >> 1;				\
+	}								\
+	for (; i < n; i++) {						\
+		tmp = ((type *)dp->tbl24)[ips[i] >> 8];			\
+		if (unlikely(is_entry_extended(tmp)))			\
+			tmp = ((type *)dp->tbl8)[(uint8_t)ips[i] +	\
+				((tmp >> 1) * DIR24_8_TBL8_GRP_NUM_ENT)]; \
+		next_hops[i] = tmp >> 1;				\
+	}								\
+}									\
+
+LOOKUP_FUNC(1b, uint8_t, 5, 0)
+LOOKUP_FUNC(2b, uint16_t, 6, 1)
+LOOKUP_FUNC(4b, uint32_t, 15, 2)
+LOOKUP_FUNC(8b, uint64_t, 12, 3)
+
+static inline void
+dir24_8_lookup_bulk(struct dir24_8_tbl *dp, const uint32_t *ips,
+	uint64_t *next_hops, const unsigned int n, uint8_t nh_sz)
+{
+	uint64_t tmp;
+	uint32_t i;
+	uint32_t prefetch_offset = RTE_MIN(15U, n);
+
+	for (i = 0; i < prefetch_offset; i++)
+		rte_prefetch0(get_tbl24_p(dp, ips[i], nh_sz));
+	for (i = 0; i < (n - prefetch_offset); i++) {
+		rte_prefetch0(get_tbl24_p(dp, ips[i + prefetch_offset],
+			nh_sz));
+		tmp = get_tbl24(dp, ips[i], nh_sz);
+		if (unlikely(is_entry_extended(tmp)))
+			tmp = get_tbl8(dp, tmp, ips[i], nh_sz);
+
+		next_hops[i] = tmp >> 1;
+	}
+	for (; i < n; i++) {
+		tmp = get_tbl24(dp, ips[i], nh_sz);
+		if (unlikely(is_entry_extended(tmp)))
+			tmp = get_tbl8(dp, tmp, ips[i], nh_sz);
+
+		next_hops[i] = tmp >> 1;
+	}
+}
+
+static inline void
+dir24_8_lookup_bulk_0(void *p, const uint32_t *ips,
+	uint64_t *next_hops, const unsigned int n)
+{
+	struct dir24_8_tbl *dp = (struct dir24_8_tbl *)p;
+
+	dir24_8_lookup_bulk(dp, ips, next_hops, n, 0);
+}
+
+static inline void
+dir24_8_lookup_bulk_1(void *p, const uint32_t *ips,
+	uint64_t *next_hops, const unsigned int n)
+{
+	struct dir24_8_tbl *dp = (struct dir24_8_tbl *)p;
+
+	dir24_8_lookup_bulk(dp, ips, next_hops, n, 1);
+}
+
+static inline void
+dir24_8_lookup_bulk_2(void *p, const uint32_t *ips,
+	uint64_t *next_hops, const unsigned int n)
+{
+	struct dir24_8_tbl *dp = (struct dir24_8_tbl *)p;
+
+	dir24_8_lookup_bulk(dp, ips, next_hops, n, 2);
+}
+
+static inline void
+dir24_8_lookup_bulk_3(void *p, const uint32_t *ips,
+	uint64_t *next_hops, const unsigned int n)
+{
+	struct dir24_8_tbl *dp = (struct dir24_8_tbl *)p;
+
+	dir24_8_lookup_bulk(dp, ips, next_hops, n, 3);
+}
+
+static inline void
+dir24_8_lookup_bulk_uni(void *p, const uint32_t *ips,
+	uint64_t *next_hops, const unsigned int n)
+{
+	struct dir24_8_tbl *dp = (struct dir24_8_tbl *)p;
+	uint64_t tmp;
+	uint32_t i;
+	uint32_t prefetch_offset = RTE_MIN(15U, n);
+	uint8_t nh_sz = dp->nh_sz;
+
+	for (i = 0; i < prefetch_offset; i++)
+		rte_prefetch0(get_tbl24_p(dp, ips[i], nh_sz));
+	for (i = 0; i < (n - prefetch_offset); i++) {
+		rte_prefetch0(get_tbl24_p(dp, ips[i + prefetch_offset],
+			nh_sz));
+		tmp = get_tbl24(dp, ips[i], nh_sz);
+		if (unlikely(is_entry_extended(tmp)))
+			tmp = get_tbl8(dp, tmp, ips[i], nh_sz);
+
+		next_hops[i] = tmp >> 1;
+	}
+	for (; i < n; i++) {
+		tmp = get_tbl24(dp, ips[i], nh_sz);
+		if (unlikely(is_entry_extended(tmp)))
+			tmp = get_tbl8(dp, tmp, ips[i], nh_sz);
+
+		next_hops[i] = tmp >> 1;
+	}
+}
+
 void *
 dir24_8_create(const char *name, int socket_id, struct rte_fib_conf *conf);
 
-- 
2.17.1


  parent reply	other threads:[~2020-07-13 11:57 UTC|newest]

Thread overview: 199+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-09 12:43 [dpdk-dev] [PATCH 0/6] fib: implement AVX512 vector lookup Vladimir Medvedkin
2020-03-09 12:43 ` [dpdk-dev] [PATCH 1/6] eal: introduce zmm type for AVX 512-bit Vladimir Medvedkin
2020-03-09 16:39   ` Jerin Jacob
2020-03-10 14:44     ` Medvedkin, Vladimir
2020-03-20  8:23       ` Jerin Jacob
2020-03-09 12:43 ` [dpdk-dev] [PATCH 2/6] fib: make lookup function type configurable Vladimir Medvedkin
2020-04-01  5:47   ` Ray Kinsella
2020-04-01 18:48     ` Medvedkin, Vladimir
2020-03-09 12:43 ` [dpdk-dev] [PATCH 3/6] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-04-01  5:54   ` Ray Kinsella
2020-03-09 12:43 ` [dpdk-dev] [PATCH 4/6] fib6: make lookup function type configurable Vladimir Medvedkin
2020-03-09 12:43 ` [dpdk-dev] [PATCH 5/6] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-03-09 12:43 ` [dpdk-dev] [PATCH 6/6] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-04-16  9:55 ` [dpdk-dev] [PATCH 0/6] fib: implement AVX512 vector lookup Thomas Monjalon
2020-05-14 12:28 ` [dpdk-dev] [PATCH v2 " Vladimir Medvedkin
2020-05-19 12:12   ` [dpdk-dev] [PATCH v3 0/8] " Vladimir Medvedkin
2020-05-19 12:23     ` David Marchand
2020-05-19 12:57       ` Medvedkin, Vladimir
2020-05-19 13:00         ` David Marchand
2020-06-19 10:34     ` Medvedkin, Vladimir
2020-07-08 20:16     ` [dpdk-dev] [PATCH v4 " Vladimir Medvedkin
2020-07-10 14:46       ` [dpdk-dev] [PATCH v5 " Vladimir Medvedkin
2020-07-13 11:11         ` [dpdk-dev] [PATCH v6 " Vladimir Medvedkin
2020-07-13 11:56           ` [dpdk-dev] [PATCH v7 " Vladimir Medvedkin
2020-09-30 10:35             ` [dpdk-dev] [PATCH v8 " Vladimir Medvedkin
2020-10-06 14:31               ` David Marchand
2020-10-06 15:13                 ` Medvedkin, Vladimir
2020-10-07 16:10               ` [dpdk-dev] [PATCH v9 " Vladimir Medvedkin
2020-10-13 13:13                 ` [dpdk-dev] [PATCH v10 " Vladimir Medvedkin
2020-10-16 15:15                   ` David Marchand
2020-10-16 15:32                     ` Medvedkin, Vladimir
2020-10-16 15:42                   ` [dpdk-dev] [PATCH v11 " Vladimir Medvedkin
2020-10-19 10:17                     ` [dpdk-dev] [PATCH v12 0/7] " Vladimir Medvedkin
2020-10-19 15:05                       ` [dpdk-dev] [PATCH v13 " Vladimir Medvedkin
2020-10-25 18:07                         ` [dpdk-dev] [PATCH v14 0/8] " Vladimir Medvedkin
2020-10-27 15:11                           ` [dpdk-dev] [PATCH v15 " Vladimir Medvedkin
2020-10-28 20:51                             ` David Marchand
2020-10-27 15:11                           ` [dpdk-dev] [PATCH v15 1/8] fib: make lookup function type configurable Vladimir Medvedkin
2020-10-27 15:11                           ` [dpdk-dev] [PATCH v15 2/8] fib: move lookup definition into the header file Vladimir Medvedkin
2020-10-27 15:11                           ` [dpdk-dev] [PATCH v15 3/8] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-10-27 15:11                           ` [dpdk-dev] [PATCH v15 4/8] fib6: make lookup function type configurable Vladimir Medvedkin
2020-10-27 15:11                           ` [dpdk-dev] [PATCH v15 5/8] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-10-27 15:11                           ` [dpdk-dev] [PATCH v15 6/8] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-10-27 15:11                           ` [dpdk-dev] [PATCH v15 7/8] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-10-27 15:11                           ` [dpdk-dev] [PATCH v15 8/8] fib: remove unnecessary type of fib Vladimir Medvedkin
2020-10-25 18:07                         ` [dpdk-dev] [PATCH v14 1/8] fib: make lookup function type configurable Vladimir Medvedkin
2020-10-26 13:58                           ` David Marchand
2020-10-26 17:51                             ` Medvedkin, Vladimir
2020-10-25 18:07                         ` [dpdk-dev] [PATCH v14 2/8] fib: move lookup definition into the header file Vladimir Medvedkin
2020-10-25 18:07                         ` [dpdk-dev] [PATCH v14 3/8] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-10-25 18:07                         ` [dpdk-dev] [PATCH v14 4/8] fib6: make lookup function type configurable Vladimir Medvedkin
2020-10-25 18:07                         ` [dpdk-dev] [PATCH v14 5/8] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-10-25 18:07                         ` [dpdk-dev] [PATCH v14 6/8] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-10-25 18:08                         ` [dpdk-dev] [PATCH v14 7/8] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-10-25 18:08                         ` [dpdk-dev] [PATCH v14 8/8] fib: remove unnecessary type of fib Vladimir Medvedkin
2020-10-19 15:05                       ` [dpdk-dev] [PATCH v13 1/7] fib: make lookup function type configurable Vladimir Medvedkin
2020-10-22  7:55                         ` Kinsella, Ray
2020-10-22 11:52                         ` David Marchand
2020-10-22 15:11                           ` Medvedkin, Vladimir
2020-10-23 10:29                             ` David Marchand
2020-10-23 16:09                               ` Medvedkin, Vladimir
2020-10-19 15:05                       ` [dpdk-dev] [PATCH v13 2/7] fib: move lookup definition into the header file Vladimir Medvedkin
2020-10-22  7:56                         ` Kinsella, Ray
2020-10-19 15:05                       ` [dpdk-dev] [PATCH v13 3/7] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-10-22  7:56                         ` Kinsella, Ray
2020-10-19 15:05                       ` [dpdk-dev] [PATCH v13 4/7] fib6: make lookup function type configurable Vladimir Medvedkin
2020-10-22  7:56                         ` Kinsella, Ray
2020-10-19 15:05                       ` [dpdk-dev] [PATCH v13 5/7] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-10-22  7:56                         ` Kinsella, Ray
2020-10-19 15:05                       ` [dpdk-dev] [PATCH v13 6/7] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-10-22  7:57                         ` Kinsella, Ray
2020-10-19 15:05                       ` [dpdk-dev] [PATCH v13 7/7] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-10-22  7:57                         ` Kinsella, Ray
2020-10-19 10:17                     ` [dpdk-dev] [PATCH v12 1/7] fib: make lookup function type configurable Vladimir Medvedkin
2020-10-19 10:17                     ` [dpdk-dev] [PATCH v12 2/7] fib: move lookup definition into the header file Vladimir Medvedkin
2020-10-19 10:17                     ` [dpdk-dev] [PATCH v12 3/7] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-10-19 10:17                     ` [dpdk-dev] [PATCH v12 4/7] fib6: make lookup function type configurable Vladimir Medvedkin
2020-10-19 10:17                     ` [dpdk-dev] [PATCH v12 5/7] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-10-19 10:17                     ` [dpdk-dev] [PATCH v12 6/7] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-10-19 10:17                     ` [dpdk-dev] [PATCH v12 7/7] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-10-16 15:42                   ` [dpdk-dev] [PATCH v11 1/8] eal/x86: introduce AVX 512-bit type Vladimir Medvedkin
2020-10-19  6:35                     ` Kinsella, Ray
2020-10-19 10:12                       ` Medvedkin, Vladimir
2020-10-16 15:42                   ` [dpdk-dev] [PATCH v11 2/8] fib: make lookup function type configurable Vladimir Medvedkin
2020-10-16 15:42                   ` [dpdk-dev] [PATCH v11 3/8] fib: move lookup definition into the header file Vladimir Medvedkin
2020-10-16 15:42                   ` [dpdk-dev] [PATCH v11 4/8] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-10-16 15:42                   ` [dpdk-dev] [PATCH v11 5/8] fib6: make lookup function type configurable Vladimir Medvedkin
2020-10-16 15:42                   ` [dpdk-dev] [PATCH v11 6/8] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-10-16 15:42                   ` [dpdk-dev] [PATCH v11 7/8] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-10-16 15:42                   ` [dpdk-dev] [PATCH v11 8/8] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-10-13 13:13                 ` [dpdk-dev] [PATCH v10 1/8] eal/x86: introduce AVX 512-bit type Vladimir Medvedkin
2020-10-14 12:17                   ` David Marchand
2020-10-13 13:13                 ` [dpdk-dev] [PATCH v10 2/8] fib: make lookup function type configurable Vladimir Medvedkin
2020-10-13 13:13                 ` [dpdk-dev] [PATCH v10 3/8] fib: move lookup definition into the header file Vladimir Medvedkin
2020-10-13 13:13                 ` [dpdk-dev] [PATCH v10 4/8] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-10-13 13:13                 ` [dpdk-dev] [PATCH v10 5/8] fib6: make lookup function type configurable Vladimir Medvedkin
2020-10-13 13:14                 ` [dpdk-dev] [PATCH v10 6/8] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-10-13 13:14                 ` [dpdk-dev] [PATCH v10 7/8] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-10-13 13:14                 ` [dpdk-dev] [PATCH v10 8/8] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-10-07 16:10               ` [dpdk-dev] [PATCH v9 1/8] eal/x86: introduce AVX 512-bit type Vladimir Medvedkin
2020-10-07 16:10               ` [dpdk-dev] [PATCH v9 2/8] fib: make lookup function type configurable Vladimir Medvedkin
2020-10-07 16:10               ` [dpdk-dev] [PATCH v9 3/8] fib: move lookup definition into the header file Vladimir Medvedkin
2020-10-07 16:10               ` [dpdk-dev] [PATCH v9 4/8] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-10-13 10:27                 ` Bruce Richardson
2020-10-07 16:10               ` [dpdk-dev] [PATCH v9 5/8] fib6: make lookup function type configurable Vladimir Medvedkin
2020-10-07 16:10               ` [dpdk-dev] [PATCH v9 6/8] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-10-07 16:10               ` [dpdk-dev] [PATCH v9 7/8] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-10-07 16:10               ` [dpdk-dev] [PATCH v9 8/8] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-09-30 10:35             ` [dpdk-dev] [PATCH v8 1/8] eal/x86: introduce AVX 512-bit type Vladimir Medvedkin
2020-09-30 10:35             ` [dpdk-dev] [PATCH v8 2/8] fib: make lookup function type configurable Vladimir Medvedkin
2020-09-30 10:35             ` [dpdk-dev] [PATCH v8 3/8] fib: move lookup definition into the header file Vladimir Medvedkin
2020-09-30 10:35             ` [dpdk-dev] [PATCH v8 4/8] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-09-30 10:35             ` [dpdk-dev] [PATCH v8 5/8] fib6: make lookup function type configurable Vladimir Medvedkin
2020-09-30 10:35             ` [dpdk-dev] [PATCH v8 6/8] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-09-30 10:35             ` [dpdk-dev] [PATCH v8 7/8] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-09-30 10:35             ` [dpdk-dev] [PATCH v8 8/8] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-07-13 11:56           ` [dpdk-dev] [PATCH v7 1/8] eal/x86: introduce AVX 512-bit type Vladimir Medvedkin
2020-07-13 11:56           ` [dpdk-dev] [PATCH v7 2/8] fib: make lookup function type configurable Vladimir Medvedkin
2020-07-16 11:51             ` Ananyev, Konstantin
2020-07-16 14:32             ` Thomas Monjalon
2020-09-30 11:06               ` Vladimir Medvedkin
2020-07-13 11:56           ` Vladimir Medvedkin [this message]
2020-07-13 11:56           ` [dpdk-dev] [PATCH v7 4/8] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-07-13 11:56           ` [dpdk-dev] [PATCH v7 5/8] fib6: make lookup function type configurable Vladimir Medvedkin
2020-07-16 11:53             ` Ananyev, Konstantin
2020-07-13 11:56           ` [dpdk-dev] [PATCH v7 6/8] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-07-13 11:56           ` [dpdk-dev] [PATCH v7 7/8] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-07-13 11:56           ` [dpdk-dev] [PATCH v7 8/8] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-07-13 22:19           ` [dpdk-dev] [PATCH v6 0/8] fib: implement AVX512 vector lookup Stephen Hemminger
2020-07-14  7:31             ` Kinsella, Ray
2020-07-14 14:38               ` Stephen Hemminger
2020-07-15  9:47                 ` Thomas Monjalon
2020-07-15 10:35                   ` Medvedkin, Vladimir
2020-07-15 11:59                     ` Thomas Monjalon
2020-07-15 12:29                       ` Medvedkin, Vladimir
2020-07-15 12:45                         ` Thomas Monjalon
2020-07-17 16:43                           ` Richardson, Bruce
2020-07-19 10:04                             ` Thomas Monjalon
2020-07-13 11:11         ` [dpdk-dev] [PATCH v6 1/8] eal/x86: introduce AVX 512-bit type Vladimir Medvedkin
2020-07-13 11:33           ` David Marchand
2020-07-13 11:44             ` Medvedkin, Vladimir
2020-07-13 11:11         ` [dpdk-dev] [PATCH v6 2/8] fib: make lookup function type configurable Vladimir Medvedkin
2020-07-13 11:11         ` [dpdk-dev] [PATCH v6 3/8] fib: move lookup definition into the header file Vladimir Medvedkin
2020-07-13 11:11         ` [dpdk-dev] [PATCH v6 4/8] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-07-13 11:11         ` [dpdk-dev] [PATCH v6 5/8] fib6: make lookup function type configurable Vladimir Medvedkin
2020-07-13 11:11         ` [dpdk-dev] [PATCH v6 6/8] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-07-13 11:11         ` [dpdk-dev] [PATCH v6 7/8] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-07-13 11:11         ` [dpdk-dev] [PATCH v6 8/8] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-07-10 14:46       ` [dpdk-dev] [PATCH v5 1/8] eal/x86: introduce AVX 512-bit type Vladimir Medvedkin
2020-07-10 21:49         ` Thomas Monjalon
2020-07-13 10:23           ` Medvedkin, Vladimir
2020-07-13 10:25             ` Thomas Monjalon
2020-07-13 10:39               ` Medvedkin, Vladimir
2020-07-13 10:45                 ` Ananyev, Konstantin
2020-07-10 14:46       ` [dpdk-dev] [PATCH v5 2/8] fib: make lookup function type configurable Vladimir Medvedkin
2020-07-10 14:46       ` [dpdk-dev] [PATCH v5 3/8] fib: move lookup definition into the header file Vladimir Medvedkin
2020-07-10 14:46       ` [dpdk-dev] [PATCH v5 4/8] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-07-10 14:46       ` [dpdk-dev] [PATCH v5 5/8] fib6: make lookup function type configurable Vladimir Medvedkin
2020-07-10 14:46       ` [dpdk-dev] [PATCH v5 6/8] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-07-10 14:46       ` [dpdk-dev] [PATCH v5 7/8] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-07-10 14:46       ` [dpdk-dev] [PATCH v5 8/8] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-07-08 20:16     ` [dpdk-dev] [PATCH v4 1/8] eal: introduce zmm type for AVX 512-bit Vladimir Medvedkin
2020-07-09 13:48       ` David Marchand
2020-07-09 14:52         ` Medvedkin, Vladimir
2020-07-09 15:20           ` David Marchand
2020-07-08 20:16     ` [dpdk-dev] [PATCH v4 2/8] fib: make lookup function type configurable Vladimir Medvedkin
2020-07-08 20:16     ` [dpdk-dev] [PATCH v4 3/8] fib: move lookup definition into the header file Vladimir Medvedkin
2020-07-08 20:16     ` [dpdk-dev] [PATCH v4 4/8] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-07-08 20:16     ` [dpdk-dev] [PATCH v4 5/8] fib6: make lookup function type configurable Vladimir Medvedkin
2020-07-08 20:16     ` [dpdk-dev] [PATCH v4 6/8] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-07-08 20:16     ` [dpdk-dev] [PATCH v4 7/8] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-07-08 20:16     ` [dpdk-dev] [PATCH v4 8/8] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-05-19 12:12   ` [dpdk-dev] [PATCH v3 1/8] eal: introduce zmm type for AVX 512-bit Vladimir Medvedkin
2020-06-24 13:14     ` Ananyev, Konstantin
2020-07-06 17:28     ` Thomas Monjalon
2020-05-19 12:12   ` [dpdk-dev] [PATCH v3 2/8] fib: make lookup function type configurable Vladimir Medvedkin
2020-05-19 12:12   ` [dpdk-dev] [PATCH v3 3/8] fib: move lookup definition into the header file Vladimir Medvedkin
2020-07-08 11:23     ` Ananyev, Konstantin
2020-05-19 12:12   ` [dpdk-dev] [PATCH v3 4/8] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-06-24 13:18     ` Ananyev, Konstantin
2020-07-08 19:57       ` Medvedkin, Vladimir
2020-07-06 19:21     ` Thomas Monjalon
2020-07-08 20:19       ` Medvedkin, Vladimir
2020-07-07  9:44     ` Bruce Richardson
2020-05-19 12:13   ` [dpdk-dev] [PATCH v3 5/8] fib6: make lookup function type configurable Vladimir Medvedkin
2020-05-19 12:13   ` [dpdk-dev] [PATCH v3 6/8] fib6: move lookup definition into the header file Vladimir Medvedkin
2020-07-08 11:27     ` Ananyev, Konstantin
2020-05-19 12:13   ` [dpdk-dev] [PATCH v3 7/8] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-07-08 12:23     ` Ananyev, Konstantin
2020-07-08 19:56       ` Medvedkin, Vladimir
2020-05-19 12:13   ` [dpdk-dev] [PATCH v3 8/8] app/testfib: add support for different lookup functions Vladimir Medvedkin
2020-05-14 12:28 ` [dpdk-dev] [PATCH v2 1/6] eal: introduce zmm type for AVX 512-bit Vladimir Medvedkin
2020-05-14 12:28 ` [dpdk-dev] [PATCH v2 2/6] fib: make lookup function type configurable Vladimir Medvedkin
2020-05-14 12:28 ` [dpdk-dev] [PATCH v2 3/6] fib: introduce AVX512 lookup Vladimir Medvedkin
2020-05-14 12:40   ` Bruce Richardson
2020-05-14 12:43     ` Medvedkin, Vladimir
2020-05-14 12:28 ` [dpdk-dev] [PATCH v2 4/6] fib6: make lookup function type configurable Vladimir Medvedkin
2020-05-14 12:28 ` [dpdk-dev] [PATCH v2 5/6] fib6: introduce AVX512 lookup Vladimir Medvedkin
2020-05-14 12:28 ` [dpdk-dev] [PATCH v2 6/6] app/testfib: add support for different lookup functions Vladimir Medvedkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a3796500c2f0abe9bae4afd6cff05463611ca3c7.1594640823.git.vladimir.medvedkin@intel.com \
    --to=vladimir.medvedkin@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=jerinj@marvell.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=mdr@ashroe.eu \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.