aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIdo Shamay <idos@mellanox.com>2014-12-16 06:28:54 -0500
committerDavid S. Miller <davem@davemloft.net>2014-12-16 15:23:53 -0500
commitc3f2511feac088030055012cc8f64ebd84c87dbc (patch)
treed0050aaf6f9f5a2571abd772115ff7cd10ccbfb6
parent94191fd6718c6ae000afdad2ade5c473d1439c57 (diff)
net/mlx4: Cache line CQE/EQE stride fixes
This commit contains 2 fixes for the 128B CQE/EQE stride feaure. Wei found that mlx4_QUERY_HCA function marked the wrong capability in flags (64B CQE/EQE), when CQE/EQE stride feature was enabled. Also added small fix in initial CQE ownership bit assignment, when CQE is size is not default 32B. Fixes: 77507aa24 (net/mlx4: Enable CQE/EQE stride support) Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com> Signed-off-by: Ido Shamay <idos@mellanox.com> Signed-off-by: Amir Vadai <amirv@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_netdev.c11
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/fw.c4
2 files changed, 11 insertions, 4 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
index 6ff214de1111..190cbd931f6b 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
@@ -1569,8 +1569,15 @@ int mlx4_en_start_port(struct net_device *dev)
1569 mlx4_en_free_affinity_hint(priv, i); 1569 mlx4_en_free_affinity_hint(priv, i);
1570 goto cq_err; 1570 goto cq_err;
1571 } 1571 }
1572 for (j = 0; j < cq->size; j++) 1572
1573 cq->buf[j].owner_sr_opcode = MLX4_CQE_OWNER_MASK; 1573 for (j = 0; j < cq->size; j++) {
1574 struct mlx4_cqe *cqe = NULL;
1575
1576 cqe = mlx4_en_get_cqe(cq->buf, j, priv->cqe_size) +
1577 priv->cqe_factor;
1578 cqe->owner_sr_opcode = MLX4_CQE_OWNER_MASK;
1579 }
1580
1574 err = mlx4_en_set_cq_moder(priv, cq); 1581 err = mlx4_en_set_cq_moder(priv, cq);
1575 if (err) { 1582 if (err) {
1576 en_err(priv, "Failed setting cq moderation parameters\n"); 1583 en_err(priv, "Failed setting cq moderation parameters\n");
diff --git a/drivers/net/ethernet/mellanox/mlx4/fw.c b/drivers/net/ethernet/mellanox/mlx4/fw.c
index 51807bb7546e..982861d1df44 100644
--- a/drivers/net/ethernet/mellanox/mlx4/fw.c
+++ b/drivers/net/ethernet/mellanox/mlx4/fw.c
@@ -1852,8 +1852,8 @@ int mlx4_QUERY_HCA(struct mlx4_dev *dev,
1852 /* CX3 is capable of extending CQEs\EQEs to strides larger than 64B */ 1852 /* CX3 is capable of extending CQEs\EQEs to strides larger than 64B */
1853 MLX4_GET(byte_field, outbox, INIT_HCA_EQE_CQE_STRIDE_OFFSET); 1853 MLX4_GET(byte_field, outbox, INIT_HCA_EQE_CQE_STRIDE_OFFSET);
1854 if (byte_field) { 1854 if (byte_field) {
1855 param->dev_cap_enabled |= MLX4_DEV_CAP_64B_EQE_ENABLED; 1855 param->dev_cap_enabled |= MLX4_DEV_CAP_EQE_STRIDE_ENABLED;
1856 param->dev_cap_enabled |= MLX4_DEV_CAP_64B_CQE_ENABLED; 1856 param->dev_cap_enabled |= MLX4_DEV_CAP_CQE_STRIDE_ENABLED;
1857 param->cqe_size = 1 << ((byte_field & 1857 param->cqe_size = 1 << ((byte_field &
1858 MLX4_CQE_SIZE_MASK_STRIDE) + 5); 1858 MLX4_CQE_SIZE_MASK_STRIDE) + 5);
1859 param->eqe_size = 1 << (((byte_field & 1859 param->eqe_size = 1 << (((byte_field &