diff options
author | Ido Shamay <idos@mellanox.com> | 2014-12-16 06:28:54 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-12-16 15:23:53 -0500 |
commit | c3f2511feac088030055012cc8f64ebd84c87dbc (patch) | |
tree | d0050aaf6f9f5a2571abd772115ff7cd10ccbfb6 | |
parent | 94191fd6718c6ae000afdad2ade5c473d1439c57 (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.c | 11 | ||||
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/fw.c | 4 |
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 & |