dpdk.git
6 years agonet/mlx5: change pkt burst select function prototype
Shahaf Shuler [Wed, 10 Jan 2018 09:16:57 +0000 (11:16 +0200)]
net/mlx5: change pkt burst select function prototype

Change the function prototype to return the function pointer of the
selected Tx/Rx burst function instead of assigning it directly to the
device context.

Such change will enable to use those select functions to query the burst
function that will be selected according to the device configuration.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
6 years agonet/mlx5: fix overwriting bit-fields in SW Rx queue
Yongseok Koh [Tue, 9 Jan 2018 17:38:50 +0000 (09:38 -0800)]
net/mlx5: fix overwriting bit-fields in SW Rx queue

Bit-fields in mlx5_rxq_data can be changed on the fly by a control plane -
e.g. rxq->mark. However, vectorized Rx uses a bit-field to mark pending
errors. Even if one bit is written, consequence is to write the whole
integer and this can cause a synchronization issue - two entities write to
a same block without locking. As the pending_err bit is entirely internal
use for the datapath, this can be replaced with a local variable.

Fixes: 6cb559d67b83 ("net/mlx5: add vectorized Rx/Tx burst for x86")
Fixes: 570acdb1da8a ("net/mlx5: add vectorized Rx/Tx burst for ARM")
Cc: stable@dpdk.org
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
6 years agonet/mlx4: verify Tx max sges
Moti Haimovsky [Thu, 4 Jan 2018 16:12:03 +0000 (18:12 +0200)]
net/mlx4: verify Tx max sges

Max number of Tx scatter-gather entries is a property of the device
and is queried at init. This value was not changed in a while and
most probably will not be changed in the future, Therefore and
in order to enhance Tx performance, the Tx max-sge value is hardcoded
in mlx4 PRM code.
This patch adds a verification that the above assumption still holds
and that the hardcoded value is still supported by the mlx4 hardware.

Signed-off-by: Moti Haimovsky <motih@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
6 years agodoc: describe raw mode of FDIR in testpmd
Kirill Rybalchenko [Thu, 23 Nov 2017 16:15:01 +0000 (16:15 +0000)]
doc: describe raw mode of FDIR in testpmd

Add description of raw flow type mode for flow_director_filter
command in testpmd. Modify description of flow type parameter
for functions set_hash_global_config, set_hash_input_set and
set_fdir_input_set.

Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agoapp/testpmd: add raw flow type mode for FDIR
Kirill Rybalchenko [Thu, 23 Nov 2017 16:15:00 +0000 (16:15 +0000)]
app/testpmd: add raw flow type mode for FDIR

Add possibility to load file with raw packet and set it as a
template for FDIR setup.

Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/i40e: fix VSI MAC filter on primary address change
Olivier Matz [Wed, 3 Jan 2018 14:29:23 +0000 (15:29 +0100)]
net/i40e: fix VSI MAC filter on primary address change

When primary address mac is changed, the mac filters were not updated in
the VSI with the new mac addr and incoming packets with this destination
address are dropped by the hardware filters.

This patch removes the VSI mac filter for the previous mac address and
adds a new one for new mac address.

Fixes: e18e01e92c29 ("i40e: support default MAC address setting")
Cc: stable@dpdk.org
Signed-off-by: Laurent Hardy <laurent.hardy@6wind.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e: add AVX2 Rx function
Bruce Richardson [Tue, 9 Jan 2018 14:32:54 +0000 (14:32 +0000)]
net/i40e: add AVX2 Rx function

Add a new Rx function using AVX2 instructions for higher
performance. For now, this functionality is limited to platforms
with Intel Xeon Scalable Processor(SP). The function to be used
is selected at runtime, not just at compile-time.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
6 years agonet/i40e: add AVX2 Tx function
Bruce Richardson [Tue, 9 Jan 2018 14:32:53 +0000 (14:32 +0000)]
net/i40e: add AVX2 Tx function

Add a new Tx function using AVX2 instructions for higher
performance. For now, this functionality is limited to platforms
with Intel Xeon Scalable Processor(SP). The function to be used
is selected at runtime, not just at compile-time.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
6 years agonet/ixgbe/base: update README file
Qiming Yang [Wed, 10 Jan 2018 16:04:39 +0000 (00:04 +0800)]
net/ixgbe/base: update README file

Update README file to specify the version of drops.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: add media type of fixed fiber
Qiming Yang [Wed, 10 Jan 2018 16:04:38 +0000 (00:04 +0800)]
net/ixgbe/base: add media type of fixed fiber

This patch adds new media type support of fixed fiber.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: update annotations
Qiming Yang [Wed, 10 Jan 2018 16:04:37 +0000 (00:04 +0800)]
net/ixgbe/base: update annotations

