dpdk.git
10 years agoapp/test: fix build without librte_cmdline
Thomas Monjalon [Thu, 14 Nov 2013 21:26:30 +0000 (22:26 +0100)]
app/test: fix build without librte_cmdline

Some features are not available if LIBRTE_CMDLINE is disabled:
- interactive commands
- cmdline tests
Remove also cmdline_parse includes which are not needed.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
10 years agokni: fix build with kernel 3.14
Aaro Koskinen [Tue, 4 Feb 2014 12:59:09 +0000 (13:59 +0100)]
kni: fix build with kernel 3.14

ether_addr_equal() was added in Linux 3.5. compare_ether_addr() was
deleted in 3.14. Start using ether_addr_equal() and provide an own
implementation for older kernels.

This fixes the compilation with Linux 3.14-rc1.

Signed-off-by: Aaro Koskinen <aaro.koskinen@nsn.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agokni: fix build with kernel < 3.3 with netdev_features_t backport
Adrien Mazarguil [Thu, 21 Mar 2013 10:09:23 +0000 (11:09 +0100)]
kni: fix build with kernel < 3.3 with netdev_features_t backport

The netdev_features_t typedef appeared in Linux 3.3, but checking the kernel
version isn't enough with some distributions (such as Debian Wheezy) that
backported it into 3.2, causing a compilation failure due to redefinition.

Since the presence of a typedef can't be tested at compile time, this commit
adds type kni_netdev_features_t, which, depending on the kernel version,
translates either to u32 or netdev_features_t.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agokni: fix build with 802.1p kernel support
Thomas Monjalon [Thu, 7 Feb 2013 13:07:47 +0000 (14:07 +0100)]
kni: fix build with 802.1p kernel support

C90 compilers forbid mixed declaration and code.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
10 years agoixgbe: remove residual fix about resetting big Tx queues
Thomas Monjalon [Wed, 15 Jan 2014 15:41:21 +0000 (16:41 +0100)]
ixgbe: remove residual fix about resetting big Tx queues

No need to keep residues of a fix which is replaced by another one.
This reverts commit 5a6d9897f91f6bb4b2
(residual fix about resetting big Tx queues).

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agopcap: save if_index of the bound device
Mats Liljegren [Fri, 24 Jan 2014 13:24:15 +0000 (14:24 +0100)]
pcap: save if_index of the bound device

Use command line parameters to get the name of the interface.
This name is converted into if_index, which is provided as
device info.

Signed-off-by: Mats Liljegren <mats.liljegren@enea.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agopcap: fix build when pcap_sendpacket is unavailable
David Marchand [Fri, 22 Nov 2013 10:24:57 +0000 (11:24 +0100)]
pcap: fix build when pcap_sendpacket is unavailable

Before libpcap 1.0.0, pcap_sendpacket was not available on linux targets (unless
backported).
When using such a library, we won't be able to send packet on the wire, yet we
can still dump packets into a pcap file.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agopcap: fix build with old libpcap
David Marchand [Fri, 22 Nov 2013 10:24:56 +0000 (11:24 +0100)]
pcap: fix build with old libpcap

For backwards compatibility, pcap.h includes pcap/pcap.h.
Hence, to be compatible with older pcap libraries, we must include pcap.h.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agopcap: fix build with empty LIBPCAP_CFLAGS
Robert Sanford [Fri, 6 Dec 2013 16:48:34 +0000 (11:48 -0500)]
pcap: fix build with empty LIBPCAP_CFLAGS

In rte.sdkbuild.mk with CONFIG_RTE_LIBRTE_PMD_PCAP=y,
we error-exit if LIBPCAP_CFLAGS is empty.
On some distros (e.g., Centos 6.4), it is normal for "pcap-config --cflags"
to output only a newline, because pcap header files reside in /usr/include/.
Solution is to remove the line that checks whether LIBPCAP_CFLAGS is empty.

Signed-off-by: Robert Sanford <rsanford@prolexic.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agopcap: use pcap-config to guess compilation flags
David Marchand [Fri, 22 Nov 2013 10:24:55 +0000 (11:24 +0100)]
pcap: use pcap-config to guess compilation flags

Use pcap-config to populate CFLAGS and LDFLAGS.
LIBPCAP_CFLAGS and LIBPCAP_LDFLAGS can be used to override this (useful when
cross-compiling).

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agopcap: remove unused constant
Thomas Monjalon [Thu, 2 Jan 2014 17:31:08 +0000 (18:31 +0100)]
pcap: remove unused constant

RTE_ETH_PCAP_MBUFS is not used anymore since commit 6eb0ae218a9803bc0
(pcap: fix mbuf allocation).

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoethdev: introduce if_index in device info
Mats Liljegren [Fri, 24 Jan 2014 13:24:14 +0000 (14:24 +0100)]
ethdev: introduce if_index in device info

This field is intended for pcap to describe the name of the interface
as known to Linux. It is an interface index, but can be translated into
an interface name using if_indextoname() function.

When using pcap, interrupt affinity becomes important, and this field
gives the application a chance to ensure that interrupt affinity is set
to the lcore handling the device.

Signed-off-by: Mats Liljegren <mats.liljegren@enea.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoethdev: fix non-reconfigurable pmd init
Thomas Monjalon [Fri, 13 Sep 2013 12:14:02 +0000 (14:14 +0200)]
ethdev: fix non-reconfigurable pmd init

Some Poll-Mode Drivers (PMD) are not reconfigurable and,
thus, do not implement (rx|tx)_queue_release functions.
For these drivers, the functions rte_eth_dev_(rx|tx)_queue_config
must return an ENOTSUP error only when reconfiguring,
but not at initial configuration.

Move the FUNC_PTR_OR_ERR_RET check into the case of reconfiguration.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Ivan Boule <ivan.boule@6wind.com>
10 years agoethdev: add pause frame counters for em/igb/ixgbe
Ivan Boule [Thu, 27 Jun 2013 12:54:08 +0000 (14:54 +0200)]
ethdev: add pause frame counters for em/igb/ixgbe

