1818 Commits

Author SHA1 Message Date
Cunming Liang
0978ad54bb eal/linux: fix comments on vfio MSI
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
2015-07-27 23:13:56 +02:00
Cunming Liang
c9f3ec1a0f eal/linux: add Rx interrupt control function
The patch adds 'rte_intr_rx_ctl' to add or delete interrupt vector
events monitor on specified epoll instance.

Signed-off-by: Cunming Liang <cunming.liang@intel.com>
2015-07-27 23:13:56 +02:00
Cunming Liang
9efe9c6cdc eal/linux: add epoll wrappers
The patch adds 'rte_epoll_wait' and 'rte_epoll_ctl' for async event wakeup.
It defines 'struct rte_epoll_event' as the event param.
When the event fds add to a specified epoll instance, 'eptrs' will hold
the rte_epoll_event object pointer.
The 'op' uses the same enum as epoll_wait/ctl does.
The epoll event support to carry a raw user data and to register a callback
which is executed during wakeup.

Signed-off-by: Cunming Liang <cunming.liang@intel.com>
2015-07-27 23:13:56 +02:00
Cunming Liang
d37641029a eal/linux: add interrupt vectors
The patch adds interrupt vectors support in rte_intr_handle.
'vec_en' is set when interrupt vectors are detected and associated
event fds are set. Those event fds are stored in efds[].
'intr_vec' is reserved for device driver to initialize the vector
mapping table.

Signed-off-by: Danny Zhou <danny.zhou@intel.com>
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
2015-07-27 23:13:56 +02:00
Cunming Liang
e935077450 eal/bsd: fix inappropriate header guards
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
2015-07-27 23:04:17 +02:00
Jan Viktorin
f76640a849 igb_uio: fix build
The missing header prevents to build with linux v3.18.

The problem is with kzalloc and kfree which are undefined in the igb_uio
driver.

HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" ARCH=arm
RTE_TARGET=arm-armv7-a-linuxapp-gcc
CROSS=arm-none-linux-gnueabi-
lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
	error: implicit declaration of function 'kzalloc'
	error: implicit declaration of function 'kfree'

Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
2015-07-27 15:02:48 +02:00
Sergio Gonzalez Monroy
ac7c9f725f eal: fix tsc frequency
Fix error where TSC freq is 0.

The logical OR operator evaluates to 1 if any of its operands is
different than 0.

Error showed later while initializing PMD:
EAL: TSC frequency is ~0 KHz
<snip>
PMD: eth_ixgbe_dev_init(): Hardware Initialization Failure: -30
EAL: Error - exiting with code: 1
  Cause: Requested device 0000:84:00.0 cannot be used

Fixes: 040cf8a41187 ("eal: deduplicate timer functions")

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-27 14:43:30 +02:00
Stephen Hemminger
9fb557035d bnx2x: enable PMD build
This is build infrastructure changes for bnx2x driver.
 - enable BNX2X poll mode driver in default config.
 - add it to mk
 - put entry in MAINTAINERS

Note: I intentionally did not list myself as maintainer of this
driver. QLogic has discussed taking over as maintainer.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Harish Patil <harish.patil@qlogic.com>
2015-07-27 04:27:15 +02:00
Stephen Hemminger
632b2d1dee eal: provide functions to access PCI config
Some drivers need ability to access PCI config (for example for power
management). This adds an abstraction to do this for both Linux
and BSD.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Harish Patil <harish.patil@qlogic.com>
2015-07-27 04:26:38 +02:00
Ravi Kerur
d12b6da14b eal: deduplicate memory initialization
Move common functions from BSD/Linux to eal_common_memory.c file.
BSD uses contigmem kernel module and Linux uses /proc/self/pagemap file.

Signed-off-by: Ravi Kerur <rkerur@gmail.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-27 02:46:56 +02:00
Ravi Kerur
040cf8a411 eal: deduplicate timer functions
Move common functions from BSD/Linux to eal_common_timer.c.
BSD uses sysctl and Linux uses CLOCK_MONOTIC_RAW to calibrate TSC.
HPET is specific to Linux and not integrated in the common init.

Signed-off-by: Ravi Kerur <rkerur@gmail.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-27 02:11:00 +02:00
Ravi Kerur
bd8bf7e172 eal: deduplicate lcore initialization
Implement cpu_detected() for BSD.
Move common function in eal_lcore.c to eal_common_lcore.c file.

Signed-off-by: Ravi Kerur <rkerur@gmail.com>
2015-07-27 00:56:08 +02:00
David Marchand
2b9fb6319d eal: remove useless PCI id header inclusions
Signed-off-by: David Marchand <david.marchand@6wind.com>
[Thomas: move inclusion used by ixgbe bypass]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-27 00:56:08 +02:00
David Marchand
bd734cf778 eal: remove dependency on drivers
There is no reason why eal should depend on drivers.
Remove remaining (unused) references.

