Commit Graph

1432 Commits

Author SHA1 Message Date
Konstantin Ananyev
1e496d6fdf eal/x86: move header file for vector instructions
lib/librte_eal/common/include/rte_common_vect.h ->
lib/librte_eal/common/include/arch/x86/rte_vect.h

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-03-20 19:24:38 +01:00
Thomas Monjalon
d9f7996554 i40e: revert internal switch of PF
VEB switching is blocking VF.
If the source mac address of packet sent from VF is not listed in the
VEB’s mac table, the VEB will switch the packet back to the VF.
It's an hardware issue.

Reverts: 2ccabd8cd1 ("i40e: enable internal switch of PF").

Reported-by: Jingjing Wu <jingjing.wu@intel.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
2015-03-19 09:02:48 +01:00
Thomas Monjalon
1a5994ac2c version: 2.0.0-rc2
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-03-17 23:02:56 +01:00
Thomas Monjalon
f7ff1d7476 version: fix include
When including rte_version.h without string.h, there is a compilation error:
include/rte_version.h: error: implicit declaration of function ‘strlen’

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-03-17 23:01:31 +01:00
Tetsuya Mukawa
8d59064fb3 null: fix dereference before null check
This patch fixes potential null pointer access of eth_null_copy_tx().

Reported-by: John Mcnamara <john.mcnamara@intel.com>
Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
2015-03-17 23:01:31 +01:00
Tetsuya Mukawa
6e225d6a21 null: fix memory leak of kvargs
'struct rte_kvargs' is allocated in rte_kvargs_parse(), and should be
freed with rte_kvargs_free().

Reported-by: John Mcnamara <john.mcnamara@intel.com>
Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-17 22:58:21 +01:00
Tetsuya Mukawa
8eb680e452 pcap: fix memory leak of kvargs
'struct rte_kvargs' is allocated in rte_kvargs_parse(), and should be
freed with rte_kvargs_free().

Reported-by: John Mcnamara <john.mcnamara@intel.com>
Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-17 22:58:21 +01:00
Ouyang Changchun
527740ccfa af_packet: fix some leaks
Fix possible memory leak issue: free kvlist before return;
Fix possible resource lost issue: close qssockfd before return;

Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Acked-by: Michael Qiu <michael.qiu@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: John W. Linville <linville@tuxdriver.com>
2015-03-17 22:58:21 +01:00
Benoît Canet
45db8927a8 vhost: add hint on how to add or remove device to a data core
Let's make sure people will not forget to set and unset VIRTIO_DEV_RUNNING.

Signed-off-by: Benoît Canet <benoit.canet@nodalink.com>
Acked-by: Huawei Xie <huawei.xie@intel.com>
2015-03-17 12:39:52 +01:00
Vlad Zolotarov
01fa1d6215 ixgbe: unify Rx setup
- Set the callback in a single function that is called from
     ixgbe_dev_rx_init() for a primary process and from eth_ixgbe_dev_init()
     for a secondary processes. This is instead of multiple, hard to track places.
   - Added ixgbe_hw.rx_bulk_alloc_allowed - see ixgbe_hw.rx_vec_allowed description below.
   - Added ixgbe_hw.rx_vec_allowed: like with Bulk Allocation, Vector Rx is
     enabled or disabled on a per-port level. All queues have to meet the appropriate
     preconditions and if any of them doesn't - the feature has to be disabled.
     Therefore ixgbe_hw.rx_vec_allowed will be updated during each queues configuration
     (rte_eth_rx_queue_setup()) and then used in rte_eth_dev_start() to configure the
     appropriate callbacks. The same happens with ixgbe_hw.rx_vec_allowed in a Bulk Allocation
     context.
   - Bugs fixed:
      - Vector scattered packets callback was called regardless the appropriate
        preconditions:
         - Vector Rx specific preconditions.
         - Bulk Allocation preconditions.
      - Vector Rx was enabled/disabled according to the last queue setting and not
        based on all queues setting (which may be different for each queue).

Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-03-17 00:46:01 +01:00
Vlad Zolotarov
18f81142d6 ixgbe: fix Rx CRC stripping for X540
According to x540 spec chapter 8.2.4.8.9 CRCSTRIP field of RDRXCTL should
be configured to the same value as HLREG0.RXCRCSTRP.

Clearing the RDRXCTL.RSCFRSTSIZE field for x540 is not required by the spec
but seems harmless.

Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-03-17 00:46:01 +01:00
Vlad Zolotarov
d07fb25860 ixgbe: fix endianness of ring descriptor access
Use the rte_le_to_cpu_xx()/rte_cpu_to_le_xx() when reading/setting HW ring
descriptor fields.
Fixed the above in ixgbe_rx_alloc_bufs() and in ixgbe_recv_scattered_pkts().

Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-03-17 00:46:01 +01:00
Michael Qiu
9fc985ae9d fm10k: set pointer to NULL after free
It could be a potential not safe issue.