This patch mainly adds/removes comments for function parameters
that were missing or no longer needed.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: clear sync register during init
Qiming Yang [Wed, 10 Jan 2018 16:04:36 +0000 (00:04 +0800)]
net/ixgbe/base: clear sync register during init

This patch clears software resource bits in synchronization
register and updates host interface resource bit error case for
X540. It also fixes compile warnings of using GCC 7.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: use 2 bytes for flash read command
Qiming Yang [Wed, 10 Jan 2018 16:04:35 +0000 (00:04 +0800)]
net/ixgbe/base: use 2 bytes for flash read command

With this patch, it uses 2 bytes of buffer reading, as required
for flash read command. It also adds definitions for LESM module.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: add PHY read and write
Qiming Yang [Wed, 10 Jan 2018 16:04:34 +0000 (00:04 +0800)]
net/ixgbe/base: add PHY read and write

This patch adds lockless read/write support for clause 22 PHY,
together with some enhancements for link speed and return value
handling.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: increase the timeout
Qiming Yang [Wed, 10 Jan 2018 16:04:33 +0000 (00:04 +0800)]
net/ixgbe/base: increase the timeout

Increase SECRX_RDY polling frequency and semaphore timeout which
fixes the FWSW.PT check in ixgbe_mng_present().

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: add functions to get version info
Qiming Yang [Wed, 10 Jan 2018 16:04:32 +0000 (00:04 +0800)]
net/ixgbe/base: add functions to get version info

Add common functions for getting OEM product version, option
ROM version, and ETrack id.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/i40e/base: update base code info
Qi Zhang [Tue, 9 Jan 2018 20:30:22 +0000 (15:30 -0500)]
net/i40e/base: update base code info

Update README file to specify the version of drop.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: rename a field
Qi Zhang [Tue, 9 Jan 2018 20:30:21 +0000 (15:30 -0500)]
net/i40e/base: rename a field

Rename virtchnl_vf_resource's vf_offload_flags to vf_cap_flags.
The new name is more generic, so more than just offloading
capabilities can be added.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: fix unaligned data issue
Qi Zhang [Tue, 9 Jan 2018 20:30:20 +0000 (15:30 -0500)]
net/i40e/base: fix unaligned data issue

This fix prevents errors or warnings while accessing unaligned 32-bit
data words on non-x86 platforms during getting link info from firmware.

Fixes: e8228f1a16b7 ("net/i40e/base: report supported link modes")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: fix reading LLDP configuration
Qi Zhang [Tue, 9 Jan 2018 20:30:19 +0000 (15:30 -0500)]
net/i40e/base: fix reading LLDP configuration

Previous method for reading LLDP config was based on hard-coded offsets.
It happened to work, because of structured architecture of the NVM memory.
In the new approach, known as FLAT, we need to calculate the absolute
address, instead of using relative values. Needed defines for memory
location were added.

Fixes: 8db9e2a1b232 ("i40e: base driver")
CC: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: fix compile issue for GCC 6.3
Qi Zhang [Tue, 9 Jan 2018 20:30:18 +0000 (15:30 -0500)]
net/i40e/base: fix compile issue for GCC 6.3

When using GCC 6.3.0 and EXTRA_CFLAGS=-Og, the compiler is not smart
enough to see that when you have an integrated VF that just one of the
if statemets has to be true so that ntu is always set. Fix the way that
the code is for integrated VFs so that the compiler won't complain.

Fixes: 9783eb15eb98 ("i40e/base: wrap the register definitions for PF and VF")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add AQ critical error type
Qi Zhang [Tue, 9 Jan 2018 20:30:17 +0000 (15:30 -0500)]
net/i40e/base: add AQ critical error type

The FW has the ability to return a critical error on every AQ command.
So add the new return type as critical error to sync with firmware.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add rearrange process AQ command
Qi Zhang [Tue, 9 Jan 2018 20:30:16 +0000 (15:30 -0500)]
net/i40e/base: add rearrange process AQ command

Add new AQ command that help to inform software how advanced
rearrangement process is.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: enhance loopback AQ command
Qi Zhang [Tue, 9 Jan 2018 20:30:15 +0000 (15:30 -0500)]
net/i40e/base: enhance loopback AQ command

Enhanced loopback AQ command to allow variety of loopback modes.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add defines for flat NVM
Qi Zhang [Tue, 9 Jan 2018 20:30:14 +0000 (15:30 -0500)]
net/i40e/base: add defines for flat NVM

New control bits were defined for flat NVM structure.
One for pointing which NVM bank is currently used and
one used as indicator of structure type.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: fix link LED blink
Qi Zhang [Tue, 9 Jan 2018 20:30:13 +0000 (15:30 -0500)]
net/i40e/base: fix link LED blink