Signed-off-by: David Marchand <david.marchand@6wind.com>
2015-07-27 00:09:22 +02:00
Thomas Monjalon
707cc8275d mbuf: fix tunnel flags check
A packet is tunnelled if the tunnel type is identified or if it has
an inner part.

Fix also some typos in RTE_PTYPE_INNER_L3_MASK and IP comments.

Fixes: f295a00a2b44 ("mbuf: add definitions of unified packet types")

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
2015-07-26 22:54:31 +02:00
Yuichi Nakai
e01cda43a3 mempool: fix trailer address
__mempool_get_trailer() calculated header's address.
The address of trailer should set after element area.
This patch fixes this calculating.

Fixes: 97e7e685bfcd ("mempool: add structure for object trailers")

Signed-off-by: Yuichi Nakai <xoxyuxu@gmail.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
2015-07-26 15:24:18 +02:00
Konstantin Ananyev
48cc0baf8a ethdev: fix C linkage type of latest functions
Move #ifdef __cplusplus to the end of the file.

Fixes: 64b7acd861b1 ("ethdev: add multicast address filtering")

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-07-26 14:57:41 +02:00
Stephen Hemminger
4558b74377 kni: remove needless casts
This fixes cases in KNI where kernel allocation function return value
is needlessly casted.

Detected with coccinelle:
lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c:3181:25-28:
	WARNING: casting value returned by memory allocation function to (u32 *) is useless.
lib/librte_eal/linuxapp/kni/kni_vhost.c:690:9-28:
	WARNING: casting value returned by memory allocation function to (struct rte_kni_fifo *) is useless.
lib/librte_eal/linuxapp/kni/kni_vhost.c:684:13-27:
	WARNING: casting value returned by memory allocation function to (struct sk_buff *) is useless

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
2015-07-22 16:22:55 +02:00
Stephen Hemminger
ac2f69c9fc ethdev: fix crash if malloc of user callback fails
Found by coccinelle script.
If rte_zmalloc() failed in rte_eth_dev_callback_register
then NULL pointer would be dereferenced.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
[Thomas: restore pointer comparison style]
2015-07-22 15:57:57 +02:00
Rahul Lakkireddy
82ecf62ede nic_uio: allow to bind any device
nic_uio requires the pci ids to be present in rte_pci_dev_ids.h in order to
bind the devices to nic_uio.  However, it's better to remove this whitelist
of pci ids, and instead rely on hw.nic_uio.bdfs kenv parameter to allow
binding any device to nic_uio.

Suggested-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
Acked-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2015-07-22 15:01:14 +02:00
Pablo de Lara
9cd270a678 hash: move struct field to keep ABI stable
In order to keep the ABI consistent with the old hash library,
hash_func_init_val field has been moved, so it remains
at the same offset as previously, since hash_func and
hash_func_init_val are fields accessed by the public function
rte_hash_hash and must keep the same offset as older versions.

Fixes: 48a399119619 ("hash: replace with cuckoo hash implementation")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2015-07-22 11:24:40 +02:00
Sergio Gonzalez Monroy
ebbe3f506c malloc: fix combined lib build
Malloc was moved to the EAL and dummy malloc library was left
to not break apps that had a librte_malloc.so dependency.
Note that the dummy library will be removed in the next release.

When building a combined library, all objects are copied to the same
directory before creating the library itself.

There are a few issues:
 - CONFIG_RTE_LIBRTE_MALLOC is not a valid option anymore resulting
 in wrong syntax and a compilation failure. Fix it by replacing it
 with CONFIG_RTE_LIBRTE_EAL.
 - As we kept a dummy library, there are now two objects with the
 same name. This means that the proper rte_malloc.o object in eal gets
 overwritten by an empty rte_malloc.o object from the dummy malloc lib.
 Fix it by changing the name of rte_malloc.o object in the dummy
 library.
 - Update the copyright year.

Fixes: 2f9d47013e4dbb738 ("mem: move librte_malloc to eal/common")

Reported-by: Alin Rauta <alin.rauta@intel.com>
Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
2015-07-22 10:31:01 +02:00
Thomas Monjalon
ed04be877e version: 2.1.0-rc1
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-20 03:44:18 +02:00
Stephen Hemminger
fc2d488900 devargs: fix crash on failure
This problem was discovered when passing invalid PCI id to the
blacklist API in devargs.

Any failures in rte_devargs_add would cause a core dump because
it would call rte_log() before the the EAL log environment was
initialized.  Rather than try and log just remove the messages
and leave it up to the caller to check the return value.

Most of the other failure possibilities are when malloc() fails, and if
that happens any logging that used malloc() would also fail.

