dpdk.git
8 years agoethdev: convert to EAL hotplug
David Marchand [Tue, 20 Sep 2016 12:41:25 +0000 (18:11 +0530)]
ethdev: convert to EAL hotplug

Remove bus logic from ethdev hotplug by using eal for this.

Current api is preserved:
- the last port that has been created is tracked to return it to the
  application when attaching,
- the internal device name is reused when detaching.

We can not get rid of ethdev hotplug yet since we still need some
mechanism to inform applications of port creation/removal to substitute
for ethdev hotplug api.

dev_type field in struct rte_eth_dev and rte_eth_dev_allocate are kept as
is, but this information is not needed anymore and is removed in the
following commit.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
8 years agoeal: add hotplug operations for PCI and vdev
David Marchand [Tue, 20 Sep 2016 12:41:24 +0000 (18:11 +0530)]
eal: add hotplug operations for PCI and vdev

Hotplug invocations, which deals with devices, should come from the layer
that already handles them, i.e. EAL.

For both attach and detach operations, 'name' is used to select the bus
that will handle the request.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
8 years agoethdev: do not scan all PCI devices on attach
David Marchand [Tue, 20 Sep 2016 12:41:23 +0000 (18:11 +0530)]
ethdev: do not scan all PCI devices on attach

No need to scan all devices, we only need to update the device being
attached.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
8 years agopci: introduce helpers for device name parsing/update
David Marchand [Tue, 20 Sep 2016 12:41:22 +0000 (18:11 +0530)]
pci: introduce helpers for device name parsing/update

- Move rte_eth_dev_create_unique_device_name() from ether/rte_ethdev.c to
  common/include/rte_pci.h as rte_eal_pci_device_name(). Being a common
  method, can be used across crypto/net PCI PMDs.
- Remove crypto specific routine and fallback to common name function.
- Introduce a eal private Update function for PCI device naming.

Signed-off-by: David Marchand <david.marchand@6wind.com>
[Shreyansh: Merge crypto/pci helper patches]
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
8 years agodrivers: use PCI registration macro
David Marchand [Tue, 20 Sep 2016 12:41:20 +0000 (18:11 +0530)]
drivers: use PCI registration macro

Simplify crypto and ethdev pci drivers init by using newly introduced
init macros and helpers.
Those drivers then don't need to register as "rte_driver"s anymore.

Exceptions:
- virtio and mlx* use RTE_INIT directly as they have custom initialization
  steps.
- VDEV devices are not modified - they continue to use PMD_REGISTER_DRIVER.

Update documentation for replacing an example referring to
PMD_REGISTER_DRIVER.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
8 years agodrivers: export probe/remove helpers for PCI drivers
David Marchand [Tue, 20 Sep 2016 12:41:19 +0000 (18:11 +0530)]
drivers: export probe/remove helpers for PCI drivers

crypto and ethdev drivers aligned to PCI probe/remove. These wrappers are
mapped directly to PCI resources.
Existing handlers for init/uninit can be easily reused for this.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
8 years agoeal: introduce driver init macros
David Marchand [Tue, 20 Sep 2016 12:41:18 +0000 (18:11 +0530)]
eal: introduce driver init macros

Introduce a RTE_INIT macro used to mark an init function as a constructor.
Current eal macros have been converted to use this (no functional impact).
DRIVER_REGISTER_PCI is added as a helper for pci drivers.

Suggested-by: Jan Viktorin <viktorin@rehivetech.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
[Shreyansh: Update PCI Registration macro name]
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
8 years agodrivers: align PCI driver definitions
David Marchand [Tue, 20 Sep 2016 12:41:17 +0000 (18:11 +0530)]
drivers: align PCI driver definitions

Pure coding style, but it might make it easier later if we want to move
fields in rte_cryptodev_driver and eth_driver structures.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
8 years agocryptodev: remove PMD type
David Marchand [Tue, 20 Sep 2016 12:41:16 +0000 (18:11 +0530)]
cryptodev: remove PMD type

This information is not used and just adds noise.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Reviewed-by: Jan Viktorin <viktorin@rehivetech.com>
8 years agopci: replace devinit/devuninit with probe/remove
Shreyansh Jain [Tue, 20 Sep 2016 12:41:15 +0000 (18:11 +0530)]
pci: replace devinit/devuninit with probe/remove

Probe and Remove are more appropriate names for PCI init and uninint
operations. This is a cosmetic change.

Only MLX* uses the PCI direct registration, bypassing PMD_* macro.
The callbacks for this too have been updated.

VDEV are left out. For them, init/uninit are more appropriate.

Suggested-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agopci: initialize lists statically
David Marchand [Tue, 20 Sep 2016 12:41:14 +0000 (18:11 +0530)]
pci: initialize lists statically

These lists can be initialized once and for all at build time.
With this, those lists are only manipulated in a common place
(and we could even make them private).

A nice side effect is that pci drivers can now register in constructors.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Reviewed-by: Jan Viktorin <viktorin@rehivetech.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
8 years agoeal: remove duplicate function declaration
David Marchand [Tue, 20 Sep 2016 12:41:13 +0000 (18:11 +0530)]
eal: remove duplicate function declaration

rte_eal_dev_init is declared in both eal_private.h and rte_dev.h since its
introduction.
This function has been exported in ABI, so remove it from eal_private.h

Fixes: e57f20e05177 ("eal: make vdev init path generic for both virtual and pci devices")

Signed-off-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Reviewed-by: Jan Viktorin <viktorin@rehivetech.com>
8 years agoeal: move CPU flags check from constructor to init
Flavio Leitner [Fri, 23 Sep 2016 14:47:31 +0000 (11:47 -0300)]
eal: move CPU flags check from constructor to init

An application might be linked to DPDK but not really use it,
so move the cpu flag check to the EAL initialization instead.

Signed-off-by: Flavio Leitner <fbl@sysclose.org>
Acked-by: Aaron Conole <aconole@redhat.com>
8 years agomem: fix crash on hugepage mapping error
Maciej Czekaj [Wed, 28 Sep 2016 10:52:57 +0000 (12:52 +0200)]
mem: fix crash on hugepage mapping error

In ASLR-enabled system, it is possible that selected
virtual space is occupied by program segments. Therefore,
error path should not blindly unmap all memmory segments
but only those already mapped.

Steps that lead to crash:
1. memeseg 0 in secondary process overlaps with libc.so
2. mmap of /dev/zero fails for virtual space of memseg 0
3. munmap of memseg 0 leads to unmapping libc.so itself
4. app gets SIGSEGV after returning from syscall to libc

Fixes: ea329d7f8e34 ("mem: fix leak after mapping failure")

Signed-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
8 years agomem: remove single file segments
Yuanhan Liu [Fri, 23 Sep 2016 07:10:46 +0000 (15:10 +0800)]
mem: remove single file segments

RTE_EAL_SINGLE_FILE_SEGMENTS was introduced with ivshmem integration.
Now that ivshmem was removed (commit c711ccb30987)
and a simple git grep shows no one else references it;
I think we can now remove it.

Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
8 years agohash: check if slot is empty with key index
Pablo de Lara [Fri, 26 Aug 2016 21:30:09 +0000 (22:30 +0100)]
hash: check if slot is empty with key index

Instead of checking if the current and alternative signatures are 0,
it is faster to check if the key index associated to an entry
is 0, meaning that the slot is empty.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Saikrishna Edupuganti <saikrishna.edupuganti@intel.com>
8 years agohash: fix false zero signature key hit lookup
Pablo de Lara [Fri, 26 Aug 2016 21:30:08 +0000 (22:30 +0100)]
hash: fix false zero signature key hit lookup

This commit fixes a corner case scenario. When a key is deleted,
its signature in the hash table gets clear, which should prevent
a lookup of that same key, unless the signature of the key is all zeroes.

In that case, there will be a match, and key would be compared against
the key that is in the table (which does not get cleared,
as the performance penalty would be high), resulting in a wrong hit.

To prevent this from happening, the key index associated to that entry
should be set to zero when deleting it, so in case that same key
is looked up just after a deletion, it will point to the dummy key slot,
which guarantees a miss.

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

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Saikrishna Edupuganti <saikrishna.edupuganti@intel.com>
8 years agohash: fix ring size
Pablo de Lara [Fri, 26 Aug 2016 21:30:07 +0000 (22:30 +0100)]
hash: fix ring size

Ring stores the free slots available to be used in the key table.
The ring size was being increased by 1, because of the dummy slot,
used for key misses, but this is not actually stored in the ring,
so there is no need to increase it.

Fixes: 5915699153d7 ("hash: fix scaling by reducing contention")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Saikrishna Edupuganti <saikrishna.edupuganti@intel.com>
8 years agoeal: customize delay function
Jozef Martiniak [Mon, 26 Sep 2016 08:35:09 +0000 (10:35 +0200)]
eal: customize delay function

When running single-core, some drivers tend to call rte_delay_us for a
long time, and that is causing packet drops.
To avoid this, rte_delay_us can be replaced with user-defined delay
function with:

void rte_delay_us_callback_register(void(*userfunc)(unsigned));

When userfunc==rte_delay_us_block build-in blocking delay function is
restored.

Signed-off-by: Jozef Martiniak <jozmarti@cisco.com>
8 years agosched: fix releasing enqueued packets
Hiroyuki Mikita [Mon, 5 Sep 2016 15:15:14 +0000 (00:15 +0900)]
sched: fix releasing enqueued packets

rte_sched_port_free should release only enqueued packets of all queues.
Previous behavior is that enqueued and already dequeued packets of
only first 4 queues are released.

Fixes: 61383240 ("sched: release enqueued mbufs when freeing port")

Signed-off-by: Hiroyuki Mikita <h.mikita89@gmail.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
8 years agoapp/proc_info: check for primary process
Maryam Tahhan [Wed, 7 Sep 2016 10:37:50 +0000 (11:37 +0100)]
app/proc_info: check for primary process

Add a check to see if the primary process is running and exit gracefully
if it is not.

Suggested-by: Patrick Kutch <patrick.g.kutch@intel.com>
Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
8 years agoapp/testpmd: fix help of MTU set commmand
Ferruh Yigit [Wed, 31 Aug 2016 16:48:48 +0000 (17:48 +0100)]
app/testpmd: fix help of MTU set commmand

Fixes: ae03d0d18adf ("app/testpmd: command to configure MTU")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
8 years agoapp/testpmd: fix timeout in Rx queue flushing
James Poole [Thu, 8 Sep 2016 09:49:16 +0000 (10:49 +0100)]
app/testpmd: fix timeout in Rx queue flushing

When testpmd is run, the application would hang on the second time
that "start" is executed. This is because the timer limit would get
multiplied to an unreachably high number.

At the start of flush_fwd_rx_queues(), the timer limit now resets
to stop it from getting to this high number.

The timer has been made local for this function.

Fixes: f487715f36f5 ("app/testpmd: add timeout in Rx queue flushing")

Signed-off-by: James Poole <james.g.poole@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agoapp/testpmd: fix crash when mempool allocation fails
Olivier Matz [Fri, 9 Sep 2016 09:42:08 +0000 (11:42 +0200)]
app/testpmd: fix crash when mempool allocation fails

Avoid access to mempool pointer if it is NULL.

Coverity issue: 127553
Fixes: b19a0c75a0d4 ("app/testpmd: remove anonymous mempool code")

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
8 years agoapp/test-pipeline: fix table hash LRU initialization
Guruprasad Rao [Fri, 23 Sep 2016 13:54:50 +0000 (06:54 -0700)]
app/test-pipeline: fix table hash LRU initialization

macro ‘APP_METADATA_OFFSET’ was not used to initialize
‘signature_offset’ and ‘key_offset’ part of struct
rte_table_hash_lru_params.
Instead integer offset values were directly used.

with this fix 'hash-8-lru', 'hash-16-lru', 'hash-32-lru' table types are
able to forward traffic as expected.

Fixes: 48f31ca50cc4 ("app/pipeline: packet framework benchmark")

Signed-off-by: Sankar Chokkalingam <sankarx.chokkalingam@intel.com>
Signed-off-by: Guruprasad Rao <guruprasadx.rao@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
8 years agoapp/test: fix packet framework table unit tests
Jasvinder Singh [Mon, 12 Sep 2016 11:05:52 +0000 (12:05 +0100)]
app/test: fix packet framework table unit tests

The pipeline object is not freed when a particular test-case of the
unit-test finishes. Using rte_pipeline_free() before returning the
outcome for each test-case fixes the issue.

Fixes: 5205954791cb ("app/test: packet framework unit tests")

Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
8 years agoapp/test: decrease memory requirements for sched
Olivier Matz [Mon, 12 Sep 2016 11:38:49 +0000 (13:38 +0200)]
app/test: decrease memory requirements for sched

The sched test consumes 35MB memory. When memory is too fragmented (with
2M hugepages), the test can fail.

To reduce this risk, decrease it to 4.5MB by modifying
n_pipes_per_subport and qsize.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
8 years agoapp/test: decrease memory requirements for hash
Olivier Matz [Mon, 12 Sep 2016 11:38:08 +0000 (13:38 +0200)]
app/test: decrease memory requirements for hash

In hash autotest, the size of tables that should be successfully created
is 32K entries (256KB), except for the table called "different_name",
which is 1M entries (8MB). When memory is too fragmented (with 2M
hugepages), the test can fail.

To avoid allocation failures due to memory fragmentation, decrease the
size of the table to 32K.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
8 years agomk: allow to override devel mode from environment
Luca Boccassi [Wed, 14 Sep 2016 10:50:42 +0000 (11:50 +0100)]
mk: allow to override devel mode from environment

RTE_DEVEL_BUILD is set to := y in mk/rte.vars.mk, which makes it
impossible to override via an environment variable, and forces users
to pass it inline in the make call.
Use ?= instead to have it pick up the environment variable as well.

Signed-off-by: Luca Boccassi <lboccass@brocade.com>
Acked-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
8 years agomk: add missing preprocessor options
Luca Boccassi [Tue, 30 Aug 2016 17:25:04 +0000 (18:25 +0100)]
mk: add missing preprocessor options

Some targets in mk/internal/rte.compile-pre.mk are calling CC or
HOSTCC without passing CPPFLAGS, EXTRA_CPPFLAGS or HOST_CPPFLAGS,
HOST_EXTRA_CPPFLAGS.
On Debian/Ubuntu builds this means that preprocessor flags set by the
dpkg-buildpackage environment, like hardening flags, are not
correctly passed to all objects builds.

Signed-off-by: Luca Boccassi <lboccass@brocade.com>
Acked-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
8 years agomk: fix verbosity zero
Thomas Monjalon [Thu, 22 Sep 2016 23:35:39 +0000 (01:35 +0200)]
mk: fix verbosity zero

Verbosity is considered enabled when $V is not empty.
It is a well spread shortcut in makefiles, see git grep '$(if $(*V'
So V=0 and V=1 are equivalent.
It is fixed by unsetting V when it is 0.

A side effect is to fix kernel module compilation verbosity
which is set to 0 when V is empty.

Reported-by: Ferruh Yigit <ferruh.yigit@intel.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agomk: fix install on FreeBSD
Ferruh Yigit [Mon, 29 Aug 2016 09:11:32 +0000 (10:11 +0100)]
mk: fix install on FreeBSD

FreeBSD make install fails because of unsupported tar option:
tar: Option --warning=no-ignore-newer is not supported

Issue fixed by removing unsupported tar option.

Fixes: 6b62a72a70d0 ("mk: install a standard cutomizable tree")
Fixes: e4552b9cc603 ("mk: install doc")

Reported-by: Daniel Verkamp <daniel.verkamp@intel.com>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: fix large stack frame size
Ferruh Yigit [Thu, 22 Sep 2016 14:48:54 +0000 (15:48 +0100)]
kni: fix large stack frame size

Compile error:
.../lib/librte_eal/linuxapp/kni/kni_net.c:
In function ‘kni_net_rx_lo_fifo’:
.../lib/librte_eal/linuxapp/kni/kni_net.c:331:1:
error: the frame size of 1056 bytes is larger than 1024 bytes
[-Werror=frame-larger-than=]

This compile error seen with some compiler / kernel combinations.

Moved some local variables to the kni_dev struct.

Fixes: 8451269e6d7b ("kni: remove continuous memory restriction")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agohash: fix custom compare
Masoud Hasanifard [Sat, 17 Sep 2016 09:43:24 +0000 (14:13 +0430)]
hash: fix custom compare

Set cmp_jump_table_idx to KEY_CUSTOM in rte_hash_cmp_eq so that the custom
function we are setting in rte_hash_set_cmp_func properly works. The custom
function is only called by rte_hash_cmp_eq if cmp_jump_table_idx is set to
KEY_CUSTOM.

Fixes: 95da2f8e9c61 ("hash: customize compare function")

Signed-off-by: Masoud Hasanifard <masoudhasanifard@gmail.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
8 years agometer: fix excess token bucket update in srtcm
Nikhil Jagtap [Wed, 21 Sep 2016 05:57:42 +0000 (00:57 -0500)]
meter: fix excess token bucket update in srtcm

As per srTCM RFC 2697, we should be updating the E bucket only after the
C bucket overflows. This patch fixes the current DPDK implementation,
where we are updating both the buckets simultaneously at the same rate
(CIR) which results in token accumulation rate of (2*CIR).

Signed-off-by: Nikhil Jagtap <nikhil.jagtap@gmail.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
8 years agokni: remove continuous memory restriction
Ferruh Yigit [Thu, 25 Aug 2016 11:30:34 +0000 (12:30 +0100)]
kni: remove continuous memory restriction

Use mempool buf_addr and buf_physaddr fields for address translation.

Since each mbuf address calculated separately, the restriction of all
mbufs should come from a continuous memory restriction is no more valid.

mbuf related FIFO's content changed, rx_q and alloc_q now carries
physical address of mbufs. tx_q and free_q content not changed, they
still carries virtual address of mbufs.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: fix error rollback kernel crash
Yangchao Zhou [Sun, 11 Sep 2016 09:59:23 +0000 (17:59 +0800)]
kni: fix error rollback kernel crash

Fixes: 9c61145ff6f9 ("kni: allow multiple threads")

Signed-off-by: Yangchao Zhou <zhouyates@gmail.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: remove panic exits from library
Ferruh Yigit [Fri, 2 Sep 2016 09:51:49 +0000 (10:51 +0100)]
kni: remove panic exits from library

This also helps to remove stack backtrace when kernel module is not
inserted.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: fix build with kernel 4.8
Ferruh Yigit [Thu, 8 Sep 2016 18:32:09 +0000 (19:32 +0100)]
kni: fix build with kernel 4.8

Linux kernel v4.8 removes macro DEFINE_PCI_DEVICE_TABLE

Linux: 7e9321599011 ("treewide: remove references to the now unnecessary
DEFINE_PCI_DEVICE_TABLE")

Replaced macro with its value in kni ethtool drivers.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
8 years agokni: fix build with kernel < 3.0
Ferruh Yigit [Fri, 16 Sep 2016 16:09:58 +0000 (17:09 +0100)]
kni: fix build with kernel < 3.0

Compile error:
  CC [M]  .../build/lib/librte_eal/linuxapp/kni/igb_main.o
.../build/lib/librte_eal/linuxapp/kni/igb_main.c:
In function ‘igb_check_swap_media’:
.../build/lib/librte_eal/linuxapp/kni/igb_main.c:1556:7:
error: variable ‘link’ set but not used [-Werror=unused-but-set-variable]
  bool link;
       ^

With Linux kernel >= v3.0 this warning disabled:
Linux: 8417da6f2128 ("kbuild: Fix passing -Wno-* options to gcc 4.4+")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: support RHEL 7.3
Pablo de Lara [Fri, 16 Sep 2016 21:01:09 +0000 (22:01 +0100)]
kni: support RHEL 7.3

Add support for RHEL 7.3, which uses kernel 3.10,
but backported features from newer kernels.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: fix debug build
Ferruh Yigit [Thu, 15 Sep 2016 12:06:44 +0000 (13:06 +0100)]
kni: fix debug build

Fix build error with Linux kernel >= v4.7

Fix compile error because of Linux API change, 'trans_start' field
removed from 'struct net_device'.

Linux: 9b36627acecd ("net: remove dev->trans_start")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agomempool: fix corruption due to invalid handler
Weiliang Luo [Thu, 8 Sep 2016 15:29:57 +0000 (10:29 -0500)]
mempool: fix corruption due to invalid handler

When using rte_mempool_create(), the mempool handler is selected
depending on the flags given by the user:
  - multi-consumer / multi-producer
  - multi-consumer / single-producer
  - single-consumer / multi-producer
  - single-consumer / single-producer

The flags were not properly tested, resulting in the selection of sc/sp
handler if sc/mp or mc/sp was asked. This can lead to corruption or
crashes because the get/put operations are not atomic.

Fixes: 449c49b93a6b ("mempool: support handler operations")

Signed-off-by: Weiliang Luo <droidluo@gmail.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
8 years agomem: use more restrictive permissions on hugepages
Robin Jarry [Wed, 10 Aug 2016 14:52:54 +0000 (16:52 +0200)]
mem: use more restrictive permissions on hugepages

There is no need for the page files to be readable (and executable) by
other users. This can be exploited by non-privileged users to access the
working memory of a DPDK app.

Open the files with 0600.

Signed-off-by: Robin Jarry <robin.jarry@6wind.com>
8 years agodrivers: make driver names consistent
Pablo de Lara [Wed, 24 Aug 2016 22:24:54 +0000 (23:24 +0100)]
drivers: make driver names consistent

As discussed in the past release, driver names are modified
to be more consistent, and the future driver should follow
this new convention.

Driver names consist of:
"driver category"_"driver folder name"_"optional extra name".

For example:
- Crypto null driver       -> "crypto_null"
- Network IXGBE VF driver  -> "net_ixgbe_vf"

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
8 years agoremove unused ring includes
Amine Kherbouche [Wed, 31 Aug 2016 08:34:26 +0000 (10:34 +0200)]
remove unused ring includes

This patch removes all unused <rte_ring.h> headers.

Signed-off-by: Amine Kherbouche <amine.kherbouche@6wind.com>
8 years agomaintainers: claim responsability for crypto subtree
Pablo de Lara [Thu, 15 Sep 2016 23:25:32 +0000 (00:25 +0100)]
maintainers: claim responsability for crypto subtree

From 16.07, I will be the maintainer of the crypto subtree.

This will include:
- app/test/test_cryptodev*
- doc/guides/cryptodevs/
- drivers/crypto/
- examples/l2fwd-crypto/
- examples/ipsec-secgw/
- lib/librte_cryptodev/

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
8 years agoscripts: disable optimization for ABI validation
Ferruh Yigit [Fri, 26 Aug 2016 15:06:40 +0000 (16:06 +0100)]
scripts: disable optimization for ABI validation

abi-dumper giving following warning:
WARNING: incompatible build option detected: -O3

Although this patch won't fix warning, it is to ensure code compiled
with optimization disabled.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agoscripts: reverse order of checked commits
Thomas Monjalon [Fri, 9 Sep 2016 11:01:51 +0000 (13:01 +0200)]
scripts: reverse order of checked commits

The list of git commits to check was in the reversed order.
Also add a comment in the help of checkpatches.sh about list input.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Tested-by: David Marchand <david.marchand@6wind.com>
8 years agoscripts: remove useless checkpatch notes
Thomas Monjalon [Mon, 29 Aug 2016 08:55:38 +0000 (10:55 +0200)]
scripts: remove useless checkpatch notes

Depending of the checkpatch version in use, more or less notes are
printed below the report.
Only 6 lines were stripped, resulting to such note being printed:
NOTE: If any of the errors are false positives, please report
      them to the maintainer, see CHECKPATCH in MAINTAINERS.

The stripping is now more reliable because based on a very stable pattern.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
8 years agoscripts: hide double git reference check error
Thomas Monjalon [Mon, 29 Aug 2016 08:15:47 +0000 (10:15 +0200)]
scripts: hide double git reference check error

When checking a git reference which does not exist, a git error
with the long git-branch usage is printed:

% scripts/check-git-log.sh '-1 3780cbd'
error: malformed object name 2de9f8551ff9
usage: git branch ...
  [a lot of lines]
Wrong 'Fixes' reference:
  Fixes: 2de9f8551ff9 ("ethdev: fix documentation for queue start/stop")

The error from the script is sufficient so the git error can be hidden.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
8 years agoscripts: check compilation of exported header files
Adrien Mazarguil [Thu, 8 Sep 2016 12:25:11 +0000 (14:25 +0200)]
scripts: check compilation of exported header files

This script checks that header files in a given directory do not miss
dependencies when included on their own, do not conflict and accept being
compiled with the strictest possible flags.

It is too slow at the moment to be automatically executed by test-build.sh
and should be run voluntarily (like check-git-log.sh and friends) after
making changes to exported header files.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
8 years agolib: hide static functions never defined
Adrien Mazarguil [Thu, 8 Sep 2016 12:25:10 +0000 (14:25 +0200)]
lib: hide static functions never defined

Arch-specific functions not defined for all architectures (missing on x86
in this case) and not used anywhere should not expose a prototype.

This commit prevents the following error:

 error: `rte_mov48' declared `static' but never defined

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
8 years agolib: remove named variadic macros in exported headers
Adrien Mazarguil [Thu, 8 Sep 2016 12:25:09 +0000 (14:25 +0200)]
lib: remove named variadic macros in exported headers

Exported header files used by applications should allow the strictest
compiler flags. Language extensions used in many places must be explicitly
marked or removed to avoid warnings and compilation failures.

Since there is no way to force named variadic macros as extensions, use a
a standard __VA_ARGS__ with an extra dummy argument to format strings.

This commit prevents the following errors:

 error: ISO C does not permit named variadic macros

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
8 years agolib: work around forward reference to enum types
Adrien Mazarguil [Thu, 8 Sep 2016 12:25:08 +0000 (14:25 +0200)]
lib: work around forward reference to enum types

Exported header files used by applications should allow the strictest
compiler flags. Language extensions used in many places must be explicitly
marked or removed to avoid warnings and compilation failures.

This commit prevents the following errors:

 error: ISO C forbids forward references to `enum' types

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
8 years agolib: add missing include dependencies
Adrien Mazarguil [Thu, 8 Sep 2016 12:25:07 +0000 (14:25 +0200)]
lib: add missing include dependencies

Exported header files for use by applications should be self sufficient and
allow out of order inclusion. Moreover, they must include all the system
headers they need for types and macros.

This commit prevents the following errors:

 error: `RTE_MAX_LCORE' undeclared here (not in a function)
 error: `RTE_LPM_VALID_EXT_ENTRY_BITMASK' undeclared
  (first use in this function)
 error: #error "Unsupported cache line size"
 error: `asm' undeclared (first use in this function)
 error: implicit declaration of function `[...]'
 error: unknown type name `[...]'
 error: field `mac_addr' has incomplete type
 error: `CHAR_BIT' undeclared here (not in a function)
 error: `struct [...]' declared inside parameter list
 error: unknown type name `uint8_t'

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
8 years agolib: work around unnamed structs/unions
Adrien Mazarguil [Thu, 8 Sep 2016 12:25:06 +0000 (14:25 +0200)]
lib: work around unnamed structs/unions

Exported header files used by applications should allow the strictest
compiler flags. Language extensions used in many places must be explicitly
marked to avoid warnings and compilation failures.

Unnamed structs/unions are allowed since C11, however many compiler
versions do not use this mode by default.

This commit prevents the following errors:

 error: ISO C99 doesn't support unnamed structs/unions
 error: struct has no named members

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
8 years agolib: work around nonstandard bit-fields
Adrien Mazarguil [Thu, 8 Sep 2016 12:25:05 +0000 (14:25 +0200)]
lib: work around nonstandard bit-fields

Exported header files used by applications should allow the strictest
compiler flags. Language extensions used in many places must be explicitly
marked or removed to avoid warnings and compilation failures.

This commit prevents the following errors:

 error: type of bit-field `[...]' is a GCC extension

Note: the standard does not require implementations to issue a diagnostic
message with these, and such errors do not occur with recent GCC or clang
versions. However, GCC 4.7 is still common and using the extension keyword
is easier than checking compiler version.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
8 years agolib: use C99 syntax for zero-size arrays
Adrien Mazarguil [Thu, 8 Sep 2016 12:25:04 +0000 (14:25 +0200)]
lib: use C99 syntax for zero-size arrays

Exported header files used by applications should allow the strictest
compiler flags. Language extensions used in many places must be explicitly
marked or removed to avoid warnings and compilation failures.

The extension keyword is used whenever the C99 syntax cannot do it.

This commit prevents the following errors:

 error: ISO C forbids zero-size array `[...]'

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
8 years agolib: work around large enum values
Adrien Mazarguil [Thu, 8 Sep 2016 12:25:03 +0000 (14:25 +0200)]
lib: work around large enum values

Exported header files used by applications should allow the strictest
compiler flags. Language extensions used in many places must be explicitly
marked or removed to avoid warnings and compilation failures.

This commit prevents the following errors:

 error: ISO C restricts enumerator values to range of `int'

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
8 years agolib: work around braced-groups within expressions
Adrien Mazarguil [Thu, 8 Sep 2016 12:25:02 +0000 (14:25 +0200)]
lib: work around braced-groups within expressions

Exported header files used by applications should allow the strictest
compiler flags. Language extensions used in many places must be explicitly
marked or removed to avoid warnings and compilation failures.

This commit prevents the following errors:

 error: ISO C forbids braced-groups within expressions

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
8 years agoexamples/ip_pipeline: fix lcore mapping for ppc64
Gowrishankar Muthukrishnan [Thu, 8 Sep 2016 16:48:10 +0000 (22:18 +0530)]
examples/ip_pipeline: fix lcore mapping for ppc64

This patch fixes ip_pipeline panic in app_init_core_map while preparing cpu
core map in powerpc with SMT off. cpu_core_map_compute_linux currently prepares
core mapping based on file existence in sysfs ie.

/sys/devices/system/cpu/cpu<LCORE_NUM>/topology/physical_package_id
  /sys/devices/system/cpu/cpu<LCORE_NUM>/topology/core_id

These files do not exist for lcores which are offline for any reason (as in
powerpc, while SMT is off). In this situation, this function should further
continue preparing map for other online lcores instead of returning with -1
for a first unavailable lcore.

Also, in SMT=off scenario for powerpc, lcore ids can not be always indexed from
0 upto 'number of cores present' (/sys/devices/system/cpu/present). For eg, for
an online lcore 32, core_id returned in sysfs is 112 where online lcores are
10 (as in one configuration), hence sysfs lcore id can not be checked with
indexing lcore number before positioning lcore map array.

Signed-off-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
Acked-by: Chao Zhu <chaozhu@linux.vnet.ibm.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
8 years agoconfig: enable packet framework on ppc64le
Gowrishankar Muthukrishnan [Thu, 8 Sep 2016 16:48:06 +0000 (22:18 +0530)]
config: enable packet framework on ppc64le

This patch enables librte_port, librte_table, and librte_pipeline
in ppc64le.

Signed-off-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
Acked-by: Chao Zhu <chaozhu@linux.vnet.ibm.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
8 years agotable: fix verification on hash bucket header alignment
Gowrishankar Muthukrishnan [Thu, 8 Sep 2016 16:48:11 +0000 (22:18 +0530)]
table: fix verification on hash bucket header alignment

In powerpc systems, rte table hash structs rte_bucket_4_8, rte_bucket_4_16 and
rte_bucket_4_32 are not cache aligned and hence verification on same would fail.
Instead of checking alignment on cpu cacheline, it could equally be tested as
multiple of 64 bytes.

Signed-off-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
8 years agosched: enable on ppc64le
Gowrishankar Muthukrishnan [Thu, 8 Sep 2016 16:48:07 +0000 (22:18 +0530)]
sched: enable on ppc64le

This patch enables librte_sched in ppc64le.

Signed-off-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
Acked-by: Chao Zhu <chaozhu@linux.vnet.ibm.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
8 years agoexamples/l3fwd: add AltiVec for ppc64
Gowrishankar Muthukrishnan [Thu, 8 Sep 2016 16:48:05 +0000 (22:18 +0530)]
examples/l3fwd: add AltiVec for ppc64

This patch adds ppc64le port for em_mask_key function.

Signed-off-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
Acked-by: Chao Zhu <chaozhu@linux.vnet.ibm.com>
8 years agoacl: add AltiVec for ppc64
Gowrishankar Muthukrishnan [Thu, 8 Sep 2016 16:48:04 +0000 (22:18 +0530)]
acl: add AltiVec for ppc64

This patch adds port for ACL library in ppc64le.

Signed-off-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
Acked-by: Chao Zhu <chaozhu@linux.vnet.ibm.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
8 years agolpm: add AltiVec for ppc64
Gowrishankar Muthukrishnan [Thu, 8 Sep 2016 16:48:03 +0000 (22:18 +0530)]
lpm: add AltiVec for ppc64

This patch adds ppc64le port for LPM library in DPDK.

Signed-off-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
Acked-by: Chao Zhu <chaozhu@linux.vnet.ibm.com>
8 years agokni: fix module init/exit
Vincent Guo [Fri, 2 Sep 2016 10:23:13 +0000 (18:23 +0800)]
kni: fix module init/exit

Fix pernet calls when HAVE_SIMPLIFIED_PERNET_OPERATIONS is not set.

Fixes: e6734d21b4e1 ("kni: fix build with kernel 2.6.32")

Signed-off-by: Vincent Guo <guopengfei160@163.com>
Acked-by Ferruh Yigit <ferruh.yigit@intel.com>

8 years agokni: support RHEL 6.8
Ferruh Yigit [Wed, 31 Aug 2016 14:49:11 +0000 (15:49 +0100)]
kni: support RHEL 6.8

Add support for RHEL6.8 which uses an old version of kernel with some
new features backported.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: fix crash when removing interface
Ferruh Yigit [Wed, 31 Aug 2016 13:06:26 +0000 (14:06 +0100)]
kni: fix crash when removing interface

Removing KNI interface that has no PCI driver for ethtool support cause
kernel crash.

Fixes: 109febfe58f9 ("net/igb: move PCI device IDs from EAL")
Fixes: 221fba3b987c ("net/ixgbe: move PCI device IDs from EAL")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: remove memzone lookup to get mbuf address
Ferruh Yigit [Thu, 4 Aug 2016 15:54:05 +0000 (16:54 +0100)]
kni: remove memzone lookup to get mbuf address

Originally mempool->mz is used to get address of the mbuf, but now
address get directly from mempool, so mempool->mz information is not
required.

Fixes: d1d914ebbc25 ("mempool: allocate in several memory chunks by default")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agokni: remove triple license information
Christian Ehrhardt [Mon, 1 Aug 2016 12:17:43 +0000 (14:17 +0200)]
kni: remove triple license information

License information is already in LICENSE.GPL.
Remove two extra copies and change referred filename in the files.

Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agoscripts: convert devel config helper as simple file
Christian Ehrhardt [Wed, 3 Aug 2016 14:59:00 +0000 (16:59 +0200)]
scripts: convert devel config helper as simple file

Quoting the first line of the script: "#! /bin/echo must be loaded with ."
Given that we should drop the .sh file ending as well as the executable
flag - both are not needed to source the file.

Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
8 years agoexamples/ip_pipeline: fix Python interpreter
Christian Ehrhardt [Tue, 2 Aug 2016 06:40:00 +0000 (08:40 +0200)]
examples/ip_pipeline: fix Python interpreter

Due to regular lintian checks in Debian packaging it surfaced that these
two scripts had a space in their #! statement.
It is changed to an interpreter compatible with Python 2 and 3.

Fixes: 8673a3e8 ("examples/ip_pipeline: add config diagram generator")
Fixes: fa667b46 ("examples/ip_pipeline: add core mappings script")

Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
8 years agoeal: fix a comment
Shreyansh Jain [Wed, 17 Aug 2016 13:06:43 +0000 (18:36 +0530)]
eal: fix a comment

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
8 years agodoc: fix versioning example
Mauricio Vasquez B [Sun, 14 Aug 2016 16:21:40 +0000 (18:21 +0200)]
doc: fix versioning example

The example only had as return type struct, it is actually
struct rte_acl_ctx *

Signed-off-by: Mauricio Vasquez B <mauricio.vasquez@polito.it>
8 years agodoc: fix patchwork link
Deirdre O'Connor [Mon, 22 Aug 2016 16:20:08 +0000 (17:20 +0100)]
doc: fix patchwork link

Fixes: 58abf6e77c6b ("doc: add contributors guide")

Reported-by: Jon Loeliger <jdl@netgate.com>
Signed-off-by: Deirdre O'Connor <deirdre.o.connor@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
8 years agoeal: remove empty file for device IDs
Ferruh Yigit [Fri, 5 Aug 2016 14:09:31 +0000 (15:09 +0100)]
eal: remove empty file for device IDs

All PCI device ids moved to drivers, it is safe to delete
rte_pci_dev_ids.h

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agonet/igb: move PCI device IDs from EAL
Ferruh Yigit [Fri, 5 Aug 2016 14:09:30 +0000 (15:09 +0100)]
net/igb: move PCI device IDs from EAL

PCI device ids moved from common header into igb driver itself.

KNI starts using pci_device_id from kni/ethtool/igb driver, this is only
for KNI ethtool support, KNI data path is not affected.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agonet/ixgbe: move PCI device IDs from EAL
Ferruh Yigit [Fri, 5 Aug 2016 14:09:29 +0000 (15:09 +0100)]
net/ixgbe: move PCI device IDs from EAL

PCI device ids moved from common header into ixgbe driver itself.

KNI starts using pci_device_id from kni/ethtool/ixgbe driver, this is
only for KNI ethtool support, KNI data path is not affected.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agodoc: remove useless file listings
Thomas Monjalon [Tue, 23 Aug 2016 12:35:17 +0000 (14:35 +0200)]
doc: remove useless file listings

Lists of DPDK files are hard to maintain up to date and does not bring
much information.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
8 years agoivshmem: remove library and its EAL integration
David Marchand [Fri, 29 Jul 2016 12:28:36 +0000 (14:28 +0200)]
ivshmem: remove library and its EAL integration

Following discussions on the mailing list [1] and since nobody stood up to
implement the necessary cleanups, here is the ivshmem integration removal.

There is not much to say about this patch, a lot of code is being removed.
The default configuration file for packet_ordering example is replaced with
the "native" x86 file.
The only tricky part is in eal_memory with the memseg index stuff.

More cleanups can be done after this but will come in subsequent patchsets.

[1]: http://dpdk.org/ml/archives/dev/2016-June/040844.html

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
8 years agodoc: fix references to old binding script
Pablo de Lara [Fri, 29 Jul 2016 18:20:49 +0000 (19:20 +0100)]
doc: fix references to old binding script

dpdk-nic-bind.py script has been renamed to dpdk-devbind.py,
but some references to the old script have remained.
This commit completes the renaming.

Fixes: a5d7a3f77ddc ("unify tools naming")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
8 years agocontigmem: zero all pages during mmap
Jim Harris [Tue, 16 Aug 2016 22:46:46 +0000 (15:46 -0700)]
contigmem: zero all pages during mmap

On Linux, all huge pages are zeroed by the kernel before
first access by the DPDK application.  But on FreeBSD,
the contigmem driver would only zero the contiguous
memory regions during initial driver load.

DPDK commit b78c91751 eliminated the explicit memset()
operation for rte_zmalloc(), which was OK on Linux
because the kernel zeroes the pages during app start,
but this broke FreeBSD when restarting app.
So this patch explicitly zeroes the pages before they are mmap'd,
to ensure equivalent behavior to Linux.

Fixes: b78c9175118f ("mem: do not zero out memory on zmalloc")

Reported-by: Daniel Verkamp <daniel.verkamp@intel.com>
Signed-off-by: Jim Harris <james.r.harris@intel.com>
Tested-by: Daniel Verkamp <daniel.verkamp@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
8 years agotable: fix symbol exports
Aleksey Katargin [Mon, 1 Aug 2016 09:00:43 +0000 (14:00 +0500)]
table: fix symbol exports

Fixes: 8aa327214ceb ("table: hash")
Fixes: 68866e2417cc ("table: add 16-byte hash operations computed on lookup")

Signed-off-by: Aleksey Katargin <gureedo@gmail.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
8 years agoversion: 16.11-rc0
Thomas Monjalon [Mon, 1 Aug 2016 19:39:42 +0000 (21:39 +0200)]
version: 16.11-rc0

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
8 years agombuf: remove deprecated internal function
Thomas Monjalon [Mon, 1 Aug 2016 12:54:06 +0000 (14:54 +0200)]
mbuf: remove deprecated internal function

The function __rte_mbuf_raw_alloc was reserved for internal use and
has been deprecated in favor of the public function rte_mbuf_raw_alloc.
It can be safely removed now.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
8 years agolog: remove deprecated history dump
Thomas Monjalon [Fri, 29 Jul 2016 12:55:28 +0000 (14:55 +0200)]
log: remove deprecated history dump

The log history feature was deprecated in 16.07.
The remaining empty functions are removed in 16.11.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agodoc: postpone mempool ABI breakage
Thomas Monjalon [Fri, 29 Jul 2016 13:34:29 +0000 (15:34 +0200)]
doc: postpone mempool ABI breakage

It was planned to remove some mempool functions which are deprecated
since 16.07.
As no other mempool ABI change is planned in 16.11, it is better
to postpone and group every mempool ABI changes in 17.02.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
8 years agodoc: generate NIC overview table from ini files
John McNamara [Fri, 29 Jul 2016 11:59:14 +0000 (12:59 +0100)]
doc: generate NIC overview table from ini files

Convert the NIC feature table in the overview doc into a set of ini
files and add functions into the Sphinx conf.py file to auto-generate
them back into an RST table.

The reason for doing this is to make it easier for PMD maintainers to
update the feature matrix that makes up the table and to avoid
frequent and hard to resolve conflicts in doc/guides/nics/overview.rst.

A NIC/PMD feature matrix is now an ini file like the following:

    $ head doc/guides/nics/nic_features/i40e.ini
    ;
    ; Features of the i40e network driver.
    ;
    [Features]
    Link status          = Y
    Link status event    = Y
    Rx interrupt         = Y
    Queue start/stop     = Y
    ...

The output RST table matches the existing table with the column
headers sorted.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agodoc: add template release notes for 16.11
John McNamara [Fri, 29 Jul 2016 11:23:27 +0000 (12:23 +0100)]
doc: add template release notes for 16.11

Add template release notes for DPDK 16.11 with inline
comments and explanations of the various sections.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
8 years agoversion: 16.07.0
Thomas Monjalon [Thu, 28 Jul 2016 18:48:41 +0000 (20:48 +0200)]
version: 16.07.0

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
8 years agodoc: announce API change in port library
Fan Zhang [Thu, 19 May 2016 14:18:35 +0000 (15:18 +0100)]
doc: announce API change in port library

The API changes are planned for rte_port_source_params and
rte_port_sink_params, which will be supported from release 16.11.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
8 years agodoc: announce vhost-cuse removal
Yuanhan Liu [Fri, 15 Jul 2016 12:28:33 +0000 (20:28 +0800)]
doc: announce vhost-cuse removal

Vhost-cuse was invented before vhost-user exist. The both are actually
doing the same thing: a vhost-net implementation in user space. But they
are not exactly the same thing.

Firstly, vhost-cuse is harder for use; no one seems to care it, either.
Furthermore, since v2.1, a large majority of development effort has gone
to vhost-user. For example, we extended the vhost-user spec to add the
multiple queue support. We also added the vhost-user live migration at
v16.04 and the latest one, vhost-user reconnect that allows vhost app
restart without restarting the guest. Both of them are very important
features for product usage and none of them works for vhost-cuse.

You now see that the difference between vhost-user and vhost-cuse is
big (and will be bigger and bigger as time moves forward), that you
should never use vhost-cuse, that we should drop it completely.

The remove would also result to a much cleaner code base, allowing us
to do all kinds of extending easier.

So here to mark vhost-cuse as deprecated in this release and will be
removed in the next release (v16.11).

Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Acked-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Rich Lane <rich.lane@bigswitch.com>
Acked-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
8 years agodoc: announce ivshmem support removal
Thomas Monjalon [Wed, 20 Jul 2016 16:35:46 +0000 (18:35 +0200)]
doc: announce ivshmem support removal

There was a prior call with an explanation of what needs to be done:
http://dpdk.org/ml/archives/dev/2016-June/040844.html
- Qemu patch upstreamed
- IVSHMEM PCI device managed by a PCI driver
- No DPDK objects (ring/mempool) allocated by EAL

As nobody seems interested, it is time to remove this code which
makes EAL improvements harder.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: David Marchand <david.marchand@6wind.com>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
8 years agodoc: announce ABI change for mbuf structure
Olivier Matz [Wed, 20 Jul 2016 07:16:14 +0000 (09:16 +0200)]
doc: announce ABI change for mbuf structure

For 16.11, the mbuf structure will be modified implying ABI breakage.
Some discussions already took place here:
http://www.dpdk.org/dev/patchwork/patch/12878/

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: John Daley <johndale@cisco.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agodoc: announce ABI change for Tx preparation
Tomasz Kulasek [Thu, 21 Jul 2016 15:24:19 +0000 (17:24 +0200)]
doc: announce ABI change for Tx preparation

This is an ABI deprecation notice for DPDK 16.11 in librte_ether about
changes in rte_eth_dev and rte_eth_desc_lim structures.

As discussed in that thread:

http://dpdk.org/ml/archives/dev/2015-September/023603.html

Different NIC models depending on HW offload requested might impose
different requirements on packets to be TX-ed in terms of:

 - Max number of fragments per packet allowed
 - Max number of fragments per TSO segments
 - The way pseudo-header checksum should be pre-calculated
 - L3/L4 header fields filling
 - etc.

MOTIVATION:
-----------

1) Some work cannot (and didn't should) be done in rte_eth_tx_burst.
   However, this work is sometimes required, and now, it's an
   application issue.

2) Different hardware may have different requirements for TX offloads,
   other subset can be supported and so on.

3) Some parameters (eg. number of segments in ixgbe driver) may hung
   device. These parameters may be vary for different devices.

   For example i40e HW allows 8 fragments per packet, but that is after
   TSO segmentation. While ixgbe has a 38-fragment pre-TSO limit.

4) Fields in packet may require different initialization (like eg. will
   require pseudo-header checksum precalculation, sometimes in a
   different way depending on packet type, and so on). Now application
   needs to care about it.

5) Using additional API (rte_eth_tx_prep) before rte_eth_tx_burst let to
   prepare packet burst in acceptable form for specific device.

6) Some additional checks may be done in debug mode keeping tx_burst
   implementation clean.

PROPOSAL:
---------

To help user to deal with all these varieties we propose to:

1. Introduce rte_eth_tx_prep() function to do necessary preparations of
   packet burst to be safely transmitted on device for desired HW
   offloads (set/reset checksum field according to the hardware
   requirements) and check HW constraints (number of segments per
   packet, etc).

   While the limitations and requirements may differ for devices, it
   requires to extend rte_eth_dev structure with new function pointer
   "tx_pkt_prep" which can be implemented in the driver to prepare and
   verify packets, in devices specific way, before burst, what should to
   prevent application to send malformed packets.

2. Also new fields will be introduced in rte_eth_desc_lim:
   nb_seg_max and nb_mtu_seg_max, providing an information about max
   segments in TSO and non-TSO packets acceptable by device.

   This information is useful for application to not create/limit
   malicious packet.

APPLICATION (CASE OF USE):
--------------------------

1) Application should to initialize burst of packets to send, set
   required tx offload flags and required fields, like l2_len, l3_len,
   l4_len, and tso_segsz

2) Application passes burst to the rte_eth_tx_prep to check conditions
   required to send packets through the NIC.

3) The result of rte_eth_tx_prep can be used to send valid packets
   and/or restore invalid if function fails.

eg.

for (i = 0; i < nb_pkts; i++) {

/* initialize or process packet */

bufs[i]->tso_segsz = 800;
bufs[i]->ol_flags = PKT_TX_TCP_SEG | PKT_TX_IPV4
| PKT_TX_IP_CKSUM;
bufs[i]->l2_len = sizeof(struct ether_hdr);
bufs[i]->l3_len = sizeof(struct ipv4_hdr);
bufs[i]->l4_len = sizeof(struct tcp_hdr);
}

/* Prepare burst of TX packets */
nb_prep = rte_eth_tx_prep(port, 0, bufs, nb_pkts);

if (nb_prep < nb_pkts) {
printf("tx_prep failed\n");

/* drop or restore invalid packets */

}

/* Send burst of TX packets */
nb_tx = rte_eth_tx_burst(port, 0, bufs, nb_prep);

/* Free any unsent packets. */

Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
8 years agodoc: announce renaming of ethdev library
Thomas Monjalon [Tue, 26 Jul 2016 16:22:21 +0000 (18:22 +0200)]
doc: announce renaming of ethdev library

The right name of ethdev should be dpdk_netdev. However:
1/ We are using rte_ prefix in the code and library names.
2/ The API uses rte_ethdev
That's why 16.11 will just have the rte_ prefix prepended to
the library filename as every other libraries.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
8 years agodoc: announce driver name changes
Pablo de Lara [Sat, 9 Jul 2016 16:56:34 +0000 (17:56 +0100)]
doc: announce driver name changes

Driver names for all the supported devices in DPDK do not have
a naming convention. Some are using a prefix, some are not
and some have long names. Driver names are used when creating
virtual devices, so it is useful to have consistency in the names.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>