This fix solves an issue occurring while calling i40e_led_set function
from the driver with "blink" parameter set as TRUE. This call resulted
in Activity LED blinking instead of Link LED, which may lead to errors
in physically identyfying the port, since Activity LED may be blinking
for different reasons aswell.

Fixes: 51b27bc5d898 ("i40e/base: update LED blinking")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: enable AQ event get in NVM update
Qi Zhang [Tue, 9 Jan 2018 20:30:12 +0000 (15:30 -0500)]
net/i40e/base: enable AQ event get in NVM update

This patch adds new I40E_NVMUPD_GET_AQ_EVENT state
to allow retrieval of AdminQ events as a result.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add NVM update preservation flags
Qi Zhang [Tue, 9 Jan 2018 20:30:11 +0000 (15:30 -0500)]
net/i40e/base: add NVM update preservation flags

Add preservation flags support on X722 devices for NVM update AdminQ
function wrapper. Add new parameter and handling to nvm update admin
queue function intended to allow nvmupdate tool to configure the
preservation flags in the AdminQ command.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: clean up
Qi Zhang [Tue, 9 Jan 2018 20:30:10 +0000 (15:30 -0500)]
net/i40e/base: clean up

1. Cleanup logical in __i40e_read_nvm_word and reuse it in
i40e_read_nvm_word.
2. Change couple functions to static so we can remove uncessary function
declarations
3. Cleanup logical in i40e_validate_nvm_checksum.
4. Add more debug information in PF reset
5. correct comments
6. Minor code style fix.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: fix NVM lock
Qi Zhang [Tue, 9 Jan 2018 20:30:09 +0000 (15:30 -0500)]
net/i40e/base: fix NVM lock

NVM lock is only required at below situation:
1. its X722 device or
2. API version >= 1.5
or may have issue at firmware downgrade.

Fixes: c5846a125b26 ("net/i40e/base: fix NVM access interfering")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add AQ command for DCB parameters
Qi Zhang [Tue, 9 Jan 2018 20:30:08 +0000 (15:30 -0500)]
net/i40e/base: add AQ command for DCB parameters

Add new Adminq command i40e_aqc_opc_set_dcb_parameters that
helps to get DCB parameters in data structure i40e_aqc_set_dcb_parameters.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add link speed convert function
Qi Zhang [Tue, 9 Jan 2018 20:30:07 +0000 (15:30 -0500)]
net/i40e/base: add link speed convert function

Introduce a helper function which can convert the AdminQ link speed
definition into a virtchnl definition. This can then be used by host
driver implementations in order to safely convert to the interface
recognized by the virtual functions.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: code refactoring for LED blink
Qi Zhang [Tue, 9 Jan 2018 20:30:06 +0000 (15:30 -0500)]
net/i40e/base: code refactoring for LED blink

Code refactory, wrap repeated code in function.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add macro for 25G device
Qi Zhang [Tue, 9 Jan 2018 20:30:05 +0000 (15:30 -0500)]
net/i40e/base: add macro for 25G device

Add macro to idenfity 25G device by device ID

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add byte swaps in PHY register access
Qi Zhang [Tue, 9 Jan 2018 20:30:04 +0000 (15:30 -0500)]
net/i40e/base: add byte swaps in PHY register access

Add byte swap commandwhen transferring data between memory and firmware
while using PHY register access functions. Endianness also need to be
handled correctly during these swaps.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: retry AQC to overcome IRCRead hangs
Qi Zhang [Tue, 9 Jan 2018 20:30:03 +0000 (15:30 -0500)]
net/i40e/base: retry AQC to overcome IRCRead hangs

When the I2C is busy, the PHY reads are delayed. The firmware will
return EGAIN in these cases with an expectation that the SW will trigger
the reads again. This patch retries the operation for a maximum period
of 500ms.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: release spinlock before function returns
Qi Zhang [Tue, 9 Jan 2018 20:30:02 +0000 (15:30 -0500)]
net/i40e/base: release spinlock before function returns

Fix a bug that adminq spin lock is not be released before function
i40e_nvmupd_command returns.

Fixes: 5a2e46a3e405 ("net/i40e/base: refactor NVM update command processing")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add (Q)SFP module memory access definitions
Qi Zhang [Tue, 9 Jan 2018 20:30:01 +0000 (15:30 -0500)]
net/i40e/base: add (Q)SFP module memory access definitions

Add definations used for accessing and interrupting contents
of (Q)SFP module internal EEPROM memory.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add capability macros
Qi Zhang [Tue, 9 Jan 2018 20:30:00 +0000 (15:30 -0500)]
net/i40e/base: add capability macros

Add capability macros for 25G AOC/ACC PHYS.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add new PHY type
Qi Zhang [Tue, 9 Jan 2018 20:29:59 +0000 (15:29 -0500)]
net/i40e/base: add new PHY type