Signed-off-by: Michael Qiu <michael.qiu@intel.com>
Acked-by: Jing Chen <jing.d.chen@intel.com>
2015-03-17 00:46:01 +01:00
Huawei Xie
28a1ccca41 vhost: add build option for vhost-user
Turn on CONFIG_RTE_LIBRTE_VHOST to enable vhost.
vhost-user is turned on by default. Turn off CONFIG_RTE_LIBRTE_VHOST_USER to
enable vhost-cuse implementation.

Signed-off-by: Huawei Xie <huawei.xie@intel.com>
Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
2015-03-17 00:46:01 +01:00
John McNamara
66abc3f310 eal: fix type casting of value to align
Fix a warning when the rte_common.h header is included in a compilation
using  -Wbad-function-cast, such as in Open vSwitch where the
following warning is emitted repeatedly:

    ../rte_common.h: In function 'rte_is_aligned':
    ../rte_common.h:184:9: warning: cast from function call of
    type 'uintptr_t' to non-matching type 'void *' [-Wbad-function-cast]

This change fixes the issue in rte_common.h by using the RTE_ALIGN_FLOOR
macro to get the aligned floor value with generic type casting.

Also removed the rte_align_floor_int() function and replaced it with
the RTE_PTR_ALIGN_FLOOR() macro.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-17 00:46:01 +01:00
Thomas Monjalon
9a01c31b94 eal: fix build with icc and gcc < 4.4
x86intrin.h cannot be directly included as it is not
always available.
rte_common_vect.h handles compiler differences.

Suggested-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-03-16 16:59:53 +01:00
David Marchand
f07246766d eal: fix tailq init for uio and vfio resources
Commit a2348166ea ("tailq: move to dynamic tailq") introduced a bug in
uio/vfio resources list init.

These resources list were pointed at through a pointer initialised only once but
too early in the eal init (before tailqs init).

Fix this by "resolving" this pointer when used (which is well after tailqs
init).

Fixes: a2348166ea ("tailq: move to dynamic tailq")

Reported-by: Marvin Liu <yong.liu@intel.com>
Reported-by: Tetsuya Mukawa <mukawa@igel.co.jp>
Signed-off-by: David Marchand <david.marchand@6wind.com>
Tested-by: John McNamara <john.mcnamara@intel.com>
Tested-by: Tetsuya Mukawa <mukawa@igel.co.jp>
2015-03-12 08:32:48 +01:00
Jingjing Wu
0ef38281f9 ixgbe: fix supported flow types
Ixgbe doesn't support the ipv4-frag and ipv6-frag flow types, remove them.
Ixgbe doesn't support configure flex mask on each kind of flow type, this
patch uses RTE_ETH_FLOW_UNKNOWN to specify global flex mask setting.
This patch also changes the string "raw" to "none" to indicate flex mask
setting unrelated with flow type in testpmd for ixgbe.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
2015-03-10 16:44:54 +01:00
Bruce Richardson
a4a61f79e5 eal/bsd: enable contigmem blocks >1GB in size
The contigmem module was using an "int" type for specifying the
size of blocks of memory to be reserved. A 2GB block was therefore
overflowing the signed 32-bit value, making 1GB the largest block
size that could be reserved as a single unit.
The fix is to change the type used for the buffer/block size to
an "int64_t" value.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2015-03-10 16:19:43 +01:00
Adrien Mazarguil
66e1591687 mlx4: avoid init errors when kernel modules are not loaded
Mimic UIO/VFIO drivers behavior by not causing errors when a device cannot
be initialized due to missing or mismatching kernel modules. Display helpful
messages instead, such as:

 [...]
 EAL: PCI device 0000:83:00.0 on NUMA socket 1
 EAL:   probe driver: 15b3:1007 librte_pmd_mlx4
 PMD: librte_pmd_mlx4: PCI information matches, using device "mlx4_0" (VF: false)
 PMD: librte_pmd_mlx4: cannot use device, are drivers up to date?
 EAL: PCI device 0000:84:00.0 on NUMA socket 1
 EAL:   probe driver: 15b3:1007 librte_pmd_mlx4
 PMD: librte_pmd_mlx4: PCI information matches, using device "mlx4_1" (VF: false)
 PMD: librte_pmd_mlx4: cannot use device, are drivers up to date?
 EAL: No probed ethernet devices
 [...]

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
2015-03-10 16:08:15 +01:00
Stephen Hemminger
1257d1734b ixgbe: rename igb prefix
To avoid any possible confusion or breakage, rename all the structures
of ixgbe driver to use ixgbe_ rather than igb_ because igb is a
different driver.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
2015-03-10 15:24:06 +01:00
Stephen Hemminger
4bb4414040 ixgbe: prefix global function
All global functions in a driver should use the same prefix
to avoid any future name collisions.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
[Bruce: one instance was missing]
Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
2015-03-10 15:23:21 +01:00
Stephen Hemminger
b74381cf91 ixgbe: make bulk alloc static
Only used in this file, make it static.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
2015-03-10 15:16:23 +01:00
Stephen Hemminger
19731cfdf3 ixgbe: make register maps const
These are const data structures, just put them in txt segment
rather than having compiler emit code to set them up on the stack.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
2015-03-10 15:12:15 +01:00
Stephen Hemminger
3fd612a907 ixgbe: make txq_ops const
All virtual function tables should be const so they are put
in text segment rather than data.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
2015-03-10 15:04:54 +01:00
David Marchand
da0113c539 eal: remove useless errno
There is no remaining reference to E_RTE_NO_TAILQ.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-10 12:17:31 +01:00
David Marchand
95b6a46fa6 tailq: remove static slots
No static entry remaining, the rte_tailq api is for "internal use" only, get rid
of the static slots.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-10 12:15:14 +01:00
David Marchand
a2348166ea tailq: move to dynamic tailq
Use dynamic tailq rather than static entries.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-10 12:06:08 +01:00
David Marchand
873a61c752 tailq: introduce dynamic register system
This register system makes it possible to reserve a tailq for the dpdk
libraries.
The "dynamic" tailqs are right after the "static" tailqs in shared mem.
Primary process is responsible for writing the tailq names, so that secondary
processes can find them.

