[dpdk-dev] [RFC] New CLI for DPDK

Olivier Matz olivier.matz at 6wind.com
Fri Mar 24 14:09:54 CET 2017


Hi Keith,

On Thu, 23 Mar 2017 16:13:21 +0000, "Wiles, Keith" <keith.wiles at intel.com> wrote:
> > On Mar 10, 2017, at 9:25 AM, Wiles, Keith <keith.wiles at intel.com> wrote:
> > 
> > I would like to request for comments on a new CLI design and get any feedback. I have attached the cli.rst text, which is still a work in progress for you review.
> > 
> > I have also ported the CLI to a version of Pktgen on the ‘dev’ branch of the repo in DPDK.org.
> > 
> > http://dpdk.org/browse/apps/pktgen-dpdk/refs/?h=dev
> > 
> > I would like to submit the CLI library to be used in DPDK, if that seems reasonable to everyone. I need more testing of the API and Pktgen, but I feel it has a simpler design, easier to understand and hopefully make it easier for developers to add commands.
> > 
> > As an example I quickly converted over testpmd from CMDLINE to CLI (I just add a -I option to select CLI instead) and reduced the test-pmd/cmdline.c file from 12.6K lines to about 4.5K lines. I did not fully test the code, but the ones I did test seem to work.
> > 
> > I do not expect DPDK to convert to the new CLI only if it makes sense and I am not suggesting to replace CMDLINE library.
> > 
> > If you play with the new CLI in pktgen and see any problems or want to suggest new features or changes please let me know.
> > 
> > Comments on the cli.rst text is also welcome, but the cli.rst is not complete. I think this file needs to be broken into two one to explain the example and another to explain CLI internals.  
> 
> Any more comments on the CLI code for DPDK.
> 
> Should I submit a patch for DPDK or would it be better to push this into its own repo on DPDK?
> 

I agree that there is a large possibility of improvements in librte_cmdline.

Just for reference, I think this design was not that bad at the time it
was introduced:
- declaring commands as static variables makes sense when running on
  baremetal without malloc library
- implementing a readline-like part was also needed because not available
  on baremetal
- masking structures to the user was harder due to the lack of malloc
- having a cli is really helpful for a program like testpmd (both for
  a user or for an automatic test program)

Few efforts were made to enhance this library because it's not the heart
of dpdk.

The current status is acceptable to me: this library is mostly used
internally in dpdk for test apps, and application developers are free
to use a better one if they want.

But adding another cli lib in dpdk does not make sense to me. I think
the proper direction would be to remove the cli from dpdk and use a
good cli library that is available in distros. But for that:
- we need to find one
- we need to update all examples/tests that use the cmdline, and
  that will be a lot of work
- we need to enhance dpdk framework to better manage deps with
  external libraries

So, in my opinion, the CLI you are proposing should be hosted on another
repo.

Regards,
Olivier


More information about the dev mailing list