[dpdk-dev] [PATCH v3] app/pdump: enhance to support multi-core capture

Varghese, Vipin vipin.varghese at intel.com
Fri Mar 29 11:22:04 CET 2019


Hi Reshma,

snipped
> >
> >  /* true if x is a power of 2 */
> >  #define POWEROF2(x) ((((x)-1) & (x)) == 0) @@ -144,7 +145,7 @@ static
> > volatile uint8_t quit_signal;  static void  pdump_usage(const char *prgname)  {
> > -	printf("usage: %s [EAL options] -- --pdump "
> > +	printf("usage: %s [EAL options] -- [-l <list of cores>] --pdump "
> 
> Using -l option same as eal is confusing. Please use other name.
Current implementation passes core-mask '-cx1' as EAL argument. The check for user argument '-l <core1,core2,core3' is done before rte_eal_init. Once identified it is replaced with c_flag.

Hence I disagree to the point it is confusing.

> Also how about moving this  new option inside --pdump"" so it will be clearly
> known that the particular core will be associated to that tuple.
Yes, this can be done.

> 
> Also, I have some major concern, check my below comments.
Thanks for your concerns, let me try to address them below.

> 
> >  			"'(port=<port id> | device_id=<pci id or vdev name>),"
> >  			"(queue=<queue_id>),"
> >  			"(rx-dev=<iface or pcap file> |"
> > @@ -415,6 +416,7 @@ print_pdump_stats(void)
> >  	for (i = 0; i < num_tuples; i++) {
> >  		printf("##### PDUMP DEBUG STATS #####\n");
> >  		pt = &pdump_t[i];
> > +		printf(" == DPDK interface (%d) ==\n", i);
> 
> Here good to print the portid/deviceid and queue info, instead of printing pdump
> tuple index  i? User might not understand that.
I am not sure, why you mention that I am displaying tuple index with I here?

> Use ### instead of === as above.
I can do this, but is there specific reasoning for "####" as it is used to represent main header?

> 
> > +
> >  static inline void
> >  dump_packets(void)
> >  {
> >  	int i;
> > -	struct pdump_tuples *pt;
> > +	uint32_t lcore_id = 0;
> > +
> > +	lcore_id = rte_get_next_lcore(lcore_id, 1, 1);
> > +
> > +	if (rte_lcore_count() == 1) {
> > +		while (!quit_signal) {
> > +			for (i = 0; i < num_tuples; i++) {
> > +				struct pdump_tuples *pt = &pdump_t[i];
> > +				pdump_packets(pt);
> > +			}
> > +		}
> > +	} else {
> > +		printf(" Tuples (%u) lcores (%u)\n",
> > +			num_tuples, rte_lcore_count());
> > +
> > +		if ((uint32_t)num_tuples >= rte_lcore_count()) {
> > +			printf("Insufficent Cores\n");
> Typo %s/Insufficent/
Ok

> 
> 
> > +	for (i = 0; i < argc; i++) {
> > +		if (strstr(argv[i], "-l")) {
> > +			snprintf(c_flag, RTE_DIM(c_flag), "-l %s", argv[i+1]);
> 
> You are taking this as application arguments then making it as eal argument  to
> run the application.
I have explained the same above.

> Why not enable the needed number of cores in core mask using eal options -l 
I think what you are saying is "allow user to pass -l option or -c option before `--`". Then before invoking rte_eal_init replace it. Is this your requirement?

and
> have new core param in pdump tuple to run that tuple on that core.
> 
> Ex:
> If you check l3fwd as an example the cores should enabled using -c or -l and then
> they have separate --config l3fwd option in which they specify the core on which
> the packet processing should be run. Please check that and similar would be good
> here too.
I have already explained, pdump application makes static assignment of '-cx1'. If you try passing '-c' or '-l' the error check in rte_eal_init will prevent such assignment.

> 
> > +			strlcpy(argv[i], "", 2);
> > +			strlcpy(argv[i + 1], "", 2);
> 
> Why is this?
I have explained this above.


 Anyway, rte_strlcpy should be used instead of strlcpy.
Ok

> 
> Thanks,
> Reshma
Hi Reshma, thanks for feedbacks on cosmetic, spelling and using rte_strlcpy


More information about the dev mailing list