dpdk.git
7 years agonet/i40e: return errno when interrupt setup fails
Michał Mirosław [Tue, 13 Dec 2016 01:08:19 +0000 (02:08 +0100)]
net/i40e: return errno when interrupt setup fails

Signed-off-by: Michał Mirosław <michal.miroslaw@atendesoftware.pl>
Reviewed-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/enic: support TSO
John Daley [Mon, 9 Jan 2017 23:04:28 +0000 (15:04 -0800)]
net/enic: support TSO

The enic TSO implementation requires that the length of the Eth/IP/TCP
headers be passed to the NIC. Other than that, it's just a matter of
setting the mss and offload mode on a per packet basis.

In TSO mode, IP and TCP checksums are offloaded even if not requested
with mb->ol_flags.

Signed-off-by: John Daley <johndale@cisco.com>
7 years agonet/ixgbe: fix VMDq function name
Wenzhuo Lu [Tue, 10 Jan 2017 02:19:11 +0000 (10:19 +0800)]
net/ixgbe: fix VMDq function name

The function name ixgbe_vmdq_mode_check is not right.
This function checks if Virtualization Technology is
enabled. It's for both VMDq and IOV.
Others may be misled by the current name.

Fixes: fe3a45fd4104 ("ixgbe: add VMDq support")

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
7 years agonet/i40e: remove redundant statement and braces
Yong Wang [Mon, 9 Jan 2017 13:48:52 +0000 (08:48 -0500)]
net/i40e: remove redundant statement and braces

In function "reassemble_packets()", the statement "end = secondlast;"
is redundant since there is another assignment "start = end = NULL;"
3 lines below. BTW, I removed the redundant braces in the conditional
statement "if (end->data_len > rxq->crc_len)".

Signed-off-by: Yong Wang <wang.yong19@zte.com.cn>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agonet/i40e: fix segment number in reassemble process
Chenghu Yao [Mon, 9 Jan 2017 03:31:04 +0000 (11:31 +0800)]
net/i40e: fix segment number in reassemble process

When freeing up last mbuf, start->nb_segs should be decremented
by one. See also ixgbe process.

Fixes: 0e0da28cd888 ("i40e: add vector scatter Rx")

Signed-off-by: Chenghu Yao <yao.chenghu@zte.com.cn>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agonet/af_packet: fix fd use after free
Timmons C. Player [Thu, 5 Jan 2017 14:33:35 +0000 (09:33 -0500)]
net/af_packet: fix fd use after free

When using the same file descriptor for both rx and tx, the
eth_dev_stop function would close the same fd twice.   This
change prevents that from happening.

Fixes: 364e08f2bbc0 ("af_packet: add PMD for AF_PACKET-based virtual devices")

Signed-off-by: Timmons C. Player <timmons.player@spirent.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agonet/bnxt: support new PCI IDs
Ajit Khaparde [Fri, 6 Jan 2017 19:55:17 +0000 (13:55 -0600)]
net/bnxt: support new PCI IDs

Add support for PCI IDs which was removed as a part of
commit 0e7bd0b2d6a5 ("net/bnxt: remove support for few devices")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
7 years agonet/ixgbe: allow bulk alloc for the max size desc ring
Ilya Maximets [Wed, 19 Oct 2016 14:07:17 +0000 (17:07 +0300)]
net/ixgbe: allow bulk alloc for the max size desc ring

The only reason why bulk alloc disabled for the rings with
more than (IXGBE_MAX_RING_DESC - RTE_PMD_IXGBE_RX_MAX_BURST)
descriptors is the possible out-of-bound access to the dma
memory. But it's the artificial limit and can be easily
avoided by allocating of RTE_PMD_IXGBE_RX_MAX_BURST more
descriptors in memory. This will not interfere the HW and,
as soon as all rings' memory zeroized, Rx functions will
work correctly.

This change allows to use vectorized Rx functions with
4096 descriptors in Rx ring which is important to achieve
zero packet drop rate in high-load installations.

Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: allow bulk alloc for the max size desc ring
Ilya Maximets [Wed, 19 Oct 2016 14:07:16 +0000 (17:07 +0300)]
net/i40e: allow bulk alloc for the max size desc ring

The only reason why bulk alloc disabled for the rings with
more than (I40E_MAX_RING_DESC - RTE_PMD_I40E_RX_MAX_BURST)
descriptors is the possible out-of-bound access to the dma
memory. But it's the artificial limit and can be easily
avoided by allocating of RTE_PMD_I40E_RX_MAX_BURST more
descriptors in memory. This will not interfere the HW and,
as soon as all rings' memory zeroized, Rx functions will
work correctly.

