Ouyang Changchun [Wed, 11 Mar 2015 01:34:01 +0000 (09:34 +0800)]
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>
Andre Richter [Thu, 12 Mar 2015 17:18:00 +0000 (18:18 +0100)]
tools: remove absolute path of chmod for vfio setup
setup.sh uses /usr/bin/chmod, but depending on distribution, it is not always there.
For example, Ubuntu has /bin/chmod. Fix this by removing the absolute path, like it is
done e.g. with grep.
Signed-off-by: Andre Richter <andre.o.richter@gmail.com>
Neil Horman [Tue, 17 Mar 2015 18:08:41 +0000 (14:08 -0400)]
scripts: add ABI checking utility
There was a request for an abi validation utilty for the ongoing ABI stability
work. As it turns out there is a abi compliance checker in development that
seems to be under active development and provides fairly detailed ABI compliance
reports. Its not yet intellegent enough to understand symbol versioning, but it
does provide the ability to identify symbols which have changed between
releases, along with details of the change, and offers developers the
opportunity to identify which symbols then need versioning and validation for a
given update via manual testing.
This script automates the use of the compliance checker between two arbitrarily
specified tags within the dpdk tree. To execute enter the $RTE_SDK directory
and run:
DPDK introduced pmd driver for PCIE host-interface of Intel Ethernet
Switch FM10000 Series, update programming guide to describe the new
driver and usage.
This patch add contents for major change in single virtio implementation,
also add back something for merge-able feature and promiscuous mode in virtio.
John McNamara [Wed, 25 Feb 2015 19:46:02 +0000 (19:46 +0000)]
doc: add Rx and Tx callbacks sample app user guide
Added a sample application guide for the rxtx_callbacks app.
Signed-off-by: John McNamara <john.mcnamara@intel.com> Acked-by: Siobhan Butler <siobhan.a.butler@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
John McNamara [Wed, 25 Feb 2015 19:46:00 +0000 (19:46 +0000)]
examples/skeleton: improve documentation
Minor refactoring and comments to make the sample app and
code examples clearer for the sample app guide.
Signed-off-by: John McNamara <john.mcnamara@intel.com> Acked-by: Siobhan Butler <siobhan.a.butler@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Vlad Zolotarov [Thu, 12 Mar 2015 21:17:32 +0000 (23:17 +0200)]
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>
Vlad Zolotarov [Thu, 12 Mar 2015 21:17:30 +0000 (23:17 +0200)]
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>
Huawei Xie [Thu, 12 Mar 2015 15:30:23 +0000 (23:30 +0800)]
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.
John McNamara [Mon, 16 Mar 2015 17:05:06 +0000 (17:05 +0000)]
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>
Yong Liu [Wed, 11 Mar 2015 07:23:10 +0000 (15:23 +0800)]
app/testpmd: fix incorrect port number check
testpmd parameter "nb-port" mean the number of forwarding port.
It's incorrect to use function port_id_is_invalid to check number of ports.
Fixes: edab33b1c01d ("app/testpmd: support port hotplug") Signed-off-by: Yong Liu <yong.liu@intel.com> Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Jingjing Wu [Fri, 6 Mar 2015 09:36:13 +0000 (17:36 +0800)]
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.
Pablo de Lara [Fri, 27 Feb 2015 11:18:39 +0000 (11:18 +0000)]
app/testpmd: stop forwarding when quitting
When user quits testpmd, and there is traffic being forwarded,
that may produce a segmentation fault, due to ports being closed,
while they are still transmitting packets.
This patch prevents the issue from happening,
by stopping packet forwarding before closing the ports.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
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>
Adrien Mazarguil [Fri, 27 Feb 2015 18:27:00 +0000 (19:27 +0100)]
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
[...]
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>
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>
David Marchand [Wed, 4 Mar 2015 21:50:07 +0000 (22:50 +0100)]
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>
David Marchand [Wed, 4 Mar 2015 21:50:05 +0000 (22:50 +0100)]
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>
Michael Qiu [Fri, 6 Mar 2015 03:53:32 +0000 (11:53 +0800)]
app/test: fix printf format
test_hash.c: In function ‘test_crc32_hash_alg_equiv’:
error: format ‘%lu’ expects argument of type ‘long unsigned int’,
but argument 2 has type ‘size_t’ [-Werror=format]
According to C99, for size_t type should use format "%zu"
Signed-off-by: Michael Qiu <michael.qiu@intel.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
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>
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>
This patch adds information to testpmd_funcs.rst file,
about limited number of vlan_ids possible to be enabled
in a filter. This is limited to the maximum number of entries
possible in the VFTA table.
Signed-off-by: Michal Jastrzebski <michalx.k.jastrzebski@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
When invoking creation of bonded device using:
create bonded device mode socket in testpmd the bonded port was not
enabled at the end of cmd_create_bonded_device_parsed function.
This caused commands 'show port info' and 'show port stats' not working
properly with bonding device. This patch fixed it.
Signed-off-by: Michal Jastrzebski <michalx.k.jastrzebski@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Huawei Xie [Fri, 6 Mar 2015 10:39:18 +0000 (18:39 +0800)]
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.
Huawei Xie [Tue, 3 Mar 2015 02:26:04 +0000 (10:26 +0800)]
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>
The dpdk_nic_bind script will not allow ports to be bound or unbound if none of the
kernel modules supported by DPDK is loaded. This patch relaxes this restriction by
checking if a DPDK module is actually requested. The example below illustrates this
problem:
In virtio test, on the guest
1. Bind virtio port to igb_uio driver;
2. Remove igb_uio module;
3. Bind virtio port to virtio-pci driver, it fails and reports:
"Error - no supported modules are loaded"
The script should check the to-be-bound driver flag, if it is dpdk driver(igb_uio, vfio etc),
and the corresponding module is not loaded, then exit, otherwise, just report a warning,
and continue to bind the non-dpdk driver(like virtio-pci) to dev.
Keith Wiles [Thu, 26 Feb 2015 14:00:32 +0000 (08:00 -0600)]
ethdev: fix hotplug check for Rx and Tx callbacks
Some checks with rte_eth_dev_is_valid_port() were missed when merging
hotplug and callbacks features.
Fixes: c282abd2a6cd ("ethdev: remove assumption that port will not be detached") Signed-off-by: Keith Wiles <keith.wiles@intel.com> Acked-by: John McNamara <john.mcnamara@intel.com>
Cunming Liang [Mon, 2 Mar 2015 13:28:24 +0000 (21:28 +0800)]
ixgbe: check rxd number to avoid mbuf leak
The mbuf leak happens when the assigned number of rx descriptor is not
power of 2 in vector mode.
As it's presumed on vpmd rx (for rx_tail wrap), adding condition check
to prevent it.
The root cause reference code in *_recv_raw_pkts_vec* as below.
"rxq->rx_tail = (uint16_t)(rxq->rx_tail & (rxq->nb_rx_desc - 1));".
Reported-by: Stephen Hemminger <stephen@networkplumber.org> Signed-off-by: Cunming Liang <cunming.liang@intel.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
*alloc() routines return void * and therefore cast is not needed.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
[Thomas: reverse num and size parameters in vhost calloc]
Thomas Monjalon [Tue, 3 Mar 2015 14:48:28 +0000 (15:48 +0100)]
bond: remove debug function to fix link with shared lib
The function print_client_stats was used in the example without being
clearly exported in the map file. So it breaks linking with shared library
when debug is enabled.
It's better to remove this function as it probably could be implemented
with statistics API.
Fixes: cc7e8ae84faa ("add example application for link bonding mode 6") Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Acked-by: Declan Doherty <declan.doherty@intel.com>
Thomas Monjalon [Tue, 3 Mar 2015 15:04:59 +0000 (16:04 +0100)]
virtio: fix build with debug enabled
With CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=y:
error: ‘devname’ undeclared (first use in this function)
Fixes: da978dfdc43b ("virtio: use port IO to get PCI resource") Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
Thomas Monjalon [Tue, 3 Mar 2015 14:58:37 +0000 (15:58 +0100)]
virtio: fix build with mempool debug enabled
The mempool header forces error on -Wcast-qual:
error: cast discards ‘const’ qualifier from pointer target type
Let's fix it by removing const qualifier of pci driver from commit 5e9f6d1340ff ("pci: reference driver structure for each device")
It's needed because the driver flags are changed depending on using uio or not.
Actually these driver flags should be directly attached to each device.
Fixes: da978dfdc43b ("virtio: use port IO to get PCI resource") Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
Thomas Monjalon [Tue, 3 Mar 2015 08:37:54 +0000 (09:37 +0100)]
eal/linux: fix build
Compilation fails in some distributions because of missing unistd.h
needed for pread/pwrite (seen with Suse):
lib/librte_eal/linuxapp/eal/eal_pci_uio.c:62:2:
error: implicit declaration of function ‘pread’
Fixes: 4a499c649590 ("eal/linux: enable uio_pci_generic support") Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Acked-by: David Marchand <david.marchand@6wind.com>
Neil Horman [Fri, 27 Feb 2015 12:33:13 +0000 (07:33 -0500)]
eal: clean up export of socket id variable
Theres no need to export this variable. Its set and queried from an API call
that doesn't exist in the hot path. Instead just export the rte_socket_id
symbol and make the variable private to protect it from type changes. We should
do this with the other exported variables too, but I think its too late in the
release cycle to do that.
tested using distributor_autotest (which uses rte_socket_id), successfully.
Only tested on linux, as I don't currently have a bsd system spun up, but the
changes are symmetric, and should be fine
Signed-off-by: Neil Horman <nhorman@tuxdriver.com> Acked-by: Cunming Liang <cunming.liang@intel.com> Acked-by: David Marchand <david.marchand@6wind.com>
Jijiang Liu [Thu, 26 Feb 2015 03:37:24 +0000 (11:37 +0800)]
i40e: advertise TSO capability
Advertise the DEV_TX_OFFLOAD_TCP_TSO flag in the PMD features. It means
that the i40e PMD supports the offload of TSO.
Test report: http://www.dpdk.org/ml/archives/dev/2015-March/014467.html
Signed-off-by: Jijiang Liu <jijiang.liu@intel.com> Signed-off-by: Miroslaw Walukiewicz <miroslaw.walukiewicz@intel.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com> Acked-by: Helin Zhang <helin.zhang@intel.com> Tested-by: Min Cao <min.cao@intel.com>
Jijiang Liu [Thu, 26 Feb 2015 03:37:23 +0000 (11:37 +0800)]
i40e: enable TSO support
This patch enables i40e TSO feature for both non-tunneling packet and
tunneling packet.
Test report: http://www.dpdk.org/ml/archives/dev/2015-March/014467.html
Signed-off-by: Jijiang Liu <jijiang.liu@intel.com> Signed-off-by: Miroslaw Walukiewicz <miroslaw.walukiewicz@intel.com> Signed-off-by: Grzegorz Galkowski <grzegorz.galkowski@intel.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com> Acked-by: Helin Zhang <helin.zhang@intel.com> Tested-by: Min Cao <min.cao@intel.com>
Jijiang Liu [Thu, 26 Feb 2015 03:37:22 +0000 (11:37 +0800)]
i40e: move Tx offloads parameters to separate structure
The structure size is u64 so it could be used with single cpu operation.
Test report: http://www.dpdk.org/ml/archives/dev/2015-March/014467.html
Signed-off-by: Jijiang Liu <jijiang.liu@intel.com> Signed-off-by: Miroslaw Walukiewicz <miroslaw.walukiewicz@intel.com> Signed-off-by: Grzegorz Galkowski <grzegorz.galkowski@intel.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com> Acked-by: Helin Zhang <helin.zhang@intel.com> Tested-by: Min Cao <min.cao@intel.com>
Tetsuya Mukawa [Fri, 27 Feb 2015 07:16:15 +0000 (16:16 +0900)]
app/testpmd: fix crash when portmask is specified
If testpmd is invoked with portmask option like below, segmentation
fault will occur. This patch fixes the issue.
Reported-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>