aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorEli Cohen <eli@mellanox.co.il>2008-07-15 02:48:53 -0400
committerRoland Dreier <rolandd@cisco.com>2008-07-15 02:48:53 -0400
commitf507d28bff0601f1a8a96b7939fa3855c50d25b6 (patch)
treecc123185fdd19bac8c6309adeef0e39b47ef9b04 /drivers/infiniband
parent2d92865158d0e21ef4350703af64bc2a610d81d3 (diff)
IB/mlx4: Use kzalloc() for new QPs so flags are initialized to 0
Current code uses kmalloc() and then just does a bitwise OR operation on qp->flags in create_qp_common(), which means that qp->flags may potentially have some unintended bits set. This patch uses kzalloc() and avoids further explicit clearing of structure members, which also shrinks the code: add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-65 (-65) function old new delta create_qp_common 2024 1959 -65 Signed-off-by: Eli Cohen <eli@mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/hw/mlx4/qp.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 91590e7fba0c..89eb6cbe592e 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -454,19 +454,8 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
454 spin_lock_init(&qp->rq.lock); 454 spin_lock_init(&qp->rq.lock);
455 455
456 qp->state = IB_QPS_RESET; 456 qp->state = IB_QPS_RESET;
457 qp->atomic_rd_en = 0;
458 qp->resp_depth = 0;
459
460 qp->rq.head = 0;
461 qp->rq.tail = 0;
462 qp->sq.head = 0;
463 qp->sq.tail = 0;
464 qp->sq_next_wqe = 0;
465
466 if (init_attr->sq_sig_type == IB_SIGNAL_ALL_WR) 457 if (init_attr->sq_sig_type == IB_SIGNAL_ALL_WR)
467 qp->sq_signal_bits = cpu_to_be32(MLX4_WQE_CTRL_CQ_UPDATE); 458 qp->sq_signal_bits = cpu_to_be32(MLX4_WQE_CTRL_CQ_UPDATE);
468 else
469 qp->sq_signal_bits = 0;
470 459
471 err = set_rq_size(dev, &init_attr->cap, !!pd->uobject, !!init_attr->srq, qp); 460 err = set_rq_size(dev, &init_attr->cap, !!pd->uobject, !!init_attr->srq, qp);
472 if (err) 461 if (err)
@@ -704,7 +693,7 @@ struct ib_qp *mlx4_ib_create_qp(struct ib_pd *pd,
704 case IB_QPT_UC: 693 case IB_QPT_UC:
705 case IB_QPT_UD: 694 case IB_QPT_UD:
706 { 695 {
707 qp = kmalloc(sizeof *qp, GFP_KERNEL); 696 qp = kzalloc(sizeof *qp, GFP_KERNEL);
708 if (!qp) 697 if (!qp)
709 return ERR_PTR(-ENOMEM); 698 return ERR_PTR(-ENOMEM);
710 699
@@ -725,7 +714,7 @@ struct ib_qp *mlx4_ib_create_qp(struct ib_pd *pd,
725 if (pd->uobject) 714 if (pd->uobject)
726 return ERR_PTR(-EINVAL); 715 return ERR_PTR(-EINVAL);
727 716
728 sqp = kmalloc(sizeof *sqp, GFP_KERNEL); 717 sqp = kzalloc(sizeof *sqp, GFP_KERNEL);
729 if (!sqp) 718 if (!sqp)
730 return ERR_PTR(-ENOMEM); 719 return ERR_PTR(-ENOMEM);
731 720