Add into the `rte_eth_stats` data structure 4 (64-bit) counters
of XOFF/XON pause frames received and sent on a given port.

Update em, igb, and ixgbe drivers to return the value of the 4 XOFF/XON
counters through the `rte_eth_stats_get` function exported by the DPDK
API.

Display the value of the 4 XOFF/XON counters in the `testpmd` application.

Signed-off-by: Ivan Boule <ivan.boule@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoethdev: add support for device offload capabilities
Ivan Boule [Tue, 16 Apr 2013 12:42:33 +0000 (14:42 +0200)]
ethdev: add support for device offload capabilities

1) Make device RX and TX offload capabilities to be returned in the
   rte_eth_dev_info data structure by the function rte_eth_dev_info_get

   The following initial set of RX offload capabilities are defined:
   - VLAN header stripping
   - IPv4 header checksum check
   - UDP checksum check
   - TCP checksum check
   - TCP large receive offload (LRO)

   The following initial set of TX offload capabilities are defined:
   - VLAN header insertion
   - IPv4 header checksum computation
   - UDP checksum computation
   - TCP checksum computation
   - SCTP checksum computation
   - TCP segmentation offload (Transmit Segmentation Offload)
   - UDP segmentation offload

   2) Update the eth_dev_infos_get() function of the igb and ixgbe PMDs
      to return the offload capabilities which are supported by the
      device and that are effectively managed by the driver.

Signed-off-by: Ivan Boule <ivan.boule@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agopci: add option --create-uio-dev to run without hotplug
Olivier Matz [Tue, 28 Jan 2014 14:26:00 +0000 (15:26 +0100)]
pci: add option --create-uio-dev to run without hotplug

When the user specifies --create-uio-dev in dpdk eal start options, the
DPDK will create the /dev/uioX instead of waiting that a program does it
(which is usually hotplug).

This option is useful in embedded environments where there is no hotplug
to do the work.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agopci: split the function providing uio device and mappings
Olivier Matz [Fri, 24 Jan 2014 15:31:26 +0000 (16:31 +0100)]
pci: split the function providing uio device and mappings

Add a new function pci_get_uio_dev() that parses /sys/bus/pci/devices
to get the uio device associated with a PCI device. This patch just
moves some code that was in pci_uio_map_resource() in the new function
without any functional change.

Thanks to this change, the next commit will be easier to understand.
Moreover it improves readability: having smaller functions help to
understand what pci_uio_map_resource() does.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agopci: support 82546EB
Thomas Monjalon [Fri, 20 Dec 2013 12:16:22 +0000 (13:16 +0100)]
pci: support 82546EB

Intel 82546EB Gigabit ethernet controller is reported to be working
with copper.

Tested-by: Ognjen Joldzic <ognjen.joldzic@gmail.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agopci: add flag to force unbind device
Damien Millescamps [Wed, 10 Jul 2013 13:14:52 +0000 (15:14 +0200)]
pci: add flag to force unbind device

Some devices need to be unbound in order to be used via the PMD
without kernel module.

Signed-off-by: Damien Millescamps <damien.millescamps@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agopci: use igb_uio mapping only when needed
Thomas Monjalon [Tue, 17 Sep 2013 10:00:57 +0000 (12:00 +0200)]
pci: use igb_uio mapping only when needed

Since DPDK 1.4, if RTE_EAL_UNBIND_PORTS is disabled, igb_uio mapping is
done for all devices (commit eee16c964cd), breaking some non-Intel drivers.
But pci_uio_map_resource() should only be called for Intel devices
(using igb_uio kernel module).
The flag RTE_PCI_DRV_NEED_IGB_UIO is set for all those devices, even when
RTE_EAL_UNBIND_PORTS is disabled (fixes commit a22f5ce8fcc).

Signed-off-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Damien Millescamps <damien.millescamps@6wind.com>
10 years agopci: do not check BAR0 mapping
David Marchand [Thu, 18 Jul 2013 08:02:36 +0000 (10:02 +0200)]
pci: do not check BAR0 mapping

Since DPDK 1.4, bars mapping is checked and prevent from initializing
drivers which do not use igb_uio mapping (see commit eee16c964cd).

There is no need to check for bars mapping, especially BAR0 is not required.
If bars mapping failed, then pci_uio_map_resource will fail and we won't reach
this check. So get rid of BAR0 check.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Stephen Hemminger <shemminger@vyatta.com>
Acked-by: Damien Millescamps <damien.millescamps@6wind.com>
10 years agomem: fix mempool for --no-huge
Damien Millescamps [Fri, 1 Mar 2013 15:10:57 +0000 (16:10 +0100)]
mem: fix mempool for --no-huge

In --no-huge mode, mempool provides objects with their associated
header/trailer fitting in a standard page (usually 4KB).
This means all non-UIO driver should work correctly in this mode,
since UIO drivers allocate ring sizes that cannot fit in a page.

Extend rte_mempool_virt2phy to obtain the correct physical address when
elements of the pool are not on the same physically contiguous memory region.

Reason for this patch is to be able to run on a kernel < 2.6.37 without
the need to patch it, since all kernel below are either bugged or don't
have huge page support at all (< 2.6.28).

Signed-off-by: Damien Millescamps <damien.millescamps@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
10 years agomem: get hugepages config
Damien Millescamps [Fri, 29 Mar 2013 10:34:00 +0000 (11:34 +0100)]
mem: get hugepages config

Allow external libraries and applications to know if hugepages
are enabled.

Signed-off-by: Damien Millescamps <damien.millescamps@6wind.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
10 years agomem: get memzone from any CPU socket when hugepages are disabled
Adrien Mazarguil [Thu, 21 Feb 2013 16:39:23 +0000 (17:39 +0100)]
mem: get memzone from any CPU socket when hugepages are disabled

