[dts] Adding support for a new NIC on DTS

Liu, Yong yong.liu at intel.com
Thu Sep 10 07:57:06 CEST 2015

Some comments below. If need us to support on suite debug, the log file is required to check root cause.

> -----Original Message-----
> From: Eric Kadison [mailto:ekadison at broadcom.com]
> Sent: Thursday, September 10, 2015 12:25 PM
> To: Liu, Yong; dts at dpdk.org
> Subject: RE: Adding support for a new NIC on DTS
> Hi Yong,
> Thank you for your reply.  My execution.cfg contains:
> [Execution1]
> crbs=
> test_suites=
> # hello_world,
> # l3fwd
>  jumboframes
> targets=
>  x86_64-native-linuxapp-gcc
> parameters=nic_type=BRCM57304:func=true:perf=false
> drivername=igb_uio
> Note that:
>  - The DUT_PORT_MAP is built correctly.  So the discovery process on the
> DUT has found my NIC and discovered the correct connections to the Tester.
> The ports.cfg file has not been changed from its default.
>  - The NIC is bound to our PMC correctly.  This is clear in the output log.
> At DTS completion, the kernel driver is reloaded properly.
>  - As you can see, I have figured out that the "drivername" argument is
> required and must contain the name of the uio driver.  My settings.py file
> contains the driver name of the kernel driver for my NIC (not the PMD).

Yes, this argument is for kernel driver for the NIC. DTS also can support driver "vfio-pci". 

>  - As you can see, I've tried the l3fwd and the jumboframes test suites.
> Neither works.  The helloworld test was successful.
>  - The l3fwd test performs setup and then runs no test cases.  It appears
> that DTS will only run the test cases if called out on the command line,
> though I don't know why??  When I tried to add a test case function name
> to the command line, it still ran nothing.

Here is easy to confuse, when DTS run performance test here should be "perf=true".

>  - The jumboframes test executes, but reports errors.  We are
> investigating whether or not these errors might be actual errors in our
> PMD or NIC or the test case code, but other (non-DTS) tests for jumbo
> frames have passed.  The errors are on all the jumbo test cases (the
> nojumbo test case passes).  One test case fails with a Timeout on the
> "show port stats 0 " command.  The log files and the test_results.xls file
> both show the passes and failures.

Here we need the log file to further check. I guess maybe packet length different from default NIC.
> A few questions:
> 1. Should we expect the jumboframes test case to pass with an arbitrary
> NIC with a working PMD?

We do not expect every feature can work on an arbitrary NIC.
If the NIC support some feature, we can add this information in conf/dpdk_test_case_checklist.xls.
When run those suites, DTS will skip for not supported.

> 2. What is needed to make the l3fwd test case execute?

If there's no IXIA machine in your environment, DTS require one independent tester CRB which will run dpdk based pktgen. 
Driver igb_uio should also be placed at tester's root directory. 

> 3. Can you suggest a test  suite that should run without being customized
> to a specific NIC?

I suggest to run testpmd suite, for it only check forwarded packet.
There's no special setting required in this suite.

> 4. It appears that the conf directory contains a collection of
> configuration files that may be needed under certain circumstances.  Can
> you either define when these are needed or point me to documentation that
> so defines?
Thanks for remind, we add few configurations for different scenarios recently.
There's document missing here, we will add documents soon.

> Thank you,
> Eric Kadison
> > -----Original Message-----
> > From: Liu, Yong [mailto:yong.liu at intel.com]
> > Sent: Saturday, September 05, 2015 5:48 PM
> > To: Eric Kadison; dts at dpdk.org
> > Subject: RE: Adding support for a new NIC on DTS
> >
> > Hi Eric,
> > Can you show your settings in execution.cfg? By default NIC port type is
> "cfg"
> > which mean DTS will only load ports which defined in conf/ports.cfg.
> >
> > Here is one sample for port configuration file. Setting "pci" mean the
> pci
> > address of DUT port, "peer" mean the opposite test port pci address.
> > [root at dpdk-test38 dts]# cat conf/ports.cfg [DUT IP] ports=
> >     pci=87:00.0,peer=07:00.0;
> >     pci=87:00.1,peer=07:00.1;
> >
> >
> > > -----Original Message-----
> > > From: dts [mailto:dts-bounces at dpdk.org] On Behalf Of Eric Kadison
> > > Sent: Thursday, September 03, 2015 6:36 AM
> > > To: dts at dpdk.org
> > > Subject: [dts] Adding support for a new NIC on DTS
> > >
> > > Hi everyone,
> > > I'm trying to add support for a new NIC to DTS.  It is clear that the
> > > driver needs to be identified in the settings.py file (by adding to
> > > the NICS dict the device name (as the key) and PCI ID (as the value),
> > > and then adding the kernel driver name (as value) to the same key in
> > > the DRIVERS dict).  Did I miss anything?
> > >
> > > After entering my DUT host computer information in crbs.py, and
> > > setting up execution.cfg, I expected some basic tests to run.  The
> > > hello_world test ran successfully, but it does not bind my ports to
> > > the igb_uio driver.  So no test that tries to run I/O runs.  In fact,
> > > it looks like the code in the project_dpdk.py file in set_target tries
> > > to bind the NIC to the kernel driver.  Can anyone point me at a
> solution?
> > >
> > > Test configuration use DTS from the master branch and DPDK 2.0.
> > >
> > > Eric Kadison

More information about the dts mailing list