• Home
  • Raw
  • Download

Lines Matching refs:srq

80 	struct rvt_srq *srq = ibsrq_to_rvtsrq(ibsrq);  in rvt_create_srq()  local
96 srq->rq.size = srq_init_attr->attr.max_wr + 1; in rvt_create_srq()
97 srq->rq.max_sge = srq_init_attr->attr.max_sge; in rvt_create_srq()
98 sz = sizeof(struct ib_sge) * srq->rq.max_sge + in rvt_create_srq()
100 if (rvt_alloc_rq(&srq->rq, srq->rq.size * sz, in rvt_create_srq()
111 u32 s = sizeof(struct rvt_rwq) + srq->rq.size * sz; in rvt_create_srq()
113 srq->ip = rvt_create_mmap_info(dev, s, udata, srq->rq.wq); in rvt_create_srq()
114 if (IS_ERR(srq->ip)) { in rvt_create_srq()
115 ret = PTR_ERR(srq->ip); in rvt_create_srq()
119 ret = ib_copy_to_udata(udata, &srq->ip->offset, in rvt_create_srq()
120 sizeof(srq->ip->offset)); in rvt_create_srq()
128 spin_lock_init(&srq->rq.lock); in rvt_create_srq()
129 srq->limit = srq_init_attr->attr.srq_limit; in rvt_create_srq()
141 if (srq->ip) { in rvt_create_srq()
143 list_add(&srq->ip->pending_mmaps, &dev->pending_mmaps); in rvt_create_srq()
150 kfree(srq->ip); in rvt_create_srq()
152 rvt_free_rq(&srq->rq); in rvt_create_srq()
170 struct rvt_srq *srq = ibsrq_to_rvtsrq(ibsrq); in rvt_modify_srq() local
184 attr->srq_limit : srq->limit) > attr->max_wr) in rvt_modify_srq()
187 srq->rq.max_sge * sizeof(struct ib_sge); in rvt_modify_srq()
209 spin_lock_irq(&srq->rq.kwq->c_lock); in rvt_modify_srq()
215 owq = srq->rq.wq; in rvt_modify_srq()
219 okwq = srq->rq.kwq; in rvt_modify_srq()
223 if (head >= srq->rq.size || tail >= srq->rq.size) { in rvt_modify_srq()
229 n += srq->rq.size - tail; in rvt_modify_srq()
242 wqe = rvt_get_rwqe_ptr(&srq->rq, tail); in rvt_modify_srq()
249 if (++tail >= srq->rq.size) in rvt_modify_srq()
252 srq->rq.kwq = tmp_rq.kwq; in rvt_modify_srq()
254 srq->rq.wq = tmp_rq.wq; in rvt_modify_srq()
261 srq->rq.size = size; in rvt_modify_srq()
263 srq->limit = attr->srq_limit; in rvt_modify_srq()
264 spin_unlock_irq(&srq->rq.kwq->c_lock); in rvt_modify_srq()
269 if (srq->ip) { in rvt_modify_srq()
270 struct rvt_mmap_info *ip = srq->ip; in rvt_modify_srq()
271 struct rvt_dev_info *dev = ib_to_rvt(srq->ibsrq.device); in rvt_modify_srq()
298 spin_lock_irq(&srq->rq.kwq->c_lock); in rvt_modify_srq()
299 if (attr->srq_limit >= srq->rq.size) in rvt_modify_srq()
302 srq->limit = attr->srq_limit; in rvt_modify_srq()
303 spin_unlock_irq(&srq->rq.kwq->c_lock); in rvt_modify_srq()
308 spin_unlock_irq(&srq->rq.kwq->c_lock); in rvt_modify_srq()
322 struct rvt_srq *srq = ibsrq_to_rvtsrq(ibsrq); in rvt_query_srq() local
324 attr->max_wr = srq->rq.size - 1; in rvt_query_srq()
325 attr->max_sge = srq->rq.max_sge; in rvt_query_srq()
326 attr->srq_limit = srq->limit; in rvt_query_srq()
337 struct rvt_srq *srq = ibsrq_to_rvtsrq(ibsrq); in rvt_destroy_srq() local
343 if (srq->ip) in rvt_destroy_srq()
344 kref_put(&srq->ip->ref, rvt_release_mmap_info); in rvt_destroy_srq()
345 kvfree(srq->rq.kwq); in rvt_destroy_srq()