When huge pages are disabled, memory is allocated for a single, undefined
CPU socket using malloc(), causing rte_memzone_reserve_aligned() to fail
most of the time.

This patch causes that memory to use SOCKET_ID_ANY instead of 0, and allow
it to be used in place of any socket ID specified by user.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Damien Millescamps <damien.millescamps@6wind.com>
10 years agomem: fix rte_malloc(SOCKET_ID_ANY), try to allocate on other nodes
Olivier Matz [Tue, 11 Jun 2013 14:18:07 +0000 (16:18 +0200)]
mem: fix rte_malloc(SOCKET_ID_ANY), try to allocate on other nodes

Before this patch, rte_malloc(SOCKET_ID_ANY) was equivalent to
rte_malloc(this_socket). If the user specifies SOCKET_ID_ANY, it means that
memory can be allocated on any socket. So fix the behavior of rte_malloc() in
order to do that. The current CPU socket is still the default, but if it fails,
other sockets are tested.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agomem: remove unneeded log
Olivier Matz [Mon, 15 Jul 2013 07:37:12 +0000 (09:37 +0200)]
mem: remove unneeded log

Remove an error log in memzone_reserve_aligned_thread_unsafe().
It is up to the caller to log the error, and this is already done
in DPDK code (especially in network drivers).

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agomem: get physical address of any rte_malloc buffer
Didier Pallard [Tue, 19 Mar 2013 16:00:02 +0000 (17:00 +0100)]
mem: get physical address of any rte_malloc buffer

Get physical address of any rte_malloc allocated buffer using
function rte_malloc_virt2phy(addr).
The rte_memzone pointer is now stored in each allocated memory block
header to allow simple computation of physical address of a block
using the memzone it comes from.
The function rte_malloc_virt2phy has a dependency on rte_memory.h:
phys_addr_t must be defined.

Signed-off-by: Didier Pallard <didier.pallard@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agomem: more const qualifiers in malloc API
Thomas Monjalon [Fri, 12 Jul 2013 10:12:15 +0000 (12:12 +0200)]
mem: more const qualifiers in malloc API

Some functions don't modify their parameter which should be marked as const.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
10 years agomem: get physical address of any pointer
Damien Millescamps [Wed, 12 Jun 2013 05:50:20 +0000 (07:50 +0200)]
mem: get physical address of any pointer

Extract rte_mem_virt2phy() from get_physaddr().

rte_mem_virt2phy() permits to obtain the physical address of any
virtual address mapped to the current process calling this function.
Note that this function is very slow and shouldn't be called
after initialization to avoid a performance bottleneck.

The memory must be locked with mlock(). The function rte_mem_lock_page()
is a mlock() helper that lock the whole page.

A better name would be rte_mem_virt2phys but rte_mem_virt2phy is more
consistent with rte_mempool_virt2phy.

Signed-off-by: Damien Millescamps <damien.millescamps@6wind.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
10 years agotimer: add precise TSC function
Didier Pallard [Wed, 19 Feb 2014 16:46:08 +0000 (17:46 +0100)]
timer: add precise TSC function

According to Intel Developer's Manual:

"The RDTSC instruction is not a serializing instruction. It does not necessarily wait
 until all previous instructions have been executed before reading the counter. Simi-
 larly, subsequent instructions may begin execution before the read operation is
 performed. If software requires RDTSC to be executed only after all previous instruc-
 tions have completed locally, it can either use RDTSCP (if the processor supports that
 instruction) or execute the sequence LFENCE;RDTSC."

So add a rte_rdtsc_precise function that do a memory barrier before rdtsc to
synchronize operations and ensure that the TSC read is done at the expected place.
Use r/w memory barrier instead of lfence to serialize both loads and stores.

Signed-off-by: Didier Pallard <didier.pallard@6wind.com>
Reviewed-by: François-Frédéric Ozog <ff@ozog.com>
Reviewed-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agotimer: get TSC frequency from /proc/cpuinfo
Thomas Monjalon [Thu, 31 May 2012 17:00:31 +0000 (19:00 +0200)]
timer: get TSC frequency from /proc/cpuinfo

TSC frequency was guessed by reading CLOCK_MONOTONIC_RAW or sleeping 1 sec.
Now, read frequency from cpuinfo first.
Keep other methods as fallbacks.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Ivan Boule <ivan.boule@6wind.com>
10 years agotimer: check TSC reliability
Ivan Boule [Thu, 31 May 2012 14:41:57 +0000 (16:41 +0200)]
timer: check TSC reliability

Read flags from /proc/cpuinfo and warn if constant_tsc or nonstop_tsc is
not found.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Ivan Boule <ivan.boule@6wind.com>
10 years agospinlock: fix build with clang
Olivier Matz [Fri, 24 Jan 2014 15:29:06 +0000 (16:29 +0100)]
spinlock: fix build with clang

LLVM clang requires an explicitly sized "cmp" assembly instruction.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agohash: reverse the operand order to crc32
H. Peter Anvin [Tue, 25 Feb 2014 10:07:40 +0000 (02:07 -0800)]
hash: reverse the operand order to crc32

Checkin

a132a9cf2bcd440a974b9d3f5c44ba30b2c895a1 hash: use intrinsic

changed the rte_hash_crc.h from using the crc32 instruction via inline
assembly to using an intrinsic.  The intrinsic should allow for better
compiler performance, but the change did not account for the fact that
the inline assembly being in AT&T syntax used the opposite operand
order of the intrinsic.

This turns out to not matter for correctness, because the CRC32
operation is commutative.  However, it could potentially matter for
performance, because the loop is more efficient with the moving
pointer in the source operand and the accumulation in the destination
operand.

