linux-hardened/drivers/net/ethernet/mellanox/mlx4
Ido Shamay 77507aa249 net/mlx4_core: Enable CQE/EQE stride support
This feature is intended for archs having cache line larger then 64B.

Since our CQE/EQEs are generally 64B in those systems, HW will write
twice to the same cache line consecutively, causing pipe locks due to
he hazard prevention mechanism. For elements in a cyclic buffer, writes
are consecutive, so entries smaller than a cache line should be
avoided, especially if they are written at a high rate.

Reduce consecutive writes to same cache line in CQs/EQs, by allowing the
driver to increase the distance between entries so that each will reside
in a different cache line. Until the introduction of this feature, there
were two types of CQE/EQE:

1. 32B stride and context in the [0-31] segment
2. 64B stride and context in the [32-63] segment

This feature introduces two additional types:

3. 128B stride and context in the [0-31] segment (128B cache line)
4. 256B stride and context in the [0-31] segment (256B cache line)

Modify the mlx4_core driver to query the device for the CQE/EQE cache
line stride capability and to enable that capability when the host
cache line size is larger than 64 bytes (supported cache lines are
128B and 256B).

The mlx4 IB driver and libmlx4 need not be aware of this change. The PF
context behaviour is changed to require this change in VF drivers
running on such archs.

Signed-off-by: Ido Shamay <idos@mellanox.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>
2014-09-19 17:30:10 -04:00
..
alloc.c IB/mlx4: Implement IB_QP_CREATE_USE_GFP_NOIO 2014-06-02 14:58:11 -07:00
catas.c mlx4: Add support for EEH error recovery 2012-07-25 15:24:13 -07:00
cmd.c mlx4_core: Add support for secure-host and SMP firewall 2014-08-05 07:40:22 -07:00
cq.c net/mlx4_en: Don't use irq_affinity_notifier to track changes in IRQ affinity map 2014-07-02 18:29:23 -07:00
en_clock.c ptp: drivers: set the number of programmable pins. 2014-03-21 14:21:14 -04:00
en_cq.c net/mlx4_en: cq->irq_desc wasn't set in legacy EQ's 2014-07-16 23:28:32 -07:00
en_dcb_nl.c net/mlx4_en: Fix UP limit in ieee_ets->prio_tc 2014-03-02 20:04:00 -05:00
en_ethtool.c net/mlx4_en: mlx4_en_[gs]et_priv_flags() can be static 2014-07-24 23:36:32 -07:00
en_main.c net/mlx4_en: Reduce memory consumption on kdump kernel 2014-07-22 19:53:14 -07:00
en_netdev.c net/mlx4: Move the tunnel steering helper function to mlx4_core 2014-08-29 20:13:00 -07:00
en_port.c net/mlx4_en: Move queue stopped/waked counters to be per ring 2014-03-02 20:04:01 -05:00
en_port.h
en_resources.c net/mlx4_en: Add netdev support for TCP/IP offloads of vxlan tunneling 2013-12-31 14:31:43 -05:00
en_rx.c mlx4: only pull headers into skb head 2014-09-05 22:35:27 -07:00
en_selftest.c net/mlx4_en: Run loopback test only when port is up 2014-07-08 19:58:44 -07:00
en_tx.c mlx4_en: Convert the normal skb free path to dev_consume_skb_any() 2014-09-03 21:00:17 -07:00
eq.c net/mlx4_en: Don't use irq_affinity_notifier to track changes in IRQ affinity map 2014-07-02 18:29:23 -07:00
fw.c net/mlx4_core: Enable CQE/EQE stride support 2014-09-19 17:30:10 -04:00
fw.h net/mlx4_core: Enable CQE/EQE stride support 2014-09-19 17:30:10 -04:00
icm.c mlx4_core: Fix GFP flags parameters to be gfp_t 2014-06-04 10:19:13 -07:00
icm.h mlx4_core: Fix GFP flags parameters to be gfp_t 2014-06-04 10:19:13 -07:00
intf.c mlx4: Use port management change event instead of smp_snoop 2012-07-10 09:47:10 -07:00
Kconfig net/mlx4: Set proper build dependancy with vxlan 2014-04-01 16:25:51 -04:00
main.c net/mlx4_core: Enable CQE/EQE stride support 2014-09-19 17:30:10 -04:00
Makefile net/mlx4_en: Add HW timestamping (TS) support 2013-04-24 16:30:14 -04:00
mcg.c net/mlx4: Move the tunnel steering helper function to mlx4_core 2014-08-29 20:13:00 -07:00
mlx4.h net/mlx4_core: Enable CQE/EQE stride support 2014-09-19 17:30:10 -04:00
mlx4_en.h net/mlx4_en: Reduce memory consumption on kdump kernel 2014-07-22 19:53:14 -07:00
mr.c mlx4_core: Add helper functions to support MR re-registration 2014-08-01 15:11:13 -07:00
pd.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
port.c net/mlx4: Verify port number in __mlx4_unregister_mac 2014-07-08 19:58:44 -07:00
profile.c mellanox: Logging message cleanups 2014-05-08 23:42:02 -04:00
qp.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-06-12 14:27:40 -07:00
reset.c mellanox: Logging message cleanups 2014-05-08 23:42:02 -04:00
resource_tracker.c mlx4_core: Add helper functions to support MR re-registration 2014-08-01 15:11:13 -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 IB/mlx4: Implement IB_QP_CREATE_USE_GFP_NOIO 2014-06-02 14:58:11 -07:00