This is a temp commit, "static" tailqs are removed after conversion of all
users in next commits.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-10 11:58:02 +01:00
David Marchand
598a9cc804 tailq: remove unused macros
A lot of places just protect against concurrent access and I can not see the
gain of having those macros.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-10 11:55:07 +01:00
David Marchand
9b7e0dbb6c tailq: get rid of broken reserve api
The "reserve" macros and functions do not check if the requested entry is free.
They do nothing more than the lookup function (which itself "creates" entries
...).
The rte_tailq api is marked as "internal use" in documentation and these macros
are only used in test application, so just get rid of them.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-10 11:51:12 +01:00
David Marchand
f6b4f6c9c1 tailq: use a single cast macro
No need to cast everywhere, define a common macro for this, plus it can be used
in future commits.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-10 11:49:26 +01:00
David Marchand
ff708facfc tailq: remove unneeded inclusions
Only keep inclusion where really needed.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-10 11:47:46 +01:00
David Marchand
b8320b9824 pci: use lookup tailq api
There is no reason why we should use the "reserve" tailq api, since the pci
entry is already statically reserved.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-10 11:40:21 +01:00
David Marchand
47cb11c9bf eal: remove remaining reference to pm
Hopefully, this is the last reference to pm.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
2015-03-09 18:14:29 +01:00
Thomas Monjalon
1f693b8f37 ethdev: remove useless parameter in init functions
The pointer to struct eth_driver is not used and is already set
in struct rte_eth_dev.