This failure was not caught by the standalone tests to devargs
because the tests are run after calling rte_eal_init (which is not
how devargs is intended to be used).

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
2015-07-20 03:01:10 +02:00
Stephen Hemminger
393775d5c0 ethdev: export function to check port validity
The function rte_eth_dev_is_valid_port is good way to have all
drivers using same function and solves several hotplug related
bugs from drivers not checking attached flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2015-07-20 02:47:38 +02:00
Stephen Hemminger
a20d5f06e2 eal/linux: change log severity levels
Change the log level of startup messages. Anything that is
just normal activity (like getting virtual areas) is changed
to debug level. Anything that is a failure should be NOTICE
or ERR severity.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
2015-07-20 02:47:38 +02:00
Stephen Hemminger
7ccfcb1593 eal/linux: handle signal on event read
The read for events in the interrupt thread may get interrupted
by signals from application. Avoid generating stray log message.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
2015-07-20 01:56:17 +02:00
Jingjing Wu
b90f64b51b ethdev: add ports to SCTP flow director
Add sport and dport into the input set of sctp flow.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
2015-07-20 01:13:08 +02:00
Bernard Iremonger
5cd40a8416 ethdev: free queue array when closing
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
Acked-by: Michael Qiu <michael.qiu@intel.com>
2015-07-19 21:16:09 +02:00
Thomas Monjalon
d281632b36 ethdev: fix doxygen internal comments
The internal functions must be marked with the doxygen command @internal.

The allocate and release_port functions are not restricted only to dummy
drivers.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-19 12:50:07 +02:00
Thomas Monjalon
ff3ae4d446 ethdev: refactor port release
Use DEV_DETACHED constant and deduplicate code in init.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-19 12:50:02 +02:00
Thomas Monjalon
d800f55ff0 pci: fix detach and uninit naming
There are close and detach functions in ethdev.
To keep a consistent naming, PCI functions called by ethdev detach
must be named "detach" instead of "close".
Fix also comments which mix close and uninit names.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-18 22:04:30 +02:00
Pablo de Lara
fd1fa9bddd hash: fix build for non-x86 arch
Hash library uses optimized compare functions that use
x86 intrinsics, therefore non-x86 systems could not build
the library. In that case, the compare function is set
to the generic memcmp.

Fixes: 48a399119619 ("hash: replace with cuckoo hash implementation")

Reported-by: Zhigang Lu <zlu@ezchip.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Zhigang Lu <zlu@ezchip.com>
2015-07-18 19:47:21 +02:00
Ouyang Changchun
1cbf787ef8 vhost: add log on socket bind failure
It adds more readable log info if a socket fails to bind to
local socket file name.

Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Acked-by: Huawei Xie <huawei.xie@intel.com>
2015-07-17 14:53:26 +02:00
Maryam Tahhan
49f386542a ethdev: remove driver specific stats
Remove non generic stats in rte_stats_strings and mark the relevant
fields in struct rte_eth_stats as deprecated.

Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
2015-07-17 02:26:32 +02:00
Maryam Tahhan
d4fef8b0d5 ethdev: expose generic and driver specific stats in xstats
Extend rte_eth_xstats_get to retrieve additional stats from the device
driver as well the ethdev generic stats.

Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
2015-07-17 02:26:14 +02:00
Stephen Hemminger
320d0b6ea0 sched: hide structure of port hierarchy
Right now the scheduler hierarchy is encoded as a bitfield
that is visible as part of the ABI. This creates an barrier
limiting future expansion of the hierarchy.

As a transistional step. hide the actual layout of the hierarchy
and mark the exposed structure as deprecated. This will allow for
expansion in later release.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
2015-07-17 00:35:49 +02:00
Stephen Hemminger
63111f7d4d sched: fix level of log messages
The setup messages should be at DEBUG level since they are not
important for normal operation of system. The messages about
problems should be at NOTICE or ERR level.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
2015-07-17 00:34:38 +02:00
Stephen Hemminger
24208c31d0 sched: remove tabs from log messages
syslog does not like tabs in log messages; tab gets translated to #011

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
2015-07-17 00:34:16 +02:00
Stephen Hemminger
041f312da5 sched: make RED optional at runtime
Want to be able to build with RTE_SCHED_RED enabled but
allow disabling RED on a per-queue basis at runtime.

RED is disabled unless min/max thresholds set.

Signed-off-by: Stephen Hemmminger <stephen@networkplumber.org>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
2015-07-17 00:33:44 +02:00
Liang-Min Larry Wang
7a3f27cbf5 ethdev: add access to specific device info
add new apis:
- rte_eth_dev_get_reg_length
- rte_eth_dev_get_reg_info
- rte_eth_dev_get_eeprom_length
- rte_eth_dev_get_eeprom
- rte_eth_dev_set_eeprom

to enable reading device parameters (register and
eeprom) based upon ethtool alike data parameter specification.