This was discovered by Jan Beulich when looking at the equivalent code
in the Linux kernel.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Reported-by: Jan Beulich <jbeulich@suse.com>
Reported-by: Pashupati Kumar <kumarp@brocade.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agolog: remove app path from syslog id
Thomas Monjalon [Mon, 16 Sep 2013 10:36:20 +0000 (12:36 +0200)]
log: remove app path from syslog id

This reverts commit "log: get full path as syslog id" (494a02537f1)
and restore the original patch from Stephen Hemminger (04210699eee).

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
10 years agokvargs: add in doc
Thomas Monjalon [Tue, 4 Feb 2014 15:11:12 +0000 (16:11 +0100)]
kvargs: add in doc

Reference the new library in doxygen.
Move also some items from misc to a new basic section.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agokvargs: add test case in app/test
Olivier Matz [Tue, 28 Jan 2014 15:06:44 +0000 (16:06 +0100)]
kvargs: add test case in app/test

Add a file app/test/test_kvargs.c that checks the rte_kvargs API.
The test passes:

  RTE>>kvargs
  == test valid case ==
  == test invalid case ==
  PMD: Error parsing device, invalid key <wrong-key>
  Test OK

I also tested that rte_eth_pcap runs with the following arguments:

  ./app/testpmd -c 0x15 -n 3 --proc-type=primary --huge-dir=/mnt/huge \
    --use-device="eth_pcap0;iface=ixgbe0" \
    -- -i --port-topology=chained

  ./app/testpmd -c 0x15 -n 3 --proc-type=primary --huge-dir=/mnt/huge \
    --use-device="eth_pcap0;rx_iface=ixgbe0;rx_iface=ixgbe1;tx_iface=ixgbe0" \
    -- -i --port-topology=chained

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agokvargs: make the NULL key to match all entries
Olivier Matz [Tue, 28 Jan 2014 16:06:43 +0000 (17:06 +0100)]
kvargs: make the NULL key to match all entries

In rte_kvargs_process() and rte_kvargs_count(), if the key_match
argument is NULL, process all entries.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agokvargs: add the key in handler pameters
Olivier Matz [Tue, 28 Jan 2014 16:06:42 +0000 (17:06 +0100)]
kvargs: add the key in handler pameters

This argument can be useful when rte_kvargs_process() is called with
key=NULL, in this case the handler is invoked for all entries of the
kvlist.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agokvargs: add const attribute in handler parameters
Olivier Matz [Tue, 28 Jan 2014 16:06:41 +0000 (17:06 +0100)]
kvargs: add const attribute in handler parameters

The "value" argument is read-only and should be const.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agokvargs: be strict when matching a key
Olivier Matz [Tue, 28 Jan 2014 16:06:40 +0000 (17:06 +0100)]
kvargs: be strict when matching a key

When we match a key in is_valid_key() and rte_kvargs_process(), do a
strict comparison (strcmp()) instead of using strstr(s1, s2) which tries
a find s1 in s2. This old behavior could lead to unexpected match, for
instance "cola" match "chocolate".

Surprisingly, no patch was needed on rte_kvargs_count() as it already
used strcmp().

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agokvargs: simpler parsing and allow duplicated keys
Olivier Matz [Tue, 28 Jan 2014 16:06:39 +0000 (17:06 +0100)]
kvargs: simpler parsing and allow duplicated keys

Remove the rte_kvargs_add_pair() function whose only role was to check
if a key is duplicated. Having duplicated keys is now allowed by kvargs
API.

Also replace rte_strsplit() by more a standard function strtok_r() that
is easier to understand for people already knowing the libc. It also
avoids useless calls to strnlen(). The delimiters macros become strings
instead of chars due to the strtok_r() API.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agokvargs: rework API to fix memory leak
Olivier Matz [Tue, 28 Jan 2014 16:06:38 +0000 (17:06 +0100)]
kvargs: rework API to fix memory leak

Before the patch, a call to rte_kvargs_tokenize() resulted in a call to
strdup() to allocate a modifiable copy of the argument string. This
string was never freed, excepted in the error cases of
rte_kvargs_tokenize() where rte_free() was wrongly called instead of
free(). In other cases, freeing this string was impossible as the
pointer not saved.

This patch introduces rte_kvargs_free() in order to free the structure
properly. The pointer to the duplicated string is now kept in the
rte_kvargs structure. A call to rte_kvargs_parse() directly allocates
the structure, making rte_kvargs_init() useless.

The only drawback of this API change is that a key/value associations
cannot be added to an existing kvlist. But it's not used today, and
there is not obvious use case for that.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agokvargs: remove useless size field
Olivier Matz [Tue, 28 Jan 2014 16:06:37 +0000 (17:06 +0100)]
kvargs: remove useless size field

This value was not very useful as the size of the table is fixed (equals
RTE_KVARGS_MAX).

By the way, the memset in the initialization function was wrong (size
too short). Even if it was not really an issue since we rely on the
"count" field, it is now fixed by this patch.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agokvargs: remove driver name in arguments
Olivier Matz [Tue, 28 Jan 2014 16:06:36 +0000 (17:06 +0100)]
kvargs: remove driver name in arguments

Now that rte_kvargs is a generic library, there is no need to have an argument
for the driver name in rte_kvargs_tokenize() and rte_kvargs_parse()
prototypes. This argument was only used to log the driver name in case of
error. Instead, we can add a log in init function of pmd_pcap and pmd_ring.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agokvargs: use the new library in pmd_pcap
Olivier Matz [Tue, 28 Jan 2014 15:06:35 +0000 (16:06 +0100)]
kvargs: use the new library in pmd_pcap

The rte_kvargs library is a reworked copy of rte_eth_pcap_arg_parser,
so it provides the same service. Therefore we can use it and remove the
code of rte_eth_pcap_arg_parser.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agokvargs: add a new library to parse key/value arguments
Olivier Matz [Tue, 28 Jan 2014 16:06:34 +0000 (17:06 +0100)]
kvargs: add a new library to parse key/value arguments