Add new PHY type I40E_PHY_TYPE_NOT_SUPPORTED_HIGH_TEMP, it will be set
by firmware if device module does not meet the thermal requirements.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agodoc: add DDP in i40e guide
Beilei Xing [Wed, 10 Jan 2018 02:01:55 +0000 (10:01 +0800)]
doc: add DDP in i40e guide

Update i40e.rst to declare DDP support and input set configuration,
as implemented in DPDK 17.11.

Cc: stable@dpdk.org
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
6 years agonet/ixgbe: fix the failure of number of Tx queue check
Yanglong Wu [Wed, 10 Jan 2018 01:51:36 +0000 (09:51 +0800)]
net/ixgbe: fix the failure of number of Tx queue check

Tx_q check fails when the SRIOV is active and tx_q > rx_q. It has
to use the maximum HW queue number for calculation, to get the
right number of queue can be used.

Fixes: 27b609cbd1c6 ("ethdev: move the multi-queue mode check to specific drivers")
Cc: stable@dpdk.org
Signed-off-by: Yanglong Wu <yanglong.wu@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
6 years agonet/i40e: exclude LLDP packet count
Qi Zhang [Mon, 11 Dec 2017 18:09:51 +0000 (13:09 -0500)]
net/i40e: exclude LLDP packet count

When use port stats register to calculate the packet count, LLDP packets
are counted in statistics which is not expected, the patch exclude this
number from total number.

Fixes: 763de290cbd1 ("net/i40e: fix packet count for PF")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e: turn off flexible payload on driver init
Kirill Rybalchenko [Tue, 9 Jan 2018 15:36:54 +0000 (15:36 +0000)]
net/i40e: turn off flexible payload on driver init

Function i40e_GLQF_reg_init() overwrites global register for
flexible payload, forcing extraction of first 16 bytes of
L2/L3/L4 payload to the field vector even if flexible payload
is not used by an application. Such unconditional turn on of
flexible payload effectively disables ability to use outer
IP Destination address for RSS/FDIR for tunnelled packets,
as flexible payload overwrites outer IP destination address
on the field vector.
Now flexible payload turned on only when flow director is
enabled and configured.

Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e: determine number of queues per VF at run time
Wei Dai [Tue, 9 Jan 2018 08:56:07 +0000 (16:56 +0800)]
net/i40e: determine number of queues per VF at run time

Without this patch, the number of queues per i40e VF is set to 4
by CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4 in config/common_base.
It is a fixed value determined at compile time and can't be changed
at run time.
With this patch, the number of queues per i40e VF can be determined
at run time. For example, if the PCI address of an i40e PF is
aaaa:bb.cc, with the EAL parameter -w aaaa:bb.cc,queue-num-per-vf=8,
the number of queues per VF created from this PF is set to 8.
If there is no "queue-num-per-vf" setting in EAL parameters, it uses
the default value of 4. And if the value after the "queue-num-per-vf"
is invalid, it will also use the default value. The valid values can
be 1, 2, 4, 8, or 16.

Signed-off-by: Wei Dai <wei.dai@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
6 years agonet/i40e: change VF default ITR interval
Beilei Xing [Wed, 27 Dec 2017 06:01:49 +0000 (14:01 +0800)]
net/i40e: change VF default ITR interval

Current default ITR interval I40E_QUEUE_ITR_INTERVAL_DEFAULT is
used by both DPDK PF and DPDK VF, but this ITR interval value
will cause lots of interrupts when using VF. This patch modifies
VF default ITR interval to reduce interrupts.
ITR interval can be reconfigured by RTE_LIBRTE_I40E_ITR_INTERVAL
if expecting low latency.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/i40e: fix FDIR rule confiliction issue
Beilei Xing [Thu, 30 Nov 2017 06:36:08 +0000 (14:36 +0800)]
net/i40e: fix FDIR rule confiliction issue

Failed to create two FDIR rules with different vlan id for
the same PCTYPE. Root cause is that wrong hash key length
is used.

Fixes: 4149825bbdb9 ("net/i40e: finish integration FDIR with generic flow API")
Cc: stable@dpdk.org
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
6 years agonet/ixgbe: move RSS to flow API
Wei Zhao [Tue, 9 Jan 2018 06:44:30 +0000 (14:44 +0800)]
net/ixgbe: move RSS to flow API

Rte_flow was defined to include RSS, this patch moves ixgbe
existing RSS to rte_flow. The old RSS configuration is kept
as it was, and can be deprecated in the future.

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Acked-by: Wei Dai <wei.dai@intel.com>
6 years agonet/e1000: move RSS to flow API
Wei Zhao [Tue, 9 Jan 2018 06:44:29 +0000 (14:44 +0800)]
net/e1000: move RSS to flow API

