@@ -100,7 +100,7 @@
"--rss-ip | --rss-udp | "
"--rxpt= | --rxht= | --rxwt= | --rxfreet= | "
"--txpt= | --txht= | --txwt= | --txfreet= | "
- "--txrst= | --txqflags= ]\n",
+ "--txrst= | --txqflags= | --vf-max-queue= ]\n",
progname);
#ifdef RTE_LIBRTE_CMDLINE
printf(" --interactive: run in interactive mode.\n");
@@ -216,6 +216,8 @@
"disable print of designated event or all of them.\n");
printf(" --flow-isolate-all: "
"requests flow API isolated mode on all ports at initialization time.\n");
+ printf(" --vf-max-queue=N: set the maximum queue number per VF "
+ "(N: positive integer).\n");
}
#ifdef RTE_LIBRTE_CMDLINE
@@ -638,6 +640,7 @@
{ "no-rmv-interrupt", 0, 0, 0 },
{ "print-event", 1, 0, 0 },
{ "mask-event", 1, 0, 0 },
+ { "vf-max-queue", 1, 0, 0 },
{ 0, 0, 0, 0 },
};
@@ -1133,3 +1136,31 @@
}
}
}
+
+void
+pre_launch_args_parse(int argc, char **argv)
+{
+ int i;
+ char *tmp;
+ int nb_queue = 0;
+
+ /**
+ * Don't want to check the first string.
+ * It should not be a parameter.
+ */
+ for (i = 1; i < argc; i++) {
+ tmp = *(argv + i);
+ if (!strncmp(tmp, "--vf-max-queue=", 15)) {
+ tmp += 15;
+ nb_queue = atoi(tmp);
+ if (nb_queue > 0)
+ g_max_queue_number_per_vf = nb_queue;
+ else
+ rte_exit(EXIT_FAILURE,
+ "vf-max-queue must be > 0\n");
+
+ /* delete it if more than 1 patameters to check */
+ break;
+ }
+ }
+}
@@ -2289,6 +2289,8 @@ uint8_t port_is_bonding_slave(portid_t slave_pid)
signal(SIGINT, signal_handler);
signal(SIGTERM, signal_handler);
+ pre_launch_args_parse(argc, argv);
+
diag = rte_eal_init(argc, argv);
if (diag < 0)
rte_panic("Cannot init EAL\n");
@@ -650,6 +650,7 @@ void port_rss_hash_key_update(portid_t port_id, char rss_type[],
uint8_t *open_ddp_package_file(const char *file_path, uint32_t *size);
int save_ddp_package_file(const char *file_path, uint8_t *buf, uint32_t size);
int close_ddp_package_file(uint8_t *buf);
+void pre_launch_args_parse(int argc, char **argv);
enum print_warning {
ENABLED_WARN = 0,