dpdk.git
10 years agoacl: fix build and runtime for default target
Konstantin Ananyev [Mon, 1 Sep 2014 15:28:44 +0000 (16:28 +0100)]
acl: fix build and runtime for default target

Make ACL library to build/work on 'default' architecture:
- make rte_acl_classify_scalar really scalar
 (make sure it wouldn't use sse4 instrincts through resolve_priority()).
- Provide two versions of rte_acl_classify code path:
  rte_acl_classify_sse() - could be build and used only on systems with sse4.2
  and upper, return -ENOTSUP on lower arch.
  rte_acl_classify_scalar() - a slower version, but could be build and used
  on all systems.
- Addition of a new function rte_acl_classify_alg.  This function lets you
  specify an enum value to override the acl contexts default algorithm when doing
  a classification.  This allows an application to specify a classification
  algorithm without needing to publicize each method. I know there was concern
  over keeping those methods public, but we don't have a static ABI at the moment,
  so this seems to me a reasonable thing to do, as it gives us less of an ABI
  surface to worry about.
- keep common code shared between these two codepaths.

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
10 years agoapp/testpmd: fix crash in txonly mode and with tx_first
Adrien Mazarguil [Mon, 1 Sep 2014 10:31:11 +0000 (12:31 +0200)]
app/testpmd: fix crash in txonly mode and with tx_first

This crash was believed fixed by commit 5886ae07d211e4b5e49806dd183812,
but the actual issue is that the core ID provided to rte_lcore_to_socket_id()
is wrong. It must be looked up in fwd_lcores_cpuids[].

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
10 years agokni: fix build with kernel 3.17
Aaro Koskinen [Mon, 18 Aug 2014 12:44:59 +0000 (15:44 +0300)]
kni: fix build with kernel 3.17

Since Linux commit "set name_assign_type in alloc_netdev" (c835a677331495),
the function alloc_netdev takes a new parameter (name_assign_type)
whose default value is NET_NAME_UNKNOWN.

Signed-off-by: Aaro Koskinen <aaro.koskinen@nsn.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoeal: fix memory leak in hugepage error cases
Zhangkun [Tue, 19 Aug 2014 03:51:11 +0000 (11:51 +0800)]
eal: fix memory leak in hugepage error cases

The sysfs directory for hugepages parsing was not closed properly in some
error cases.

Signed-off-by: Zhangkun <zhangk.zhangkun@huawei.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agovmxnet3: fix crash on stop
Stephen Hemminger [Tue, 26 Aug 2014 00:41:02 +0000 (17:41 -0700)]
vmxnet3: fix crash on stop

The cmd_ring_release can be called twice if queue has already
been released. This cause crash on shutdown.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoeal: remove unused macros
David Marchand [Tue, 26 Aug 2014 14:11:02 +0000 (16:11 +0200)]
eal: remove unused macros

Clean both linux and bsd implementations from unused macros.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agofix unix permissions for source files
David Marchand [Tue, 26 Aug 2014 14:10:41 +0000 (16:10 +0200)]
fix unix permissions for source files

No need for that 'x bit' on source files.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agoixgbe: make vector stores unaligned
Bruce Richardson [Wed, 27 Aug 2014 15:51:17 +0000 (16:51 +0100)]
ixgbe: make vector stores unaligned

When writing to the mbuf array for receiving packets, do not assume
16-byte alignment by using aligned stores. If the pointers are only
8-byte aligned, the program will crash due to incorrect alignment.
Changing "store" to "storeu" fixes this.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoapp/test: only build what has been selected in config
David Marchand [Mon, 18 Aug 2014 11:29:25 +0000 (13:29 +0200)]
app/test: only build what has been selected in config

Avoid building tests if their counterparts are not selected in config.
This has the nice side effect of fixing build errors when disabling parts of
the dpdk.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
10 years agoapp/test: no more builtin commands
David Marchand [Mon, 18 Aug 2014 11:29:24 +0000 (13:29 +0200)]
app/test: no more builtin commands

The builtin commands list is now empty, we can remove it.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
10 years agoapp/test: convert all tests to register system
David Marchand [Mon, 18 Aug 2014 11:29:23 +0000 (13:29 +0200)]
app/test: convert all tests to register system

Remove all tests from the builtin commands list and use the dynamic commands
list register macro.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
10 years agoapp/test: introduce dynamic commands list
David Marchand [Mon, 18 Aug 2014 11:29:22 +0000 (13:29 +0200)]
app/test: introduce dynamic commands list

This patch adds a way to dynamically add a test without modifying commands.c.
Move all current tests in a builtin_commands[] list, next patch will convert
them to this new system.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
10 years agoapp/test: remove pm_autotest
David Marchand [Mon, 18 Aug 2014 11:29:21 +0000 (13:29 +0200)]
app/test: remove pm_autotest

This test is not linked to any code, remove it.
It may be some leftover from 24f42575dfe2226f126546d0ca501cba9fbd6373.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
10 years agoapp/test: use accessor to set refcnt field
David Marchand [Mon, 18 Aug 2014 11:29:20 +0000 (13:29 +0200)]
app/test: use accessor to set refcnt field

refcnt field can not be accessed directly as it depends on the RTE_MBUF_REFCNT
build option.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
10 years agoapp: simplify makefiles
David Marchand [Mon, 18 Aug 2014 11:29:19 +0000 (13:29 +0200)]
app: simplify makefiles

No need to test some build option multiple times in a Makefile.
Besides, such option is needed by the associated app, so move it at the
top of the Makefile.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
10 years agoexamples/vhost: support jumbo frame
Ouyang Changchun [Fri, 15 Aug 2014 04:58:01 +0000 (12:58 +0800)]
examples/vhost: support jumbo frame

This patch support mergeable RX feature and thus support jumbo frame RX and TX
in user space vhost(as virtio backend).

On RX, it secures enough room from vring to accommodate one complete scattered
packet which is received by PMD from physical port, and then copy data from
mbuf to vring buffer, possibly across a few vring entries and descriptors.

On TX, it gets a jumbo frame, possibly described by a few vring descriptors which
are chained together with the flags of 'NEXT', and then copy them into one scattered
packet and TX it to physical port through PMD.

Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Acked-by: Huawei Xie <huawei.xie@intel.com>
10 years agovirtio: mergeable buffers
Ouyang Changchun [Thu, 14 Aug 2014 08:54:35 +0000 (16:54 +0800)]
virtio: mergeable buffers

This patch supports mergeable buffer feature in DPDK based virtio PMD,
which can receive jumbo frame with larger size, like 3K, 4K or even 9K.

Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Acked-by: Huawei Xie <huawei.xie@intel.com>
Tested-by: Jingguo Fu <jingguox.fu@intel.com>
10 years agoi40evf: queue start and stop
Chen Jing D(Mark) [Thu, 14 Aug 2014 07:35:03 +0000 (15:35 +0800)]
i40evf: queue start and stop

Add per-queue RX/TX start/stop function.
Support fields start_rx_per_q and start_tx_per_q.
In the meanwhile, change dev_start/stop to call per-queue RX/TX functions.

Signed-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
Reviewed-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Reviewed-by: Changchun Ouyang <changchun.ouyang@intel.com>
Reviewed-by: Huawei Xie <huawei.xie@intel.com>
[Thomas: fix typo]

10 years agoi40e: queue start and stop
Chen Jing D(Mark) [Thu, 14 Aug 2014 07:35:01 +0000 (15:35 +0800)]
i40e: queue start and stop

Add functions to start/stop specific RX/TX queue.
Support fields start_rx_per_q and start_tx_per_q.
In the meanwhile, change dev_start/stop functions to call per-queue functions.

Signed-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
Reviewed-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Reviewed-by: Changchun Ouyang <changchun.ouyang@intel.com>
Reviewed-by: Huawei Xie <huawei.xie@intel.com>
[Thomas: reword comments and merge 2 patches]

10 years agotestpmd: queue start and stop
Chen Jing D(Mark) [Thu, 14 Aug 2014 07:35:00 +0000 (15:35 +0800)]
testpmd: queue start and stop

The API provides functions to start/stop specific RX/TX queues (see 0748be2).
This change adds command in testpmd to start/stop specific RX/TX queues.

Signed-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
Reviewed-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Reviewed-by: Changchun Ouyang <changchun.ouyang@intel.com>
Reviewed-by: Huawei Xie <huawei.xie@intel.com>
10 years agoi40e: enable multicast for promiscuous mode
Ding Heng [Fri, 15 Aug 2014 01:47:32 +0000 (09:47 +0800)]
i40e: enable multicast for promiscuous mode

IPv6 will run NDP with multicast packets, but multicast packets will be
filtered by i40e driver by default. So we need to enable multicast when
promiscuous mode is on, or IPv6 will fail.

Signed-off-by: Ding Heng <hengx.ding@intel.com>
Reviewed-by: Helin Zhang <helin.zhang@intel.com>
10 years agoi40e: support autoneg or force link speed
Cunming Liang [Thu, 31 Jul 2014 20:44:07 +0000 (04:44 +0800)]
i40e: support autoneg or force link speed

- i40e force link up/down
- i40e autoneg/force speed

Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
Acked-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
Tested-by: Xu HuilongX <huilongx.xu@intel.com>
10 years agoi40e: support xen domain0
Helin Zhang [Thu, 14 Aug 2014 06:12:53 +0000 (14:12 +0800)]
i40e: support xen domain0

i40e was failing to run in XEN domain0, as the physical
memory for adminq DMA should be allocated and translated
in a different way for XEN domain0. So
rte_memzone_reserve_bounded() should be used for DMA
memory allocation, and rte_mem_phy2mch() should be used
for DMA memory address translation to support running
i40e PMD in XEN domain0.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Tested-by: Zhaochen Zhan <zhaochen.zhan@intel.com>
Acked-by: Jijiang Liu <jijiang.liu@intel.com>
10 years agokni: fix build on Ubuntu 12.04
Pawel Wodkowski [Wed, 20 Aug 2014 09:42:53 +0000 (10:42 +0100)]
kni: fix build on Ubuntu 12.04

On Ubuntu 12.04.4 file '/proc/version_signature' contains
'Ubuntu 3.11.0-15.25~precise1-generic 3.11.10'. This introduce compilation
error since '~precise1' will not be discarded. This patch discards
everything after '~' inclusively.

Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoixgbe: require only sse3 intrinsics
Neil Horman [Fri, 1 Aug 2014 16:48:57 +0000 (12:48 -0400)]
ixgbe: require only sse3 intrinsics

ixgbe was failing to build in the default configuration because it required
sse4.2 intrinsics, and the default config doesn't support more than sse3.
Modify the pmd so that only sse3 intrinsics are pulled in and used.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: Konstantin Ananyev <konstantin.ananyev@intel.com>
CC: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
10 years agopcap: fix Rx crash
Pablo de Lara [Tue, 5 Aug 2014 10:18:20 +0000 (11:18 +0100)]
pcap: fix Rx crash

Normally, bufs[i] stores the mbuf pointer, the index of buf[i]
is the loop count i, but if header.len > buf_size, DPDK will
free the mbuf, but the loop count i still increases, so some
of the items in bufs[] might be NULL pointer, causing a potential
DPDK core. Using num_rx as the index for bufs[] solves the problem.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Tested-by: Jiajia SunX <sunx.jiajia@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agokni: fix missing backslash in Makefile
Julien Cretin [Fri, 1 Aug 2014 16:56:01 +0000 (18:56 +0200)]
kni: fix missing backslash in Makefile

With GNU Make 3.81 on Ubuntu 14.04, I get:
lib/librte_eal/linuxapp/kni/Makefile:49: *** unterminated call to function `shell': missing `)'.  Stop.

