diff options
author | Sean Hefty <sean.hefty@intel.com> | 2011-05-23 19:31:36 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2011-10-13 12:13:26 -0400 |
commit | 96104eda01695a26da2c8f7423ec0ba3509c8c97 (patch) | |
tree | 04e38bfe564245ebd9a62738d54a111b2d24da4a /drivers/infiniband/hw | |
parent | 59991f94eb32e954aa767f659eb642461e9e8b37 (diff) |
RDMA/core: Add SRQ type field
Currently, there is only a single ("basic") type of SRQ, but with XRC
support we will add a second. Prepare for this by defining an SRQ type
and setting all current users to IB_SRQT_BASIC.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/hw')
-rw-r--r-- | drivers/infiniband/hw/ehca/ehca_qp.c | 3 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_srq.c | 5 | ||||
-rw-r--r-- | drivers/infiniband/hw/mlx4/srq.c | 3 | ||||
-rw-r--r-- | drivers/infiniband/hw/mthca/mthca_provider.c | 3 | ||||
-rw-r--r-- | drivers/infiniband/hw/qib/qib_srq.c | 5 |
5 files changed, 19 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c index 32fb34201aba..964f85520798 100644 --- a/drivers/infiniband/hw/ehca/ehca_qp.c +++ b/drivers/infiniband/hw/ehca/ehca_qp.c | |||
@@ -977,6 +977,9 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd, | |||
977 | struct hcp_modify_qp_control_block *mqpcb; | 977 | struct hcp_modify_qp_control_block *mqpcb; |
978 | u64 hret, update_mask; | 978 | u64 hret, update_mask; |
979 | 979 | ||
980 | if (srq_init_attr->srq_type != IB_SRQT_BASIC) | ||
981 | return ERR_PTR(-ENOSYS); | ||
982 | |||
980 | /* For common attributes, internal_create_qp() takes its info | 983 | /* For common attributes, internal_create_qp() takes its info |
981 | * out of qp_init_attr, so copy all common attrs there. | 984 | * out of qp_init_attr, so copy all common attrs there. |
982 | */ | 985 | */ |
diff --git a/drivers/infiniband/hw/ipath/ipath_srq.c b/drivers/infiniband/hw/ipath/ipath_srq.c index 386e2c717c53..26271984b717 100644 --- a/drivers/infiniband/hw/ipath/ipath_srq.c +++ b/drivers/infiniband/hw/ipath/ipath_srq.c | |||
@@ -107,6 +107,11 @@ struct ib_srq *ipath_create_srq(struct ib_pd *ibpd, | |||
107 | u32 sz; | 107 | u32 sz; |
108 | struct ib_srq *ret; | 108 | struct ib_srq *ret; |
109 | 109 | ||
110 | if (srq_init_attr->srq_type != IB_SRQT_BASIC) { | ||
111 | ret = ERR_PTR(-ENOSYS); | ||
112 | goto done; | ||
113 | } | ||
114 | |||
110 | if (srq_init_attr->attr.max_wr == 0) { | 115 | if (srq_init_attr->attr.max_wr == 0) { |
111 | ret = ERR_PTR(-EINVAL); | 116 | ret = ERR_PTR(-EINVAL); |
112 | goto done; | 117 | goto done; |
diff --git a/drivers/infiniband/hw/mlx4/srq.c b/drivers/infiniband/hw/mlx4/srq.c index 818b7ecace5e..4f7f7600d27c 100644 --- a/drivers/infiniband/hw/mlx4/srq.c +++ b/drivers/infiniband/hw/mlx4/srq.c | |||
@@ -81,6 +81,9 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd, | |||
81 | int err; | 81 | int err; |
82 | int i; | 82 | int i; |
83 | 83 | ||
84 | if (init_attr->srq_type != IB_SRQT_BASIC) | ||
85 | return ERR_PTR(-ENOSYS); | ||
86 | |||
84 | /* Sanity check SRQ size before proceeding */ | 87 | /* Sanity check SRQ size before proceeding */ |
85 | if (init_attr->attr.max_wr >= dev->dev->caps.max_srq_wqes || | 88 | if (init_attr->attr.max_wr >= dev->dev->caps.max_srq_wqes || |
86 | init_attr->attr.max_sge > dev->dev->caps.max_srq_sge) | 89 | init_attr->attr.max_sge > dev->dev->caps.max_srq_sge) |
diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c index 365fe0e14192..cb9a0b976804 100644 --- a/drivers/infiniband/hw/mthca/mthca_provider.c +++ b/drivers/infiniband/hw/mthca/mthca_provider.c | |||
@@ -438,6 +438,9 @@ static struct ib_srq *mthca_create_srq(struct ib_pd *pd, | |||
438 | struct mthca_srq *srq; | 438 | struct mthca_srq *srq; |
439 | int err; | 439 | int err; |
440 | 440 | ||
441 | if (init_attr->srq_type != IB_SRQT_BASIC) | ||
442 | return ERR_PTR(-ENOSYS); | ||
443 | |||
441 | srq = kmalloc(sizeof *srq, GFP_KERNEL); | 444 | srq = kmalloc(sizeof *srq, GFP_KERNEL); |
442 | if (!srq) | 445 | if (!srq) |
443 | return ERR_PTR(-ENOMEM); | 446 | return ERR_PTR(-ENOMEM); |
diff --git a/drivers/infiniband/hw/qib/qib_srq.c b/drivers/infiniband/hw/qib/qib_srq.c index c3ec8efc2ed8..d6235931a1ba 100644 --- a/drivers/infiniband/hw/qib/qib_srq.c +++ b/drivers/infiniband/hw/qib/qib_srq.c | |||
@@ -107,6 +107,11 @@ struct ib_srq *qib_create_srq(struct ib_pd *ibpd, | |||
107 | u32 sz; | 107 | u32 sz; |
108 | struct ib_srq *ret; | 108 | struct ib_srq *ret; |
109 | 109 | ||
110 | if (srq_init_attr->srq_type != IB_SRQT_BASIC) { | ||
111 | ret = ERR_PTR(-ENOSYS); | ||
112 | goto done; | ||
113 | } | ||
114 | |||
110 | if (srq_init_attr->attr.max_sge == 0 || | 115 | if (srq_init_attr->attr.max_sge == 0 || |
111 | srq_init_attr->attr.max_sge > ib_qib_max_srq_sges || | 116 | srq_init_attr->attr.max_sge > ib_qib_max_srq_sges || |
112 | srq_init_attr->attr.max_wr == 0 || | 117 | srq_init_attr->attr.max_wr == 0 || |