Copy the code from rte_eth_pcap_arg_parser.[ch], without any functional
modifications, only:
- rename functions and structure
- restyle (indentation)
- add comments (doxygen style)
- add "const" or "static" attributes, remove unneeded "inline"

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoeal: remove unused macro for blacklist
Thomas Monjalon [Wed, 30 Oct 2013 15:26:14 +0000 (16:26 +0100)]
eal: remove unused macro for blacklist

This macro was used for blacklist parsing but is not used anymore
since commit 5a55b9ac91face71e9d665eecc716201d28745b0.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
10 years agoeal: fix recording of detected/enabled logical cores
Ivan Boule [Fri, 8 Feb 2013 12:01:52 +0000 (13:01 +0100)]
eal: fix recording of detected/enabled logical cores

1) In the EAL initialization phase, invoke the function rte_eal_cpu_init
   to detect the set of running cores (and enable them by default) before
   processing the [enabled] core mask option that is performed during the
   parsing of EAL arguments.

2) In the function rte_eal_cpu_init():
   - to parse the set of all running logical cores on the machine, do not
     use the RTE_LCORE_FOREACH macro that considers the set of already
     detected cores...
     Instead, use a standard loop based on the RTE_MAX_LCORE constant.
   - explicitely set to ROLE_RTE the role of each detected logical core
     that is recorded in the EAL configuration, as all running cores are
     enabled by default.

3) In the function eal_parse_coremask(), update the "lcore_count" field
   of the EAL configuration with the effective number of logical cores
   that are set in the mask of enabled logical cores.

Signed-off-by: Ivan Boule <ivan.boule@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoeal: fix type of pointer arithmetic result
Thomas Monjalon [Fri, 12 Jul 2013 10:54:35 +0000 (12:54 +0200)]
eal: fix type of pointer arithmetic result

Adding or subtracting a value to a pointer makes a new pointer
of unknown type.
So typeof() is replaced by (void*) in RTE_PTR_ADD() and RTE_PTR_SUB().

But RTE_PTR_ALIGN_* macros have in their explicit API to return a pointer
of the same type. Since RTE_PTR_ALIGN_CEIL is based on RTE_PTR_ADD, a
typeof() is added to keep the original behaviour.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
10 years agoeal: add support for shared object drivers
Damien Millescamps [Wed, 12 Jun 2013 05:51:27 +0000 (07:51 +0200)]
eal: add support for shared object drivers

Add an option to specify libraries to be loaded before probing the PCI.

For instance, testpmd -d librte_pmd_xxx.so can be used to enable xxx driver
support on testpmd without any recompilation of testpmd.

Plugins are loaded before creating threads because we want the threads to
inherit any property that could be set while loading a plugin, such as iopl().

Signed-off-by: Damien Millescamps <damien.millescamps@6wind.com>
Signed-off-by: Jean-Mickael Guerin <jean-mickael.guerin@6wind.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agomk: fix command-line dependency check for quoted strings
Adrien Mazarguil [Fri, 15 Nov 2013 14:38:52 +0000 (15:38 +0100)]
mk: fix command-line dependency check for quoted strings

Before recompiling a file, rte.compile-pre.mk checks whether the command
line is different from the previous one.

This is done by storing for each object file the entire command line in a
kind of dependency file with a .cmd extension (see obj2cmd). If that file
exists, the line is retrieved first and compared against $(C_TO_O_STR).
The object file gets recompiled if the file doesn't exist or if the line
is different.

The problem is that sometimes, files are recompiled for no apparent reason.

The check doesn't work properly when a command line contains double-quoted
strings such as -DFOO='"bar"' because the shell interprets and strips them.
This is fixed by protecting C_TO_O_CMD with simple quotes, knowing that
such quotes are already escaped in C_TO_O_STR.

Moreover, because simple quotes are escaped in C_TO_O_STR, the retrieved
command should be compared against C_TO_O instead.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agomk: fix EXTRA_LDFLAGS override
Julien Courtat [Fri, 15 Nov 2013 14:22:37 +0000 (15:22 +0100)]
mk: fix EXTRA_LDFLAGS override

The GCC prefix -Wl was ignored because the command line value has higher priority.
It ended in impossibilty for GCC to pass parameters to LD.
The prefixed value must override the command line one.

Signed-off-by: Julien Courtat <julien.courtat@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agomk: allow to build shared libraries
Didier Pallard [Fri, 4 Jan 2013 17:00:11 +0000 (18:00 +0100)]
mk: allow to build shared libraries

Add mk/rte.shared.mk and mk/rte.extshared.mk in framework to
   allow shared libraries compilation through framework

Signed-off-by: Didier Pallard <didier.pallard@6wind.com>
Acked-by: Ivan Boule <ivan.boule@6wind.com>
10 years agomk: allow to specify DESTDIR in build rule
Olivier Matz [Wed, 30 Jan 2013 15:32:15 +0000 (16:32 +0100)]
mk: allow to specify DESTDIR in build rule

This will install the binary sdk (bin + modules + libs + headers + mk)
in the specified directory.
This directory can be used as RTE_SDK by external applications.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agomk: in install rule, don't overwrite .config if it already exists
Olivier Matz [Wed, 30 Jan 2013 15:30:19 +0000 (16:30 +0100)]
mk: in install rule, don't overwrite .config if it already exists

This allows the user to prepare a configuration with make config
before using make install.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agomk: allow to specify O= in install rule
Olivier Matz [Wed, 30 Jan 2013 15:29:43 +0000 (16:29 +0100)]
mk: allow to specify O= in install rule

This variable $(O) can be used to specify a build directory
when doing an "install" procedure. The default is ".", which
means that targets will be built in the source dpdk.

This option is useful to compile outside of the source tree that may be
read-only.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agomk: rule help
Thomas Monjalon [Tue, 7 May 2013 13:46:58 +0000 (15:46 +0200)]
mk: rule help