Rte_flow was defined to include RSS, this patch moves igb
existing RSS functionalities into rte_flow. The old RSS
configuration method is kept as it was, and can be deprecated in
the future.

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Acked-by: Wei Dai <wei.dai@intel.com>
6 years agonet/ixgbe: fix parsing FDIR NVGRE issue
Wei Zhao [Fri, 22 Dec 2017 05:45:59 +0000 (13:45 +0800)]
net/ixgbe: fix parsing FDIR NVGRE issue

This patch fixes the issue of mask check in NVGRE parser
for flow API.

Fixes: 11777435c727 ("net/ixgbe: parse flow director filter")
Cc: stable@dpdk.org
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agodoc: add sfc tunnels support to release features
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:44 +0000 (10:46 +0000)]
doc: add sfc tunnels support to release features

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
6 years agonet/sfc: support inner checksum offload on transmit
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:43 +0000 (10:46 +0000)]
net/sfc: support inner checksum offload on transmit

There is no dedicated controls for inner checksum offload on
device/queue level. So, enable together with outer offloads.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
6 years agonet/sfc: correct Rx checksum offloads for tunnel packets
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:42 +0000 (10:46 +0000)]
net/sfc: correct Rx checksum offloads for tunnel packets

In the case of tunnel packet, PKT_RX_{IP,L4}_CSUM_* flags correspond
to inner packet checksums. There is only one flag to indicate bad
external IPv4 header checksum.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
6 years agonet/sfc: support VXLAN and NVGRE packet types classification
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:41 +0000 (10:46 +0000)]
net/sfc: support VXLAN and NVGRE packet types classification

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
6 years agonet/sfc: fix incorrect bitwise ORing of L3/L4 packet types
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:40 +0000 (10:46 +0000)]
net/sfc: fix incorrect bitwise ORing of L3/L4 packet types

Not a bug since value is set only once, but it is still incorrect.

Fixes: 638bddc99faa ("net/sfc: implement EF10 native Rx datapath")
Cc: stable@dpdk.org
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agonet/sfc: support UDP tunnel ports configuration
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:39 +0000 (10:46 +0000)]
net/sfc: support UDP tunnel ports configuration

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
6 years agonet/sfc/base: add API to control UDP tunnel ports
Ivan Malov [Sun, 24 Dec 2017 10:46:38 +0000 (10:46 +0000)]
net/sfc/base: add API to control UDP tunnel ports

HW needs to know which UDP packets should be treated as tunnel
encapsulation to do inner packet recognition, classification and
offloads.

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agonet/sfc/base: allow to request inner classes for Rx packets
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:37 +0000 (10:46 +0000)]
net/sfc/base: allow to request inner classes for Rx packets

If HW/FW supports tunnel encapsulations, Rx event may contain
either inner or outer packet classes. By default outer classes
are requested. Make it possible to request inner classes to
have more information about packet type and allow to interpret
inner frame checksum validation results correctly.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
Reviewed-by: Mark Spender <mspender@solarflare.com>
6 years agonet/sfc/base: add function to create packed stream RxQ
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:36 +0000 (10:46 +0000)]
net/sfc/base: add function to create packed stream RxQ

Encoding packed stream buffer size in RxQ type is not a future-proof
idea taking into account a new RxQ types with extra parameters.
To be consistent make packet stream buffer size a separate parameter.
In order to avoid blowing of the default RxQ create function prototype
add a dedicated function to create packed stream RxQ without not
applicable paramters.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
Reviewed-by: Mark Spender <mspender@solarflare.com>
6 years agonet/sfc/base: control RxQ scatter using flag instead of type
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:35 +0000 (10:46 +0000)]
net/sfc/base: control RxQ scatter using flag instead of type

Rx scatter may be applicable to different Rx queue types.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
Reviewed-by: Mark Spender <mspender@solarflare.com>
6 years agonet/sfc: retry port start to handle MC reboot in the middle
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:34 +0000 (10:46 +0000)]
net/sfc: retry port start to handle MC reboot in the middle

MC reboot may be provoked by the other function which is either
starting in parallel or, for example, reconfiguring UDP tunnel
ports.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
6 years agonet/sfc: handle MC reboot event
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:33 +0000 (10:46 +0000)]
net/sfc: handle MC reboot event

Implement handling of the MC reboot event received on management
event queue or detected by MCDI processing.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
6 years agonet/sfc: do not hold management event queue lock while MCDI
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:32 +0000 (10:46 +0000)]
net/sfc: do not hold management event queue lock while MCDI

MCDI execution may require MCDI proxy handling which involves
management event queue polling. So, it is a bad idea to hold
managment event queue lock when MCDI is executed.

Event queue creation and destruction are MCDI operations.

