• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/drivers/infiniband/hw/ipath/

Lines Matching defs:srq

50 	struct ipath_srq *srq = to_isrq(ibsrq);
60 if ((unsigned) wr->num_sge > srq->rq.max_sge) {
66 spin_lock_irqsave(&srq->rq.lock, flags);
67 wq = srq->rq.wq;
69 if (next >= srq->rq.size)
72 spin_unlock_irqrestore(&srq->rq.lock, flags);
78 wqe = get_rwqe_ptr(&srq->rq, wq->head);
84 spin_unlock_irqrestore(&srq->rq.lock, flags);
103 struct ipath_srq *srq;
118 srq = kmalloc(sizeof(*srq), GFP_KERNEL);
119 if (!srq) {
127 srq->rq.size = srq_init_attr->attr.max_wr + 1;
128 srq->rq.max_sge = srq_init_attr->attr.max_sge;
129 sz = sizeof(struct ib_sge) * srq->rq.max_sge +
131 srq->rq.wq = vmalloc_user(sizeof(struct ipath_rwq) + srq->rq.size * sz);
132 if (!srq->rq.wq) {
143 u32 s = sizeof(struct ipath_rwq) + srq->rq.size * sz;
145 srq->ip =
148 srq->rq.wq);
149 if (!srq->ip) {
154 err = ib_copy_to_udata(udata, &srq->ip->offset,
155 sizeof(srq->ip->offset));
161 srq->ip = NULL;
164 * ib_create_srq() will initialize srq->ibsrq.
166 spin_lock_init(&srq->rq.lock);
167 srq->rq.wq->head = 0;
168 srq->rq.wq->tail = 0;
169 srq->limit = srq_init_attr->attr.srq_limit;
181 if (srq->ip) {
183 list_add(&srq->ip->pending_mmaps, &dev->pending_mmaps);
187 ret = &srq->ibsrq;
191 kfree(srq->ip);
193 vfree(srq->rq.wq);
195 kfree(srq);
211 struct ipath_srq *srq = to_isrq(ibsrq);
223 attr->srq_limit : srq->limit) > attr->max_wr) {
229 srq->rq.max_sge * sizeof(struct ib_sge);
260 spin_lock_irq(&srq->rq.lock);
265 owq = srq->rq.wq;
267 if (head >= srq->rq.size)
270 if (tail >= srq->rq.size)
274 n += srq->rq.size - tail;
278 spin_unlock_irq(&srq->rq.lock);
289 wqe = get_rwqe_ptr(&srq->rq, tail);
296 if (++tail >= srq->rq.size)
299 srq->rq.wq = wq;
300 srq->rq.size = size;
304 srq->limit = attr->srq_limit;
305 spin_unlock_irq(&srq->rq.lock);
309 if (srq->ip) {
310 struct ipath_mmap_info *ip = srq->ip;
311 struct ipath_ibdev *dev = to_idev(srq->ibsrq.device);
322 spin_lock_irq(&srq->rq.lock);
323 if (attr->srq_limit >= srq->rq.size)
326 srq->limit = attr->srq_limit;
327 spin_unlock_irq(&srq->rq.lock);
336 struct ipath_srq *srq = to_isrq(ibsrq);
338 attr->max_wr = srq->rq.size - 1;
339 attr->max_sge = srq->rq.max_sge;
340 attr->srq_limit = srq->limit;
350 struct ipath_srq *srq = to_isrq(ibsrq);
356 if (srq->ip)
357 kref_put(&srq->ip->ref, ipath_release_mmap_info);
359 vfree(srq->rq.wq);
360 kfree(srq);