The goal of this rule is to show which rules/options are available from a
"make" command.
Let's start by printing short doc about SDK building.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
10 years agomk: add rule to list configs
Thomas Monjalon [Tue, 7 May 2013 13:43:57 +0000 (15:43 +0200)]
mk: add rule to list configs

Allow to list configs in config/ directory with a simple make rule.

The rule showconfigs is reused in config error.
In the same time, "echo -n" is replaced by the more portable "printf".

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
10 years agodoc: how to build
Thomas Monjalon [Tue, 7 May 2013 15:00:52 +0000 (17:00 +0200)]
doc: how to build

This is a cheat sheet to build DPDK and can be used for a "make help".
It is explicitly described as a build help in order to concatenate it
with other helps such as test commands.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
10 years agomk: insert version number in doxygen config
Thomas Monjalon [Fri, 19 Jul 2013 14:06:26 +0000 (16:06 +0200)]
mk: insert version number in doxygen config

The parameter PROJECT_NUMBER is used in the HTML header
via the template variable $projectnumber.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Vincent Jardin <vincent.jardin@6wind.com>
10 years agomk: add rule to print version number
Thomas Monjalon [Fri, 19 Jul 2013 13:53:08 +0000 (15:53 +0200)]
mk: add rule to print version number

The version string is extracted from rte_version.h.
RTE_VER_* macros are concatenated and separators " . . r " are inserted.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Vincent Jardin <vincent.jardin@6wind.com>
10 years agodoc: fix some doxygen comments
Thomas Monjalon [Fri, 22 Mar 2013 15:34:54 +0000 (16:34 +0100)]
doc: fix some doxygen comments