This change allows to use vectorized Rx functions with
4096 descriptors in Rx ring which is important to achieve
zero packet drop rate in high-load installations.

Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/mlx5: support ConnectX-5 devices
Yongseok Koh [Fri, 6 Jan 2017 00:49:31 +0000 (16:49 -0800)]
net/mlx5: support ConnectX-5 devices

Add PCI device ID for ConnectX-5 and enable multi-packet send for PF and VF
along with changing documentation and release note.

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/qede: change few log levels
Rasesh Mody [Fri, 6 Jan 2017 08:16:49 +0000 (00:16 -0800)]
net/qede: change few log levels

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: fix per queue statisitics
Rasesh Mody [Fri, 6 Jan 2017 08:16:48 +0000 (00:16 -0800)]
net/qede: fix per queue statisitics

If value of number of rxq/txq is different than
RTE_ETHDEV_QUEUE_STAT_CNTRS, limit per queue
stats/xstats to minimum of the two.

Fixes: 7634c5f91569 ("net/qede: add queue statistics")

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: fix PF fastpath status block index
Harish Patil [Fri, 6 Jan 2017 08:16:47 +0000 (00:16 -0800)]
net/qede: fix PF fastpath status block index

Allocate double the number of fastpath status block index
since the PF RX/TX queues are not sharing the status block.
This is an interim solution till other parts of the code
is modified to handle the same.

Fixes: f1e4b6c0acee ("net/qede: fix status block index for VF queues")

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
7 years agonet/qede: fix minimum buffer size and scatter Rx check
Harish Patil [Fri, 6 Jan 2017 08:16:46 +0000 (00:16 -0800)]
net/qede: fix minimum buffer size and scatter Rx check

 - Fix minimum RX buffer size to 1024B
 - Force enable scatter/gather mode if given RX buf size is lesser than MTU
 - Adjust RX buffer size to cache-line size with overhead included

Fixes: bec0228816c0 ("net/qede: support scatter gather")
Fixes: 2ea6f76aff40 ("qede: add core driver")

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
7 years agonet/qede: fix scatter-gather
Harish Patil [Fri, 6 Jan 2017 08:16:45 +0000 (00:16 -0800)]
net/qede: fix scatter-gather

 - Make qede_process_sg_pkts() inline and add unlikely check
 - Fix mbuf segment chaining logic in qede_process_sg_pkts()
 - Change qede_encode_sg_bd() to return total segments required
 - Fix first TX buffer descriptor's length
 - Replace repetitive code using a macro

Fixes: bec0228816c0 ("net/qede: support scatter gather")

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
7 years agonet/i40e: flush tunnel filters
Beilei Xing [Fri, 6 Jan 2017 05:27:19 +0000 (13:27 +0800)]
net/i40e: flush tunnel filters

This patch adds i40e_flow_flush_tunnel_filter
function to flush all tunnel filters, including
filters in SW and HW.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: flush ethertype filters
Beilei Xing [Fri, 6 Jan 2017 05:27:18 +0000 (13:27 +0800)]
net/i40e: flush ethertype filters

This patch adds i40e_flow_flush_ethertype_filter
function to flush all ethertype filters, including
filters in SW and HW.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: add flow flush function
Beilei Xing [Fri, 6 Jan 2017 05:27:17 +0000 (13:27 +0800)]
net/i40e: add flow flush function

This patch adds i40e_flow_flush function to flush all
filters for users. And flow director flush function
is involved first.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: destroy flow directory filter
Beilei Xing [Fri, 6 Jan 2017 05:27:16 +0000 (13:27 +0800)]
net/i40e: destroy flow directory filter

This patch supports destroying a flow directory filter
for users.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: destroy tunnel filter
Beilei Xing [Fri, 6 Jan 2017 05:27:15 +0000 (13:27 +0800)]
net/i40e: destroy tunnel filter

This patch adds i40e_flow_destroy_tunnel_filter
function to destroy a tunnel filter for users.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: destroy ethertype filter
Beilei Xing [Fri, 6 Jan 2017 05:27:14 +0000 (13:27 +0800)]
net/i40e: destroy ethertype filter

This patch adds i40e_flow_destroy_ethertype_filter
function to destroy a ethertype filter for users.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: add flow destroy function
Beilei Xing [Fri, 6 Jan 2017 05:27:13 +0000 (13:27 +0800)]
net/i40e: add flow destroy function

