[PATCH 26/30] IB/mlx4: Translate cache gid index to real index

2015-02-18 Thread Somnath Kotur
From: Moni Shoua mo...@mellanox.com

When QP is modified with path the given sgid_index is not necessarily
the index that HW knows. This is due to optimizations that can save
place in the HW table. Therefore, translation is required.

Signed-off-by: Moni Shoua mo...@mellanox.com
Signed-off-by: Somnath Kotur somnath.ko...@emulex.com
---
 drivers/infiniband/hw/mlx4/qp.c |   10 +++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 9731c07..b06e9fc 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -1256,14 +1256,18 @@ static int _mlx4_set_path(struct mlx4_ib_dev *dev, 
const struct ib_ah_attr *ah,
path-static_rate = 0;
 
if (ah-ah_flags  IB_AH_GRH) {
-   if (ah-grh.sgid_index = dev-dev-caps.gid_table_len[port]) {
+   int real_sgid_index = mlx4_ib_gid_index_to_real_index(dev,
+ port,
+ 
ah-grh.sgid_index);
+
+   if (real_sgid_index = dev-dev-caps.gid_table_len[port]) {
pr_err(sgid_index (%u) too large. max is %d\n,
-  ah-grh.sgid_index, 
dev-dev-caps.gid_table_len[port] - 1);
+  real_sgid_index, 
dev-dev-caps.gid_table_len[port] - 1);
return -1;
}
 
path-grh_mylmc |= 1  7;
-   path-mgid_index = ah-grh.sgid_index;
+   path-mgid_index = real_sgid_index;
path-hop_limit  = ah-grh.hop_limit;
path-tclass_flowlabel =
cpu_to_be32((ah-grh.traffic_class  20) |
-- 
1.7.1

--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 26/30] IB/mlx4: Translate cache gid index to real index

2015-02-18 Thread Somnath Kotur
From: Moni Shoua mo...@mellanox.com

When QP is modified with path the given sgid_index is not necessarily
the index that HW knows. This is due to optimizations that can save
place in the HW table. Therefore, translation is required.

Signed-off-by: Moni Shoua mo...@mellanox.com
Signed-off-by: Somnath Kotur somnath.ko...@emulex.com
---
 drivers/infiniband/hw/mlx4/qp.c |   10 +++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 9731c07..b06e9fc 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -1256,14 +1256,18 @@ static int _mlx4_set_path(struct mlx4_ib_dev *dev, 
const struct ib_ah_attr *ah,
path-static_rate = 0;
 
if (ah-ah_flags  IB_AH_GRH) {
-   if (ah-grh.sgid_index = dev-dev-caps.gid_table_len[port]) {
+   int real_sgid_index = mlx4_ib_gid_index_to_real_index(dev,
+ port,
+ 
ah-grh.sgid_index);
+
+   if (real_sgid_index = dev-dev-caps.gid_table_len[port]) {
pr_err(sgid_index (%u) too large. max is %d\n,
-  ah-grh.sgid_index, 
dev-dev-caps.gid_table_len[port] - 1);
+  real_sgid_index, 
dev-dev-caps.gid_table_len[port] - 1);
return -1;
}
 
path-grh_mylmc |= 1  7;
-   path-mgid_index = ah-grh.sgid_index;
+   path-mgid_index = real_sgid_index;
path-hop_limit  = ah-grh.hop_limit;
path-tclass_flowlabel =
cpu_to_be32((ah-grh.traffic_class  20) |
-- 
1.7.1

--
To unsubscribe from this list: send the line unsubscribe linux-rdma in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html