- rte_panic must be before rte_panic_ to be associated to its doc
- marker /**< must be used when commenting after the declaration only
- fix rte_string_fns.h title
- typos

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
10 years agodoc: fix doxygen parsing of __attribute__
Thomas Monjalon [Tue, 5 Nov 2013 11:09:12 +0000 (12:09 +0100)]
doc: fix doxygen parsing of __attribute__

Ignore __attribute__ because it was wrongly parsed as an identifier.
This configuration is described in
http://www.stack.nl/~dimitri/doxygen/manual/preprocessing.html

Reported-by: Cyril Cressent <cyril.cressent@intel.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
10 years agodoc: add mbuf cloning functions in doxygen
Thomas Monjalon [Thu, 24 Oct 2013 08:26:02 +0000 (10:26 +0200)]
doc: add mbuf cloning functions in doxygen

Some functions are available only if RTE_MBUF_SCATTER_GATHER is enabled.
So it must be configured for doxygen parser.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
10 years agodoc: generate HTML for API with doxygen
Thomas Monjalon [Fri, 19 Apr 2013 10:34:40 +0000 (12:34 +0200)]
doc: generate HTML for API with doxygen

- add index page
- add doxygen configuration for API
- add doxygen CSS customization applied by a script
- HTML generation via make rules

The configuration is splitted in a static file and a make rule in order to
dynamically configure output format and path.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: David Marchand <david.marchand@6wind.com>
10 years agomk: clean dead doc rules
Thomas Monjalon [Fri, 19 Apr 2013 10:59:25 +0000 (12:59 +0200)]
mk: clean dead doc rules

It seems that doc/ has been removed so these rules are useless.
This clean-up is preliminary to generate some doc.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
10 years agomk: factorize some rules
Thomas Monjalon [Fri, 19 Apr 2013 12:46:35 +0000 (14:46 +0200)]
mk: factorize some rules

rte.sdkroot.mk is mainly calling other makefiles.
These redirecting rules can be factorized by called makefile.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
10 years agoconfig: remove unused KNI debug option
Thomas Monjalon [Wed, 30 Oct 2013 15:22:04 +0000 (16:22 +0100)]
config: remove unused KNI debug option

The option RTE_LIBRTE_KNI_DEBUG has no effect so it should be removed.
The right options are:
- RTE_KNI_KO_DEBUG
- RTE_KNI_VHOST_DEBUG_RX
- RTE_KNI_VHOST_DEBUG_TX

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
10 years agoconfig: disable KNI for 32-bit because cannot work
Jean-Mickael Guerin [Mon, 4 Mar 2013 16:48:25 +0000 (16:48 +0000)]
config: disable KNI for 32-bit because cannot work

This is not supported, disable to avoid compilation error like:
lib/librte_eal/linuxapp/kni/kni_misc.c:304:2: error:
format '%llx' expects argument of type 'long long unsigned int',
but argument 2 has type 'phys_addr_t' [-Werror=format]

Signed-off-by: Jean-Mickael Guerin <jean-mickael.guerin@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
10 years agoversion: 1.6.0
Bruce Richardson [Wed, 5 Feb 2014 12:39:22 +0000 (12:39 +0000)]
version: 1.6.0

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoexamples/netmap_compat: import netmap compatibility example
Bruce Richardson [Tue, 11 Feb 2014 13:47:39 +0000 (13:47 +0000)]
examples/netmap_compat: import netmap compatibility example

This provides a sample application and library showing how to use the
Intel(R) DPDK with basic netmap applications.

The Netmap compatibility library provides a minimal set of APIs to give the ability to
programs written against the Netmap APIs to be run with minimal changes to their
source code, using the Intel® DPDK to perform the actual packet I/O.
Since Netmap applications use regular system calls, like open(), ioctl() and
mmap() to communicate with the Netmap kernel module performing the packet I/O,
the compat_netmap library provides a set of similar APIs to use in place of those
system calls, effectively turning a Netmap application into a Intel(R) DPDK one.
The provided library is currently minimal and doesn’t support all the features that
Netmap supports, but is enough to run simple applications, such as the
bridge example included.

The application requires a single command line option:
 -i INTERFACE is the number of a valid Intel(R) DPDK port to use.
If a single -i parameter is given, the interface will send back all the traffic it
receives. If two -i parameters are given, the two interfaces form a bridge, where
traffic received on one interface is replicated and sent by the other interface.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoexamples/l2fwd-ivshmem: import sample application
Bruce Richardson [Tue, 11 Feb 2014 11:31:03 +0000 (11:31 +0000)]
examples/l2fwd-ivshmem: import sample application

This provides a new sample application which demonstrates how
the ivshmem library and EAL capabilities can be used to create
a zero-copy fast-path for packet communication between host
machine and guest vm.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoexamples/vhost: import userspace vhost application
Bruce Richardson [Mon, 10 Feb 2014 13:57:48 +0000 (13:57 +0000)]
examples/vhost: import userspace vhost application

The vhost sample application demonstrates integration of the Intel(R) Data Plane
Development Kit (Intel(R) DPDK) with the Linux KVM hypervisor by implementing the
vhost-net offload API. The sample application performs simple packet switching
between virtual machines based on Media Access Control (MAC) address or Virtual
Local Area Network (VLAN) tag. The splitting of ethernet traffic from an external switch
is performed in hardware by the Virtual Machine Device Queues (VMDQ) and Data
Center Bridging (DCB) features of the Intel(R) 82599 10 Gigabit Ethernet Controller.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoexamples/dpdk-qat: various updates
Bruce Richardson [Mon, 10 Feb 2014 13:33:44 +0000 (13:33 +0000)]
examples/dpdk-qat: various updates

Updates including support for Intel® Communications Chipset
8925 to 8955 Series.
Add support for the wireless KASUMI algorithm.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoexamples: minor changes
Bruce Richardson [Tue, 11 Feb 2014 15:35:19 +0000 (15:35 +0000)]
examples: minor changes

A series of minor changes to example applications included in the
Intel DPDK 1.6 release.
* changes to NIC configuration flags, e.g. specifying RSS
* replacing local "DIM" macro with common "RTE_DIM" macro
* minor whitespace changes for alignment.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoapp/testpmd: disable RSS when in SRIOV
Bruce Richardson [Tue, 18 Feb 2014 10:23:55 +0000 (11:23 +0100)]
app/testpmd: disable RSS when in SRIOV

Hardware does not support RSS in SRIOV setups.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
10 years agoapp/testpmd: fix RSS by setting mq_mode
Daniel Kan [Thu, 16 Jan 2014 00:31:39 +0000 (16:31 -0800)]
app/testpmd: fix RSS by setting mq_mode

The mq_mode was not set when rxq is > 0; it's defaulted to ETH_MQ_RX_NONE.
As a result, RSS remains inactive. The fix is to set mq_mode to ETH_MQ_RX_RSS
when hf is non-zero.

This bug was introduced by commit 243db2ddee3094a2cb39fdd4b17e26df4e7735e1
igb/ixgbe: ETH_MQ_RX_NONE should disable RSS

Signed-off-by: Daniel Kan <dan@nyansa.com>
Acked-by: Maxime Leroy <maxime.leroy@6wind.com>
10 years agoapp/testpmd: added new macfwd-retry mode
Bruce Richardson [Wed, 12 Feb 2014 16:09:58 +0000 (16:09 +0000)]
app/testpmd: added new macfwd-retry mode

This adds a new forwarding mode to testpmd, whereby it will forward
packets, but on a transmit failure, it will wait a small amount of time
before retrying the transmit again. This mode can be useful in some
cases to set a zero-packet loss rate at the cost of overall throughput,
especially in cases where TX ring size/buffering is constrained, such as
with virtio.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoapp/test: fixes to python control script
Bruce Richardson [Tue, 11 Feb 2014 12:03:26 +0000 (12:03 +0000)]
app/test: fixes to python control script

* Change behaviour to spread the memory specified across all sockets
  rather than duplicating the memory for each one. This way the memory
  size specified is the total memory needed by the test.
* Minor reordering of test cases, to ensure that ring autotest is the
  final test run.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoapp/test: remove all-autotests option
Bruce Richardson [Mon, 10 Feb 2014 11:47:38 +0000 (11:47 +0000)]
app/test: remove all-autotests option

It's no longer possible to run all autotests in
a single go and have them pass, so remove that option.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoapp/test: minor cleanup in test_acl
Bruce Richardson [Tue, 11 Feb 2014 15:50:01 +0000 (15:50 +0000)]
app/test: minor cleanup in test_acl

Minor chanes including replacing local DIM macro with more standard
RTE_DIM macro from rte_common.h.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoapp/test: conditionalize on timer enabled
Bruce Richardson [Tue, 11 Feb 2014 16:33:41 +0000 (16:33 +0000)]
app/test: conditionalize on timer enabled

don't compile the timer autotests unless timer library is turned on in
the compile-time configuration.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoapp/test: minor updates
Bruce Richardson [Wed, 12 Feb 2014 16:05:56 +0000 (16:05 +0000)]
app/test: minor updates

Minor fixes/updates to the autotest app, including:
* replace hard-coded values with #defines in rte_power.h
* replace local DIM() macro with common RTE_DIM

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoixgbe: fix vf irq storm when running on Xen Dom0.
Bruce Richardson [Mon, 17 Feb 2014 18:57:55 +0000 (19:57 +0100)]
ixgbe: fix vf irq storm when running on Xen Dom0.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
10 years agoixgbe: prepare for vector pmd
Bruce Richardson [Wed, 12 Feb 2014 16:34:33 +0000 (16:34 +0000)]
ixgbe: prepare for vector pmd

The following changes are included in this patch for ixgbe:
* Support for a separate Vector Poll-Mode Driver component
* Refactoring to extract out definitions from .c file to separate .h

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoixgbe: minor rework offloading bits fix
Bruce Richardson [Mon, 17 Feb 2014 17:27:46 +0000 (18:27 +0100)]
ixgbe: minor rework offloading bits fix

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
10 years agoixgbe: fix offloading bits when Rx bulk alloc is used
Bryan Benson [Fri, 8 Nov 2013 19:47:22 +0000 (19:47 +0000)]
ixgbe: fix offloading bits when Rx bulk alloc is used

This is a fix for the ixgbe hardware offload flags not being set
when bulk alloc RX is used. The issue was caused by masking off
the bits that store the hardware offload values in the status_error
field to retrieve the done bit for the descriptor.

Commit 7431041062b9fd0555bac7ca4abebc99e3379fa5 in DPDK-1.3.0
introduced bulk dequeue, which included the bug.

Signed-off-by: Bryan Benson <bmbenson@amazon.com>
Acked-by: Ivan Boule <ivan.boule@6wind.com>
10 years agoixgbe: query assignment of VF queues
Qinglai Xiao [Mon, 21 Oct 2013 14:11:14 +0000 (17:11 +0300)]
ixgbe: query assignment of VF queues

Physical Function assignes Tx/Rx queues to each Virtual Function
according to different schemes[1]. By querying through mailbox,
VF is able to get number of Tx/Rx queues assigned to it.

Note that current Intel ixgbe driver ixgbe-3.18.7 does not fully
support mailbox message IXGBE_VF_GET_QUEUES. The service routine
for IXGBE_VF_GET_QUEUES must be fixed, otherwise PF always return
1 as Tx/Rx queue number.

[1] See section 7.2.1.2.1, 7.1.2.2 and 7.10.2.7.2 of Intel 82599 10
    Gbe Controller Datasheet.

Signed-off-by: Qinglai Xiao <jigsaw@gmail.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoixgbe: fix disabling loopback mode
Bruce Richardson [Mon, 17 Feb 2014 18:55:26 +0000 (19:55 +0100)]
ixgbe: fix disabling loopback mode

Following introduction of loopback mode, this mode should be explicitely
disabled in ixgbe_dev_rx_init() if not enabled.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
10 years agoixgbe: add Tx->Rx loopback mode for 82599
Qinglai Xiao [Thu, 26 Sep 2013 13:34:44 +0000 (16:34 +0300)]
ixgbe: add Tx->Rx loopback mode for 82599

82599 has two loopback operation modes, Tx->Rx and Rx->Tx.
For the time being only Tx->Rx is supported.

The new field lpbk_mode added in struct rte_eth_conf defines loopback
operation mode for certain ethernet controller. By default the value
of lpbk_mode is 0, meaning loopback mode disabled.

Since each ethernet controller has its own definition of loopback modes,
API user has to check both datasheet and implementation of certain driver
so as to understand what are valid values to be set, and what are the
expected behaviors.

Check IXGBE_LPBK_82599_XXX which are defined in ixgbe_ethdev.h
for valid values of 82599 loopback mode.

Signed-off-by: Qinglai Xiao <jigsaw@gmail.com>
Acked-by: Ivan Boule <ivan.boule@6wind.com>
Acked-by: Venky Venkatesan <venky.venkatesan@intel.com>
10 years agoigb: fix dual vlan ethertype
Bruce Richardson [Mon, 17 Feb 2014 20:21:03 +0000 (21:21 +0100)]
igb: fix dual vlan ethertype

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
10 years agoigb: restore workaround errata with wthresh on 82576
Stephen Hemminger [Thu, 30 May 2013 17:12:35 +0000 (10:12 -0700)]
igb: restore workaround errata with wthresh on 82576

The 82576 has known issues which require the write threshold to be set to 1.
See:
http://download.intel.com/design/network/specupdt/82576_SPECUPDATE.pdf

If not then single packets will hang in transmit ring until more arrive.
Simple tests like ping will fail.

The workaround was in the wrong file (commit a30ebfbb8c3a).
Move it in igb one to restore original patch (7e9e49feea).

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb/ixgbe: remove useless header inclusion
Bruce Richardson [Mon, 17 Feb 2014 12:42:33 +0000 (13:42 +0100)]
igb/ixgbe: remove useless header inclusion

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
10 years agoigb/ixgbe: allow RSS with only one Rx queue
Maxime Leroy [Mon, 2 Sep 2013 15:14:10 +0000 (17:14 +0200)]
igb/ixgbe: allow RSS with only one Rx queue

It should be possible to enable RSS with one Rx queue.
RSS hash can be useful independently of the number of Rx queues.
Applications can use RSS hash to identify different IP flows.

Signed-off-by: Maxime Leroy <maxime.leroy@6wind.com>
Acked-by: Ivan Boule <ivan.boule@6wind.com>
10 years agoigb/ixgbe: ETH_MQ_RX_NONE should disable RSS
Maxime Leroy [Mon, 2 Sep 2013 15:07:55 +0000 (17:07 +0200)]
igb/ixgbe: ETH_MQ_RX_NONE should disable RSS

As explained in rte_ethdev.h, ETH_MQ_RX_NONE allows to not choose RSS, DCB
or VMDQ mode.

But the igb/ixgbe code always silently select the RSS mode with ETH_MQ_RX_NONE.
This patch fixes this incoherence between the API and the implementation.

Signed-off-by: Maxime Leroy <maxime.leroy@6wind.com>
Acked-by: Ivan Boule <ivan.boule@6wind.com>
10 years agopcap: add missing dependency on malloc
Bruce Richardson [Mon, 10 Feb 2014 14:52:22 +0000 (14:52 +0000)]
pcap: add missing dependency on malloc

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agovirtio: mark functions as always inline
Bruce Richardson [Wed, 12 Feb 2014 16:44:00 +0000 (16:44 +0000)]
virtio: mark functions as always inline

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agovirtio: various improvements
Bruce Richardson [Wed, 12 Feb 2014 16:44:00 +0000 (16:44 +0000)]
virtio: various improvements

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agovirtio: add close function
Bruce Richardson [Wed, 12 Feb 2014 16:44:44 +0000 (16:44 +0000)]
virtio: add close function

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>