Fixes: 4650ed44c120 ("net/sfc: support MCDI proxy")
Cc: stable@dpdk.org
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
6 years agonet/sfc: fix label name to be consistent
Andrew Rybchenko [Sun, 24 Dec 2017 10:46:31 +0000 (10:46 +0000)]
net/sfc: fix label name to be consistent

Management event queue is the right name of event queue 0.

Fixes: 3b809c27b1fe ("net/sfc: support link status change interrupt")
Cc: stable@dpdk.org
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
6 years agoevent/octeontx: fix Rx adapter port id mapping
Pavan Nikhilesh [Tue, 19 Dec 2017 18:01:45 +0000 (23:31 +0530)]
event/octeontx: fix Rx adapter port id mapping

When octeontx event dev receives a packet for the event Rx adapter, the
mbuf port id should contain the appropriate ethdev id instead of
internal channel info.

Fixes: 45a914c5bd71 ("event/octeontx: support event Rx adapter")

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
6 years agonet/octeontx: add channel to port id mapping
Pavan Nikhilesh [Tue, 19 Dec 2017 18:01:44 +0000 (23:31 +0530)]
net/octeontx: add channel to port id mapping

The channel to port id map is used by event octeontx to map the received
wqe to the respective ethdev port.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
6 years agodoc: remove unused config options
Pavan Nikhilesh [Tue, 19 Dec 2017 12:25:10 +0000 (17:55 +0530)]
doc: remove unused config options

Remove unused debug config options for thunder nicvf and octeontx as they
are now controlled by dynamic logging.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agoevent/octeontx: implement dynamic logging
Pavan Nikhilesh [Tue, 19 Dec 2017 12:25:09 +0000 (17:55 +0530)]
event/octeontx: implement dynamic logging

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agomempool/octeontx: implement dynamic logging
Pavan Nikhilesh [Tue, 19 Dec 2017 12:25:08 +0000 (17:55 +0530)]
mempool/octeontx: implement dynamic logging

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agonet/octeontx: implement dynamic logging
Pavan Nikhilesh [Tue, 19 Dec 2017 12:25:07 +0000 (17:55 +0530)]
net/octeontx: implement dynamic logging

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agonet/thunderx: implement dynamic logging
Pavan Nikhilesh [Tue, 19 Dec 2017 12:25:06 +0000 (17:55 +0530)]
net/thunderx: implement dynamic logging

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agonet/liquidio: implement dynamic logging
Stephen Hemminger [Tue, 19 Dec 2017 06:38:40 +0000 (22:38 -0800)]
net/liquidio: implement dynamic logging

This driver mostly uses the common pattern. Convert this to the
dynamic logging.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agonet/qede: implement dynamic logging
Stephen Hemminger [Tue, 19 Dec 2017 06:38:39 +0000 (22:38 -0800)]
net/qede: implement dynamic logging

This driver is mostly like others with slightly different logging
macros. The semantics were retained, with some minor reformatting.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agonet/ena: implement dynamic logging
Stephen Hemminger [Tue, 19 Dec 2017 06:38:38 +0000 (22:38 -0800)]
net/ena: implement dynamic logging

Use dynamic rather static configuration for logging.
Also include ena_assert_msg.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agonet/fm10k: implement dynamic logging
Stephen Hemminger [Tue, 19 Dec 2017 06:38:37 +0000 (22:38 -0800)]
net/fm10k: implement dynamic logging

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agonet/nfp: implement dynamic logging
Stephen Hemminger [Tue, 19 Dec 2017 06:38:36 +0000 (22:38 -0800)]
net/nfp: implement dynamic logging

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
v2: remove unsed macro RTE_LIBRTE_NFP_NET_DEBUG_INIT

6 years agonet/virtio: implement dynamic logging
Stephen Hemminger [Tue, 19 Dec 2017 06:38:35 +0000 (22:38 -0800)]
net/virtio: implement dynamic logging

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Tested-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
6 years agonet/e1000: implement dynamic logging
Stephen Hemminger [Tue, 19 Dec 2017 06:38:34 +0000 (22:38 -0800)]
net/e1000: implement dynamic logging

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agonet/ixgbe: implement dynamic logging
Stephen Hemminger [Tue, 19 Dec 2017 06:38:33 +0000 (22:38 -0800)]
net/ixgbe: implement dynamic logging

Convert all drivers possible to dynamic logging.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agonet/vmxnet3: implement dynamic logging
Stephen Hemminger [Tue, 19 Dec 2017 06:38:32 +0000 (22:38 -0800)]
net/vmxnet3: implement dynamic logging

Replace compile time configuration with runtime.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agonet/bnx2x: implement dynamic logging
Stephen Hemminger [Tue, 19 Dec 2017 06:38:31 +0000 (22:38 -0800)]
net/bnx2x: implement dynamic logging

