Bruce Richardson [Fri, 3 Oct 2014 15:36:50 +0000 (16:36 +0100)]
mbuf: group Tx flags near end of field
This patch takes the existing TX flags defined for the mbuf and shifts
each uniquely defined one left so that additional RX flags can be
defined without having RX and TX flags mixed together. Under the new
scheme, RX flags start at bit 0 and work left, TX flags start at bit 55
and work right, and bits 56-63 are reserved for generic mbuf use, not
for offloads.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Bruce Richardson [Tue, 23 Sep 2014 11:08:15 +0000 (12:08 +0100)]
app/testpmd: change rxfreet default to 32
To improve performance by using bulk alloc or vectored RX routines, we
need to set rx free threshold (rxfreet) value to 32, so make this the
testpmd default.
Thirty-two is the minimum setting needed to enable either the
bulk alloc or vector RX routines inside the ixgbe driver, so it's
best made the default for that reason. Please see
"check_rx_burst_bulk_alloc_preconditions()" in ixgbe_rxtx.c, and
RX function assignment logic in "ixgbe_dev_rx_queue_setup()" in
the same file.
The difference in IO performance for testpmd when called without any
optional parameters, and using 10G NICs using the ixgbe driver, can be
significant - approx 25% or more.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Bruce Richardson [Tue, 23 Sep 2014 11:08:14 +0000 (12:08 +0100)]
ixgbe: add prefetch to improve slow-path tx perf
Make a small improvement to slow path TX performance by adding in a
prefetch for the second mbuf cache line.
Also move assignment of l2/l3 length values only when needed.
What I've done with the prefetches is two-fold:
1) changed it from prefetching the mbuf (first cache line) to prefetching
the mbuf pool pointer (second cache line) so that when we go to access
the pool pointer to free transmitted mbufs we don't get a cache miss. When
clearing the ring and freeing mbufs, the pool pointer is the only mbuf
field used, so we don't need that first cache line.
2) changed the code to prefetch earlier - in effect to prefetch one mbuf
ahead. The original code prefetched the mbuf to be freed as soon as it
started processing the mbuf to replace it. Instead now, every time we
calculate what the next mbuf position is going to be we prefetch the mbuf
in that position (i.e. the mbuf pool pointer we are going to free the mbuf
to), even while we are still updating the previous mbuf slot on the ring.
This gives the prefetch much more time to resolve and get the data we need
in the cache before we need it.
In terms of performance difference, a quick sanity test using testpmd
on a Xeon (Sandy Bridge uarch) platform showed performance increases
between approx 8-18%, depending on the particular RX path used in
conjuntion with this TX path code.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Bruce Richardson [Tue, 23 Sep 2014 11:08:17 +0000 (12:08 +0100)]
mbuf: switch vlan_tci and reserved2 fields
Move the vlan_tci field up by two bytes in the mbuf data structure. This
has two effects:
* Ensures the the ixgbe vector driver places the vlan tag in the correct
place in the mbuf.
* Allows a second vlan tag field, if one is added in the future, to be
placed after the existing vlan field, rather than before.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Bruce Richardson [Tue, 23 Sep 2014 11:08:16 +0000 (12:08 +0100)]
mbuf: add userdata pointer field
While some applications may store metadata about packets in the packet
mbuf headroom, this is not a workable solution for packet metadata which
is either:
* larger than the headroom (or headroom is needed for adding pkt headers)
* needs to be shared or copied among packets
To support these use cases in applications, we reserve a general
"userdata" pointer field inside the second cache-line of the mbuf. This
is better than having the application store the pointer to the external
metadata in the packet headroom, as it saves an additional cache-line
from being used.
Apart from storing metadata, this field also provides a general 8-byte
scratch space inside the mbuf for any other application uses that are
applicable.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Bruce Richardson [Tue, 23 Sep 2014 11:08:13 +0000 (12:08 +0100)]
mbuf: ensure next pointer is set to null on free
The receive functions for packets do not modify the next pointer so
the next pointer should always be cleared on mbuf free, just in case.
The slow-path TX needs to clear it, and the standard mbuf free function
also needs to clear it. Fast path TX does not handle chained mbufs so
is unaffected
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:38 +0000 (15:21 +0800)]
i40e/base: fix arq_event_info struct
Overloading the 'msg_size' field in the 'arq_event_info' struct
is a bad idea. It leads to bugs when the structure is used in a
loop, since the input value (buffer size) is overwritten by the
output value (actual message length). The fix introduces one
more field of 'buf_len' for the buffer size, and renames the
field of 'msg_size' to 'msg_len' for the real message size.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:35 +0000 (15:21 +0800)]
i40e/base: debug write register request
The firmware api request of writes to hardware registers should be
exposed to driver. The new API of 'i40e_aq_debug_write_register'
is introduced for that.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:34 +0000 (15:21 +0800)]
i40e/base: support 10G base T
10G base T type support is added.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:37 +0000 (15:21 +0800)]
i40e/base: get link status to report flow control settings
The fix is to use get_link_status but not get_phy_capabilities
for reporting FC settings.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:36 +0000 (15:21 +0800)]
i40e/base: workaround for firmware version
The workaround helps fix the API if the FW is 4.2 or later.
In addition, an unreachable 'break' statement has been removed.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:31 +0000 (15:21 +0800)]
i40e/base: get rid of sparse warnings
There are variables that represent values in little endian.
Adding prefix of '__Le' can remove warnings during sparse
checks. In addition, remove some unreachable 'break' statements,
and add 'UL' on a couple of constants.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:29 +0000 (15:21 +0800)]
i40e/base: force a shifted bit to be unsigned
Force a shifted '1' to be 'unsigned' to avoid shifting a signed int.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:33 +0000 (15:21 +0800)]
i40e/base: remove code for TPH
The code wrapped in '#ifdef I40E_TPH_SUPPORT' was added
to check if 'TPH' (TLP Processing Hints) is supported, and enable it.
It is not used currently and can be removed.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:32 +0000 (15:21 +0800)]
i40e/base: remove code for software validation only
The code wrapped in '#ifdef I40E_DCB_SW' is currently for software
validation only, it should be removed at all.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:30 +0000 (15:21 +0800)]
i40e/base: remove useless code for pre-boot
The code wrapped in '#ifdef PREBOOT_SUPPORT' was added for
queue context initialization specifically for A0 silicon.
As A0 silicon has gone for a long time, the code should be
removed at all. In addition, the checks of 'QV_RELEASE'
and 'PREBOOT_SUPPORT' are also not needed anymore and can
be removed.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:27 +0000 (15:21 +0800)]
i40e/base: remove useless code for Solaris
The code wrapped in '#ifdef DMA_SYNC_SUPPORT' was written specially
for Solaris, it is not needed anymore for others including DPDK.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:28 +0000 (15:21 +0800)]
i40e/base: remove test code for ethtool
The code wrapped in '#ifdef ETHTOOL_TEST' in i40e_diag.c is for
ethtool testing only, it is not needed anymore and can be removed.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:26 +0000 (15:21 +0800)]
i40e/base: support nvmupdate by default
'nvmupdate' is intended to support the userland NVMUpdate tool for
Fortville eeprom. These code changes is to remove the conditional
compile macro, and support those by default. In addition, renaming
all 'errno' to avoid any compile warning or error.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Helin Zhang [Tue, 9 Sep 2014 07:21:25 +0000 (15:21 +0800)]
i40e/base: make the indentation more consistent
In share code, 'tab' is used to align values rather than 'space'.
The changes in i40e_adminq_cmd.h is to make the indentation more
consistent in share code.
Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Chen Jing <jing.d.chen@intel.com>
Tested-by: HuilongX Xu <huilongx.xu@intel.com>
Ouyang Changchun [Mon, 29 Sep 2014 07:16:26 +0000 (15:16 +0800)]
ixgbe: support X550
Update device id and PF driver to support X550.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Ouyang Changchun [Mon, 29 Sep 2014 07:16:25 +0000 (15:16 +0800)]
ixgbe/base: support X550
Add new file to support controller X550, therefore update the Makefile
and README file. It also updates the API functions, DCB related functions,
mailbox related functions, etc to support X550.
In addition, some new macros used by X550 are added.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: merge dependent patches]
Ouyang Changchun [Tue, 7 Oct 2014 08:11:12 +0000 (10:11 +0200)]
ixgbe/base: i2c combined read/write
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Ouyang Changchun [Tue, 7 Oct 2014 12:49:03 +0000 (14:49 +0200)]
ixgbe/base: malicious driver detection
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Tue, 7 Oct 2014 12:47:41 +0000 (14:47 +0200)]
ixgbe/base: iosf sideband read/write
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Tue, 7 Oct 2014 12:45:16 +0000 (14:45 +0200)]
ixgbe/base: anti spoofing
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Tue, 7 Oct 2014 12:43:35 +0000 (14:43 +0200)]
ixgbe/base: source address pruning
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Tue, 7 Oct 2014 12:42:01 +0000 (14:42 +0200)]
ixgbe/base: support EEE
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Tue, 7 Oct 2014 12:39:24 +0000 (14:39 +0200)]
ixgbe/base: dma coalescing
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Tue, 7 Oct 2014 12:31:21 +0000 (14:31 +0200)]
ixgbe/base: thermal sensor
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Mon, 29 Sep 2014 07:16:12 +0000 (15:16 +0800)]
ixgbe/base: fdir cloud mode
Supports flow director cloud mode in IXGBE base code.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Ouyang Changchun [Mon, 29 Sep 2014 07:16:23 +0000 (15:16 +0800)]
ixgbe/base: reset VF registers
Reset VF registers to initial values in IXGBE base code.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Ouyang Changchun [Tue, 7 Oct 2014 07:53:52 +0000 (09:53 +0200)]
ixgbe/base: clean phy sfp handling
Remove 10GBASE_ER support.
Always support 1000BASE_LX.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Fri, 3 Oct 2014 18:48:20 +0000 (20:48 +0200)]
ixgbe/base: support qsfp and lco
- Implement functions to do I2C byte read and write
- Support 82599_QSFP_SF_QP and 82599_LS
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Fri, 3 Oct 2014 18:40:49 +0000 (20:40 +0200)]
ixgbe/base: move phy sfp detection in a function
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Mon, 29 Sep 2014 07:16:21 +0000 (15:16 +0800)]
ixgbe/base: rework semaphore
- Store lan_id and physical semaphore mask into hardware physical information,
and use them to control read and write physical registers in IXGBE base code.
- Extend mask from 16 bits to 32 bits for releasing or acquiring SWFW semaphore
in IXGBE base code. It is used in reading and writing I2C byte.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: merge dependent patches]
Ouyang Changchun [Mon, 29 Sep 2014 07:16:22 +0000 (15:16 +0800)]
ixgbe/base: remove unnecessary delay
Remove unnecessary delay when setting up physical link and negotiating
in IXGBE base code.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Ouyang Changchun [Mon, 29 Sep 2014 07:16:18 +0000 (15:16 +0800)]
ixgbe/base: wait longer while polling X540 flash update
It need wait for 5 ms for polling EEC register in IXGBE X540 base code.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Ouyang Changchun [Tue, 7 Oct 2014 08:12:14 +0000 (10:12 +0200)]
ixgbe/base: wait longer for VF link status
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Tue, 7 Oct 2014 08:12:04 +0000 (10:12 +0200)]
ixgbe/base: fix flow control comment
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Mon, 29 Sep 2014 07:16:14 +0000 (15:16 +0800)]
ixgbe/base: refactor manageability block communication
Introduce a new argument to let caller determine if it need read and
return data or not after executing host interface command in IXGBE base code.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Ouyang Changchun [Mon, 29 Sep 2014 07:16:13 +0000 (15:16 +0800)]
ixgbe/base: refactor eeprom checksum calculation
Refines function to let eeprom checksum calculation return
either a negative error code on error, or the 16-bit checksum
in IXGBE base code.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Ouyang Changchun [Mon, 29 Sep 2014 07:16:11 +0000 (15:16 +0800)]
ixgbe/base: factorize fdir command complete check
Implements a function to check command complete for flow director in
IXGBE base code, and replaces related code snippet with this function.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Ouyang Changchun [Fri, 3 Oct 2014 13:17:36 +0000 (15:17 +0200)]
ixgbe/base: move manageability function
Manageability query is a common routine (not specific to 82599).
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
[Thomas: split patch]
Ouyang Changchun [Mon, 29 Sep 2014 07:16:19 +0000 (15:16 +0800)]
ixgbe/base: new error types
This patch defines new error type in IXGBE base code; they are
used to report different kinds of error.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Ouyang Changchun [Mon, 29 Sep 2014 07:16:10 +0000 (15:16 +0800)]
ixgbe/base: various clean up
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Ouyang Changchun [Mon, 29 Sep 2014 07:16:09 +0000 (15:16 +0800)]
ixgbe/base: minor changes
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Damjan Marion [Thu, 11 Sep 2014 22:25:08 +0000 (15:25 -0700)]
virtio: fix crash if VIRTIO_NET_F_CTRL_VQ is not negotiated
If VIRTIO_NET_F_CTRL_VQ is not negotiated hw->cvq will be NULL
Signed-off-by: Damjan Marion <damarion@cisco.com>
Acked-by: Changchun Ouyang <Changchun.ouyang@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Daniel Mrzyglod [Tue, 30 Sep 2014 12:10:25 +0000 (13:10 +0100)]
kni: fix build on Ubuntu 12.04.5
Recent Ubuntu 12.04.5 LTS is shipped with 3.13.0-36.63 as the only
supported kernel.
So skb_set_hash has been backported and is conflicting with kni kcompat one.
Commit
a09b359daca ("fix build on Ubuntu 14.04") describes the initial problem.
Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
[Thomas: reorder conditions to ease reading]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Bruce Richardson [Tue, 30 Sep 2014 09:40:08 +0000 (10:40 +0100)]
ixgbe: fix build with clang
Clang fails with an error about a variable being used uninitialized:
lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:67:30:
error: variable 'dma_addr0' is uninitialized
when used here [-Werror,-Wuninitialized]
dma_addr0 = _mm_xor_si128(dma_addr0, dma_addr0);
^~~~~~~~~
This error can be fixed by replacing the call to xor which
takes two parameters, by a call to setzero, which does not take any.
Reported-by: Keith Wiles <keith.wiles@windriver.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Mon, 29 Sep 2014 20:03:21 +0000 (22:03 +0200)]
version: 1.8.0-rc1
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Ouyang Changchun [Fri, 26 Sep 2014 05:00:53 +0000 (13:00 +0800)]
ethdev: rename flag for queue start and stop
Rename start_?x_per_q to ?x_deferred_start
and add comments.
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Wed, 17 Sep 2014 16:11:12 +0000 (18:11 +0200)]
doc: apply one comment to all members of a group
A doxygen group begins with /**@{*/ and ends with /**@}*/.
By enabling DISTRIBUTE_GROUP_DOC, the first comment is applied
to each undocumented member of the group.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Saori Usami [Fri, 5 Sep 2014 10:10:36 +0000 (19:10 +0900)]
pcap: set port id in received mbuf
The port parameter in mbuf should be set with an input port id
because DPDK apps may use it to know where each packet came from.
Signed-off-by: Saori Usami <susami@igel.co.jp>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Fri, 26 Sep 2014 15:46:38 +0000 (17:46 +0200)]
pci: remove flag for multiple devices with single id
The flag RTE_PCI_DRV_MULTIPLE was used to register an eth_driver allowing
multiples devices with a single PCI id.
It is now possible to register a pci_driver and create ethdev objects
using rte_eth_dev_allocate().
Suggested-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Fri, 26 Sep 2014 14:13:37 +0000 (16:13 +0200)]
eal: remove rte_snprintf
The function rte_snprintf() was deprecated in version 1.7.0
(commit
6f41fe75e2dd).
It's now totally removed.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
David Marchand [Tue, 26 Aug 2014 14:11:40 +0000 (16:11 +0200)]
eal: remove unused flags field
This field is not used anymore, remove it.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
David Marchand [Tue, 26 Aug 2014 14:11:39 +0000 (16:11 +0200)]
eal: set iopl only when needed
There is no need for ioport access for applications that won't use virtio pmds.
Make rte_eal_iopl_init() non-static so that it is called from pmds that need it.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Huawei Xie <huawei.xie@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
David Marchand [Tue, 26 Aug 2014 14:11:38 +0000 (16:11 +0200)]
eal/bsd: fix fd leak
From man(4) io:
"The initial implementation simply raised the IOPL of the current thread
when open(2) was called on the device. This behaviour is retained in the
current implementation as legacy support for both i386 and amd64."
http://www.freebsd.org/cgi/man.cgi?query=io&sektion=4
Nothing prevents from closing it just after.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Fri, 26 Sep 2014 11:42:51 +0000 (13:42 +0200)]
examples: do not probe pci twice
Since commit
a155d430119 ("support link bonding device initialization"),
rte_eal_pci_probe() is called in rte_eal_init().
So it doesn't have to be called by application anymore.
It has been fixed for testpmd in commit
2950a769315,
and this patch remove it from other applications.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
David Marchand [Tue, 26 Aug 2014 14:12:17 +0000 (16:12 +0200)]
eal: revert link bonding specific initialization
Revert commit
a155d430119 ("support link bonding device initialization"),
except PCI probing at rte_eal_init time.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
[Thomas: merge revert with PCI probing restore]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
David Marchand [Tue, 26 Aug 2014 14:12:16 +0000 (16:12 +0200)]
bond: move param parsing in configure step
Rework bond pmd initialisation so that we don't need to modify eal
for this pmd to work.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Fri, 26 Sep 2014 12:36:05 +0000 (14:36 +0200)]
ixgbe: allow unsupported SFP
No need to restrict usage of non Intel SFP.
If (hw->phy.type == ixgbe_phy_sfp_intel) is false,
a warning will be logged.
It was disabled for ixgbe and enabled but unused for i40e.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Balazs Nemeth [Fri, 26 Sep 2014 09:57:20 +0000 (09:57 +0000)]
ixgbe: fix crash caused by bulk allocation failure
Since the introduction of vector PMD, a bug in ixgbe_rxq_rearm could
cause a crash. As long as the memory pool allocated to the RX queue
has mbufs available, there is no problem. After allocation of _all_
mbufs from the memory pool, previously returned mbufs by
rte_eth_rx_burst could be accessed by subsequent calls to the PMD and
could be returned by subsequent calls to rte_eth_rx_burst. From the
perspective of the application, the means that fields within the mbuf
could change and that previously allocated mbufs could appear multiple
times.
After failure of mbuf allocation, the dd bits should indicate that the
packets are not ready. For this, this patch adds code to reset the dd
bits in the first RTE_IXGBE_DESCS_PER_LOOP packets of the next
RTE_IXGBE_RXQ_REARM_THRESH packets only if the next
RTE_IXGBE_RXQ_REARM_THRESH packets that will be accessed contain
previously allocated packets.
Setting the bits is not enough. The bits are checked _after_ setting
the mbuf fields, thus a mechanism is needed to prevent the previously
used mbuf pointers from being accessed during the speculative load of
the mbuf fields. For this reason, not only the dd bits are reset, but
also the mbufs associated to those descriptors are set to point to a
"fake" mbuf.
Signed-off-by: Balazs Nemeth <balazs.nemeth@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Pawel Wodkowski [Wed, 20 Aug 2014 07:46:28 +0000 (08:46 +0100)]
ixgbe: fix id and hash with flow director
When Flow Director was used together with bulk alloc, id and hash
was swapped when packet matches flow director filter due to improper
fdir field initialization.
Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-by: Helin Zhang <helin.zhang@intel.com>
Reviewed-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
[Thomas: merged with mbuf changes]
Sergey Mironov [Thu, 4 Sep 2014 08:35:11 +0000 (12:35 +0400)]
igb: fix i211 support
igb_ethdev.c contains function eth_igb_infos_get() which should set
number of tx/rx queues supported by the hardware. It contains huge
[switch] but there is no i211 case!
Also, there are few other places which mention i210, but not mention i211.
I didn't check it enough to say it is totally correct.
For now I see that it just able to send and receive some packets.
Signed-off-by: Sergey Mironov <grrwlf@gmail.com>
Reviewed-by: Helin Zhang <helin.zhang@intel.com>
[Thomas: fix indent]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Olivier Matz [Wed, 23 Jul 2014 12:28:54 +0000 (14:28 +0200)]
app/testpmd: new command to get extended statistics
Add a new token in "show port" command to dump the extended statistics
of a device. It validates the new xstats framework added in previous commit.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Olivier Matz [Wed, 23 Jul 2014 12:28:53 +0000 (14:28 +0200)]
ethdev: new method to retrieve extended statistics
This method can be implemented by a poll mode driver to provide
non-standard statistics (which are not part of the generic statistics
structure). Each statistic is returned in a generic form: "name" and
"value" and can be used to dump PMD-specific statistics in the same way
than ethtool in linux kernel.
If the PMD does not provide the xstats_get and xstats_set functions, the
ethdev API will return the generic statistics in the xstats format
(name, value).
This commit opens the door for a clean-up of the generic statistics
structure, only keeping statistics that are really common to all PMDs
and moving specific ones into the xstats API.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
[Thomas: fix some comments]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Bruce Richardson [Wed, 3 Sep 2014 11:18:40 +0000 (12:18 +0100)]
kni: remove useless file for bsd
KNI applies only to linux, so there should be no need for any kni files to
be present in the bsdapp eal folder.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
David Marchand [Mon, 22 Sep 2014 08:38:01 +0000 (10:38 +0200)]
eal: indent files
Indent files modified in previous commit.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
David Marchand [Mon, 22 Sep 2014 08:38:00 +0000 (10:38 +0200)]
eal: rework long options parsing
Identify all options through the getopt_long return value.
This way, we only need a big switch/case.
Indentation is broken to ease commit review (fixed in next commit).
Suggested-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
David Marchand [Mon, 22 Sep 2014 08:37:59 +0000 (10:37 +0200)]
eal: merge bsd and linux common options parsing
All common options are now in a single file.
Common usage() has been moved as well.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
David Marchand [Mon, 22 Sep 2014 08:37:58 +0000 (10:37 +0200)]
eal: fix checkpatch issues before moving code
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
David Marchand [Mon, 22 Sep 2014 08:37:57 +0000 (10:37 +0200)]
eal: remove duplicate handling of white/black list
We can handle both short and long options for those in the same case.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
David Marchand [Mon, 22 Sep 2014 08:37:56 +0000 (10:37 +0200)]
eal: factorise unsupported option handling
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
David Marchand [Mon, 22 Sep 2014 08:37:55 +0000 (10:37 +0200)]
eal: remove unused --use-device option
Following commit
cac6d08c8bde and
4bf3fe634a4
(replace --use-device option by --pci-whitelist and --vdev),
this option is not available anymore.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
David Marchand [Wed, 17 Sep 2014 13:46:52 +0000 (15:46 +0200)]
eal: set log level from command line
Add a --log-level option to set the default eal log level.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:51 +0000 (15:46 +0200)]
e1000: add a message when forcing scatter mode
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:50 +0000 (15:46 +0200)]
e1000: always log init messages
'init' messages should always be logged and filtered at runtime by rte_log.
All the more so as these messages are not in the datapath.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:49 +0000 (15:46 +0200)]
e1000: clean log messages
- remove leading \n in some messages,
- remove trailing \n in some messages,
- split multi lines messages,
- introduce PMD_INIT_FUNC_TRACE macro and use it instead of
PMD_INIT_LOG(DEBUG, "some_func")
Signed-off-by: David Marchand <david.marchand@6wind.com>
Reviewed-by: Jay Rolette <rolette@infiniteio.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:48 +0000 (15:46 +0200)]
e1000: indent logs sections
Prepare for next commit, indent sections where log messages will be modified so
that next patch is only about \n.
Signed-off-by: David Marchand <david.marchand@6wind.com>
David Marchand [Wed, 17 Sep 2014 13:46:47 +0000 (15:46 +0200)]
e1000/base: add a raw log macro
Since base driver always add a trailing \n, add a PMD_DRV_LOG_RAW macro that
will not add one.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:46 +0000 (15:46 +0200)]
e1000: use the right debug macro
- We should not use DEBUGOUT* / DEBUGFUNC macros in pmd.
These macros come as compat wrappers for base driver.
- We should avoid calling RTE_LOG directly as pmd provides a wrapper for logs.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Reviewed-by: Jay Rolette <rolette@infiniteio.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:45 +0000 (15:46 +0200)]
i40e: add log messages when rx bulk mode is not usable
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:44 +0000 (15:46 +0200)]
i40e: always log init messages
'init' messages should always be logged and filtered at runtime by rte_log.
All the more so as these messages are not in the datapath.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:43 +0000 (15:46 +0200)]
i40e: clean log messages
- remove leading \n in some messages,
- remove trailing \n in some messages,
- split multi lines messages.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Reviewed-by: Jay Rolette <rolette@infiniteio.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:42 +0000 (15:46 +0200)]
i40e: indent logs sections
Prepare for next commit, indent sections where log messages will be modified so
that next patch is only about \n.
Signed-off-by: David Marchand <david.marchand@6wind.com>
David Marchand [Wed, 17 Sep 2014 13:46:41 +0000 (15:46 +0200)]
i40e/base: add a raw log macro
Since base driver always add a trailing \n, add a PMD_DRV_LOG_RAW macro that
will not add one.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:40 +0000 (15:46 +0200)]
i40e: use the right debug macro
- Don't use DEBUGFUNC macro in pmd.
- Don't use printf for logs.
- We should avoid calling RTE_LOG directly as pmd provides a wrapper for logs.
- Replace some PMD_INIT_LOG(DEBUG, "some_func") with PMD_INIT_FUNC_TRACE().
Signed-off-by: David Marchand <david.marchand@6wind.com>
Reviewed-by: Jay Rolette <rolette@infiniteio.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:39 +0000 (15:46 +0200)]
ixgbe: add log messages when rx bulk mode is not usable
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:38 +0000 (15:46 +0200)]
ixgbe: add a message when forcing scatter mode
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:37 +0000 (15:46 +0200)]
ixgbe: always log init messages
'init' messages should always be logged and filtered at runtime by rte_log.
All the more so as these messages are not in the datapath.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:36 +0000 (15:46 +0200)]
ixgbe: clean log messages
- remove leading \n in some messages,
- remove trailing \n in some messages,
- split multi lines messages.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Reviewed-by: Jay Rolette <rolette@infiniteio.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:35 +0000 (15:46 +0200)]
ixgbe: indent logs sections
Prepare for next commit, indent sections where log messages will be modified so
that next patch is only about \n.
Signed-off-by: David Marchand <david.marchand@6wind.com>
[Thomas: fix also some missing whitespaces]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
David Marchand [Wed, 17 Sep 2014 13:46:34 +0000 (15:46 +0200)]
ixgbe/base: add a raw log macro
Since base driver always add a trailing \n, add a PMD_DRV_LOG_RAW macro that
will not add one.
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Wed, 17 Sep 2014 13:46:33 +0000 (15:46 +0200)]
ixgbe: use the right debug macro
- We should not use DEBUGOUT*/DEBUGFUNC macros in pmd code.
These macros come as compat wrappers for base driver.
- We should avoid calling RTE_LOG directly as pmd provides a wrapper for logs.
- Replace some PMD_INIT_LOG(DEBUG, "some_func") with PMD_INIT_FUNC_TRACE().
Signed-off-by: David Marchand <david.marchand@6wind.com>
Reviewed-by: Jay Rolette <rolette@infiniteio.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Matthew Hall [Sun, 14 Sep 2014 08:34:46 +0000 (01:34 -0700)]
log: add function to retrieve log level
It is helpful when you want outside code to cooperate with and respect
log levels set in DPDK. Then you can avoid using duplicate incompatible
log code in the DPDK and non-DPDK parts of the app.
Signed-off-by: Matthew Hall <mhall@mhcomputing.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
[Thomas: add void to fix function signature]
Bruce Richardson [Thu, 18 Sep 2014 10:55:52 +0000 (11:55 +0100)]
ixgbe: fix build with gcc 4.4
The refcnt field is contained within an anonymous union within the mbuf
data structure, and gcc 4.4 gives an error about an unknown field unless
the initialiser for the field is contained within extra braces.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Bruce Richardson [Thu, 11 Sep 2014 13:15:47 +0000 (14:15 +0100)]
ixgbe: improve slow-path perf with vector scattered Rx
Provide a wrapper routine to enable receive of scattered packets with a
vector driver. This improves the performance of the slow-path RX.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Bruce Richardson [Mon, 15 Sep 2014 16:20:13 +0000 (17:20 +0100)]
ixgbe: fix perf regression due to moved pool ptr
Adjust the fast-path code to fix the regression caused by the pool
pointer moving to the second cache line. This change adjusts the
prefetching and also the way in which the mbufs are freed back to the
mempool.
Note: slow-path e.g. path supporting jumbo frames, is still slower, but
is dealt with by a later commit
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>