It's a small cleanup in PMD API which probably needs more
attention to make clear what is a driver, a PCI driver, an
ethernet driver, etc.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-03-09 18:07:44 +01:00
Michael Qiu
12fa4a0078 hash: fix unsupported crc instruction in i686 platform
Error: unsupported instruction `crc32'

The root cause is that i686 platform does not support 'crc32q'
Need make it only available in x86_64 platform.

Signed-off-by: Michael Qiu <michael.qiu@intel.com>
Acked-by: Yerden Zhumabekov <yerden.zhumabekov@sts.kz>
2015-03-09 18:07:43 +01:00
Michael Qiu
2eca94d521 eal/x86: fix redeclaration of registers
include/rte_cpuflags.h:154:2: error: redeclaration of enumerator ‘REG_EAX’

In i686, from REG_EAX to REG_EDX are all defined in
	/usr/include/sys/ucontext.h

Rename to RTE_REG_EAX to avoid this issue.

Signed-off-by: Michael Qiu <michael.qiu@intel.com>
Acked-by: David Marchand <david.marchand@6wind.com>
2015-03-09 18:07:43 +01:00
Konstantin Ananyev
2a0911ec8b eal: fix C++11 compilation
When compiling C++11-code or above (--std=c++11), the build fails with
lots of

  rte_eth_ctrl.h:517:3: note: in expansion of macro RTE_ALIGN
    (RTE_ALIGN(RTE_ETH_FLOW_MAX, UINT32_BIT)/UINT32_BIT)
    ^

When reading the GCC info pages, I get the feeling that __typeof__ is
a better choice, and that indeed works when including the headers in
C++ files (--std=c++11).

Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-03-09 17:38:41 +01:00
Michal Jastrzebski
64b01ee0b2 app/testpmd: check vlan filter configuration
This patch modifies testpmd behavior when setting:
rx_vlan add all vf_port (enabling all vlanids
to be passed thru rx filter on VF).
Rx_vlan_all_filter_set() function,
checks if the next vlanid can be enabled by the driver.
Number of vlanids is limited by the NIC and thus the NIC
do not allow to enable more vlanids than it can allocate
in VFTA table.

Signed-off-by: Michal Jastrzebski <michalx.k.jastrzebski@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2015-03-09 12:47:26 +01:00
Takuya Asada
cff90bb7ec virtio: add default Tx configuration
When I tried to launch test-pmd on KVM guest of Fedora21, I got following error:

Configuring Port 0 (socket 0)
Fail to configure port 0 tx queues
EAL: Error - exiting with code: 1
  Cause: Start ports failed

I found that the error caused here, and actual error message was
"TX checksum offload not supported".

This patch adds default_txconf on virtio pmd, to avoid the error.

Signed-off-by: Takuya Asada <syuu@cloudius-systems.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2015-03-09 12:46:46 +01:00
Huawei Xie
4d16fff496 vhost: check file descriptor before closing
This avoids closing -1 in our case.

Signed-off-by: Huawei Xie <huawei.xie@intel.com>
Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
Acked-by: Tetsuya Mukawa <mukawa@igel.co.jp>
2015-03-09 12:46:46 +01:00
Huawei Xie
64ab971791 vhost: fix file descriptors naming
Previous vhost implementation wrongly name kickfd as callfd and callfd as kickfd.
It is functional correct, but causes confusion.
Exchange kickfd and callfd to avoid confusion.

Signed-off-by: Huawei Xie <huawei.xie@intel.com>
Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
Acked-by: Tetsuya Mukawa <mukawa@igel.co.jp>
2015-03-09 12:46:46 +01:00
Huawei Xie
aee87dd706 vhost: use loop instead of goto
This patch reorder the code a bit to use loop instead of goto.
Besides, remove abudant check 'fd != -1'.

Signed-off-by: Huawei Xie <huawei.xie@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-03-09 12:46:46 +01:00
Huawei Xie
31ff0c6a45 vhost: combine select with sleep
combine sleep into select when there is no file descriptors to be monitored.

Signed-off-by: Huawei Xie <huawei.xie@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-03-09 12:46:46 +01:00
Ouyang Changchun
db566f5930 ixgbe: fix VF Tx for X550
X550 should use the correct macro to set the VFTDT and VFRDT register address.
This patch fixes the VF TX issue for Sageville.

Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Acked-by: Cunming Liang <cunming.liang@intel.com>
2015-03-09 12:46:46 +01:00
Michael Qiu
7eb689794a eal/x86: fix integer cast in memcpy
./i686-native-linuxapp-gcc/include/rte_memcpy.h:592:23: error:
cast from pointer to integer of different size
[-Werror=pointer-to-int-cast]

  dstofss = 16 - (int)((long long)(void *)dst & 0x0F) + 16;

Type 'long long' is 64-bit in i686 platform while 'void *'
is 32-bit.

Signed-off-by: Michael Qiu <michael.qiu@intel.com>
Signed-off-by: Zhihong Wang <zhihong.wang@intel.com>
2015-03-09 12:46:46 +01:00
Zhihong Wang
76746eb13f eal/x86: fix strict aliasing rules
Fixed strict-aliasing rules breaking errors for some GCC version.

Signed-off-by: Zhihong Wang <zhihong.wang@intel.com>
Acked-by: Cunming Liang <cunming.liang@intel.com>
Acked-by: Michael Qiu <michael.qiu@intel.com>
2015-03-09 12:46:46 +01:00
Huawei Xie
391b5f425c vhost: fix crash by removing device when requested
This patch fixes the segfault issue in the case vhost receives
new VHOST_SET_MEM_TABLE message without VHOST_VRING_GET_VRING_BASE
(which we uses as the stop message).

Signed-off-by: Huawei Xie <huawei.xie@intel.com>
Acked-by: Tommy Long <thomas.long@intel.com>
2015-03-05 22:08:27 +01:00
Panu Matilainen
5e62bdde85 ethdev: add missing symbol export for port release
Fixes: 36ec8585b2 ("ethdev: release port")

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-03-05 21:58:07 +01:00