Skip to contentSkip to conversation

mlx4: properly mask MGM entry members count

PATCH In review Eli Cohen 2 participants 2 messages Nov 16, 2010 – Dec 1, 2010

Subsystems (2)
lore
Share & tools
lore

Eli Cohen

author
#0 lore raw

PATCH v2 1/1 mlx4: properly mask MGM entry members count

The members_count field size is 24 bits so mask it properly when reading it.

---
Changes: Handle mlx4_multicast_detach too

 drivers/net/mlx4/mcg.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/net/mlx4/mcg.c +2 -2
index c4f88b7..5a89631 100644
@@ -187,7 +187,7 @@ int mlx4_multicast_attach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16],
 		memcpy(mgm->gid, gid, 16);
 	}
 
-	members_count = be32_to_cpu(mgm->members_count);
+	members_count = be32_to_cpu(mgm->members_count) & 0xffffff;
 	if (members_count == MLX4_QP_PER_MGM) {
 		mlx4_err(dev, "MGM at index %x is full.\n", index);
 		err = -ENOMEM;
@@ -270,7 +270,7 @@ int mlx4_multicast_detach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16])
 		goto out;
 	}
 
-	members_count = be32_to_cpu(mgm->members_count);
+	members_count = be32_to_cpu(mgm->members_count) & 0xffffff;
 	for (loc = -1, i = 0; i < members_count; ++i)
 		if ((be32_to_cpu(mgm->qp[i]) & MGM_QPN_MASK) == qp->qpn)
 			loc = i;
Signature · 6 lines
1.7.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#1 lore raw
Quoted 8 lines · Eli Cohen

The members_count field size is 24 bits so mask it properly when reading it.

---

-       members_count = be32_to_cpu(mgm->members_count);
+       members_count = be32_to_cpu(mgm->members_count) & 0xffffff;

Later, in attach/detach you are loosing protocol when assigning mgm->members_count.

line:
mgm->members_count = cpu_to_be32(members_count)

should be changes to:
mgm->members_count = cpu_to_be32(members_count) | (mgm->members_count & 0xff000000);
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html