Replace compile time option for init and driver log with
dynamic value.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
v2: remove remaining RTE_LIBRTE_BNX2X_DEBUG usage

6 years agonet/avp: implement dynamic logging
Stephen Hemminger [Tue, 19 Dec 2017 06:38:30 +0000 (22:38 -0800)]
net/avp: implement dynamic logging

All PMD should be using dynamic log levels.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
6 years agonet/tap: renamed netlink functions
Radu Nicolau [Fri, 15 Dec 2017 11:34:37 +0000 (11:34 +0000)]
net/tap: renamed netlink functions

Functions like nl_recev and nl_send name clash functions in the
libnl library (https://www.infradead.org/~tgr/libnl/).
All functions declared in tap_netlink.h were decorated with tap_
for consistency.

Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/octeontx: advertise supported mbuf pool ops
Pavan Nikhilesh [Thu, 14 Dec 2017 08:31:49 +0000 (14:01 +0530)]
net/octeontx: advertise supported mbuf pool ops

Advertise mempool/octeontx as the only supported mempool ops when the
application checks using `rte_eth_dev_pool_ops_supported`.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
6 years agoethdev: optimize xstats by ids APIs
Elza Mathew [Wed, 6 Dec 2017 00:25:07 +0000 (16:25 -0800)]
ethdev: optimize xstats by ids APIs

Introduced a check to detect if the stats IDs being
requested are all basic stats IDs. In that case,
ensured that only the basic stats would be retrieved.

Previously, both basic stats and xstats were being
retrieved even if all the IDs were basic stats IDs.

Signed-off-by: Elza Mathew <elza.mathew@intel.com>
Reviewed-by: Lee Daly <lee.daly@intel.com>
6 years agoethdev: refactor basic stats code
Elza Mathew [Wed, 6 Dec 2017 00:25:06 +0000 (16:25 -0800)]
ethdev: refactor basic stats code

Moved the code to get the basic stats names and values
into static functions.

Signed-off-by: Elza Mathew <elza.mathew@intel.com>
Reviewed-by: Lee Daly <lee.daly@intel.com>
6 years agovhost: destroy unused virtqueues when multiqueue not negotiated
Maxime Coquelin [Wed, 13 Dec 2017 08:51:09 +0000 (09:51 +0100)]
vhost: destroy unused virtqueues when multiqueue not negotiated

QEMU sends VHOST_USER_SET_VRING_CALL requests for all queues
declared in QEMU command line before the guest is started.
It has the effect in DPDK vhost-user backend to allocate vrings
for all queues declared by QEMU.

If the first driver being used does not support multiqueue,
the device never changes to VIRTIO_DEV_RUNNING state as only
the first queue pair is initialized. One driver impacted by
this bug is virtio-net's iPXE driver which does not support
VIRTIO_NET_F_MQ feature.

It is safe to destroy unused virtqueues in SET_FEATURES request
handler, as it is ensured the device is not in running state
at this stage, so virtqueues aren't being processed.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agovhost: extract virtqueue cleaning and freeing functions
Maxime Coquelin [Wed, 13 Dec 2017 08:51:08 +0000 (09:51 +0100)]
vhost: extract virtqueue cleaning and freeing functions

This patch extracts needed code for vhost_user.c to be able
to clean and free virtqueues unitary.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agovhost: propagate set features handling error
Maxime Coquelin [Wed, 13 Dec 2017 08:51:07 +0000 (09:51 +0100)]
vhost: propagate set features handling error

Not propagating VHOST_USER_SET_FEATURES request handling
error may result in unpredictable behavior, as host and
guests features may no more be synchronized.

This patch fixes this by reporting the error to the upper
layer, which would result in the device being destroyed
and the connection with the master to be closed.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agovhost: prevent features to be changed while device is running
Maxime Coquelin [Wed, 13 Dec 2017 08:51:06 +0000 (09:51 +0100)]
vhost: prevent features to be changed while device is running

As section 2.2 of the Virtio spec states about features
negotiation:
"During device initialization, the driver reads this and tells
the device the subset that it accepts. The only way to
renegotiate is to reset the device."

This patch implements a check to prevent illegal features change
while the device is running.

One exception is the VHOST_F_LOG_ALL feature bit, which is enabled
when live-migration is initiated. But this feature is not negotiated
with the Virtio driver, but directly with the Vhost master.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agovhost: support UDP Fragmentation Offload
Jiayu Hu [Tue, 21 Nov 2017 06:56:52 +0000 (14:56 +0800)]
vhost: support UDP Fragmentation Offload

In virtio, UDP Fragmentation Offload (UFO) includes two parts: host UFO
and guest UFO. Guest UFO means the frontend can receive large UDP
packets, and host UFO means the backend can receive large UDP packets.
This patch supports host UFO and guest UFO for vhost-user.

Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Tested-by: Lei Yao <lei.a.yao@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agoexamples/vhost: fix sending ARP packet to self
Junjie Chen [Fri, 29 Dec 2017 14:33:19 +0000 (09:33 -0500)]
examples/vhost: fix sending ARP packet to self

ARP packets are not dropped when dest vdev is itself, which breaks
RX ring inconspicuously.

Fixes: 9c5ef51207c6 ("examples/vhost: handle broadcast packet")
Cc: stable@dpdk.org
Signed-off-by: Junjie Chen <junjie.j.chen@intel.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agovhost: introduce vring call API
Stefan Hajnoczi [Tue, 2 Jan 2018 09:31:36 +0000 (09:31 +0000)]
vhost: introduce vring call API

Users of librte_vhost currently implement the vring call operation
themselves.  Each caller performs the operation slightly differently.

This patch introduces a new librte_vhost API called
rte_vhost_vring_call() that performs the operation so that vhost-user
applications don't have to duplicate it.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agovhost: add vring call helper
Stefan Hajnoczi [Tue, 2 Jan 2018 09:31:35 +0000 (09:31 +0000)]
vhost: add vring call helper

Extract the callfd eventfd signal operation so virtio_net.c does not
have to repeat it multiple times.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agonet/virtio: remove redundant macro definitions for vector Rx
Tiwei Bie [Mon, 11 Dec 2017 05:13:32 +0000 (13:13 +0800)]
net/virtio: remove redundant macro definitions for vector Rx

RTE_VIRTIO_VPMD_RX_BURST and RTE_VIRTIO_VPMD_RX_REARM_THRESH
have been defined and used in virtio_rxtx_simple.h, but are
defined again in virtio_rxtx_simple_*.c. It just happens to
work. So remove the redundant definitions from the *.c files.

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agonet/virtio: remove a redundant macro definition for ctrl vq
Tiwei Bie [Mon, 11 Dec 2017 05:13:31 +0000 (13:13 +0800)]
net/virtio: remove a redundant macro definition for ctrl vq

VIRTIO_NET_CTRL_MAC_ADDR_SET is defined two times in
virtqueue.h, the second one is obviously not wanted.

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agonet/virtio: fix typo in LRO support
Tiwei Bie [Mon, 11 Dec 2017 05:13:30 +0000 (13:13 +0800)]
net/virtio: fix typo in LRO support

Fixes: 86d59b21468a ("net/virtio: support LRO")
Fixes: ec9f3d122a58 ("net/virtio: revert not claiming LRO support")
Cc: stable@dpdk.org
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agonet/virtio: fix vector Rx flushing
Tiwei Bie [Mon, 11 Dec 2017 05:13:29 +0000 (13:13 +0800)]
net/virtio: fix vector Rx flushing

The vector Rx will be broken if backend has consumed all
the descs in the avail ring before the device is started.
Because in current implementation, vector Rx will return
immediately without refilling the avail ring if the used
ring is empty. So we have to refill the avail ring after
flushing the elements in the used ring for vector Rx.

Besides, vector Rx has a different ring layout assumption
and mbuf management. So we need to handle it differently.

Fixes: d8227497ec5c ("net/virtio: flush Rx queues on start")
Cc: stable@dpdk.org
Reported-by: Antonio Fischetti <antonio.fischetti@intel.com>
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Tested-by: Antonio Fischetti <antonio.fischetti@intel.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agonet/virtio: fix incorrect cast
Didier Pallard [Thu, 14 Dec 2017 14:33:43 +0000 (15:33 +0100)]
net/virtio: fix incorrect cast

The rx_queues and tx_queues fields of the data structure points to a
struct virtnet_rx or virtnet_tx. Casting it to a virtqueue is an error.

It does not trigger any bug because pointer is not dereferenced inside
the function, but it can become a bug if this code is copy/pasted and
vq is dereferenced.

Fixes: 01ad44fd374f ("net/virtio: split Rx/Tx queue")
Cc: stable@dpdk.org
Signed-off-by: Didier Pallard <didier.pallard@6wind.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
6 years agovhost: support Generic Segmentation Offload
Jiayu Hu [Tue, 28 Nov 2017 05:28:33 +0000 (13:28 +0800)]
vhost: support Generic Segmentation Offload

In virtio, Generic Segmentation Offload (GSO) is the feature for the
backend, which means the backend can receive packets with any GSO
type.

Virtio-net enables the GSO feature by default, and vhost-net supports it.
To make live migration from vhost-net to vhost-user possible, this patch
enables GSO for vhost-user.

Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
Tested-by: Lei Yao <lei.a.yao@intel.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>