apps: add name to LPM parameters

LPM table and pipeline apps have been modified to
include name parameter of the lpm table.

Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
This commit is contained in:
Jasvinder Singh 2015-09-17 17:03:20 +01:00 committed by Thomas Monjalon
parent f71c7fc0b9
commit 5aaf45e09a
5 changed files with 68 additions and 47 deletions

View File

@ -112,6 +112,7 @@ app_main_loop_worker_pipeline_lpm(void) {
/* Table configuration */ /* Table configuration */
{ {
struct rte_table_lpm_params table_lpm_params = { struct rte_table_lpm_params table_lpm_params = {
.name = "LPM",
.n_rules = 1 << 24, .n_rules = 1 << 24,
.entry_unique_size = .entry_unique_size =
sizeof(struct rte_pipeline_table_entry), sizeof(struct rte_pipeline_table_entry),

View File

@ -113,6 +113,7 @@ app_main_loop_worker_pipeline_lpm_ipv6(void) {
/* Table configuration */ /* Table configuration */
{ {
struct rte_table_lpm_ipv6_params table_lpm_ipv6_params = { struct rte_table_lpm_ipv6_params table_lpm_ipv6_params = {
.name = "LPM",
.n_rules = 1 << 24, .n_rules = 1 << 24,
.number_tbl8s = 1 << 21, .number_tbl8s = 1 << 21,
.entry_unique_size = .entry_unique_size =

View File

@ -293,6 +293,7 @@ test_table_lpm_combined(void)
/* Traffic flow */ /* Traffic flow */
struct rte_table_lpm_params lpm_params = { struct rte_table_lpm_params lpm_params = {
.name = "LPM",
.n_rules = 1 << 16, .n_rules = 1 << 16,
.entry_unique_size = 8, .entry_unique_size = 8,
.offset = 0, .offset = 0,
@ -352,6 +353,7 @@ test_table_lpm_ipv6_combined(void)
/* Traffic flow */ /* Traffic flow */
struct rte_table_lpm_ipv6_params lpm_ipv6_params = { struct rte_table_lpm_ipv6_params lpm_ipv6_params = {
.name = "LPM",
.n_rules = 1 << 16, .n_rules = 1 << 16,
.number_tbl8s = 1 << 13, .number_tbl8s = 1 << 13,
.entry_unique_size = 8, .entry_unique_size = 8,

View File

@ -322,6 +322,7 @@ test_table_lpm(void)
/* Initialize params and create tables */ /* Initialize params and create tables */
struct rte_table_lpm_params lpm_params = { struct rte_table_lpm_params lpm_params = {
.name = "LPM",
.n_rules = 1 << 24, .n_rules = 1 << 24,
.entry_unique_size = entry_size, .entry_unique_size = entry_size,
.offset = 1 .offset = 1
@ -331,40 +332,47 @@ test_table_lpm(void)
if (table != NULL) if (table != NULL)
return -1; return -1;
lpm_params.n_rules = 0; lpm_params.name = NULL;
table = rte_table_lpm_ops.f_create(&lpm_params, 0, entry_size); table = rte_table_lpm_ops.f_create(&lpm_params, 0, entry_size);
if (table != NULL) if (table != NULL)
return -2; return -2;
lpm_params.name = "LPM";
lpm_params.n_rules = 0;
table = rte_table_lpm_ops.f_create(&lpm_params, 0, entry_size);
if (table != NULL)
return -3;
lpm_params.n_rules = 1 << 24; lpm_params.n_rules = 1 << 24;
lpm_params.offset = 32; lpm_params.offset = 32;
lpm_params.entry_unique_size = 0; lpm_params.entry_unique_size = 0;
table = rte_table_lpm_ops.f_create(&lpm_params, 0, entry_size); table = rte_table_lpm_ops.f_create(&lpm_params, 0, entry_size);
if (table != NULL) if (table != NULL)
return -3; return -4;
lpm_params.entry_unique_size = entry_size + 1; lpm_params.entry_unique_size = entry_size + 1;
table = rte_table_lpm_ops.f_create(&lpm_params, 0, entry_size); table = rte_table_lpm_ops.f_create(&lpm_params, 0, entry_size);
if (table != NULL) if (table != NULL)
return -4; return -5;
lpm_params.entry_unique_size = entry_size; lpm_params.entry_unique_size = entry_size;
table = rte_table_lpm_ops.f_create(&lpm_params, 0, entry_size); table = rte_table_lpm_ops.f_create(&lpm_params, 0, entry_size);
if (table == NULL) if (table == NULL)
return -5; return -6;
/* Free */ /* Free */
status = rte_table_lpm_ops.f_free(table); status = rte_table_lpm_ops.f_free(table);
if (status < 0) if (status < 0)
return -6; return -7;
status = rte_table_lpm_ops.f_free(NULL); status = rte_table_lpm_ops.f_free(NULL);
if (status == 0) if (status == 0)
return -7; return -8;
/* Add */ /* Add */
struct rte_table_lpm_key lpm_key; struct rte_table_lpm_key lpm_key;
@ -372,75 +380,75 @@ test_table_lpm(void)
table = rte_table_lpm_ops.f_create(&lpm_params, 0, 1); table = rte_table_lpm_ops.f_create(&lpm_params, 0, 1);
if (table == NULL) if (table == NULL)
return -8; return -9;
status = rte_table_lpm_ops.f_add(NULL, &lpm_key, &entry, &key_found, status = rte_table_lpm_ops.f_add(NULL, &lpm_key, &entry, &key_found,
&entry_ptr); &entry_ptr);
if (status == 0) if (status == 0)
return -9; return -10;
status = rte_table_lpm_ops.f_add(table, NULL, &entry, &key_found, status = rte_table_lpm_ops.f_add(table, NULL, &entry, &key_found,
&entry_ptr); &entry_ptr);
if (status == 0) if (status == 0)
return -10; return -11;
status = rte_table_lpm_ops.f_add(table, &lpm_key, NULL, &key_found, status = rte_table_lpm_ops.f_add(table, &lpm_key, NULL, &key_found,
&entry_ptr); &entry_ptr);
if (status == 0)
return -11;
lpm_key.depth = 0;
status = rte_table_lpm_ops.f_add(table, &lpm_key, &entry, &key_found,
&entry_ptr);
if (status == 0) if (status == 0)
return -12; return -12;
lpm_key.depth = 33; lpm_key.depth = 0;
status = rte_table_lpm_ops.f_add(table, &lpm_key, &entry, &key_found, status = rte_table_lpm_ops.f_add(table, &lpm_key, &entry, &key_found,
&entry_ptr); &entry_ptr);
if (status == 0) if (status == 0)
return -13; return -13;
lpm_key.depth = 33;
status = rte_table_lpm_ops.f_add(table, &lpm_key, &entry, &key_found,
&entry_ptr);
if (status == 0)
return -14;
lpm_key.depth = 16; lpm_key.depth = 16;
status = rte_table_lpm_ops.f_add(table, &lpm_key, &entry, &key_found, status = rte_table_lpm_ops.f_add(table, &lpm_key, &entry, &key_found,
&entry_ptr); &entry_ptr);
if (status != 0) if (status != 0)
return -14; return -15;
/* Delete */ /* Delete */
status = rte_table_lpm_ops.f_delete(NULL, &lpm_key, &key_found, NULL); status = rte_table_lpm_ops.f_delete(NULL, &lpm_key, &key_found, NULL);
if (status == 0) if (status == 0)
return -15; return -16;
status = rte_table_lpm_ops.f_delete(table, NULL, &key_found, NULL); status = rte_table_lpm_ops.f_delete(table, NULL, &key_found, NULL);
if (status == 0) if (status == 0)
return -16; return -17;
lpm_key.depth = 0; lpm_key.depth = 0;
status = rte_table_lpm_ops.f_delete(table, &lpm_key, &key_found, NULL); status = rte_table_lpm_ops.f_delete(table, &lpm_key, &key_found, NULL);
if (status == 0) if (status == 0)
return -17; return -18;
lpm_key.depth = 33; lpm_key.depth = 33;
status = rte_table_lpm_ops.f_delete(table, &lpm_key, &key_found, NULL); status = rte_table_lpm_ops.f_delete(table, &lpm_key, &key_found, NULL);
if (status == 0) if (status == 0)
return -18; return -19;
lpm_key.depth = 16; lpm_key.depth = 16;
status = rte_table_lpm_ops.f_delete(table, &lpm_key, &key_found, NULL); status = rte_table_lpm_ops.f_delete(table, &lpm_key, &key_found, NULL);
if (status != 0) if (status != 0)
return -19; return -20;
status = rte_table_lpm_ops.f_delete(table, &lpm_key, &key_found, NULL); status = rte_table_lpm_ops.f_delete(table, &lpm_key, &key_found, NULL);
if (status != 0) if (status != 0)
return -20; return -21;
/* Traffic flow */ /* Traffic flow */
entry = 'A'; entry = 'A';
status = rte_table_lpm_ops.f_add(table, &lpm_key, &entry, &key_found, status = rte_table_lpm_ops.f_add(table, &lpm_key, &entry, &key_found,
&entry_ptr); &entry_ptr);
if (status < 0) if (status < 0)
return -21; return -22;
for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++) for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
if (i % 2 == 0) { if (i % 2 == 0) {
@ -452,7 +460,7 @@ test_table_lpm(void)
rte_table_lpm_ops.f_lookup(table, mbufs, -1, rte_table_lpm_ops.f_lookup(table, mbufs, -1,
&result_mask, (void **)entries); &result_mask, (void **)entries);
if (result_mask != expected_mask) if (result_mask != expected_mask)
return -22; return -23;
/* Free resources */ /* Free resources */
for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++) for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
@ -478,6 +486,7 @@ test_table_lpm_ipv6(void)
/* Initialize params and create tables */ /* Initialize params and create tables */
struct rte_table_lpm_ipv6_params lpm_params = { struct rte_table_lpm_ipv6_params lpm_params = {
.name = "LPM",
.n_rules = 1 << 24, .n_rules = 1 << 24,
.number_tbl8s = 1 << 21, .number_tbl8s = 1 << 21,
.entry_unique_size = entry_size, .entry_unique_size = entry_size,
@ -488,44 +497,51 @@ test_table_lpm_ipv6(void)
if (table != NULL) if (table != NULL)
return -1; return -1;
lpm_params.n_rules = 0; lpm_params.name = NULL;
table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size); table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size);
if (table != NULL) if (table != NULL)
return -2; return -2;
lpm_params.name = "LPM";
lpm_params.n_rules = 0;
table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size);
if (table != NULL)
return -3;
lpm_params.n_rules = 1 << 24; lpm_params.n_rules = 1 << 24;
lpm_params.number_tbl8s = 0; lpm_params.number_tbl8s = 0;
table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size); table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size);
if (table != NULL) if (table != NULL)
return -2; return -4;
lpm_params.number_tbl8s = 1 << 21; lpm_params.number_tbl8s = 1 << 21;
lpm_params.entry_unique_size = 0; lpm_params.entry_unique_size = 0;
table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size); table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size);
if (table != NULL) if (table != NULL)
return -2; return -5;
lpm_params.entry_unique_size = entry_size + 1; lpm_params.entry_unique_size = entry_size + 1;
table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size); table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size);
if (table != NULL) if (table != NULL)
return -2; return -6;
lpm_params.entry_unique_size = entry_size; lpm_params.entry_unique_size = entry_size;
lpm_params.offset = 32; lpm_params.offset = 32;
table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size); table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size);
if (table == NULL) if (table == NULL)
return -3; return -7;
/* Free */ /* Free */
status = rte_table_lpm_ipv6_ops.f_free(table); status = rte_table_lpm_ipv6_ops.f_free(table);
if (status < 0) if (status < 0)
return -4; return -8;
status = rte_table_lpm_ipv6_ops.f_free(NULL); status = rte_table_lpm_ipv6_ops.f_free(NULL);
if (status == 0) if (status == 0)
return -5; return -9;
/* Add */ /* Add */
struct rte_table_lpm_ipv6_key lpm_key; struct rte_table_lpm_ipv6_key lpm_key;
@ -537,80 +553,80 @@ test_table_lpm_ipv6(void)
table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size); table = rte_table_lpm_ipv6_ops.f_create(&lpm_params, 0, entry_size);
if (table == NULL) if (table == NULL)
return -6; return -10;
status = rte_table_lpm_ipv6_ops.f_add(NULL, &lpm_key, &entry, status = rte_table_lpm_ipv6_ops.f_add(NULL, &lpm_key, &entry,
&key_found, &entry_ptr); &key_found, &entry_ptr);
if (status == 0) if (status == 0)
return -7; return -11;
status = rte_table_lpm_ipv6_ops.f_add(table, NULL, &entry, &key_found, status = rte_table_lpm_ipv6_ops.f_add(table, NULL, &entry, &key_found,
&entry_ptr); &entry_ptr);
if (status == 0) if (status == 0)
return -8; return -12;
status = rte_table_lpm_ipv6_ops.f_add(table, &lpm_key, NULL, &key_found, status = rte_table_lpm_ipv6_ops.f_add(table, &lpm_key, NULL, &key_found,
&entry_ptr); &entry_ptr);
if (status == 0) if (status == 0)
return -9; return -13;
lpm_key.depth = 0; lpm_key.depth = 0;
status = rte_table_lpm_ipv6_ops.f_add(table, &lpm_key, &entry, status = rte_table_lpm_ipv6_ops.f_add(table, &lpm_key, &entry,
&key_found, &entry_ptr); &key_found, &entry_ptr);
if (status == 0) if (status == 0)
return -10; return -14;
lpm_key.depth = 129; lpm_key.depth = 129;
status = rte_table_lpm_ipv6_ops.f_add(table, &lpm_key, &entry, status = rte_table_lpm_ipv6_ops.f_add(table, &lpm_key, &entry,
&key_found, &entry_ptr); &key_found, &entry_ptr);
if (status == 0) if (status == 0)
return -11; return -15;
lpm_key.depth = 16; lpm_key.depth = 16;
status = rte_table_lpm_ipv6_ops.f_add(table, &lpm_key, &entry, status = rte_table_lpm_ipv6_ops.f_add(table, &lpm_key, &entry,
&key_found, &entry_ptr); &key_found, &entry_ptr);
if (status != 0) if (status != 0)
return -12; return -16;
/* Delete */ /* Delete */
status = rte_table_lpm_ipv6_ops.f_delete(NULL, &lpm_key, &key_found, status = rte_table_lpm_ipv6_ops.f_delete(NULL, &lpm_key, &key_found,
NULL); NULL);
if (status == 0) if (status == 0)
return -13; return -17;
status = rte_table_lpm_ipv6_ops.f_delete(table, NULL, &key_found, NULL); status = rte_table_lpm_ipv6_ops.f_delete(table, NULL, &key_found, NULL);
if (status == 0) if (status == 0)
return -14; return -18;
lpm_key.depth = 0; lpm_key.depth = 0;
status = rte_table_lpm_ipv6_ops.f_delete(table, &lpm_key, &key_found, status = rte_table_lpm_ipv6_ops.f_delete(table, &lpm_key, &key_found,
NULL); NULL);
if (status == 0) if (status == 0)
return -15; return -19;
lpm_key.depth = 129; lpm_key.depth = 129;
status = rte_table_lpm_ipv6_ops.f_delete(table, &lpm_key, &key_found, status = rte_table_lpm_ipv6_ops.f_delete(table, &lpm_key, &key_found,
NULL); NULL);
if (status == 0) if (status == 0)
return -16; return -20;
lpm_key.depth = 16; lpm_key.depth = 16;
status = rte_table_lpm_ipv6_ops.f_delete(table, &lpm_key, &key_found, status = rte_table_lpm_ipv6_ops.f_delete(table, &lpm_key, &key_found,
NULL); NULL);
if (status != 0) if (status != 0)
return -17; return -21;
status = rte_table_lpm_ipv6_ops.f_delete(table, &lpm_key, &key_found, status = rte_table_lpm_ipv6_ops.f_delete(table, &lpm_key, &key_found,
NULL); NULL);
if (status != 0) if (status != 0)
return -18; return -22;
/* Traffic flow */ /* Traffic flow */
entry = 'A'; entry = 'A';
status = rte_table_lpm_ipv6_ops.f_add(table, &lpm_key, &entry, status = rte_table_lpm_ipv6_ops.f_add(table, &lpm_key, &entry,
&key_found, &entry_ptr); &key_found, &entry_ptr);
if (status < 0) if (status < 0)
return -19; return -23;
for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++) for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)
if (i % 2 == 0) { if (i % 2 == 0) {
@ -622,7 +638,7 @@ test_table_lpm_ipv6(void)
rte_table_lpm_ipv6_ops.f_lookup(table, mbufs, -1, rte_table_lpm_ipv6_ops.f_lookup(table, mbufs, -1,
&result_mask, (void **)entries); &result_mask, (void **)entries);
if (result_mask != expected_mask) if (result_mask != expected_mask)
return -20; return -24;
/* Free resources */ /* Free resources */
for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++) for (i = 0; i < RTE_PORT_IN_BURST_SIZE_MAX; i++)

View File

@ -484,6 +484,7 @@ pipeline_routing_init(struct pipeline_params *params,
p->n_tables = 1; p->n_tables = 1;
{ {
struct rte_table_lpm_params table_lpm_params = { struct rte_table_lpm_params table_lpm_params = {
.name = p->name,
.n_rules = p_rt->n_routes, .n_rules = p_rt->n_routes,
.entry_unique_size = sizeof(struct routing_table_entry), .entry_unique_size = sizeof(struct routing_table_entry),
.offset = p_rt->ip_da_offset, .offset = p_rt->ip_da_offset,