linux/drivers/net/ethernet/mellanox/mlx4
Carol L Soto c02b05011f net/mlx4: Copy/set only sizeof struct mlx4_eqe bytes
When doing memcpy/memset of EQEs, we should use sizeof struct
mlx4_eqe as the base size and not caps.eqe_size which could be bigger.

If caps.eqe_size is bigger than the struct mlx4_eqe then we corrupt
data in the master context.

When using a 64 byte stride, the memcpy copied over 63 bytes to the
slave_eq structure.  This resulted in copying over the entire eqe of
interest, including its ownership bit -- and also 31 bytes of garbage
into the next WQE in the slave EQ -- which did NOT include the ownership
bit (and therefore had no impact).

However, once the stride is increased to 128, we are overwriting the
ownership bits of *three* eqes in the slave_eq struct.  This results
in an incorrect ownership bit for those eqes, which causes the eq to
seem to be full. The issue therefore surfaced only once 128-byte EQEs
started being used in SRIOV and (overarchitectures that have 128/256
byte cache-lines such as PPC) - e.g after commit 77507aa249
"net/mlx4_core: Enable CQE/EQE stride support".

Fixes: 08ff32352d ('mlx4: 64-byte CQE/EQE support')
Signed-off-by: Carol L Soto <clsoto@linux.vnet.ibm.com>
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-10-27 20:27:11 -07:00
..
alloc.c net: Mellanox: Delete unnecessary checks before the function call "vunmap" 2015-02-09 14:10:05 -08:00
catas.c net/mlx4_core: Enable device recovery flow with SRIOV 2015-01-25 14:43:14 -08:00
cmd.c net/mlx4: Copy/set only sizeof struct mlx4_eqe bytes 2015-10-27 20:27:11 -07:00
cq.c net/mlx4_core: Make sure there are no pending async events when freeing CQ 2015-05-30 23:35:34 -07:00
en_clock.c ptp: mlx4: use helpers for converting ns to timespec. 2015-03-31 17:19:19 -04:00
en_cq.c net/mlx4_core: Fix unintialized variable used in error path 2015-08-27 16:40:27 -07:00
en_dcb_nl.c net/mlx4: New file for QoS related firmware commands 2015-04-02 16:25:02 -04:00
en_ethtool.c net/mlx4_en: Add support for hardware accelerated 802.1ad vlan 2015-07-27 15:00:37 -07:00
en_main.c net/mlx4: Postpone the registration of net_device 2015-08-30 18:12:20 -04:00
en_netdev.c net/mlx4_en: Add support for hardware accelerated 802.1ad vlan 2015-07-27 15:00:37 -07:00
en_port.c net/mlx4_en: Use HW counters for rx/tx bytes/packets in PF device 2015-06-24 00:42:33 -07:00
en_port.h net/mlx4_en: Use PTYS register to query ethtool settings 2014-10-28 17:18:00 -04:00
en_resources.c net/mlx4_core: Allocate default counter per port 2015-06-15 17:23:02 -07:00
en_rx.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-09-26 06:01:33 -04:00
en_selftest.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-03-03 21:16:48 -05:00
en_tx.c net/mlx4_en: Explicitly set no vlan tags in WQE ctrl segment when no vlan is present 2015-10-27 20:27:09 -07:00
eq.c net/mlx4: Copy/set only sizeof struct mlx4_eqe bytes 2015-10-27 20:27:11 -07:00
fw_qos.c net/mlx4: Add mlx4_SET_VPORT_QOS implementation 2015-04-02 16:25:02 -04:00
fw_qos.h net/mlx4: Added qos_vport QP configuration in VST mode 2015-04-02 16:25:03 -04:00
fw.c net/mlx4_en: Hardware accelerated 802.1ad works only on the first port 2015-07-29 12:21:56 -07:00
fw.h net/mlx4_core: Preparations for 802.1ad VLAN support 2015-07-27 15:00:36 -07:00
icm.c net/mlx4_core: Maintain a persistent memory for mlx4 device 2015-01-25 14:43:13 -08:00
icm.h mlx4_core: Fix GFP flags parameters to be gfp_t 2014-06-04 10:19:13 -07:00
intf.c net/mlx4: Postpone the registration of net_device 2015-08-30 18:12:20 -04:00
Kconfig net/mlx4: Set proper build dependancy with vxlan 2014-04-01 16:25:51 -04:00
main.c net/mlx4: Remove shared_ports variable at mlx4_enable_msi_x 2015-10-08 05:20:24 -07:00
Makefile net/mlx4: New file for QoS related firmware commands 2015-04-02 16:25:02 -04:00
mcg.c net/mlx4: Handle return codes in mlx4_qp_attach_common 2015-09-29 21:14:01 -07:00
mlx4_en.h net/mlx4_en: Add support for hardware accelerated 802.1ad vlan 2015-07-27 15:00:37 -07:00
mlx4_stats.h net/mlx4_en: Fix off-by-four in ethtool 2015-06-24 00:42:32 -07:00
mlx4.h net/mlx4_core: Preparations for 802.1ad VLAN support 2015-07-27 15:00:36 -07:00
mr.c net/mlx4_core: Fix mpt_entry initialization in mlx4_mr_rereg_mem_write() 2015-02-04 16:17:45 -08:00
pd.c net/mlx4_core: Remove duplicate code line from procedure mlx4_bf_alloc 2015-01-27 17:12:57 -08:00
port.c net/mlx4_en: Add RX-ALL support 2015-04-02 16:25:04 -04:00
profile.c net/mlx4_core: use swap() in mlx4_make_profile() 2015-06-11 15:19:41 -07:00
qp.c net/mlx4: use swap() in mlx4_init_qp_table() 2015-06-11 15:19:41 -07:00
reset.c net/mlx4_core: Maintain a persistent memory for mlx4 device 2015-01-25 14:43:13 -08:00
resource_tracker.c net/mlx4_en: Support ndo_get_vf_stats 2015-06-15 17:23:03 -07:00
sense.c
srq.c IB/mlx4: Implement IB_QP_CREATE_USE_GFP_NOIO 2014-06-02 14:58:11 -07:00