#define APP_FLUSH 0x3FF
#endif
+#define APP_METADATA_OFFSET(offset) (sizeof(struct rte_mbuf) + (offset))
+
#endif /* _MAIN_H_ */
.n_buckets_ext = 1 << 21,
.f_hash = test_hash,
.seed = 0,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
};
struct rte_pipeline_table_params table_params = {
struct rte_table_hash_key8_ext_params table_hash_params = {
.n_entries = 1 << 24,
.n_entries_ext = 1 << 23,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
.f_hash = test_hash,
.seed = 0,
};
{
struct rte_table_hash_key8_lru_params table_hash_params = {
.n_entries = 1 << 24,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
.f_hash = test_hash,
.seed = 0,
};
struct rte_table_hash_key16_ext_params table_hash_params = {
.n_entries = 1 << 24,
.n_entries_ext = 1 << 23,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
.f_hash = test_hash,
.seed = 0,
};
{
struct rte_table_hash_key16_lru_params table_hash_params = {
.n_entries = 1 << 24,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
.f_hash = test_hash,
.seed = 0,
};
struct rte_table_hash_key32_ext_params table_hash_params = {
.n_entries = 1 << 24,
.n_entries_ext = 1 << 23,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
.f_hash = test_hash,
.seed = 0,
};
{
struct rte_table_hash_key32_lru_params table_hash_params = {
.n_entries = 1 << 24,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
.f_hash = test_hash,
.seed = 0,
};
m = app.mbuf_rx.array[j];
m_data = rte_pktmbuf_mtod(m, uint8_t *);
- signature = RTE_MBUF_METADATA_UINT32_PTR(m, 0);
- key = RTE_MBUF_METADATA_UINT8_PTR(m, 32);
+ signature = RTE_MBUF_METADATA_UINT32_PTR(m,
+ APP_METADATA_OFFSET(0));
+ key = RTE_MBUF_METADATA_UINT8_PTR(m,
+ APP_METADATA_OFFSET(32));
if (RTE_ETH_IS_IPV4_HDR(m->packet_type)) {
ip_hdr = (struct ipv4_hdr *)
.n_rules = 1 << 24,
.entry_unique_size =
sizeof(struct rte_pipeline_table_entry),
- .offset = 32,
+ .offset = APP_METADATA_OFFSET(32),
};
struct rte_pipeline_table_params table_params = {
.number_tbl8s = 1 << 21,
.entry_unique_size =
sizeof(struct rte_pipeline_table_entry),
- .offset = 32,
+ .offset = APP_METADATA_OFFSET(32),
};
struct rte_pipeline_table_params table_params = {
#define MP_FLAGS 0
/* Macros */
+#define APP_METADATA_OFFSET(offset) (sizeof(struct rte_mbuf) + (offset))
+
#define RING_ENQUEUE(ring, value) do { \
struct rte_mbuf *m; \
uint32_t *k32, *signature; \
m = rte_pktmbuf_alloc(pool); \
if (m == NULL) \
return -1; \
- signature = RTE_MBUF_METADATA_UINT32_PTR(m, 0); \
- key = RTE_MBUF_METADATA_UINT8_PTR(m, 32); \
+ signature = RTE_MBUF_METADATA_UINT32_PTR(m, \
+ APP_METADATA_OFFSET(0)); \
+ key = RTE_MBUF_METADATA_UINT8_PTR(m, \
+ APP_METADATA_OFFSET(32)); \
k32 = (uint32_t *) key; \
k32[0] = (value); \
*signature = pipeline_test_hash(key, 0, 0); \
.name = "LPM",
.n_rules = 1 << 16,
.entry_unique_size = 8,
- .offset = 0,
+ .offset = APP_METADATA_OFFSET(0),
};
struct rte_table_lpm_key lpm_key = {
.n_rules = 1 << 16,
.number_tbl8s = 1 << 13,
.entry_unique_size = 8,
- .offset = 32,
+ .offset = APP_METADATA_OFFSET(32),
};
struct rte_table_lpm_ipv6_key lpm_ipv6_key = {
.n_entries = 1<<24,
.f_hash = pipeline_test_hash,
.seed = 0,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
};
uint8_t key8lru[8];
.n_entries = 1<<16,
.f_hash = pipeline_test_hash,
.seed = 0,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
};
uint8_t key16lru[16];
.n_entries = 1<<16,
.f_hash = pipeline_test_hash,
.seed = 0,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
};
uint8_t key32lru[32];
.n_entries_ext = 1<<15,
.f_hash = pipeline_test_hash,
.seed = 0,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
};
uint8_t key8ext[8];
.n_entries_ext = 1<<15,
.f_hash = pipeline_test_hash,
.seed = 0,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
};
uint8_t key16ext[16];
.n_entries_ext = 1<<15,
.f_hash = pipeline_test_hash,
.seed = 0,
- .signature_offset = 0,
- .key_offset = 32,
+ .signature_offset = APP_METADATA_OFFSET(0),
+ .key_offset = APP_METADATA_OFFSET(32),
};
uint8_t key32ext[32];
rte_panic("Failed to alloc mbuf from pool\n");
return -1;
}
- key = RTE_MBUF_METADATA_UINT8_PTR(m, 32);
+ key = RTE_MBUF_METADATA_UINT8_PTR(m,
+ APP_METADATA_OFFSET(32));
k32 = (uint32_t *) key;
k32[0] = 0xadadadad >> (j % 2);
uint32_t *k32, *signature; \
uint8_t *key; \
mbuf = rte_pktmbuf_alloc(pool); \
- signature = RTE_MBUF_METADATA_UINT32_PTR(mbuf, 0); \
- key = RTE_MBUF_METADATA_UINT8_PTR(mbuf, 32); \
+ signature = RTE_MBUF_METADATA_UINT32_PTR(mbuf, \
+ APP_METADATA_OFFSET(0)); \
+ key = RTE_MBUF_METADATA_UINT8_PTR(mbuf, \
+ APP_METADATA_OFFSET(32)); \
memset(key, 0, 32); \
k32 = (uint32_t *) key; \
k32[0] = (value); \
/* Initialize params and create tables */
struct rte_table_array_params array_params = {
.n_entries = 7,
- .offset = 1
+ .offset = APP_METADATA_OFFSET(1)
};
table = rte_table_array_ops.f_create(NULL, 0, 1);
return -3;
array_params.n_entries = 1 << 24;
- array_params.offset = 1;
+ array_params.offset = APP_METADATA_OFFSET(1);
table = rte_table_array_ops.f_create(&array_params, 0, 1);
if (table == NULL)
return -4;
- array_params.offset = 32;
+ array_params.offset = APP_METADATA_OFFSET(32);
table = rte_table_array_ops.f_create(&array_params, 0, 1);
if (table == NULL)
.name = "LPM",
.n_rules = 1 << 24,
.entry_unique_size = entry_size,
- .offset = 1
+ .offset = APP_METADATA_OFFSET(1)
};
table = rte_table_lpm_ops.f_create(NULL, 0, entry_size);
return -3;
lpm_params.n_rules = 1 << 24;
- lpm_params.offset = 32;
+ lpm_params.offset = APP_METADATA_OFFSET(32);
lpm_params.entry_unique_size = 0;
table = rte_table_lpm_ops.f_create(&lpm_params, 0, entry_size);
.n_rules = 1 << 24,
.number_tbl8s = 1 << 21,
.entry_unique_size = entry_size,
- .offset = 32
+ .offset = APP_METADATA_OFFSET(32)
};
table = rte_table_lpm_ipv6_ops.f_create(NULL, 0, entry_size);
return -6;
lpm_params.entry_unique_size = entry_size;
- lpm_params.offset = 32;
+ lpm_params.offset = APP_METADATA_OFFSET(32);
table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size);
if (table == NULL)
.n_entries = 1 << 10,
.f_hash = pipeline_test_hash,
.seed = 0,
- .signature_offset = 1,
- .key_offset = 32
+ .signature_offset = APP_METADATA_OFFSET(1),
+ .key_offset = APP_METADATA_OFFSET(32)
};
hash_params.n_entries = 0;
return -1;
hash_params.n_entries = 1 << 10;
- hash_params.signature_offset = 1;
+ hash_params.signature_offset = APP_METADATA_OFFSET(1);
table = ops->f_create(&hash_params, 0, 1);
if (table == NULL)
return -2;
- hash_params.signature_offset = 0;
- hash_params.key_offset = 1;
+ hash_params.signature_offset = APP_METADATA_OFFSET(0);
+ hash_params.key_offset = APP_METADATA_OFFSET(1);
table = ops->f_create(&hash_params, 0, 1);
if (table == NULL)
return -3;
- hash_params.key_offset = 32;
+ hash_params.key_offset = APP_METADATA_OFFSET(32);
hash_params.f_hash = NULL;
table = ops->f_create(&hash_params, 0, 1);
.n_entries_ext = 1 << 4,
.f_hash = pipeline_test_hash,
.seed = 0,
- .signature_offset = 1,
- .key_offset = 32
+ .signature_offset = APP_METADATA_OFFSET(1),
+ .key_offset = APP_METADATA_OFFSET(32)
};
hash_params.n_entries = 0;
return -2;
hash_params.n_entries_ext = 1 << 4;
- hash_params.signature_offset = 1;
+ hash_params.signature_offset = APP_METADATA_OFFSET(1);
table = ops->f_create(&hash_params, 0, 1);
if (table == NULL)
return -2;
- hash_params.signature_offset = 0;
- hash_params.key_offset = 1;
+ hash_params.signature_offset = APP_METADATA_OFFSET(0);
+ hash_params.key_offset = APP_METADATA_OFFSET(1);
table = ops->f_create(&hash_params, 0, 1);
if (table == NULL)
return -3;
- hash_params.key_offset = 32;
+ hash_params.key_offset = APP_METADATA_OFFSET(32);
hash_params.f_hash = NULL;
table = ops->f_create(&hash_params, 0, 1);
the value of macros CFG_NAME_LEN and CFG_NAME_VAL will be increased.
Most likely, the new values will be 64 and 256, respectively.
-* librte_port: Macros to access the packet meta-data stored within the
- packet buffer will be adjusted to cover the packet mbuf structure as well,
- as currently they are able to access any packet buffer location except the
- packet mbuf structure.
-
* librte_table: New functions for table entry bulk add/delete will be added
to the table operations structure.
* librte_table LPM: A new parameter to hold the table name will be added to
the LPM table parameter structure.
+* librte_port: Macros to access the packet meta-data stored within the packet
+ buffer has been adjusted to cover the packet mbuf structure.
+
+
Shared Library Versions
-----------------------
librte_pipeline.so.1
librte_pmd_bond.so.1
+ librte_pmd_ring.so.2
- librte_port.so.1
+ + librte_port.so.2
librte_power.so.1
librte_reorder.so.1
librte_ring.so.1
EXPORT_MAP := rte_port_version.map
-LIBABIVER := 1
+LIBABIVER := 2
#
# all source are stored in SRCS-y
* just beyond the end of the mbuf data structure returned by a port
*/
#define RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset) \
- (&((uint8_t *) &(mbuf)[1])[offset])
+ (&((uint8_t *)(mbuf))[offset])
#define RTE_MBUF_METADATA_UINT16_PTR(mbuf, offset) \
((uint16_t *) RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset))
#define RTE_MBUF_METADATA_UINT32_PTR(mbuf, offset) \