examples/l2fwd-crypto: add cryptodev mask option
Previously, l2fwd-crypto application did not give user the flexibility to decide which crypto device(s) will be used. In this patch, a new cryptodev_mask option is added to the application. Same as portmask, the cryptodev_mask avails the user to mask out the unwanted crypto devices in the system. Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
This commit is contained in:
parent
18f421f65b
commit
d2797f51cc
@ -89,7 +89,7 @@ The application requires a number of command line options:
|
||||
[--cipher_key_random_size SIZE] [--iv IV] [--iv_random_size SIZE] /
|
||||
[--auth_algo ALGO] [--auth_op GENERATE/VERIFY] [--auth_key KEY] /
|
||||
[--auth_key_random_size SIZE] [--aad AAD] [--aad_random_size SIZE] /
|
||||
[--digest size SIZE] [--sessionless]
|
||||
[--digest size SIZE] [--sessionless] [--cryptodev_mask MASK]
|
||||
|
||||
where,
|
||||
|
||||
@ -157,6 +157,11 @@ where,
|
||||
|
||||
* sessionless: no crypto session will be created.
|
||||
|
||||
* cryptodev_mask: A hexadecimal bitmask of the cryptodevs to be used by the
|
||||
application.
|
||||
|
||||
(default is all cryptodevs).
|
||||
|
||||
|
||||
The application requires that crypto devices capable of performing
|
||||
the specified crypto operation are available on application initialization.
|
||||
|
@ -167,6 +167,8 @@ struct l2fwd_crypto_options {
|
||||
|
||||
uint16_t block_size;
|
||||
char string_type[MAX_STR_LEN];
|
||||
|
||||
uint64_t cryptodev_mask;
|
||||
};
|
||||
|
||||
/** l2fwd crypto lcore params */
|
||||
@ -857,7 +859,8 @@ l2fwd_crypto_usage(const char *prgname)
|
||||
" --aad_random_size SIZE: size of AAD when generated randomly\n"
|
||||
" --digest_size SIZE: size of digest to be generated/verified\n"
|
||||
|
||||
" --sessionless\n",
|
||||
" --sessionless\n"
|
||||
" --cryptodev_mask MASK: hexadecimal bitmask of crypto devices to configure\n",
|
||||
prgname);
|
||||
}
|
||||
|
||||
@ -1001,6 +1004,27 @@ parse_auth_op(enum rte_crypto_auth_operation *op, char *optarg)
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int
|
||||
parse_cryptodev_mask(struct l2fwd_crypto_options *options,
|
||||
const char *q_arg)
|
||||
{
|
||||
char *end = NULL;
|
||||
uint64_t pm;
|
||||
|
||||
/* parse hexadecimal string */
|
||||
pm = strtoul(q_arg, &end, 16);
|
||||
if ((pm == '\0') || (end == NULL) || (*end != '\0'))
|
||||
pm = 0;
|
||||
|
||||
options->cryptodev_mask = pm;
|
||||
if (options->cryptodev_mask == 0) {
|
||||
printf("invalid cryptodev_mask specified\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Parse long options */
|
||||
static int
|
||||
l2fwd_crypto_parse_args_long_options(struct l2fwd_crypto_options *options,
|
||||
@ -1101,6 +1125,9 @@ l2fwd_crypto_parse_args_long_options(struct l2fwd_crypto_options *options,
|
||||
return 0;
|
||||
}
|
||||
|
||||
else if (strcmp(lgopts[option_index].name, "cryptodev_mask") == 0)
|
||||
return parse_cryptodev_mask(options, optarg);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -1215,6 +1242,7 @@ l2fwd_crypto_default_options(struct l2fwd_crypto_options *options)
|
||||
options->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
|
||||
|
||||
options->type = CDEV_TYPE_ANY;
|
||||
options->cryptodev_mask = UINT64_MAX;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1337,6 +1365,7 @@ l2fwd_crypto_parse_args(struct l2fwd_crypto_options *options,
|
||||
{ "digest_size", required_argument, 0, 0 },
|
||||
|
||||
{ "sessionless", no_argument, 0, 0 },
|
||||
{ "cryptodev_mask", required_argument, 0, 0},
|
||||
|
||||
{ NULL, 0, 0, 0 }
|
||||
};
|
||||
@ -1477,6 +1506,17 @@ check_type(struct l2fwd_crypto_options *options, struct rte_cryptodev_info *dev_
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Check if the device is enabled by cryptodev_mask */
|
||||
static int
|
||||
check_cryptodev_mask(struct l2fwd_crypto_options *options,
|
||||
uint8_t cdev_id)
|
||||
{
|
||||
if (options->cryptodev_mask & (1 << cdev_id))
|
||||
return 0;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static inline int
|
||||
check_supported_size(uint16_t length, uint16_t min, uint16_t max,
|
||||
uint16_t increment)
|
||||
@ -1531,6 +1571,9 @@ initialize_cryptodevs(struct l2fwd_crypto_options *options, unsigned nb_ports,
|
||||
}
|
||||
};
|
||||
|
||||
if (check_cryptodev_mask(options, (uint8_t)cdev_id))
|
||||
continue;
|
||||
|
||||
rte_cryptodev_info_get(cdev_id, &dev_info);
|
||||
|
||||
/* Set cipher parameters */
|
||||
|
Loading…
x
Reference in New Issue
Block a user