linux/drivers/net/ethernet/mellanox/mlx4
Eugenia Emantayev 2d4b646613 net/mlx4_en: Fix BlueFlame race
Fix a race between BlueFlame flow and stamping in post send flow.
Example:
	SW: Build WQE 0 on the TX buffer, except the ownership bit
	SW: Set ownership for WQE 0 on the TX buffer
	SW: Ring doorbell for WQE 0
	SW: Build WQE 1 on the TX buffer, except the ownership bit
	SW: Set ownership for WQE 1 on the TX buffer
	HW: Read WQE 0 and then WQE 1, before doorbell was rung/BF was done for WQE 1
	HW: Produce CQEs for WQE 0 and WQE 1
	SW: Process the CQEs, and stamp WQE 0 and WQE 1 accordingly (on the TX buffer)
	SW: Copy WQE 1 from the TX buffer to the BF register - ALREADY STAMPED!
	HW: CQE error with index 0xFFFF  - the BF WQE's control segment is STAMPED,
		so the BF index is 0xFFFF. Error: Invalid Opcode.
As a result QP enters the error state and no traffic can be sent.

Solution:
When stamping - do not stamp last completed wqe.

Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-07-29 00:54:51 -07:00
..
alloc.c mlx4_core: Change bitmap allocator to work in round-robin fashion 2012-05-14 13:44:38 -07:00
catas.c mlx4: Add support for EEH error recovery 2012-07-25 15:24:13 -07:00
cmd.c net/mlx4: fix small memory leak on error 2013-07-03 16:52:10 -07:00
cq.c net/mlx4_en: Add HW timestamping (TS) support 2013-04-24 16:30:14 -04:00
en_clock.c mlx4_en: fix a build error on 32bit arches 2013-04-30 19:00:25 -04:00
en_cq.c net/mlx4_en: Add Low Latency Socket (LLS) support 2013-06-19 18:32:16 -07:00
en_dcb_nl.c net/mlx4_en: Remove an unnecessary test 2013-06-25 16:29:39 -07:00
en_ethtool.c net/mlx4_en: Low Latency recv statistics 2013-06-19 18:32:16 -07:00
en_main.c net/mlx4_en: Fix resource leak in error flow 2013-06-25 16:29:38 -07:00
en_netdev.c net: rename ll methods to busy-poll 2013-07-10 17:08:27 -07:00
en_port.c
en_port.h
en_resources.c net/mlx4: Strengthen VLAN tags/priorities enforcement in VST mode 2013-05-11 16:12:44 -07:00
en_rx.c net: rename ll methods to busy-poll 2013-07-10 17:08:27 -07:00
en_selftest.c drivers:net: Remove unnecessary OOM messages after netdev_alloc_skb 2013-03-09 16:09:19 -05:00
en_tx.c net/mlx4_en: Fix BlueFlame race 2013-07-29 00:54:51 -07:00
eq.c net/mlx4: Add VF link state support 2013-06-13 17:51:04 -07:00
fw.c net/mlx4_core: Dynamic VST to VST vlan/qos changes 2013-07-01 13:10:22 -07:00
fw.h net/mlx4_core: Read HCA frequency and map internal clock 2013-04-24 16:30:13 -04:00
icm.c mlx4_core: Fix integer overflows so 8TBs of memory registration works 2012-09-13 17:52:02 -07:00
icm.h mlx4_core: Fix integer overflows so 8TBs of memory registration works 2012-09-13 17:52:02 -07:00
intf.c mlx4: Use port management change event instead of smp_snoop 2012-07-10 09:47:10 -07:00
Kconfig mlx4_en: Remove remnants of LRO support 2012-11-19 19:13:59 -05:00
main.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-07-09 18:24:39 -07:00
Makefile net/mlx4_en: Add HW timestamping (TS) support 2013-04-24 16:30:14 -04:00
mcg.c InfiniBand/RDMA changes for the 3.10 merge window: 2013-05-08 15:29:48 -07:00
mlx4_en.h mlx4: allow order-0 memory allocations in RX path 2013-06-25 16:18:31 -07:00
mlx4.h net/mlx4_core: Add HW enforcement to VF link state 2013-07-01 13:10:57 -07:00
mr.c net/mlx4_core: Fix endianness bug in set_param_l 2013-03-07 15:52:03 -05:00
pd.c net/mlx4_core: Fix endianness bug in set_param_l 2013-03-07 15:52:03 -05:00
port.c net/mlx4: Add set VF default vlan ID and priority support 2013-04-26 23:29:13 -04:00
profile.c mlx4_core: Fix integer overflow issues around MTT table 2012-08-15 21:05:26 -07:00
qp.c net/mlx4_core: Fix endianness bug in set_param_l 2013-03-07 15:52:03 -05:00
reset.c mlx4: Use PCI Express Capability accessors 2012-08-23 10:11:13 -06:00
resource_tracker.c net/mlx4_core: Add HW enforcement to VF link state 2013-07-01 13:10:57 -07:00
sense.c Merge branch 'for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2012-10-02 09:54:49 -07:00
srq.c mlx4_core: Implement SRQ object lookup from srqn 2013-04-16 22:42:55 -07:00