Signed-off-by: Julien Cretin <julien.cretin@trust-in-soft.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoexamples/l3fwd: improve grouping by destination port
Konstantin Ananyev [Tue, 22 Jul 2014 16:04:47 +0000 (17:04 +0100)]
examples/l3fwd: improve grouping by destination port

Latest changes introduced a small degradation for the corner case
when each input packet is destined to the different port.
For the test-case when 1 core manages 4 ports and packet stream looks like:
IPV4_DSTPORT0, IPV4_DSTPORT1, IPV4_DSTPORT3, IPV4_DSTPORT4, IPV4_DSTPORT0, ...
non-optimised code path outperforms optimised one by 2-3%.
These changes supposed to close that gap.
From my testing: now for the case described above optimised code path
produces same numbers as non-optimised one.
For other test-cases numbers remain about the same.

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
10 years agoether: fix local address check
Thomas Monjalon [Fri, 1 Aug 2014 15:53:51 +0000 (17:53 +0200)]
ether: fix local address check

cppcheck reports show that is_local_admin_ether_addr() was broken:
Expression '(X & 0x2) == 0x1' is always false

Reported-by: David Binderman <dcb314@hotmail.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agobond: fix unit tests
Declan Doherty [Mon, 21 Jul 2014 14:52:17 +0000 (15:52 +0100)]
bond: fix unit tests