This patch adds i40e_flow_destroy function to destroy
a flow for users.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: add flow create function
Beilei Xing [Fri, 6 Jan 2017 05:27:12 +0000 (13:27 +0800)]
net/i40e: add flow create function

This patch adds i40e_flow_create function to create a
rule. It will check if a flow matches ethertype filter
or flow director filter or tunnel filter, if the flow
matches some kind of filter, then set the filter to HW.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: parse tunnel filter
Beilei Xing [Fri, 6 Jan 2017 05:27:11 +0000 (13:27 +0800)]
net/i40e: parse tunnel filter

This patch adds i40e_flow_parse_tunnel_filter to check
if a rule is a tunnel rule according to items of the
flow pattern, and the function also gets the tunnel info.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: parse flow director filter
Beilei Xing [Fri, 6 Jan 2017 05:27:10 +0000 (13:27 +0800)]
net/i40e: parse flow director filter

This patch adds i40e_flow_parse_fdir_filter to check
if a rule is a flow director rule according to the
flow pattern, and the function also gets the flow
director info.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: add flow validate function
Beilei Xing [Fri, 6 Jan 2017 05:27:09 +0000 (13:27 +0800)]
net/i40e: add flow validate function

This patch adds i40e_flow_validation function to check if
a flow is valid according to the flow pattern.
i40e_flow_parse_ethertype_filter is added first, it also
gets the ethertype info.
i40e_flow.c is added to handle all generic filter events.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: restore flow director filter
Beilei Xing [Fri, 6 Jan 2017 05:27:08 +0000 (13:27 +0800)]
net/i40e: restore flow director filter

Add support of restoring flow director filter.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: restore tunnel filter
Beilei Xing [Fri, 6 Jan 2017 05:27:07 +0000 (13:27 +0800)]
net/i40e: restore tunnel filter

Add support of restoring tunnel filter.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: restore ethertype filter
Beilei Xing [Fri, 6 Jan 2017 05:27:06 +0000 (13:27 +0800)]
net/i40e: restore ethertype filter

Add support of restoring ethertype filter in case filter
dropped accidentally, as all filters need to be added and
removed by user obviously for generic filter API.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: store flow director filter
Beilei Xing [Fri, 6 Jan 2017 05:27:05 +0000 (13:27 +0800)]
net/i40e: store flow director filter

Currently there's no flow director filter stored in SW. This
patch stores flow director filters in SW with cuckoo hash,
also adds protection if a flow director filter has been added.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: store tunnel filter
Beilei Xing [Fri, 6 Jan 2017 05:27:04 +0000 (13:27 +0800)]
net/i40e: store tunnel filter

Currently there's no tunnel filter stored in SW.
This patch stores tunnel filter in SW with cuckoo
hash, also adds protection if a tunnel filter has
been added.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: store ethertype filter
Beilei Xing [Fri, 6 Jan 2017 05:27:03 +0000 (13:27 +0800)]
net/i40e: store ethertype filter

Currently there's no ethertype filter stored in SW.
This patch stores ethertype filter with cuckoo hash
in SW, also adds protection if an ethertype filter
has been added.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/mlx5: fix multi segment packet send
Shahaf Shuler [Mon, 26 Dec 2016 15:28:36 +0000 (17:28 +0200)]
net/mlx5: fix multi segment packet send

Dseg pointer is not initialized when the first segment is inlined
causing a segmentation fault in such situation.

Fixes: 2a66cf378954 ("net/mlx5: support inline send")

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: fix Tx doorbell
Nélio Laranjeiro [Fri, 9 Dec 2016 13:27:58 +0000 (14:27 +0100)]
net/mlx5: fix Tx doorbell

Too much data is uselessly written to the Tx doorbell, which since v16.11
may also cause Tx queues to behave erratically and crash applications.

This regression was seen on VF devices when the BlueFlame buffer size is
zero (txq->bf_buf_size) due to the following change:

 -       txq->bf_offset ^= txq->bf_buf_size;
 +       txq->bf_offset ^= (1 << txq->bf_buf_size);

Fixes: 1d88ba171942 ("net/mlx5: refactor Tx data path")
Fixes: d5793daefec8 ("net/mlx5: reduce memory overhead for BF handling")

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: remove inefficient prefetching
Nélio Laranjeiro [Thu, 24 Nov 2016 16:03:36 +0000 (17:03 +0100)]
net/mlx5: remove inefficient prefetching

Prefetching completion queue entries is inefficient because too few CPU
cycles are spent before their use, which results into cache misses anyway.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: optimize copy of Ethernet header
Nélio Laranjeiro [Thu, 24 Nov 2016 16:03:35 +0000 (17:03 +0100)]
net/mlx5: optimize copy of Ethernet header

Use fewer instructions to copy the first two bytes of Ethernet headers to
work queue elements.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: move static prototype
Nélio Laranjeiro [Thu, 24 Nov 2016 16:03:34 +0000 (17:03 +0100)]
net/mlx5: move static prototype

Gather function prototypes at the beginning of the file.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: fix missing inline attributes
Nélio Laranjeiro [Thu, 24 Nov 2016 16:03:33 +0000 (17:03 +0100)]
net/mlx5: fix missing inline attributes

These functions must be forced inline for better performance.

Fixes: 99c12dcca65d ("net/mlx5: handle Rx CQE compression")
Fixes: 1d88ba171942 ("net/mlx5: refactor Tx data path")
Fixes: 67fa62bc672d ("mlx5: support checksum offload")

CC: stable@dpdk.org
Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: use vector types to speed up processing
Nélio Laranjeiro [Thu, 24 Nov 2016 16:03:32 +0000 (17:03 +0100)]
net/mlx5: use vector types to speed up processing

Let compiler automatically use the vector capabilities of the target
machine to optimize instructions.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: use work queue buffer as a raw buffer
Nélio Laranjeiro [Thu, 24 Nov 2016 16:03:31 +0000 (17:03 +0100)]
net/mlx5: use work queue buffer as a raw buffer

Define a single work queue element type that encompasses them all.  It
includes control, Ethernet segment and raw data all grouped in a single
place.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: prepare Tx vectorization
Nélio Laranjeiro [Thu, 24 Nov 2016 16:03:30 +0000 (17:03 +0100)]
net/mlx5: prepare Tx vectorization

Prepare the code to write the Work Queue Element with vectorized
instructions.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Signed-off-by: Elad Persiko <eladpe@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/qede: update PMD version to 2.0.0.1
Rasesh Mody [Thu, 5 Jan 2017 07:04:08 +0000 (23:04 -0800)]
net/qede: update PMD version to 2.0.0.1

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: dcbx changes for base driver
Rasesh Mody [Thu, 5 Jan 2017 07:04:07 +0000 (23:04 -0800)]
net/qede/base: dcbx changes for base driver

This patch includes changes for DCBX like:
 - Return empty parameters for oper-params query when negotiation is not
   complete
 - Use the ieee specific mask value for reading the ethtype value in the
   ieee dcbx mode
 - Endian-ness conversion is not needed for priority<->TC field, as the
   data is already being read/written by ecore in the bigendian way
 - While writing the ets config, base driver incorrectly merges the input
   values with the operational values. The values should be either set
   or unset
 - CEE selection field must be set regardless CEE/IEEE mode
 - Fail the dcbx query for VF interfaces
 - Semantic changes

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: refactor some code bits
Rasesh Mody [Thu, 5 Jan 2017 07:04:06 +0000 (23:04 -0800)]
net/qede/base: refactor some code bits

Bits of code refactoring in ecore_hw_bar_size(), ecore_get_hw_info()
and ecore_init_cmd_*.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: semantic/formatting changes
Rasesh Mody [Thu, 5 Jan 2017 07:04:05 +0000 (23:04 -0800)]
net/qede/base: semantic/formatting changes

This patch consists of semantic/formatting changes. It also includes
comment additions.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: add support for new firmware
Rasesh Mody [Thu, 5 Jan 2017 07:04:04 +0000 (23:04 -0800)]
net/qede/base: add support for new firmware

Add support for 8.14.x.x firmware.

The new firmware adds support for external PHY BCM8485x; configures
fixed link speed with transceiver/cable not supporting negotiation;
supports engine swap; supports overriding PCIe preset equalization
value; checks pause too long for ports and reads die temperature
every second for shutdown threshold.
It includes change in FLR flow when there is a SW initiated FLR.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: add 50G device PCI id
Rasesh Mody [Thu, 5 Jan 2017 07:04:03 +0000 (23:04 -0800)]
net/qede: add 50G device PCI id

Add 50G device support for 57980 series

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: add PCI ids for new chip variant
Rasesh Mody [Thu, 5 Jan 2017 07:04:02 +0000 (23:04 -0800)]
net/qede: add PCI ids for new chip variant

Add PCI IDs for new asic type (defined as CHIP_NUM_AH_xxx).
It supports 50G, 40G, 25G and 10G speeds.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: add support for 2x10G mode
Rasesh Mody [Thu, 5 Jan 2017 07:04:01 +0000 (23:04 -0800)]
net/qede/base: add support for 2x10G mode

Add support for 2x10G mode

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: add support for external PHY
Rasesh Mody [Thu, 5 Jan 2017 07:04:00 +0000 (23:04 -0800)]
net/qede/base: add support for external PHY

Add support for external PHY BCM8485x.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: retrieve FW crash dump info
Rasesh Mody [Thu, 5 Jan 2017 07:03:59 +0000 (23:03 -0800)]
net/qede/base: retrieve FW crash dump info

As part of device probe, check if management FW crash dump logs are
available. If available, then log an warning message and update the
epoch value too. A new struct ecore_mdump_info is added to populate
dump info including the new "reason" field by reading shared memory
region.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: add check for get NVM info return code
Rasesh Mody [Thu, 5 Jan 2017 07:03:58 +0000 (23:03 -0800)]
net/qede/base: add check for get NVM info return code

Fail ecore_get_hw_info() in case ecore_hw_get_nvm_info() fails.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: add new host ring type option
Rasesh Mody [Thu, 5 Jan 2017 07:03:57 +0000 (23:03 -0800)]
net/qede: add new host ring type option

Add new option called external PBL (page base list) to ecore_chain_alloc
for future use. Mark chain as external if external PBL is provided.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: add macros for converting pointer
Rasesh Mody [Thu, 5 Jan 2017 07:03:56 +0000 (23:03 -0800)]
net/qede/base: add macros for converting pointer

Add macros PTR_LO and PTR_HI (for converting pointer to HI and LOW bits for
passing to FW hsi handles).

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: add new status code
Rasesh Mody [Thu, 5 Jan 2017 07:03:55 +0000 (23:03 -0800)]
net/qede/base: add new status code

Add ECORE_CONN_RESET to enum ecore_status.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: enhance resource info set printouts
Rasesh Mody [Thu, 5 Jan 2017 07:03:54 +0000 (23:03 -0800)]
net/qede/base: enhance resource info set printouts

Add the resources names in the ecore_hw_set_resc_info() printouts.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: remove unused struct member
Rasesh Mody [Thu, 5 Jan 2017 07:03:53 +0000 (23:03 -0800)]
net/qede: remove unused struct member

Remove b_hw_channel from struct ecore_dev.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: semantic change
Rasesh Mody [Thu, 5 Jan 2017 07:03:52 +0000 (23:03 -0800)]
net/qede/base: semantic change

Semantic change: No reason to have p_ prefix to non-pointers

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: improve Tx-switching performance
Rasesh Mody [Thu, 5 Jan 2017 07:03:51 +0000 (23:03 -0800)]
net/qede/base: improve Tx-switching performance

In order to improve Tx switching performance an additional HSI parameter
called same-as-last-id is introduced. This resource allows FW caching the
txqs packet properties. Driver needs to set same-as-last-id to be equal to
the qzone.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: fix updating VF queue zone id
Rasesh Mody [Thu, 5 Jan 2017 07:03:50 +0000 (23:03 -0800)]
net/qede/base: fix updating VF queue zone id

Pass the absolute qzone_id when creating queues.

Fixes: 5cdd769a26ec ("qede: add L2 support")

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: add check to validate Tx queue
Rasesh Mody [Thu, 5 Jan 2017 07:03:49 +0000 (23:03 -0800)]
net/qede/base: add check to validate Tx queue

Make sure VF tx_qid and the status block index is in the allocated range,
else fail the request.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: rename macro
Rasesh Mody [Thu, 5 Jan 2017 07:03:48 +0000 (23:03 -0800)]
net/qede/base: rename macro

Rename OOO_LB_TC to PKT_LB_TC to give better meaning.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: make API non-static
Rasesh Mody [Thu, 5 Jan 2017 07:03:47 +0000 (23:03 -0800)]
net/qede/base: make API non-static

Move ecore_set_fw_mac_addr from ecore_l2.c to ecore_dev.c to
facilitate future code reuse.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: change return codes in SR-IOV
Rasesh Mody [Thu, 5 Jan 2017 07:03:46 +0000 (23:03 -0800)]
net/qede/base: change return codes in SR-IOV

Change return codes in VF/SR-IOV base driver from int to
enum _ecore_status_t.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: add handling of malicious VF
Rasesh Mody [Thu, 5 Jan 2017 07:03:45 +0000 (23:03 -0800)]
net/qede/base: add handling of malicious VF

Receive indication that VFs are malicious and pass it to the
caller/clients and stop serving those VF's additional resource requests.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: improve set field macro
Rasesh Mody [Thu, 5 Jan 2017 07:03:44 +0000 (23:03 -0800)]
net/qede/base: improve set field macro

Improve robustness of the SET_FIELD macro by using a mask.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: add request for PF FLR before load request
Rasesh Mody [Thu, 5 Jan 2017 07:03:43 +0000 (23:03 -0800)]
net/qede/base: add request for PF FLR before load request

Add a request for PF Function Level Reset (FLR) before a load request

Fix the location of the PF FLR initiation to be after ecore_get_hw_info()
(which invokes ecore_hw_info_port_num())

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/mlx5: extend IPv4 flow item
Nélio Laranjeiro [Thu, 29 Dec 2016 15:15:22 +0000 (16:15 +0100)]
net/mlx5: extend IPv4 flow item

This commits adds:
- Type of service
- Next protocol ID

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: support mark flow action
Nélio Laranjeiro [Thu, 29 Dec 2016 15:15:21 +0000 (16:15 +0100)]
net/mlx5: support mark flow action

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: support VXLAN flow item
Nélio Laranjeiro [Thu, 29 Dec 2016 15:15:20 +0000 (16:15 +0100)]
net/mlx5: support VXLAN flow item

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: support VLAN flow item
Nélio Laranjeiro [Thu, 29 Dec 2016 15:15:19 +0000 (16:15 +0100)]
net/mlx5: support VLAN flow item

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: support basic flow items and actions
Nélio Laranjeiro [Thu, 29 Dec 2016 15:15:18 +0000 (16:15 +0100)]
net/mlx5: support basic flow items and actions

Introduce initial software for rte_flow rules.

VLAN, VXLAN are still not supported.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: add preliminary flow API support
Nélio Laranjeiro [Thu, 29 Dec 2016 15:15:17 +0000 (16:15 +0100)]
net/mlx5: add preliminary flow API support

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/ena: use correct field for Rx offload features
Jakub Palider [Wed, 4 Jan 2017 13:58:54 +0000 (14:58 +0100)]
net/ena: use correct field for Rx offload features

Previously the capability bitmap for Rx offloads was mistakenly taken
from Tx capability bitmap field. This patch fixes the problem.

Signed-off-by: Jakub Palider <jpa@semihalf.com>
7 years agonet/nfp: add TSO support
Alejandro Lucero [Tue, 20 Dec 2016 10:18:19 +0000 (10:18 +0000)]
net/nfp: add TSO support

This patch implements NFP PMD support for TSO but it also requires
a firmware advertising the capability.

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
7 years agonet/i40e: fix wrong return value when handling PF message
Wenzhuo Lu [Wed, 21 Dec 2016 08:29:40 +0000 (16:29 +0800)]
net/i40e: fix wrong return value when handling PF message

When VF receives a message from PF, it should check the return
value. But in i40evf_execute_vf_cmd the value is ignored and not
returned to the caller.

Fixes: 95cd21f45d1b ("i40evf: allocate virtchnl commands buffer per VF")

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/mlx5: fix RSS hash result for flows
Nélio Laranjeiro [Wed, 28 Dec 2016 09:58:31 +0000 (10:58 +0100)]
net/mlx5: fix RSS hash result for flows

Flows redirected to a specific queue do not have a valid RSS hash result
and the related mbuf flag must not be set.

Fixes: ecf60761fc2a ("net/mlx5: return RSS hash result in mbuf")

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/ixgbe: remove unused global variable
Jerin Jacob [Tue, 27 Dec 2016 10:09:57 +0000 (15:39 +0530)]
net/ixgbe: remove unused global variable

Removed unused "reg_info" global variable from ixgbe driver.

cat build/app/testpmd.map | grep "Allocating common symbols" -A 15
Allocating common symbols
Common symbol   size    file
reg_info        0x18    build/lib/librte_pmd_ixgbe.a(ixgbe_ethdev.o)

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agonet/nfp: add Rx interrupts
Alejandro Lucero [Mon, 19 Dec 2016 18:05:58 +0000 (18:05 +0000)]
net/nfp: add Rx interrupts

This is supported with UIO and VFIO modules. With UIO, LSC interrupt
is disabled.

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
7 years agonet/nfp: avoid modulo operations for handling ring wrapping
Alejandro Lucero [Mon, 19 Dec 2016 16:13:03 +0000 (16:13 +0000)]
net/nfp: avoid modulo operations for handling ring wrapping

Having those modulo operations implies costly instructions execution,
what can be avoided with conditionals and unlikely clauses.

This change makes the software ring read and write indexes to be now
always within the ring size which has to be handled properly. The main
problem is when write pointer wraps and being less than the read pointer.
This happened before, but just with indexes type size (uint32_t) wrapping,
and in that case the processor does the right thing no requiring special
handling by software.

This work has also led to discovering redundant pointers in the driver,
which have been removed.

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
7 years agonet/qede/base: fix VF over legacy PF
Rasesh Mody [Fri, 23 Dec 2016 00:50:04 +0000 (16:50 -0800)]
net/qede/base: fix VF over legacy PF

Apparently VF over Legacy PF doesn't work, as VF would fail after
getting the initial rejection message [instead of sending an additional
one where it asks for a FW override and see if it works].

Fixes: 22d07d939c3c ("net/qede/base: update")

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: fix to handle acquire request from VF
Rasesh Mody [Fri, 23 Dec 2016 00:50:03 +0000 (16:50 -0800)]
net/qede/base: fix to handle acquire request from VF

Add a check and fail the VF's probe request if VF is already in
VF_ACQUIRED state.

Fixes: 22d07d939c3c ("net/qede/base: update")

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: fix Rx queue access by malicious VFs
Rasesh Mody [Fri, 23 Dec 2016 00:50:02 +0000 (16:50 -0800)]
net/qede/base: fix Rx queue access by malicious VFs

Rx queue access is still done prior to the index being validated by PF.
Hence move Rx queue and status block validation check before accessing
Rx queue to prevent malicious VFs from using out-of-bound queue indices.

Fixes: 98bc693e1938 ("net/qede/base: change queue start")

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: fix mutex in freeing context manager
Rasesh Mody [Fri, 23 Dec 2016 00:50:01 +0000 (16:50 -0800)]
net/qede/base: fix mutex in freeing context manager

Fix OSAL_MUTEX_DEALLOC() in freeing the context manager.

Fixes: 22d07d939c3c ("net/qede/base: update")

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: fix error code in resc allocation
Rasesh Mody [Fri, 23 Dec 2016 00:50:00 +0000 (16:50 -0800)]
net/qede/base: fix error code in resc allocation

Fix to return error code ECORE_INVAL instead of 0 when EQ elements
is too large as done elsewhere in this function.

Fixes: 22d07d939c3c ("net/qede/base: update")

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: fix multiple acquisition requests by VF
Rasesh Mody [Fri, 23 Dec 2016 00:49:59 +0000 (16:49 -0800)]
net/qede/base: fix multiple acquisition requests by VF

There are certain conditions under which VF would infinitely send
ACQUIRE messages, as it will fail to understand that PF has rejected
the ACQUIRE request. Fix to reject multiple acquisition requests by VF.

Fixes: 22d07d939c3c ("net/qede/base: update")

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede/base: fix SRIOV printouts
Rasesh Mody [Fri, 23 Dec 2016 00:49:58 +0000 (16:49 -0800)]
net/qede/base: fix SRIOV printouts

Remove unmeaningful function ID value in print.

Don't print the number of Multicast filters as part of Acquire response,
as this is an obsolete field which isn't enforced by PF.

Fixes: 86a2265e59d7 ("qede: add SRIOV support")

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: add vendor/device id info
Rasesh Mody [Fri, 23 Dec 2016 00:49:57 +0000 (16:49 -0800)]
net/qede: add vendor/device id info

The vendor_id and device_id are used to determine device type. If you
don't have them, then check for determining device type fails and is
always set to default device type.

Fixes: ec94dbc57362 ("qede: add base driver")

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: restrict maximum queues for PF/VF
Harish Patil [Fri, 23 Dec 2016 00:48:11 +0000 (16:48 -0800)]
net/qede: restrict maximum queues for PF/VF

HW can support up to 128 queues based on the NIC config/personality.
But most of the testing is done with 32 queues for PF and 16 for VF
device across different qede devices, so change here is to advertise
only those many instead of returning max queues supported by HW.

Fixes: 2ea6f76aff40 ("qede: add core driver")

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
7 years agonet/qede: fix reporting PF driver as disabled
Harish Patil [Fri, 23 Dec 2016 00:48:10 +0000 (16:48 -0800)]
net/qede: fix reporting PF driver as disabled

qede PMD does not support SR-IOV PF driver functionality, so
max_vfs is set to 0 to imply the same.

Fixes: 2ea6f76aff40 ("qede: add core driver")

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
7 years agonet/qede: fix RSS
Harish Patil [Fri, 23 Dec 2016 00:48:09 +0000 (16:48 -0800)]
net/qede: fix RSS

This patch includes the following:

- Fix missing hash_key_size advertisement
- Fix RSS hash query function
- Update RSS offload flag
- Accept user provided RSS configuration params via rx_adv_conf
  in dev_configure()
- Decouple RSS configuration from common qed_update_vport() and
  instead make use of existing RSS APIs for default RSS configuration

Fixes: 6d9e26c42c0d ("net/qede: get RSS hash configuration")
Fixes: 9c5d0a669f9b ("net/qede: fix RSS")

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
7 years agonet/qede: add fastpath support for VXLAN tunneling
Harish Patil [Fri, 23 Dec 2016 00:48:08 +0000 (16:48 -0800)]
net/qede: add fastpath support for VXLAN tunneling

- Support HW checksum and RSS offload for VXLAN traffic
- Identify inner/outer packet_types using lookup table
- Update documentation

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
7 years agonet/qede: add slowpath support for VXLAN tunneling
Harish Patil [Fri, 23 Dec 2016 00:48:07 +0000 (16:48 -0800)]
net/qede: add slowpath support for VXLAN tunneling

- Enable/disable VXLAN tunneling
- Add/remove VXLAN classification rules
- Destination UDP port configuration

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
7 years agonet/qede: fix filtering code
Harish Patil [Fri, 23 Dec 2016 00:48:06 +0000 (16:48 -0800)]
net/qede: fix filtering code

In qede_mac_addr_add() a check is added to differentiate between
unicast/multicast mac to prevent a multicast mac from being wrongly added
to unicast filter table. Secondly, two separate lists will be used to keep
track of unicast/multicast mac filters to prevent duplicate filter
programming. The other change is to remove filter_config from struct
qed_eth_ops_pass and invoke the base APIs directly. This avoids the need
to have multiple structs and function calls.

Fixes: 2ea6f76aff40 ("qede: add core driver")

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
7 years agonet/qede: reduce noise in debug logs
Harish Patil [Fri, 23 Dec 2016 00:48:05 +0000 (16:48 -0800)]
net/qede: reduce noise in debug logs

Move DP_NOTICE msg under CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO.

Signed-off-by: Harish Patil <harish.patil@qlogic.com>
7 years agonet/sfc: advertise kmod dependencies in pmdinfo
Andrew Rybchenko [Thu, 22 Dec 2016 11:32:40 +0000 (11:32 +0000)]
net/sfc: advertise kmod dependencies in pmdinfo

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
7 years agonet/ixgbe/base: update shared code version to 2016.11.21
Wei Dai [Wed, 21 Dec 2016 09:48:14 +0000 (17:48 +0800)]
net/ixgbe/base: update shared code version to 2016.11.21

Update the version of shared codes to cid-ixgbe.2016.11.21.tar.gz,

All files in net/ixgbe/base are developed by another team and
DPDK PMD uses them accordingly.

Signed-off-by: Wei Dai <wei.dai@intel.com>
7 years agonet/ixgbe/base: report physical layer for SGMII PHY type
Wei Dai [Wed, 21 Dec 2016 09:48:13 +0000 (17:48 +0800)]
net/ixgbe/base: report physical layer for SGMII PHY type

For the PHY type SGMII, report the physical layer.

Signed-off-by: Wei Dai <wei.dai@intel.com>
7 years agonet/ixgbe/base: add write flush required by Inphi PHY
Wei Dai [Wed, 21 Dec 2016 09:48:12 +0000 (17:48 +0800)]
net/ixgbe/base: add write flush required by Inphi PHY

This patch updates the configuration of PHY from Inphi (www.inphi.com)
to flush the register write with a reg read.
The Inphi PHY is configured in ixgbe_setup_mac_link_sfp_x550a.
The Inphi PHY setup flow has been updated to read configuration reg,
write only linear/non-linear, and then read (write flush).

Signed-off-by: Wei Dai <wei.dai@intel.com>
7 years agonet/ixgbe/base: remove unused EEE code
Wei Dai [Wed, 21 Dec 2016 09:48:11 +0000 (17:48 +0800)]
net/ixgbe/base: remove unused EEE code

Remove unused old Energy Efficient Ethernet (EEE) code.

Signed-off-by: Wei Dai <wei.dai@intel.com>