"Traynor, Kevin" <kevin.tray...@intel.com> writes: >> -----Original Message----- >> From: Aaron Conole [mailto:acon...@redhat.com] >> Sent: Monday, January 4, 2016 9:47 PM >> To: dev@openvswitch.org; Flavio Leitner; Traynor, Kevin >> Subject: [PATCH v2 3/3] netdev-dpdk: Autofill lcore coremask if absent >> >> The user has control over the DPDK internal lcore coremask, but this >> parameter can be autofilled with a bit more intelligence. If the user >> does not fill this parameter in, we use the lowest set bit in the >> current task CPU affinity. Otherwise, we will reassign the current >> thread to the specified lcore mask, in addition to the dpdk lcore >> threads. >> >> Signed-off-by: Aaron Conole <acon...@redhat.com> >> Cc: Kevin Traynor <kevin.tray...@intel.com> >> --- >> v2: >> * Fix a conditional branch coding standard issue >> * When lcore coremask is set, do not reset the affinities as >> suggested by Kevin Traynor >> >> lib/netdev-dpdk.c | 58 ++++++++++++++++++++++++++++++++++++++++++++--------- >> -- >> 1 file changed, 47 insertions(+), 11 deletions(-) >> >> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c >> index 2ce9f71..75f40ff 100644 >> --- a/lib/netdev-dpdk.c >> +++ b/lib/netdev-dpdk.c >> @@ -65,6 +65,8 @@ static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, >> 20); >> #define OVS_CACHE_LINE_SIZE CACHE_LINE_SIZE >> #define OVS_VPORT_DPDK "ovs_dpdk" >> >> +#define MAX_BUFSIZ 256 >> + >> /* >> * need to reserve tons of extra space in the mbufs so we can align the >> * DMA addresses to 4KB. >> @@ -2192,7 +2194,8 @@ grow_argv(char ***argv, size_t cur_siz, size_t grow_by) >> } >> >> static int >> -get_dpdk_args(const struct ovsrec_open_vswitch *ovs_cfg, char ***argv) >> +get_dpdk_args(const struct ovsrec_open_vswitch *ovs_cfg, char ***argv, >> + int argc) >> { >> struct dpdk_options_map { >> const char *ovs_configuration; >> @@ -2200,14 +2203,14 @@ get_dpdk_args(const struct ovsrec_open_vswitch >> *ovs_cfg, char ***argv) >> bool default_enabled; >> const char *default_value; >> } opts[] = { >> - {"dpdk-lcore-mask", "-c", true, "0x1"}, >> + {"dpdk-lcore-mask", "-c", false, NULL}, >> /* XXX: DPDK 2.2.0 support, the true should become false for -n */ >> {"dpdk-mem-channels", "-n", true, "4"}, >> {"dpdk-alloc-mem", "-m", false, NULL}, >> {"dpdk-socket-mem", "--socket-mem", true, "1024,0"}, >> {"dpdk-hugepage-dir", "--huge-dir", false, NULL}, >> }; >> - int i, ret = 1; >> + int i, ret = argc; >> >> for(i = 0; i < (sizeof(opts) / sizeof(opts[0])); ++i) { >> const char *lookup = smap_get(&ovs_cfg->other_config, >> @@ -2250,7 +2253,8 @@ __dpdk_init(const struct ovsrec_open_vswitch *ovs_cfg) >> { >> char **argv = NULL; >> int result; >> - int argc; >> + int argc = 0, argc_tmp; >> + bool auto_determine = true; >> int err; >> cpu_set_t cpuset; >> >> @@ -2279,12 +2283,41 @@ __dpdk_init(const struct ovsrec_open_vswitch >> *ovs_cfg) >> ovs_abort(0, "Thread getaffinity error %d.", err); >> } >> >> - argv = grow_argv(&argv, 0, 1); >> + argv = grow_argv(&argv, argc, argc+1); > > argc and 1 are added in grow_argv(), so I think it should be > 'argv = grow_argv(&argv, argc, 1);'. Similar for other grow_argv() > calls
Good catch, I completely missed it. Yes this is an over-allocation. Thanks for the review, Kevin! _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev