Jan Medala [Thu, 30 Jun 2016 15:04:58 +0000 (17:04 +0200)]
net/ena: fix freeing memory using correct API
Memory zones should be freed using the proper memzone_free function not
rte_free which is for malloc calls.
After allocating memzone it's required to zeroize memory in it, so do so
before storing the handle for later freeing.
Fixes:
9ba7981ec992 ("ena: add communication layer for DPDK")
Signed-off-by: Alexander Matushevsky <matua@amazon.com>
Signed-off-by: Jakub Palider <jpa@semihalf.com>
Signed-off-by: Jan Medala <jan@semihalf.com>
Jan Medala [Thu, 30 Jun 2016 15:04:57 +0000 (17:04 +0200)]
net/ena: make coherent memory allocation NUMA-aware
While allocating (coherent) memory, get information about calling node Id
and pass that as parameter when reserving a memzone.
Signed-off-by: Alexander Matushevsky <matua@amazon.com>
Signed-off-by: Jakub Palider <jpa@semihalf.com>
Signed-off-by: Jan Medala <jan@semihalf.com>
Jan Medala [Thu, 30 Jun 2016 15:04:56 +0000 (17:04 +0200)]
net/ena: disable readless communication when no HW support
Depending on HW revision readless communcation between host and device
may be unavailable. In that case prevent PMD from setting up readless
communication mechanism.
"readless" refers to ability to read ENA registers without actually
issuing read request from host (x86). Instead, host programs 2 registers
on the device that triggers a DMA from device to host and reports a
register value. However, this functionality is not going to be available
in all types of devices. The decision if this mode is supported or not,
is taken from revision_id in pci configuration space.
Signed-off-by: Alexander Matushevsky <matua@amazon.com>
Signed-off-by: Jakub Palider <jpa@semihalf.com>
Signed-off-by: Jan Medala <jan@semihalf.com>
Jan Medala [Thu, 30 Jun 2016 15:04:55 +0000 (17:04 +0200)]
net/ena: add dedicated memory area for extra device info
Increase maintenance and debug potentiality with dedicated areas of memory
where additional information can be stored by the ENA device.
Signed-off-by: Alexander Matushevsky <matua@amazon.com>
Signed-off-by: Jakub Palider <jpa@semihalf.com>
Signed-off-by: Jan Medala <jan@semihalf.com>
Jan Medala [Thu, 30 Jun 2016 15:04:54 +0000 (17:04 +0200)]
net/ena: update ENA comms layer for latest FW
Synchronize ENA communication layer with latest ENA FW version.
Signed-off-by: Alexander Matushevsky <matua@amazon.com>
Signed-off-by: Jakub Palider <jpa@semihalf.com>
Signed-off-by: Jan Medala <jan@semihalf.com>
John Daley [Wed, 29 Jun 2016 23:03:21 +0000 (16:03 -0700)]
net/enic: fix Rx queue init after restarting a device
If you stop, then start a port that had already received some packets,
the NIC could fetch discriptors from the wrong location. This could
effectivly reduce the size of the Rx queue by a random amount and
cause packet drop or reduced performance.
Reset the NIC fetch index to 0 when allocating and posting mbuf
addresses to the NIC.
Fixes:
947d860c821f ("enic: improve Rx performance")
Signed-off-by: John Daley <johndale@cisco.com>
Reviewed-by: Nelson Escobar <neescoba@cisco.com>
Nelson Escobar [Wed, 29 Jun 2016 23:03:20 +0000 (16:03 -0700)]
net/enic: fix Tx crash after restart
If you stop then start a port that had already sent some packets,
there was a segfault due to not resetting the number of completed
sends to zero.
Fixes:
a3b1e9551c26 ("net/enic: streamline mbuf handling in Tx path")
Signed-off-by: Nelson Escobar <neescoba@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
Fengtian Guo [Mon, 4 Jul 2016 08:24:19 +0000 (10:24 +0200)]
net/mlx4: add link up/down callback functions
Implement dev_set_link_up and dev_set_link_down device
operations. Code is inspired by mlx5 implementations.
Signed-off-by: Fengtian Guo <fengtian.guo@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Olivier Matz [Mon, 4 Jul 2016 08:24:18 +0000 (10:24 +0200)]
net/mlx5: fix API comment of link set function
Fixes:
62072098b54e ("mlx5: support setting link up or down")
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Olivier Matz [Mon, 4 Jul 2016 08:24:17 +0000 (10:24 +0200)]
net/mlx: fix setting interface flags
According to the documentation, the function
priv_set_flags(priv, keep, flags) should not modify the flags
in "keep" mask.
So 'flags' argument should be masked with '~keep' before ORing
it with the previous flags value.
This avoids messing up the kernel interface flags when calling
priv_set_flags(priv, ~IFF_UP, ~IFF_UP) in priv_set_link():
$ ip link
26: eth0: BROADCAST,MULTICAST,NOARP,ALLMULTI,PROMISC,DEBUG,\
DYNAMIC,AUTOMEDIA,PORTSEL,NOTRAILERS
Fixes:
7fae69eeff13 ("mlx4: new poll mode driver")
Fixes:
771fa900b73a ("mlx5: introduce new driver for Mellanox ConnectX-4 adapters")
Reported-by: Fengtian Guo <fengtian.guo@6wind.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Xiao Wang [Mon, 4 Jul 2016 07:51:08 +0000 (15:51 +0800)]
net/fm10k: fix Rx descriptor read timing
We find that when traffic is light, a small number of packets will have
wrong metadata (e.g. packet type), however this issue will not happen
when traffic is heavy.
The root cause is some fields in fm10k_rx_desc are read at the wrong time,
since the descriptor (being 16-bytes big) is not read as a single atomic
operation. When the input speed is slower than software's capability,
fm10k scalar Rx function accesses descriptors at about the same time
as HW writes them, so the scenario can occur: some fields like pkt_info
in fm10k_rx_desc are read before HW writeback but some fields like DD bit
are read after HW writeback, this will lead to the later packet parsing
function using incorrect value.
This patch fixes this issue by reading and parsing Rx descriptor only after
first checking that the DD bit is set.
Fixes:
4b61d3bfa941 ("fm10k: add receive and tranmit")
Fixes:
c82dd0a7bfa5 ("fm10k: add scatter receive")
Signed-off-by: Wang Xiao W <xiao.w.wang@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Kamil Rytarowski [Mon, 4 Jul 2016 07:16:14 +0000 (12:46 +0530)]
net/thunderx: fix memory alloc issue when changing ring size
Allocate maximum supported hardware ring hardware descriptors
memory on the first rte_eth_dma_zone_reserve call in order to
get sufficient hardware ring buffer space on subsequent queue
setup request with different queue size.
Fixes:
aa0d976e501d ("net/thunderx: add Rx queue setup and release")
Fixes:
3f3c6f9724a8 ("net/thunderx: add Tx queue setup and release")
Fixes:
7413feee662d ("net/thunderx: add device start/stop and close")
Signed-off-by: Kamil Rytarowski <kamil.rytarowski@caviumnetworks.com>
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Olivier Matz [Fri, 1 Jul 2016 08:02:27 +0000 (10:02 +0200)]
net/ixgbe: fix build whith offload flags disabled
The ixgbe driver does not compile if CONFIG_RTE_IXGBE_RX_OLFLAGS_ENABLE=n
because the macro has not the proper number of parameters. To reproduce
the issue:
make config T=x86_64-native-linuxapp-gcc
sed -i 's,\(IXGBE_RX_OLFLAGS_ENABLE\)=y,\1=n,' build/.config
make -j4
[...]
ixgbe_rxtx_vec_sse.c: In function ‘_recv_raw_pkts_vec’:
ixgbe_rxtx_vec_sse.c:345:53: error:
macro "desc_to_olflags_v" passed 3 arguments, but takes just 2
desc_to_olflags_v(descs, vlan_flags, &rx_pkts[pos]);
^
ixgbe_rxtx_vec_sse.c:345:3: error:
‘desc_to_olflags_v’ undeclared (first use in this function)
desc_to_olflags_v(descs, vlan_flags, &rx_pkts[pos]);
^
ixgbe_rxtx_vec_sse.c:231:10: error:
variable ‘vlan_flags’ set but not used
uint8_t vlan_flags;
^
This patch fixes the number of arguments in the macro, and ensures that
vlan_flags is marked as used to avoid the third error.
Fixes:
b37b528d957c ("mbuf: add new Rx flags for stripped VLAN")
Reported-by: Amin Tootoonchian <amint@icsi.berkeley.edu>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Jingjing Wu [Thu, 30 Jun 2016 01:25:55 +0000 (09:25 +0800)]
net/i40e: fix VLAN filtering in promiscuous mode
For VLAN filtering, the VLAN table should be enabled.
But the VLAN table is disabled by default until a rule is added.
In promiscuous mode no rule is added to enable the VLAN table.
This patch clears promiscuous VLAN flag on VSI, and adds a
rule to enable the VLAN table to fix VLAN filtering in promiscuous
mode.
Fixes:
4861cde46116 ("i40e: new poll mode driver")
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
Charles (Chas) Williams [Tue, 28 Jun 2016 16:14:50 +0000 (12:14 -0400)]
net/bnx2x: fix incorrect number of supported queues
We need sc->igu_sb_cnt determined before calculating the number of queues
we can support, so move the call to bnx2x_init_rte() to later in the code.
Fixes:
3754101cd74c ("net/bnx2x: fix MSIX vector and VF resource counts")
Signed-off-by: Charles (Chas) Williams <ciwillia@brocade.com>
Acked-by: Rasesh Mody <rasesh.mody@qlogic.com>
Charles (Chas) Williams [Tue, 21 Jun 2016 12:18:46 +0000 (08:18 -0400)]
net/bnx2x: set random MAC address if none assigned
If the PF hasn't assigned an address, assign one randomly. While here,
convert to use DPDK's ether address utility routines.
Fixes:
540a211084a7 ("bnx2x: driver core")
Signed-off-by: Charles (Chas) Williams <ciwillia@brocade.com>
Acked-by: Rasesh Mody <rasesh.mody@qlogic.com>
Bruce Richardson [Tue, 5 Jul 2016 16:03:11 +0000 (17:03 +0100)]
scripts: add more git log capitalization checks
Add API, NUMA, HW, SW, FW and VMDq to list of words to capitalize properly.
Since VMDq is a bit unusual, add it as special case check so we can
print an error message giving the correct way to write it.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Nelio Laranjeiro [Wed, 29 Jun 2016 15:55:08 +0000 (17:55 +0200)]
scripts: check headline of drivers commits
A driver patch under net should start with "net/<driver name>" or if
a patch touch multiple drivers, it should only start with "net:".
The same apply for crypto.
A patch touching all drivers (net + crypto) should start with "drivers:".
Longer prefixes like "net/mlx:" (for mlx4/mlx5) or "net/e1000/base:" are
handled by not checking the colon.
The directories doc/ and config/ are ignored because a driver patch
can modify them.
Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Tue, 5 Jul 2016 21:13:24 +0000 (23:13 +0200)]
scripts: reduce line size of commit checks
Small cleanup to comply with the 80 chars limit.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Tue, 5 Jul 2016 16:24:21 +0000 (18:24 +0200)]
scripts: check spacing after commit references
A blank line between "Fixes" and "Signed-off-by" helps to
separate information in blocks.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Fri, 8 Jul 2016 17:45:54 +0000 (19:45 +0200)]
scripts: fix commit check for empty list
When running check-git-log.sh on a clean tree it was complaining
of a wrong empty headline because '^[^:]*$' was matching.
It is fixed by matching at least one character with +.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Tue, 5 Jul 2016 15:47:05 +0000 (17:47 +0200)]
scripts: fix commit check of first word
The first word of each commit message is checked.
But when the commit range was greater than 1, only the latest commit
was checked.
It is fixed by checking each commit separately.
Fixes:
9c24780f0d5e ("scripts: check first word of commit messages")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Tested-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Thomas Monjalon [Wed, 6 Jul 2016 14:33:01 +0000 (16:33 +0200)]
examples: fix dependencies on hash library
The multi_process example do not need rte_hash.
But these examples cannot compile if rte_hash is not available:
- ipsec-secgw (was already protected - no change)
- ipv4_multicast
- l3fwd-power
- l3fwd-vf
- tep_termination
- ip_pipeline
The ip_pipeline example is not disabled because its dependencies
are handled with #ifdef. It may require a separate fix.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Wed, 6 Jul 2016 14:31:47 +0000 (16:31 +0200)]
table: remove unneeded dependency on hash library
Fixes:
8aa327214ceb ("table: hash")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Wed, 6 Jul 2016 14:30:20 +0000 (16:30 +0200)]
net/bnx2x: remove unneeded dependency on hash library
Fixes:
9fb557035d90 ("bnx2x: enable PMD build")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Rasesh Mody <rasesh.mody@qlogic.com>
Thomas Monjalon [Wed, 6 Jul 2016 15:23:01 +0000 (17:23 +0200)]
net/enic: remove useless assert macro
The macro ENIC_ASSERT does the same thing as RTE_ASSERT,
thus it can be removed.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: John Daley <johndale@cisco.com>
Thomas Monjalon [Wed, 6 Jul 2016 14:58:39 +0000 (16:58 +0200)]
app/test: remove useless clock estimation
The function get_machclk_freq() in RED test can be replaced by
rte_get_timer_hz() which already estimates the clock frequency at EAL init.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Ferruh Yigit [Tue, 5 Jul 2016 15:00:52 +0000 (16:00 +0100)]
igb_uio: fix possible mmap failure with Linux 4.5
mmap the iomem range of the PCI device fails for kernels that
enabled CONFIG_IO_STRICT_DEVMEM option:
EAL: pci_map_resource():
cannot mmap(39, 0x7f1c51800000, 0x100000, 0x0):
Invalid argument (0xffffffffffffffff)
CONFIG_IO_STRICT_DEVMEM is introduced in Linux v4.5 and not enabled
by default:
Linux commit:
90a545e restrict /dev/mem to idle io memory ranges
As a workaround igb_uio can stop reserving PCI memory resources, from
kernel point of view iomem region looks like idle and mmap works
again. This matches uio_pci_generic usage.
With this update device iomem range is not protected against any
other kernel drivers or userspace access. But this shouldn't
be a problem for dpdk usage module since purpose of the igb_uio
module is to provide userspace access.
Fixes:
af75078fece3 ("first public release")
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Sergio Gonzalez Monroy [Tue, 5 Jul 2016 11:01:16 +0000 (12:01 +0100)]
mem: do not zero out memory on zmalloc
Zeroing out memory on rte_zmalloc_socket is not required anymore since all
allocated memory is already zeroed.
Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Sergio Gonzalez Monroy [Tue, 5 Jul 2016 11:01:15 +0000 (12:01 +0100)]
mem: zero out memory on free
Since commit
fafcc11985a2, memzones are not guaranteed to be zeroed out.
This could potentially cause issues as applications might have been
relying on the allocated memory being zeroed out.
On init all allocated memory is zeroed by the kernel, so by zeroing out
memory on free, all available dpdk memory is always zeroed.
Fixes:
fafcc11985a2 ("mem: rework memzone to be allocated by malloc")
Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Daniel Mrzyglod [Wed, 6 Jul 2016 10:44:53 +0000 (12:44 +0200)]
mem: fix hugepage resource leak
Current code does not munmap 'hugepage' mapping (hugepage info file) on
function exit, leaking resources.
Coverity issue: 97920
Fixes:
b6a468ad41d5 ("memory: add --socket-mem option")
Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Reshma Pattan [Mon, 4 Jul 2016 16:17:29 +0000 (17:17 +0100)]
pdump: close client socket on error
Close the client socket before returning on error.
Coverity issue: 127555
Fixes:
f3c1829130ac ("pdump: check missing home environment variable")
Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Yari Adan Petralanda [Mon, 4 Jul 2016 08:59:52 +0000 (10:59 +0200)]
hash: retrieve a key given its position
The function rte_hash_get_key_with_position is added in this patch.
As the position returned when adding a key is frequently used as an
offset into an array of user data, this function performs the operation
of retrieving a key given this offset.
A possible use case would be to delete a key from the hash table when
its entry in the array of data has certain value. For instance, the key
could be a flow 5-tuple, and the value stored in the array a time
stamp.
Signed-off-by: Juan Antonio Montesinos <juan.antonio.montesinos.delgado@ericsson.com>
Signed-off-by: Yari Adan Petralanda <yari.adan.petralanda@ericsson.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Remy Horton [Fri, 8 Jul 2016 15:44:24 +0000 (16:44 +0100)]
ethdev: fix xstats id mismatch
When fetching xstats values the driver specific parameters are
placed after the generic ones, but when fetching xstats names
the driver specific parameter names came first. This patch fixes
the resulting id mismatch between names and values.
Fixes:
bd6aa172cf35 ("ethdev: fetch extended statistics with integer ids")
Signed-off-by: Remy Horton <remy.horton@intel.com>
Zyta Szpak [Mon, 4 Jul 2016 11:36:46 +0000 (13:36 +0200)]
ethdev: get registers width
The ethtool app was allocating too little space for 64-bit
registers which resulted in memory corruption.
Removes hard-coded assumption that device registers
are always 32 bits wide. The rte_eth_dev_get_reg_length
and rte_eth_dev_get_reg_info callbacks did not
provide register size to the app in any way while is
needed to allocate correct number of bytes before
retrieving registers using rte_eth_dev_get_reg.
This commit changes rte_eth_dev_get_reg_info so that
it can be used to retrieve both the number of registers
and their width, and removes the now-redundant
rte_eth_dev_get_reg_length.
Signed-off-by: Zyta Szpak <zyta.szpak@semihalf.com>
Acked-by: Remy Horton <remy.horton@intel.com>
Deepak Kumar Jain [Sun, 10 Jul 2016 10:20:57 +0000 (11:20 +0100)]
app/test: fix missing operation initialization
Initializing the authentication op parameter.
Fixes:
eec136f3c54f ("aesni_gcm: add driver for AES-GCM crypto operations")
Signed-off-by: Deepak Kumar Jain <deepak.k.jain@intel.com>
Deepak Kumar Jain [Sun, 10 Jul 2016 10:21:22 +0000 (11:21 +0100)]
crypto/qat: fix digest verification
This fixes the cases in which operation was Digest verify.
Fixes:
e25200fbb45d ("qat: add cipher/auth only")
Signed-off-by: Deepak Kumar Jain <deepak.k.jain@intel.com>
Pablo de Lara [Sat, 9 Jul 2016 16:35:58 +0000 (17:35 +0100)]
crypto/kasumi: restrict cipher bit-level operations
KASUMI PMD only supports bit-level cipher operations
when destination buffer is different from the source
(out of place operations). This commit adds a check
in the code to prevent the user from trying to perform
in-place bit-level ciphering.
Fixes:
2773c86d061a ("crypto/kasumi: add driver for KASUMI library")
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Pablo de Lara [Fri, 8 Jul 2016 08:40:08 +0000 (09:40 +0100)]
crypto/kasumi: fix AAD size of F9 function
Additional authenticated data (AAD) in KASUMI F9 (UIA1) is 8 bytes
and not 9 bytes, since direction bit is obtained just after the
end of the message, and it is separated from the AAD.
Fixes:
2773c86d061a ("crypto/kasumi: add driver for KASUMI library")
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Pablo de Lara [Sat, 9 Jul 2016 01:06:14 +0000 (02:06 +0100)]
net/bonding: fix range of mode parameter
The range of the supported bonding modes is 0-6, instead of 0-4.
Fixes:
cb6696d22023 ("drivers: update registration macro usage")
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Pablo de Lara [Sat, 9 Jul 2016 01:06:13 +0000 (02:06 +0100)]
drivers: add virtio and xenvirt parameters infos
Virtio and Xenvirt are two virtual device drivers that admit
arguments, so DRIVER_REGISTER_PARAM_STRING should be used
in them.
Fixes:
cb6696d22023 ("drivers: update registration macro usage")
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Pablo de Lara [Sat, 9 Jul 2016 01:06:12 +0000 (02:06 +0100)]
drivers: split parameters infos in multiple lines
Driver arguments shown with DRIVER_REGISTER_PARAM_STRING
have been separated in multiple lines and indented to
ease their readability.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Pablo de Lara [Sat, 9 Jul 2016 01:06:11 +0000 (02:06 +0100)]
drivers: remove static driver names
Since now the PMD_REGISTER_DRIVER macro sets the driver names,
there is no need to have the rte_driver structure setting it
statically, as it will get overridden.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Pablo de Lara [Sat, 9 Jul 2016 01:06:10 +0000 (02:06 +0100)]
drivers: revert vdev driver names to original
In order to avoid API breakage, the driver names of the virtual devices
have been renamed to their original name, before the modification
of the PMD_REGISTER_DRIVER macro, which sets now the driver names.
Fixes:
cb6696d22023 ("drivers: update registration macro usage")
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Bruce Richardson [Fri, 8 Jul 2016 20:37:05 +0000 (21:37 +0100)]
tools: fix pmdinfo for FreeBSD
There were a couple of issues which prevented pmdinfo.py from running on
FreeBSD, both of which are fixed by this patch.
* The path to python is not /usr/bin/python as on Linux, so use
/usr/bin/env to find it on both OS's.
* The path to the pci ids DB is in a different location on FreeBSD,
so use the platform python library to look in different default
locations depending on the underlying OS. [There are two possible
locations to look on FreeBSD, as defined by pciconf manpage, so
check in both in order of better to worse]
Fixes:
c67c9a5c646a ("tools: query binaries for HW and other support information")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Bruce Richardson [Fri, 8 Jul 2016 20:37:04 +0000 (21:37 +0100)]
pmdinfogen: fix build on FreeBSD
error on compilation caused by missing include for libgen.h.
buildtools/pmdinfogen/pmdinfogen.c:402:4: error:
implicit declaration of function 'basename' is invalid in C99
basename(argv[0]));
Fixes:
840e5dfea3f8 ("pmdinfogen: fix usage message")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Pablo de Lara [Wed, 6 Jul 2016 14:05:32 +0000 (15:05 +0100)]
cryptodev: move KASUMI to end of list
New cryptodev type for the new KASUMI PMD was added
in the cryptodev type enum, but not at the end of it,
causing an ABI breakage.
Fixes:
2773c86d061a ("crypto/kasumi: add driver for KASUMI library")
Reported-by: Ferruh Yigit <ferruh.yigit@intel.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Pablo de Lara [Fri, 8 Jul 2016 16:46:51 +0000 (17:46 +0100)]
crypto: normalize driver names with macros
Recently reported, the introduction of pmd information exports led to a
breakage of cryptodev unit tests because the test infrastructure relies on the
cryptodev names being available in macros. This patch fixes the pmd naming to
use the macro names. Note that the macro names were already pre-stringified,
which won't work as the PMD_REGISTER_DRIVER macro requires the name in both a
processing token and stringified form. As such the names are defined now as
tokens, and converted where needed to stringified form on demand using RTE_STR.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Thomas Monjalon [Thu, 7 Jul 2016 09:59:33 +0000 (11:59 +0200)]
maintainers: add section for pmdinfo
The author of this feature is Neil Horman.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Thomas Monjalon [Thu, 7 Jul 2016 09:52:40 +0000 (11:52 +0200)]
doc: fix syntax in pmdinfogen guide
Sphynx reports this error:
doc/guides/prog_guide/dev_kit_build_system.rst:337: WARNING:
Pygments lexer name u'C' is not known
Fixes:
737ddf3fb ("doc: add prog guide section documenting pmdinfo script")
Reported-by: Bernard Iremonger <bernard.iremonger@intel.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Thomas Monjalon [Thu, 7 Jul 2016 14:59:14 +0000 (16:59 +0200)]
eal: remove PCI include from generic driver header
Remove include of rte_pci.h in the generic header rte_dev.h.
Fixes:
cb6696d22023 ("drivers: update registration macro usage")
Suggested-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Thomas Monjalon [Thu, 7 Jul 2016 14:24:36 +0000 (16:24 +0200)]
pmdinfogen: fix usage message
The name of the tool is pmdinfogen.
Fixes:
98b0fdb0ffc6 ("pmdinfogen: add buildtools and pmdinfogen utility")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Thomas Monjalon [Thu, 7 Jul 2016 12:41:36 +0000 (14:41 +0200)]
pmdinfogen: fix build warnings
When compiled with a standard clang, pmdinfogen can raise a warning:
buildtools/pmdinfogen/pmdinfogen.c:365:1: warning:
control reaches end of non-void function
Actually there can be more warnings with stricter compilers.
In order to catch them early and fix most of them, the DPDK standard flags
WERROR_FLAGS are used.
The warnings fixed are:
no previous prototype for ...
no return statement in function returning non-void
variable ‘secstrings’ set but not used
‘sec_name’ defined but not used
‘get_symbol_index’ defined but not used
pointer of type ‘void *’ used in arithmetic
Fixes:
98b0fdb0ffc6 ("pmdinfogen: add buildtools and pmdinfogen utility")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Thomas Monjalon [Thu, 7 Jul 2016 12:06:38 +0000 (14:06 +0200)]
mk: fix verbose pmdinfogen run
When building with "make V=1" it is expected to see the output of each
compiler command in order to debug them.
Unfortunately the pmdinfogen related commands were always quiet.
It is fixed by defining the commands in some Makefile variables.
They are printed if the verbose mode is enabled.
The other benefit of this rework is to stop compilation after a
failure with pmdinfogen.
The command readlink is removed in this rework because it seems useless.
Fixes:
3d781ca32874 ("mk: do post processing on objects that register a driver")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Thomas Monjalon [Thu, 7 Jul 2016 12:19:54 +0000 (14:19 +0200)]
mk: fix driver build with installed SDK
The tool pmdinfogen was called from RTE_OUTPUT/app/ which does not exist
if building a driver outside of the SDK build.
When building DPDK, RTE_SDK_BIN is RTE_OUTPUT. When building an external
driver, RTE_SDK_BIN must point to the installed DPDK directory containing
includes, libs, etc.
That's why pmdinfogen must be installed in the SDK directory and be part
of the SDK installation.
Fixes:
3d781ca32874 ("mk: do post processing on objects that register a driver")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Thomas Monjalon [Thu, 7 Jul 2016 11:49:58 +0000 (13:49 +0200)]
mk: remove traces of hostapp build directory
The recipe rte.hostapp.mk does not build in hostapp/ anymore.
Fixes:
98b0fdb0ffc6 ("pmdinfogen: add buildtools and pmdinfogen utility")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Thomas Monjalon [Thu, 7 Jul 2016 08:20:28 +0000 (10:20 +0200)]
mk: fix build dependency of drivers on pmdinfogen
When compiling the drivers, some code is generated with pmdinfogen.
A fresh parallel build can fail if a driver is compiled before pmdinfogen:
build/buildtools/dpdk-pmdinfogen: Permission denied
There was a dependency declared in drivers/Makefile but it cannot work
because this file is based on mk/rte.subdir.mk which do not handle
dependencies.
It is fixed by declaring the whole buildtools as (order only) prerequisite
of drivers.
Fixes:
cb6696d22023 ("drivers: update registration macro usage")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Thomas Monjalon [Wed, 6 Jul 2016 21:14:20 +0000 (23:14 +0200)]
drivers: fix build with new register macro
Compilation fails because of some typos.
Fixes:
cb6696d22023 ("drivers: update registration macro usage")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Tested-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Neil Horman [Fri, 17 Jun 2016 18:46:25 +0000 (14:46 -0400)]
doc: add prog guide section documenting pmdinfo script
Information on pmdinfogen may be useful to 3rd party driver developers.
Include documentation on what it does
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Remy Horton <remy.horton@intel.com>
Neil Horman [Fri, 17 Jun 2016 18:46:24 +0000 (14:46 -0400)]
tools: query binaries for HW and other support information
This tool searches for the primer sting PMD_DRIVER_INFO= in any ELF binary,
and, if found parses the remainder of the string as a json encoded string,
outputting the results in either a human readable or raw, script parseable
format
Note that, in the case of dynamically linked applications, pmdinfo.py will
scan for implicitly linked PMDs by searching the specified binaries
.dynamic section for DT_NEEDED entries that contain the substring
librte_pmd. The DT_RUNPATH, LD_LIBRARY_PATH, /usr/lib and /lib are
searched for these libraries, in that order
If a file is specified with no path, it is assumed to be a PMD DSO, and the
LD_LIBRARY_PATH, /usr/lib[64]/ and /lib[64] is searched for it
Currently the tool can output data in 3 formats:
a) raw, suitable for scripting, where the raw JSON strings are dumped out
b) table format (default) where hex pci ids are dumped in a table format
c) pretty, where a user supplied pci.ids file is used to print out vendor
and device strings
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: Remy Horton <remy.horton@intel.com>
Neil Horman [Fri, 17 Jun 2016 18:46:23 +0000 (14:46 -0400)]
mk: do post processing on objects that register a driver
Modify the compilation makefile to identify C files that export PMD
information, and use that to trigger execution of the pmdinfo binary. If
the execution of pmdinfo is successful, compile the output C file to an
object, and use the linker to do relocatable linking on the resultant
object file into the parent object that it came from. This effectively
just adds the json string into the string table of the object that defines
the PMD to the outside world.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: Remy Horton <remy.horton@intel.com>
Neil Horman [Fri, 17 Jun 2016 18:46:22 +0000 (14:46 -0400)]
eal: export default plugin path to external tools
Export a symbol containing the string:
DPDK_PLUGIN_PATH="$(CONFIG_RTE_EAL_PMD_PATH)"
Where the latter half of the string is set at build time to a location from
which autoloaded DSO's will be found. This string is used by pmdinfo in
'plugin' mode, whereby a user can specify a dpdk installation directory (or
static binary), and scan the associated path (if found) for pmd DSO's and
report on their hardware support.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: Remy Horton <remy.horton@intel.com>
Neil Horman [Fri, 17 Jun 2016 18:46:21 +0000 (14:46 -0400)]
drivers: update registration macro usage
Modify the PMD_REGISTER_DRIVER macro, adding a name argument to it. The
addition of a name argument creates a token that can be used for subsequent
macros in the creation of unique symbol names to export additional bits of
information for use by the pmdinfogen tool. For example:
PMD_REGISTER_DRIVER(ena_driver, ena);
registers the ena_driver struct as it always did, and creates a symbol
const char this_pmd_name0[] __attribute__((used)) = "ena";
which pmdinfogen can search for and extract. The subsequent macro
DRIVER_REGISTER_PCI_TABLE(ena, ena_pci_id_map);
creates a symbol const char ena_pci_tbl_export[] __attribute__((used)) =
"ena_pci_id_map";
Which allows pmdinfogen to find the pci table of this driver
Using this pattern, we can export arbitrary bits of information.
pmdinfo uses this information to extract hardware support from an object
file and create a json string to make hardware support info discoverable
later.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: Remy Horton <remy.horton@intel.com>
Neil Horman [Fri, 17 Jun 2016 18:46:20 +0000 (14:46 -0400)]
pmdinfogen: add buildtools and pmdinfogen utility
pmdinfogen is a tool used to parse object files and build json strings for
use in later determining hardware support in a dso or application binary.
pmdinfo looks for the non-exported symbol names this_pmd_name<n> and
this_pmd_tbl<n> (where n is a integer counter). It records the name of
each of these tuples, using the later to find the symbolic name of the
pci_table for physical devices that the object supports. With this
information, it outputs a C file with a single line of the form:
static char *<pmd_name>_driver_info[] __attribute__((used)) = " \
PMD_DRIVER_INFO=<json string>";
Where <pmd_name> is the arbitrary name of the pmd, and <json_string> is the
json encoded string that hold relevant pmd information, including the pmd
name, type and optional array of pci device/vendor ids that the driver
supports.
This c file is suitable for compiling to object code, then relocatably
linking into the parent file from which the C was generated. This creates
an entry in the string table of the object that can inform a later tool
about hardware support.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: Remy Horton <remy.horton@intel.com>
Thomas Monjalon [Mon, 4 Jul 2016 01:43:08 +0000 (03:43 +0200)]
version: 16.07-rc1
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Jianfeng Tan [Sun, 26 Jun 2016 13:48:13 +0000 (13:48 +0000)]
net/virtio-user: fix build with icc
Implicit int to enum conversion is not allowed when icc is used as
the compiler. It raises the compiling error like,
drivers/net/virtio/virtio_user/vhost_user.c(257):
error #188: enumerated type mixed with another type
msg.request = req;
^
The fix is simple, change the type of parameter req to enum
vhost_user_request.
Fixes:
6a84c37e3975 ("net/virtio-user: add vhost-user adapter layer")
Suggested-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Tetsuya Mukawa [Fri, 24 Jun 2016 02:04:20 +0000 (11:04 +0900)]
net/vhost: fix Tx error counting
According to 'rte_eth_stats' structure comments, 'imissed'
should represent RX error counting, but currently 'imissed' is
used to count TX error.
The patch replaces 'imissed' by 'oerrors'.
Fixes:
ee584e9710b9 ("vhost: add driver on top of the library")
Signed-off-by: Tetsuya Mukawa <mukawa@igel.co.jp>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Yuanhan Liu [Mon, 27 Jun 2016 05:22:00 +0000 (13:22 +0800)]
vhost: fix missing flag reset on stop
Commit
550c9d27d143 ("vhost: set/reset device flags internally") moves
the VIRTIO_DEV_RUNNING set/reset to vhost lib. But I missed one reset
on stop; here fixes it.
Fixes:
550c9d27d143 ("vhost: set/reset device flags internally")
Reported-by: Ciara Loftus <ciara.loftus@intel.com>
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Tested-by: Ciara Loftus <ciara.loftus@intel.com>
Yuanhan Liu [Fri, 24 Jun 2016 07:52:48 +0000 (15:52 +0800)]
doc: update vhost guide
Mainly on updating vhost-user part: we now support client mode.
Also refine some words, and add a bit more explanation.
And made an emphatic statement that you are suggested to use vhost-user
instead of vhost-cuse, because we have enhanced vhost-user a lot since
v2.2 (Actually, I doubt there are any people still using vhost-cuse)
[John McNamara: rewords, better formats]
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Ferruh Yigit [Fri, 1 Jul 2016 16:26:48 +0000 (17:26 +0100)]
ivshmem: fix for modified mempool struct
struct rte_mempool changed its "ring" field to "pool_data"
"ring" field is accessed by ivshmem library, and updated to "pool_data"
This patch fixes the compile error:
lib/librte_ivshmem/rte_ivshmem.c:
In function 'add_mempool_to_metadata':
lib/librte_ivshmem/rte_ivshmem.c:584:32:
error: 'const struct rte_mempool' has no member named 'ring'
return add_ring_to_metadata(mp->ring, config);
^~
Fixes:
449c49b93a6b ("mempool: support handler operations")
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
Sergio Gonzalez Monroy [Fri, 1 Jul 2016 14:38:49 +0000 (15:38 +0100)]
mk: fix ACL library static linking
Since below commit, ACL library is outside the scope of --whole-archive
and ACL autotest fails.
RTE>>acl_autotest
ACL: allocation of
25166728 bytes on socket 9 for ACL_acl_ctx failed
ACL: rte_acl_add_rules(acl_ctx): rule #1 is invalid
Line 1584: SSE classify with zero categories failed!
Test Failed
This is the result of the linker picking weak over non-weak functions.
Fixes:
95dc3c3cf31c ("mk: reduce scope of whole-archive static linking")
Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Sergio Gonzalez Monroy [Fri, 1 Jul 2016 14:38:48 +0000 (15:38 +0100)]
mk: allow duplicate linker flags in libraries list
Since [1] duplicates in LDLIBS are removed. The side effect is that it
does not distinguish between libraries or linker flags.
This patch allows multiple linker flags in LDLIBS, such as
--whole-archive.
[1] Commit:
edf4d331dcdb ("mk: eliminate duplicates from libraries list")
Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Olivier Matz [Fri, 1 Jul 2016 08:43:52 +0000 (10:43 +0200)]
ethdev: clarify API of packet types support
As discussed in http://dpdk.org/ml/archives/dev/2016-June/042229.html,
clarify the behavior of rte_eth_dev_get_supported_ptypes().
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Remy Horton [Fri, 1 Jul 2016 13:16:45 +0000 (14:16 +0100)]
ethdev: remove redundant id field in xstats name lookup
For all drivers that currently implement xstats, the id field in the
rte_eth_stats_name structure equals the entry's array index. This
patch eliminates the redundant id field as a direct index lookup is
faster than a search for the matching id field.
Suggested-by: Olivier Matz <olivier.matz@6wind.com>
Signed-off-by: Remy Horton <remy.horton@intel.com>
Thomas Monjalon [Wed, 29 Jun 2016 16:53:24 +0000 (18:53 +0200)]
ethdev: fix extended statistics description
The old structure rte_eth_xstats contained names and values.
The new structure rte_eth_xstat contains ids and values.
Fixes:
bd6aa172cf35 ("ethdev: fetch extended statistics with integer ids")
Fixes:
e2aae1c1ced9 ("ethdev: remove name from extended statistic fetch")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Remy Horton <remy.horton@intel.com>
Thomas Monjalon [Thu, 30 Jun 2016 10:08:26 +0000 (12:08 +0200)]
scripts: test clean build when config is changed
If there is a change in the config directory the build test
will refresh the tested build config to take into account new options.
The git working directory and the last git commit are checked for a
change in config/.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Wed, 29 Jun 2016 14:39:50 +0000 (16:39 +0200)]
scripts: check fixed commit branch
The commit id of a fixed commit must be in the current branch.
It avoids referencing a local branch or a next-* branch when
pushing in the master.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
David Hunt [Thu, 30 Jun 2016 18:05:09 +0000 (19:05 +0100)]
app/test: migrate custom mempool handler to stack handler
After introducing the stack handler in the previous commit,
we now have very similar code to the custom handler in test_mempool.c,
which creates a custom mempool based on simple mallocs.
The stack handler is a cleaner example of adding a new mempool handler,
so this commit replaces the custom handler test with a stack
handler test, and removes the custom handler code.
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
David Hunt [Thu, 30 Jun 2016 18:05:08 +0000 (19:05 +0100)]
mempool: add stack mempool handler
This is a mempool handler that is useful for pipelining apps, where
the mempool cache doesn't really work - example, where we have one
core doing rx (and alloc), and another core doing Tx (and return).
In such a case, the mempool ring simply cycles through all the mbufs,
resulting in a LLC miss on every mbuf allocated when the number of
mbufs is large. A stack (LIFO) recycles buffers more effectively in
this case.
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Bruce Richardson [Thu, 30 Jun 2016 12:49:25 +0000 (13:49 +0100)]
mempool: rename functions with confusing names
The mempool_count and mempool_free_count behaved contrary to what their
names suggested. The free_count function actually returned the number of
elements that were allocated from the pool, not the number unallocated as
the name implied.
Fix this by introducing two new functions to replace the old ones,
* rte_mempool_avail_count to replace rte_mempool_count
* rte_mempool_in_use_count to replace rte_mempool_free_count
In this patch, the new functions are added, and the old ones are marked
as deprecated. All apps and examples that use the old functions are
updated to use the new functions.
Fixes:
af75078fece3 ("first public release")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Ferruh Yigit [Mon, 27 Jun 2016 13:02:31 +0000 (14:02 +0100)]
port: remove duplicated symbols from .map
Fixes:
9d41beed24b0 ("lib: provide initial versioning")
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Ferruh Yigit [Mon, 27 Jun 2016 13:02:30 +0000 (14:02 +0100)]
cmdline: remove duplicated symbol from .map
Fixes:
9d41beed24b0 ("lib: provide initial versioning")
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Ferruh Yigit [Mon, 27 Jun 2016 13:02:29 +0000 (14:02 +0100)]
ethdev: remove duplicated symbol from .map
Fixes:
19b16e2f6442 ("ethdev: add vlan type when setting ether type")
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Pablo de Lara [Mon, 27 Jun 2016 22:35:19 +0000 (23:35 +0100)]
app/testpmd: limit number of forwarding cores
Number of forwarding cores must be equal or less than
number of forwarding streams, otherwise two cores
would try to use a same queue on a port, which is not allowed.
Fixes:
f2bb7ae1d204 ("app/testpmd: handle all Rx queues in RSS setup")
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Tested-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Jerin Jacob [Thu, 30 Jun 2016 12:16:36 +0000 (17:46 +0530)]
mempool: optimize copy in cache
Replace C memcpy code semantics with optimized rte_memcpy.
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Tested-by: David Hunt <david.hunt@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Olivier Matz [Mon, 27 Jun 2016 15:58:51 +0000 (17:58 +0200)]
mem: revert page locking when not using hugepages
This reverts commit
593a084afc2b441895aeca78a2c4465e450d0ef5.
Since recently [1], it is not possible to run the dpdk with
non-root privileges and the --no-huge option. This is because the eal
layer tries to lock the memory. Using locked memory is mandatory for
physical devices because they reference physical addresses.
But a user may want to start the dpdk without locked memory, because he
does not have the permission to do so, and/or does not have this need,
for instance because he uses virtual drivers.
So this commit reverts the use of MAP_LOCKED in mmap() flags.
[1] http://www.dpdk.org/ml/archives/dev/2016-May/039404.html
Fixes:
593a084afc2b ("mem: lock pages when not using hugepages")
Reported-by: Panu Matilainen <pmatilai@redhat.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Rami Rosen [Wed, 20 Apr 2016 20:04:45 +0000 (23:04 +0300)]
jobstats: fix typo in a comment
Signed-off-by: Rami Rosen <rami.rosen@intel.com>
Rami Rosen [Sat, 25 Jun 2016 15:53:40 +0000 (18:53 +0300)]
ethdev: fix typo in a comment
Signed-off-by: Rami Rosen <rami.rosen@intel.com>
Jianfeng Tan [Tue, 31 May 2016 03:37:07 +0000 (03:37 +0000)]
mem: fix allocating all free hugepages
EAL memory init allocates all free hugepages of the whole system,
which seen from sysfs, even when applications do not ask so many.
When there is a limitation on how many hugepages an application can
use (such as cgroup.hugetlb), or hugetlbfs is specified with an
option of size (exceeding the quota of the fs), it just fails to
start even there are enough hugepages allocated.
To fix above issue, this patch:
- Changes the logic to continue memory init to see if hugetlb
requirement of application can be addressed by already allocated
hugepages.
- To make sure each hugepage is allocated successfully, we add a
recover mechanism, which relies on a mem access to fault-in
hugepages, and if it fails with SIGBUS, recover to previously
saved stack environment with siglongjmp().
For the case of CONFIG_RTE_EAL_SINGLE_FILE_SEGMENTS (enabled by
default when compiling IVSHMEM target), it's indispensable to
mapp all free hugepages in the system. Under this case, it fails
to start when allocating fails.
Test example:
a. cgcreate -g hugetlb:/test-subgroup
b. cgset -r hugetlb.1GB.limit_in_bytes=
2147483648 test-subgroup
c. cgexec -g hugetlb:test-subgroup \
./examples/helloworld/build/helloworld -c 0x2 -n 4
Fixes:
af75078fece ("first public release")
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Tested-by: Yulong Pei <yulong.pei@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Huilong Xu [Tue, 31 May 2016 02:40:12 +0000 (10:40 +0800)]
pci: increase log level to show blacklisted devices
Maybe we should change log level, when add port in blacklist,
for check it easy.
It does not influence performance and function.
Signed-off-by: Huilong Xu <huilongx.xu@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Lazaros Koromilas [Tue, 28 Jun 2016 23:47:38 +0000 (00:47 +0100)]
mempool: allow user-owned cache
The mempool cache is only available to EAL threads as a per-lcore
resource. Change this so that the user can create and provide their own
cache on mempool get and put operations. This works with non-EAL threads
too. This commit introduces the new API calls:
rte_mempool_cache_create(size, socket_id)
rte_mempool_cache_free(cache)
rte_mempool_cache_flush(cache, mp)
rte_mempool_default_cache(mp, lcore_id)
Changes the API calls:
rte_mempool_generic_put(mp, obj_table, n, cache, flags)
rte_mempool_generic_get(mp, obj_table, n, cache, flags)
The cache-oblivious API calls use the per-lcore default local cache.
Signed-off-by: Lazaros Koromilas <l@nofutznetworks.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Lazaros Koromilas [Tue, 28 Jun 2016 23:47:37 +0000 (00:47 +0100)]
mempool: use bit flags for multi consumers and producers
Pass the same flags as in rte_mempool_create(). Changes API calls:
rte_mempool_generic_put(mp, obj_table, n, flags)
rte_mempool_generic_get(mp, obj_table, n, flags)
Signed-off-by: Lazaros Koromilas <l@nofutznetworks.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Lazaros Koromilas [Tue, 28 Jun 2016 23:47:36 +0000 (00:47 +0100)]
mempool: deprecate specific get and put functions
This commit introduces the API calls:
rte_mempool_generic_put(mp, obj_table, n, is_mp)
rte_mempool_generic_get(mp, obj_table, n, is_mc)
Deprecates the API calls:
rte_mempool_mp_put_bulk(mp, obj_table, n)
rte_mempool_sp_put_bulk(mp, obj_table, n)
rte_mempool_mp_put(mp, obj)
rte_mempool_sp_put(mp, obj)
rte_mempool_mc_get_bulk(mp, obj_table, n)
rte_mempool_sc_get_bulk(mp, obj_table, n)
rte_mempool_mc_get(mp, obj_p)
rte_mempool_sc_get(mp, obj_p)
We also check cookies in one place now.
Signed-off-by: Lazaros Koromilas <l@nofutznetworks.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Ferruh Yigit [Wed, 29 Jun 2016 18:34:49 +0000 (19:34 +0100)]
net/thunderx: add missing external dependency
To prevent compile error when compiling for shared library:
nicvf_hw.o: In function `nicvf_qsize_regbit':
nicvf_hw.c:(.text+0xe64): undefined reference to `log2'
nicvf_hw.o: In function `nicvf_rss_reta_update':
nicvf_hw.c:(.text+0x19dd): undefined reference to `log2'
nicvf_hw.o: In function `nicvf_rss_reta_query':
nicvf_hw.c:(.text+0x1acb): undefined reference to `log2'
Fixes:
e438796617dc ("net/thunderx: add PMD skeleton")
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Zhe Tao [Wed, 29 Jun 2016 13:06:03 +0000 (21:06 +0800)]
net/i40e: add floating VEB option
The standard Virtual Ethernet Bridge(VEB) definition in 1Qbg is a bridge
which has an uplink port to the outside world (maybe another bridge), but
a "floating" VEB is a special VEB without an uplink port to the outside.
Instead, traffic can be sent from one VF to another using the floating
VEB - even when the physical link on the NIC port is down.
This patch adds floating VEB options in the devargs for i40e driver.
Using these parameters, applications can decide whether to use legacy
VEB/VEPA or a floating VEB.
To enable this feature, the user should pass a devargs parameter to the
EAL, for example "-w 84:00.0,enable_floating_veb=1", to control whether
the PMD will to use the floating VEB feature or not.
Once the floating VEB feature is enabled, all the VFs created by
this PF device are connected to the floating VEB.
NOTE: The floating VEB functionality requires a NIC firmware version
of 5.0 or greater.
Signed-off-by: Zhe Tao <zhe.tao@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Zhe Tao [Wed, 29 Jun 2016 13:06:02 +0000 (21:06 +0800)]
net/i40e: support floating VEB
The standard Virtual Ethernet Bridge(VEB) definition in 1Qbg is a bridge
which has an uplink port to the outside world (maybe another bridge),
but a "floating" VEB is a special VEB without an uplink port to the
outside. Instead, traffic can be sent from one VF to another using the
floating VEB - even when the physical link on the NIC port is down.
VFs VSIs connect either to the standard VEB/VEPA or to the floating VEB,
they cannot connect to both of them. The PF, VMDQ and FD VSIs still
connect to the normal VEB/VEPA.
Signed-off-by: Zhe Tao <zhe.tao@intel.com>
Nelson Escobar [Tue, 28 Jun 2016 18:49:11 +0000 (11:49 -0700)]
net/enic: fix Rx scatter with multiple queues
The Rx scatter patch failed to make a few changes and resulted in
problems when using multiple receive queues (RQs) in DPDK (ie RSS)
since the wrong adapter resources were being used.
- get and use the correct completion queue index associated with a
receive queue.
- set the correct receive queue index when using RSS
Fixes:
856d7ba7ed22 ("net/enic: support scattered Rx")
Signed-off-by: Nelson Escobar <neescoba@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
Jerin Jacob [Mon, 27 Jun 2016 16:16:06 +0000 (21:46 +0530)]
net/thunderx: fix build with clang
Fix the following error with clang
error: unused function 'nicvf_mbox_msg_str'
The function nicvf_mbox_msg_str() may be unused, based on DEBUG
compilation option selected. Mark __attribute__((unused)) on
this function, to inform compiler that this function may be unused
Fixes:
966e225c2396 ("net/thunderx/base: add mailbox for PF/VF communication")
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Reported-by: Ferruh Yigit <ferruh.yigit@intel.com>
Jerin Jacob [Mon, 27 Jun 2016 16:16:05 +0000 (21:46 +0530)]
net/thunderx: fix build flags with clang
'fno-prefetch-loop-arrays' optimization flag is not supported with clang,
so use it only when compiling with gcc.
Fixes:
1c421f18e095 ("net/thunderx: add single and multi-segment Tx")
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Reported-by: Ferruh Yigit <ferruh.yigit@intel.com>
Aaron Campbell [Mon, 27 Jun 2016 15:46:25 +0000 (12:46 -0300)]
net/igb: support setting link up or down
Add driver functions to set link state up or down.
Signed-off-by: Aaron Campbell <aaron@arbor.net>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>