- Fix bonding unit test suite which was failing due to a change
  in pmd configuration behaviour introduced in commit
  a130f531187249a88 (add link state interrupt flag)
- Added fixes to allow the ability to re-run test suite from test
  application without restarting application

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
10 years agoapp/test: new assert macros and test suite runner
Declan Doherty [Mon, 21 Jul 2014 14:52:16 +0000 (15:52 +0100)]
app/test: new assert macros and test suite runner

- Adding common test assertion macros for unit testing
- Structs for encapsulating unit tests / test suites data.
- test suite runner method

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
10 years agovmxnet3: initialize receive mode for broadcast
Stephen Hemminger [Fri, 25 Jul 2014 17:50:37 +0000 (10:50 -0700)]
vmxnet3: initialize receive mode for broadcast

The driver must listen to broadcast packets, like other devices.
Otherwise protocols like ARP won't work!

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agovirtio: fix build with debug
Ouyang Changchun [Thu, 24 Jul 2014 04:57:45 +0000 (12:57 +0800)]
virtio: fix build with debug

Fix 2 compilation issues in virtio PMD when dump option is enabled.

These errors were introduced by commits
    f37cdfde46a30 (remove unused virtqueue name)
and ce65e697c67ba (simplify the hardware structure).

Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agokni: fix build on Ubuntu 14.04
Patrice Buriez [Thu, 24 Jul 2014 14:28:51 +0000 (15:28 +0100)]
kni: fix build on Ubuntu 14.04

Recent Ubuntu kernel 3.13.0-30.54, although based on Linux kernel 3.13.11,
already provides skb_set_hash() inline function, slightly different than
the one provided by lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h

Ubuntu kernel 3.13.0-30.54 provides:
    * i40e/i40evf: i40e implementation for skb_set_hash
    - https://bugs.launchpad.net/bugs/1328037
    - http://changelogs.ubuntu.com/changelogs/pool/main/l/linux/linux_3.13.0-30.54/changelog

As a result, the implementation provided by kcompat.h must be skipped.
It is not appropriate to test whether LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,11)
because previous Ubuntu kernel 3.13.0-29.53, already based on 3.13.11, needs to
get the implementation provided by kcompat.h

So the full Ubuntu kernel version numbering scheme must be tested:
<base kernel version>-<ABI number>.<upload number>-<flavour>
See "What does a specific Ubuntu kernel version number mean?"
and "How can we determine the version of the running kernel?"
at: https://wiki.ubuntu.com/Kernel/FAQ

Unlike RHEL_RELEASE_CODE, there is no such UBUNTU_RELEASE_CODE available out of
the box, so it needs to be crafted from the Makefile
Similarly, UBUNTU_KERNEL_CODE is generated with ABI and upload numbers.

`lsb_release -si` is first used to check whether we are running Ubuntu
`lsb_release -sr` provides release number 14.04, then converted to integer 1404
/proc/version_signature is parsed to get base kernel version, ABI and upload
numbers, and flavour is dropped