Signed-off-by: Liang-Min Larry Wang <liang-min.wang@intel.com>
Acked-by: Andrew Harvey <agh@cisco.com>
Acked-by: David Harton <dharton@cisco.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-07-16 23:56:13 +02:00
Liang-Min Larry Wang
854d8ad4ef ethdev: add default mac address modifier
Add new api:
- rte_eth_dev_default_mac_addr_set

The new api, rte_eth_dev_default_mac_addr_set, uses the
existing dev_op, mac_addr_set, to enable setting mac
addr from ethdev level.

Signed-off-by: Liang-Min Larry Wang <liang-min.wang@intel.com>
Acked-by: Andrew Harvey <agh@cisco.com>
Acked-by: David Harton <dharton@cisco.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2015-07-16 23:56:13 +02:00
Liang-Min Larry Wang
1ca4d3429c ethdev: fix error returned for invalid port id
Fix return value, using the macro input instead of -EINVAL.

Fixes: 75acd57ad025 ("ethdev: introduce valid port helper")

Signed-off-by: Liang-Min Larry Wang <liang-min.wang@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2015-07-16 23:56:12 +02:00
Pablo de Lara
056b56cb21 kni: fix build on SLES 12
SLES 12 has kernel 3.12, which original does not have skb_set_hash,
but SuSE has added that function to the kernel integrated on it.
Therefore, the function is not declared when compiling on this OS.

Reported-by: Sotiris Salloumis <sotiris.salloumis@ericsson.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2015-07-16 16:52:27 +02:00
Pablo de Lara
af083e9fcc hash: fix build without SSE4.1
_mm_test_all_zeros is not available for CPUs with no SSE4.1,
therefore, DPDK would not build.
This patch adds an alternative for this, using _mm_cmpeq_epi32 and
_mm_movemask_epi8.

Fixes: 48a399119619 ("hash: replace with cuckoo hash implementation")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2015-07-16 16:52:15 +02:00
Pablo de Lara
6f71544ce2 hash: fix build with gcc 4.4 and 4.5
gcc 4.4 and 4.5 throws following error:
rte_cuckoo_hash.c:145: error: flexible array member in otherwise empty struct.

This is due to empty length in flexible array, which has been changed to use
size 0 in the declaration of the array.

Fixes: 48a399119619 ("hash: replace with cuckoo hash implementation")

Reported-by: Olga Shern <olgas@mellanox.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2015-07-16 16:48:51 +02:00
Pablo de Lara
2a4103eba9 hash: fix out of bounds array access
When encountering a loop while adding a new entry,
element out of bounds of array was being unnecessarily resetted.

Fixes: 48a399119619 ("hash: replace with cuckoo hash implementation")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2015-07-16 16:47:56 +02:00
Bruce Richardson
29d607db3c mbuf: clarify comment on adding Tx offload flags
The comment for TX offload flags stated that those flags started at bit
55 and then were added to the right of that, leaving 8 bits reserved for
generic mbuf (i.e. non-offload) use. This comment may not have been
clear as 5 of the 8 flags which were reserved have now been used for TX
offloads.
This patch:
* updates the description so that it now reflects reality that
only three flags are available for generic mbuf use
* reserved the final generic flag so that it can't be taken over for TX
offload in future
* clarifies the comment for TX flags to indicate that they should be
counting downwards not upwards.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
2015-07-16 16:47:52 +02:00
Sergio Gonzalez Monroy
ff909fe21f mem: introduce memzone freeing
Implement rte_memzone_free which, as its name implies, would free a
memzone.

Currently memzone are tracked in an array and cannot be free.
To be able to reuse the same array to track memzones, we have to
change how we keep track of reserved memzones.

With this patch, any memzone with addr NULL is not used, so we also need
to change how we look for the next memzone entry free.

Add new unit test for rte_memzone_free API.

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
2015-07-16 14:01:04 +02:00
Sergio Gonzalez Monroy
fafcc11985 mem: rework memzone to be allocated by malloc
In the current memory hierarchy, memsegs are groups of physically
contiguous hugepages, memzones are slices of memsegs and malloc further
slices memzones into smaller memory chunks.

This patch modifies malloc so it partitions memsegs instead of memzones.
Thus memzones would call malloc internally for memory allocation while
maintaining its ABI.

During initialization malloc sets all available memory as part of the heaps.
CONFIG_RTE_MALLOC_MEMZONE_SIZE was used to specify the default memory
block size to expand the heap. The option is not used/relevant anymore,
so we remove it.

Remove free_memseg field from internal mem config structure as it is
not used anymore.
Also remove code in ivshmem that was setting up free_memseg on init.

It would be possible to free memzones and therefore any other structure
based on memzones, ie. mempools

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
2015-07-16 13:59:24 +02:00