((params->action_mask & (1LLU << RTE_TABLE_ACTION_FWD)) == 0))
return NULL;
+ if ((params->action_mask & (1LLU << RTE_TABLE_ACTION_LB)) &&
+ (params->lb.f_hash == NULL)) {
+ switch (params->lb.key_size) {
+ case 8:
+ params->lb.f_hash = hash_default_key8;
+ break;
+
+ case 16:
+ params->lb.f_hash = hash_default_key16;
+ break;
+
+ case 24:
+ params->lb.f_hash = hash_default_key24;
+ break;
+
+ case 32:
+ params->lb.f_hash = hash_default_key32;
+ break;
+
+ case 40:
+ params->lb.f_hash = hash_default_key40;
+ break;
+
+ case 48:
+ params->lb.f_hash = hash_default_key48;
+ break;
+
+ case 56:
+ params->lb.f_hash = hash_default_key56;
+ break;
+
+ case 64:
+ params->lb.f_hash = hash_default_key64;
+ break;
+
+ default:
+ return NULL;
+ }
+
+ params->lb.seed = 0;
+ }
+
/* Resource */
ap = rte_table_action_profile_create(¶ms->common);
if (ap == NULL)
* priority <priority>
* ipv4 | ipv6 <sa> <sa_depth> <da> <da_depth>
* <sp0> <sp1> <dp0> <dp1> <proto>
- * | array
- * pos
+ * | array <pos>
* | hash
* raw <key>
* | ipv4_5tuple <sa> <da> <sp> <dp> <proto>
tokens++;
n_tokens--;
- if (n_tokens < RTE_TABLE_ACTION_LB_KEY_SIZE_MAX)
+ if (n_tokens < RTE_TABLE_ACTION_LB_TABLE_SIZE)
return 0;
- for (i = 0; i < RTE_TABLE_ACTION_LB_KEY_SIZE_MAX; i++)
+ for (i = 0; i < RTE_TABLE_ACTION_LB_TABLE_SIZE; i++)
if (parser_read_uint32(&a->lb.out[i], tokens[i]) != 0)
return 0;
a->action_mask |= 1 << RTE_TABLE_ACTION_LB;
- return 1 + RTE_TABLE_ACTION_LB_KEY_SIZE_MAX;
+ return 1 + RTE_TABLE_ACTION_LB_TABLE_SIZE;
}