UBUNTU_KERNEL_CODE is indirectly defined using the UBUNTU_KERNEL_VERSION macro,
which in turn is defined in kcompat.h
This makes a single place to define the Ubuntu kernel version numbering scheme,
which is slightly different than the usual "shift by 8" scheme: ABI numbers can
be big (see: https://wiki.ubuntu.com/Kernel/Dev/TopicBranches), so 16-bits have
been reserved for them.

Finally, the implementaion of skb_set_hash is skipped in kcompat.h if we are
running Ubuntu 14.04 with an Ubuntu kernel >= 3.13.0-30.54

Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
[Thomas: simpler form, use tr instead of subst]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: handle no IRQ fallback
Stephen Hemminger [Fri, 25 Jul 2014 17:37:54 +0000 (10:37 -0700)]
igb_uio: handle no IRQ fallback

Fix a couple of issues with my earlier igb_uio stuff:
1. With MSI (like MSI-X) actual IRQ number is not known until
   after the pci_enable_msi() is done.
2. If INTX fails, fall back to running without IRQ.
   This allows usermode PCI to recover and run without out IRQ
   for cases where PCI INTX support is broken (aka VMWare).

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: fix compability on old kernel
Stephen Hemminger [Fri, 25 Jul 2014 17:36:27 +0000 (10:36 -0700)]
igb_uio: fix compability on old kernel

Add more compatibility wrappers, and split out all the wrapper
code to a separate file. Builds on Debian Squeeze (2.6.32) which
is oldest version of kernel current DPDK supports.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: fix build with kernel older than 2.6.34
Thomas Monjalon [Wed, 23 Jul 2014 08:06:32 +0000 (10:06 +0200)]
igb_uio: fix build with kernel older than 2.6.34

There was a missing brace in commit 819fc2fe2ad99
(dont wrap pci_num_vf function needlessly).

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoacl: make tailq fully local
Anatoly Burakov [Fri, 20 Jun 2014 15:42:25 +0000 (16:42 +0100)]
acl: make tailq fully local

Since the data structures such as rings are shared in their entirety,
those TAILQ pointers are shared as well. Meaning that, after a
successful rte_ring creation, the tailq_next pointer of the last
ring in the TAILQ will be updated with a pointer to a ring which may
not be present in the address space of another process (i.e. a ring
that may be host-local or guest-local, and not shared over IVSHMEM).
Any successive ring create/lookup on the other side of IVSHMEM will
result in trying to dereference an invalid pointer.

This patchset fixes this problem by creating a default tailq entry
that may be used by any data structure that chooses to use TAILQs.
This default TAILQ entry will consist of a tailq_next/tailq_prev
pointers, and an opaque pointer to arbitrary data. All TAILQ
pointers from data structures themselves will be removed and
replaced by those generic TAILQ entries, thus fixing the problem
of potentially exposing local address space to shared structures.

Technically, only rte_ring structure require modification, because
IVSHMEM is only using memzones (which aren't in TAILQs) and rings,
but for consistency's sake other TAILQ-based data structures were
adapted as well.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
10 years agolpm: make tailq fully local
Anatoly Burakov [Fri, 20 Jun 2014 15:42:23 +0000 (16:42 +0100)]
lpm: make tailq fully local

Since the data structures such as rings are shared in their entirety,
those TAILQ pointers are shared as well. Meaning that, after a
successful rte_ring creation, the tailq_next pointer of the last
ring in the TAILQ will be updated with a pointer to a ring which may
not be present in the address space of another process (i.e. a ring
that may be host-local or guest-local, and not shared over IVSHMEM).
Any successive ring create/lookup on the other side of IVSHMEM will
result in trying to dereference an invalid pointer.

This patchset fixes this problem by creating a default tailq entry
that may be used by any data structure that chooses to use TAILQs.
This default TAILQ entry will consist of a tailq_next/tailq_prev
pointers, and an opaque pointer to arbitrary data. All TAILQ
pointers from data structures themselves will be removed and
replaced by those generic TAILQ entries, thus fixing the problem
of potentially exposing local address space to shared structures.

Technically, only rte_ring structure require modification, because
IVSHMEM is only using memzones (which aren't in TAILQs) and rings,
but for consistency's sake other TAILQ-based data structures were
adapted as well.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
10 years agohash: make tailq fully local
Anatoly Burakov [Fri, 20 Jun 2014 15:42:20 +0000 (16:42 +0100)]
hash: make tailq fully local

Since the data structures such as rings are shared in their entirety,
those TAILQ pointers are shared as well. Meaning that, after a
successful rte_ring creation, the tailq_next pointer of the last
ring in the TAILQ will be updated with a pointer to a ring which may
not be present in the address space of another process (i.e. a ring
that may be host-local or guest-local, and not shared over IVSHMEM).
Any successive ring create/lookup on the other side of IVSHMEM will
result in trying to dereference an invalid pointer.

This patchset fixes this problem by creating a default tailq entry
that may be used by any data structure that chooses to use TAILQs.
This default TAILQ entry will consist of a tailq_next/tailq_prev
pointers, and an opaque pointer to arbitrary data. All TAILQ
pointers from data structures themselves will be removed and
replaced by those generic TAILQ entries, thus fixing the problem
of potentially exposing local address space to shared structures.

Technically, only rte_ring structure require modification, because
IVSHMEM is only using memzones (which aren't in TAILQs) and rings,
but for consistency's sake other TAILQ-based data structures were
adapted as well.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
10 years agomempool: make tailq fully local
Anatoly Burakov [Fri, 20 Jun 2014 15:42:22 +0000 (16:42 +0100)]
mempool: make tailq fully local

Since the data structures such as rings are shared in their entirety,
those TAILQ pointers are shared as well. Meaning that, after a
successful rte_ring creation, the tailq_next pointer of the last
ring in the TAILQ will be updated with a pointer to a ring which may
not be present in the address space of another process (i.e. a ring
that may be host-local or guest-local, and not shared over IVSHMEM).
Any successive ring create/lookup on the other side of IVSHMEM will
result in trying to dereference an invalid pointer.

This patchset fixes this problem by creating a default tailq entry
that may be used by any data structure that chooses to use TAILQs.
This default TAILQ entry will consist of a tailq_next/tailq_prev
pointers, and an opaque pointer to arbitrary data. All TAILQ
pointers from data structures themselves will be removed and
replaced by those generic TAILQ entries, thus fixing the problem
of potentially exposing local address space to shared structures.

Technically, only rte_ring structure require modification, because
IVSHMEM is only using memzones (which aren't in TAILQs) and rings,
but for consistency's sake other TAILQ-based data structures were
adapted as well.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
10 years agoring: make tailq fully local
Anatoly Burakov [Fri, 20 Jun 2014 15:42:19 +0000 (16:42 +0100)]
ring: make tailq fully local

Since the data structures such as rings are shared in their entirety,
those TAILQ pointers are shared as well. Meaning that, after a
successful rte_ring creation, the tailq_next pointer of the last
ring in the TAILQ will be updated with a pointer to a ring which may
not be present in the address space of another process (i.e. a ring
that may be host-local or guest-local, and not shared over IVSHMEM).
Any successive ring create/lookup on the other side of IVSHMEM will
result in trying to dereference an invalid pointer.

This patchset fixes this problem by creating a default tailq entry
that may be used by any data structure that chooses to use TAILQs.
This default TAILQ entry will consist of a tailq_next/tailq_prev
pointers, and an opaque pointer to arbitrary data. All TAILQ
pointers from data structures themselves will be removed and
replaced by those generic TAILQ entries, thus fixing the problem
of potentially exposing local address space to shared structures.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
10 years agotailq: change rte_dummy to rte_tailq_entry
Anatoly Burakov [Fri, 20 Jun 2014 15:42:18 +0000 (16:42 +0100)]
tailq: change rte_dummy to rte_tailq_entry

Rename structure and add a data pointer.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
10 years agoeal: use --base-virtaddr for mapping rte_config as well
Anatoly Burakov [Fri, 20 Jun 2014 15:42:17 +0000 (16:42 +0100)]
eal: use --base-virtaddr for mapping rte_config as well

Use --base-virtaddr to set the address of rte_config file along with
start address of the hugepages. Since the user would likely expect
the hugepages to be starting at the specified address, the specified
address will likely be rounded to either 2M or 1G. So, in order to
not waste space, we subtract the length of the config (and align it
on page boundary) from the base virtual address and map the config
just before the hugepages.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
10 years agoeal: map shared config into exact same address as primary process
Anatoly Burakov [Fri, 20 Jun 2014 15:42:16 +0000 (16:42 +0100)]
eal: map shared config into exact same address as primary process

Shared config is shared across primary and secondary processes.
However,when using rte_malloc, the malloc elements keep references to
the heap inside themselves. This heap reference might not be referencing
a local heap because the heap reference points to the heap of whatever
process has allocated that malloc element. Therefore, there can be
situations when malloc elements in a given heap actually reference
different addresses for the same heap - depending on which process has
allocated the element. This can lead to segmentation faults when dealing
with malloc elements allocated on the same heap by different processes.

To fix this problem, heaps will now have the same addresses across
processes. In order to achieve that, a new field in a shared mem_config
(a structure that holds the heaps, and which is shared across processes)
was added to keep the address of where this config is mapped in the
primary process.

Secondary process will now map the config in two stages - first, it'll
map it into an arbitrary address and read the address the primary
process has allocated for the shared config. Then, the config is
unmapped and re-mapped using the address previously read.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
10 years agoring: simplify unit tests
Pablo de Lara [Wed, 9 Jul 2014 14:35:36 +0000 (15:35 +0100)]
ring: simplify unit tests

As this unit test does not create devices anymore,
and uses devices created by EAL option --vdev,
there were unnecesary tests that were repeated,
so they have been removed.

So now there are three tests:

1 - Test two devices that share a ring, one device
    with just one RX queue and the other with one
    TX queue.

2 - Test a device connected to itself (loopback) by
    a ring, with both RX and TX queue.

3 - Test two devices that share a ring, but both devices
    with RX and TX queue, so they can send packets to themselves
    and to the other device.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
10 years agoring: remove extra devices creation with --vdev option
Pablo de Lara [Wed, 9 Jul 2014 14:35:35 +0000 (15:35 +0100)]
ring: remove extra devices creation with --vdev option

When passing extra arguments in EAL option --vdev, to create
ring ethdevs, API was creating three ethdevs, even if there
was just one argument, such as CREATE.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
10 years agovmxnet3: remove useless adapter wrapper
Stephen Hemminger [Fri, 13 Jun 2014 01:39:58 +0000 (18:39 -0700)]
vmxnet3: remove useless adapter wrapper

The adapter struct is just a wrapper around the vmxnet3_hw
structure. Eliminate the wrapper and get rid of the macro
used to access and needlessly cast the private data.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agovmxnet3: add per-queue stats
Stephen Hemminger [Fri, 13 Jun 2014 01:38:47 +0000 (18:38 -0700)]
vmxnet3: add per-queue stats

Update per-queue statistics and add missing multicast into statistics.
Also, no need to zero statistics since they are already cleared
in rte_stats_get.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agovmxnet3: fix double spacing of log messages
Stephen Hemminger [Fri, 13 Jun 2014 01:37:13 +0000 (18:37 -0700)]
vmxnet3: fix double spacing of log messages

The debug log macro's already include newline, no need
to double space the output.

Note: other drivers have the same problem

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agovmxnet3: cleanup style and indentation
Stephen Hemminger [Fri, 13 Jun 2014 01:37:04 +0000 (18:37 -0700)]
vmxnet3: cleanup style and indentation

This driver had several style problems, the worst of which
was botched indentation.

Fix almost all the problems reported by checkpatch.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agovmxnet3: fix multicast enabling
Stephen Hemminger [Fri, 13 Jun 2014 01:36:56 +0000 (18:36 -0700)]
vmxnet3: fix multicast enabling

The driver was incorrectly enabling/disabling promiscious mode
when it should have be setting/clearing all multicast mode.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agovmxnet3: enable for FreeBSD
Maciej Gajdzica [Thu, 3 Jul 2014 09:32:30 +0000 (10:32 +0100)]
vmxnet3: enable for FreeBSD

Remove useless include that broke compilation and
allow to use it with nic_uio in FreeBSD.

Signed-off-by: Maciej Gajdzica <maciejx.t.gajdzica@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
10 years agovirtio: simplify the hardware structure
Stephen Hemminger [Sat, 14 Jun 2014 01:06:25 +0000 (18:06 -0700)]
virtio: simplify the hardware structure

The host_features are never used after negotiation.
The PCI information is unused (and available in rte_pci if needed).

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Alan Carew <alan.carew@intel.com>
10 years agovirtio: remove unused adapter_stopped field
Stephen Hemminger [Sat, 14 Jun 2014 01:06:24 +0000 (18:06 -0700)]
virtio: remove unused adapter_stopped field

This flag was set to zero (but was already zero)
and never used.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Alan Carew <alan.carew@intel.com>
10 years agovirtio: remove unused virtqueue name
Stephen Hemminger [Sat, 14 Jun 2014 01:06:23 +0000 (18:06 -0700)]
virtio: remove unused virtqueue name

vq_name is only used when setting up queue, and does not need
to be saved.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Alan Carew <alan.carew@intel.com>
10 years agovirtio: check for ip checksum offload
Stephen Hemminger [Sat, 14 Jun 2014 01:06:22 +0000 (18:06 -0700)]
virtio: check for ip checksum offload

This driver does not support receive IP checksum offload,
therefore must check and return error if configured incorrectly.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Alan Carew <alan.carew@intel.com>
10 years agovirtio: check for transmit checksum config error
Stephen Hemminger [Sat, 14 Jun 2014 01:06:21 +0000 (18:06 -0700)]
virtio: check for transmit checksum config error

This driver does not support transmit checksum or vlan offload
therefore check for this when device is configured.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Alan Carew <alan.carew@intel.com>
10 years agovirtio: deinline some code
Stephen Hemminger [Sat, 14 Jun 2014 01:06:20 +0000 (18:06 -0700)]
virtio: deinline some code

This driver has lots of functions marked always inline which is actually
counterproductive with modern compilers. Better to move the functions to
the one file they are used (proper scope) and let compiler decide.

For trivial functions leave them as static inline.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Alan Carew <alan.carew@intel.com>
10 years agovirtio: dont double space log messages
Stephen Hemminger [Sat, 14 Jun 2014 01:06:19 +0000 (18:06 -0700)]
virtio: dont double space log messages

PMD_INIT_LOG macro already adds a newline, no need to double space.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Alan Carew <alan.carew@intel.com>
10 years agovirtio: maintain stats per queue
Stephen Hemminger [Sat, 14 Jun 2014 01:06:18 +0000 (18:06 -0700)]
virtio: maintain stats per queue

Avoid cache collision and thrashing of the software statistics
by keeping them per-queue in the driver.

Signed-off-by: Stephen Hemminger <shemming@brocade.com>
Acked-by: Alan Carew <alan.carew@intel.com>
10 years agovirtio: fix incorrect parens
Matthew Hall [Mon, 21 Jul 2014 03:47:39 +0000 (20:47 -0700)]
virtio: fix incorrect parens

Signed-off-by: Matthew Hall <mhall@mhcomputing.net>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agovirtio: fix 32-bit build for 64-bit kernel
Vijayakumar Muthuvel Manickam [Fri, 18 Jul 2014 10:53:48 +0000 (03:53 -0700)]
virtio: fix 32-bit build for 64-bit kernel

virtio_net_hdr_mem member within virtqueue structure stores a
physical address and is defined as void ptr. When 32bit pmd is used
with 64bit kernel this leads to truncation of 64bit physical address
and pkt i/o does not work.
Changed virtio_net_hdr_mem to phys_addr_t type and
removed the typecasts

Signed-off-by: Vijayakumar Muthuvel Manickam <mmvijay@gmail.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agovirtio: fix device specific header offset when MSI-X is disabled
Alan Carew [Mon, 16 Jun 2014 11:10:26 +0000 (12:10 +0100)]
virtio: fix device specific header offset when MSI-X is disabled

Suggested-by: Neil Horman <nhorman@tuxdriver.com>
Suggested-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Alan Carew <alan.carew@intel.com>
10 years agoigb_uio: fix build with kernel older than 3.3
Thomas Monjalon [Tue, 22 Jul 2014 12:27:55 +0000 (14:27 +0200)]
igb_uio: fix build with kernel older than 3.3

Since Linux commit fb51ccbf217 (PCI: Rework config space blocking services),
the functions pci_(un)block_user_cfg_access are replaced by
pci_cfg_access_(un)lock.

The compatibility with older functions was broken since commit 399a3f0db8b0
(igb_uio: fix IRQ mode handling).

Reported-by: Yerden Zhumabekov <e_zhumabekov@sts.kz>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: fix typos for kernel older than 3.3
Yerden Zhumabekov [Mon, 21 Jul 2014 12:03:52 +0000 (18:03 +0600)]
igb_uio: fix typos for kernel older than 3.3

Signed-off-by: Yerden Zhumabekov <e_zhumabekov@sts.kz>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: MSI IRQ mode
Stephen Hemminger [Fri, 6 Jun 2014 23:50:36 +0000 (16:50 -0700)]
igb_uio: MSI IRQ mode

Add MSI to the list of possible IRQ modes.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
[Thomas: isolate MSI code from other patch and don't set info.irq twice]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: fix IRQ mode handling
Stephen Hemminger [Fri, 6 Jun 2014 23:50:36 +0000 (16:50 -0700)]
igb_uio: fix IRQ mode handling

This pach reworks how IRQ mode handling is done.

The biggest code change is to use the standard INTX management
code that exists in more recent kernels (and provide backport version).
This also fixes the pci_lock code which was broken, since it was
not protecting against config access, and was doing trylock.

Make this driver behave like other Linux drivers.
Start at MSI-X and degrade to less desireable modes
automatically if the desired type is not available.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: MSI-X cleanups
Stephen Hemminger [Fri, 6 Jun 2014 23:50:33 +0000 (16:50 -0700)]
igb_uio: MSI-X cleanups

Since only one MSI-X entry is ever defined, there is no need to
put it as an array in the driver private data structure. One msix_entry
can just be put on the stack and initialized there.

Also remove the unused backport defines related to MSI-X.
I suspect this code was just inherited from some other project and
never cleaned up.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: make irq mode param read-only
Stephen Hemminger [Fri, 6 Jun 2014 23:50:35 +0000 (16:50 -0700)]
igb_uio: make irq mode param read-only

The module parameter is read-only since changing mode after loading
isn't going to work.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: add missing locking to config access
Stephen Hemminger [Fri, 18 Jul 2014 16:14:55 +0000 (09:14 -0700)]
igb_uio: add missing locking to config access

Access to PCI config space should be inside pci_cfg_access_lock
to avoid read/modify/write races.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: propogate error numbers in probe code
Stephen Hemminger [Fri, 6 Jun 2014 23:50:34 +0000 (16:50 -0700)]
igb_uio: propogate error numbers in probe code

It is good practice to propogate the return values of failing
functions so that more information can be reported. The failed result
of probe will make it out to errno and get printed by modprobe
and will aid in diagnosis of failures.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: dont wrap pci_num_vf function needlessly
Stephen Hemminger [Fri, 6 Jun 2014 23:50:32 +0000 (16:50 -0700)]
igb_uio: dont wrap pci_num_vf function needlessly

It is better style to just use the pci_num_vf directly, rather
than wrapping it with a local (but globally named) function with
the same effect.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: fix checkpatch warnings
Stephen Hemminger [Fri, 6 Jun 2014 23:50:31 +0000 (16:50 -0700)]
igb_uio: fix checkpatch warnings

Fix style issues reported by checkpatch.
There was a real bug in that the setup code was returning
positive value for errors which goes against convention and
might have caused a problem.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: use standard uio naming
Stephen Hemminger [Fri, 6 Jun 2014 23:50:30 +0000 (16:50 -0700)]
igb_uio: use standard uio naming

Don't put capitialization and space in name since it will show
up in /proc/interrupts. Instead use driver name to follow the
conventions used in the kernel by other drivers.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoigb_uio: use kernel standard log message
Stephen Hemminger [Fri, 6 Jun 2014 23:50:29 +0000 (16:50 -0700)]
igb_uio: use kernel standard log message

Use Linux kernel standard coding conventions for console messages.
Bare use of printk() is not desirable and is reported as a style
problem by checkpatch. Instead use pr_info() and dev_info()
to print out log messages where appropriate.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agokni: allow setting MAC address
Padam Jeet Singh [Tue, 1 Jul 2014 14:14:12 +0000 (19:44 +0530)]
kni: allow setting MAC address

Add relevant callback function to change a KNI device's MAC address.

Signed-off-by: Padam Jeet Singh <padam.singh@inventum.net>
Reviewed-by: Helin Zhang <helin.zhang@intel.com>
10 years agokni: fix deadlock in netif_receive_skb
Yao-Po Wang [Fri, 11 Jul 2014 15:37:24 +0000 (23:37 +0800)]
kni: fix deadlock in netif_receive_skb

Per netif_receive_skb function description, it may only be called from
interrupt contex, but KNI is run on kthread that like as user-space
context. It may occur deadlock, if netif_receive_skb called from kthread,
so it should be repleaced by netif_rx or adding local_bh_disable/enable
around netif_receive_skb.

Signed-off-by: Yao-Po Wang <blue119@gmail.com>
Acked-by: Alex Markuze <alex@weka.io>
10 years agoconfig: add clang
Bruce Richardson [Mon, 7 Jul 2014 23:36:58 +0000 (00:36 +0100)]
config: add clang

Add compilation support for clang on Linux and FreeBSD.
clang is the default compiler on FreeBSD 10.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Tested-by: Zhaochen Zhan <zhaochen.zhan@intel.com>
[Thomas: update comments]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoconfig: cleanup duplicated comments
Thomas Monjalon [Fri, 18 Jul 2014 23:10:16 +0000 (01:10 +0200)]
config: cleanup duplicated comments

Comments to help on basic configuration are already located
in common configs.
No need to duplicate (and maintain) them in inherited configurations.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agomk: add clang toolchain
Bruce Richardson [Mon, 7 Jul 2014 23:36:58 +0000 (00:36 +0100)]
mk: add clang toolchain

Add support for clang by adding a toolchain folder for it with the
appropriate files.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Tested-by: Zhaochen Zhan <zhaochen.zhan@intel.com>
[Thomas: CC from command line overrides HOSTCC]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agomk: fix detection of SSE4.2 on FreeBSD
Bruce Richardson [Mon, 7 Jul 2014 23:36:56 +0000 (00:36 +0100)]
mk: fix detection of SSE4.2 on FreeBSD

Add a special case to the native target makefile, where we check if
-march=native shows SSE4.2 support. If it does not, then not everything may
build, so we check if the hardware supports SSE4.2, and use a corei7 target
explicitly to get the SSE4.2 support.

Then ACL library, which requires SSE4.2, can be re-enabled for FreeBSD.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Tested-by: Zhaochen Zhan <zhaochen.zhan@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agovmxnet3/base: disable some clang warnings
Bruce Richardson [Mon, 7 Jul 2014 23:36:55 +0000 (00:36 +0100)]
vmxnet3/base: disable some clang warnings

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Tested-by: Zhaochen Zhan <zhaochen.zhan@intel.com>
10 years agoi40e/base: disable some clang warnings
Bruce Richardson [Mon, 7 Jul 2014 23:36:55 +0000 (00:36 +0100)]
i40e/base: disable some clang warnings

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Tested-by: Zhaochen Zhan <zhaochen.zhan@intel.com>
10 years agoixgbe/base: disable some clang warnings
Bruce Richardson [Mon, 7 Jul 2014 23:36:55 +0000 (00:36 +0100)]
ixgbe/base: disable some clang warnings

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Tested-by: Zhaochen Zhan <zhaochen.zhan@intel.com>
10 years agoacl: fix header include for intrinsics
Bruce Richardson [Mon, 7 Jul 2014 23:36:57 +0000 (00:36 +0100)]
acl: fix header include for intrinsics

Clang compile fails without nmmintrin.h being explicitly included.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Tested-by: Zhaochen Zhan <zhaochen.zhan@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agobond: fix variable initialization
Bruce Richardson [Mon, 7 Jul 2014 23:36:54 +0000 (00:36 +0100)]
bond: fix variable initialization

Variable "valid_slave" wasn't getting properly zero-initialized.
This error is flagged by clang on compile.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Tested-by: Zhaochen Zhan <zhaochen.zhan@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoexamples/pipeline: build with all examples
Thomas Monjalon [Thu, 17 Jul 2014 08:30:52 +0000 (10:30 +0200)]
examples/pipeline: build with all examples

When adding this packet framework sample (commit 77a3346),
it has been forgotten to add it into the global makefile for
"make examples".

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoexamples: fix default build target
Pablo de Lara [Wed, 16 Jul 2014 13:35:56 +0000 (14:35 +0100)]
examples: fix default build target

L3fwd-acl and ip pipeline apps were using old
x86_64-default-linuxapp-gcc as their default target,
instead of x86_64-native-linuxapp-gcc

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agonic_uio: add i40e device ids
Richardson, Bruce [Fri, 11 Jul 2014 00:12:37 +0000 (00:12 +0000)]
nic_uio: add i40e device ids

The FreeBSD nic_uio driver was missing the #defines to include the device ids
for devices using the i40e driver. This change adds in the missing defines.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
10 years agoport: fix doxygen comment
Yao Zhao [Tue, 15 Jul 2014 14:06:03 +0000 (10:06 -0400)]
port: fix doxygen comment

Fix doxygen comment for rte_port_out_op_flush.

Signed-off-by: Yao Zhao <yao.zhao@windriver.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agodoc: remove extraneous comma
Thomas Monjalon [Fri, 4 Jul 2014 09:12:31 +0000 (11:12 +0200)]
doc: remove extraneous comma

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoversion: 1.7.1-rc0
Thomas Monjalon [Wed, 16 Jul 2014 07:44:50 +0000 (09:44 +0200)]
version: 1.7.1-rc0

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoversion: 1.7.0
Thomas Monjalon [Fri, 4 Jul 2014 08:18:07 +0000 (10:18 +0200)]
version: 1.7.0

The makefile rule "showversion" needs a fix to handle empty RTE_VER_SUFFIX.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agopkg: update RPM
Thomas Monjalon [Wed, 2 Jul 2014 16:31:45 +0000 (18:31 +0200)]
pkg: update RPM

- no version in name
- rename dpdk-core and dpdk-core-devel to dpdk and dpdk-devel
- devel depends on main package
- split API doc in a separated package
- prefer %global over %define
- add scripts/ directory (needed for libraries based on DPDK)
- build for Nehalem CPU (ixgbe-vec and acl don't build for default CPU)
- build pcap PMD
- build xen PMD

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agobond: fix doxygen
Thomas Monjalon [Thu, 3 Jul 2014 19:11:07 +0000 (21:11 +0200)]
bond: fix doxygen

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoexamples/qos_sched: fix flow pause after 2M packets
Yong Liu [Thu, 3 Jul 2014 08:59:36 +0000 (16:59 +0800)]
examples/qos_sched: fix flow pause after 2M packets

After enable vector pmd, qos_sched only send 32 packets every burst.
That will cause some packets not transmitted and therefore mempool
will be drain after a while.
App qos_sched now will re-send the packets which failed to send out in
previous tx function.

Signed-off-by: Yong Liu <yong.liu@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Tested-by: Waterman Cao <waterman.cao@intel.com>
10 years agoxen: fix build
Thomas Monjalon [Thu, 3 Jul 2014 14:06:04 +0000 (16:06 +0200)]
xen: fix build

There were 2 errors:

lib/librte_pmd_xenvirt/rte_xen_lib.c:409:2:
error: zero-length gnu_printf format string [-Werror=format-zero-length]

lib/librte_pmd_xenvirt/rte_xen_lib.c:424:2:
error: format '%p' expects argument of type 'void *', but argument 4 has
type 'uintptr_t' [-Werror=format=]

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoversion: 1.7.0-rc4
Thomas Monjalon [Wed, 2 Jul 2014 22:21:28 +0000 (00:21 +0200)]
version: 1.7.0-rc4

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
10 years agoexamples: ignore linux apps on bsd
Thomas Monjalon [Wed, 2 Jul 2014 22:07:15 +0000 (00:07 +0200)]
examples: ignore linux apps on bsd

Do not try to build Linux examples in a BSD environment.

Reported-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>