Lines Matching defs:drb
85 struct ddp_rcv_buffer *drb);
87 struct sge_wrq *wrq, int tid, struct ddp_rcv_buffer *drb);
181 free_ddp_rcv_buffer(struct toepcb *toep, struct ddp_rcv_buffer *drb)
183 t4_free_page_pods(&drb->prsv);
184 free(drb->buf, M_CXGBE);
185 free(drb, M_CXGBE);
191 recycle_ddp_rcv_buffer(struct toepcb *toep, struct ddp_rcv_buffer *drb)
196 TAILQ_INSERT_HEAD(&toep->ddp.cached_buffers, drb, link);
201 free_ddp_rcv_buffer(toep, drb);
208 struct ddp_rcv_buffer *drb;
212 drb = TAILQ_FIRST(&toep->ddp.cached_buffers);
213 TAILQ_REMOVE(&toep->ddp.cached_buffers, drb, link);
217 drb = NULL;
219 return (drb);
227 struct ddp_rcv_buffer *drb;
230 drb = malloc(sizeof(*drb), M_CXGBE, how | M_ZERO);
231 if (drb == NULL)
234 drb->buf = contigmalloc(t4_ddp_rcvbuf_len, M_CXGBE, how, 0, ~0,
236 if (drb->buf == NULL) {
237 free(drb, M_CXGBE);
240 drb->len = t4_ddp_rcvbuf_len;
241 drb->refs = 1;
243 error = t4_alloc_page_pods_for_rcvbuf(&td->pr, drb);
245 free(drb->buf, M_CXGBE);
246 free(drb, M_CXGBE);
250 error = t4_write_page_pods_for_rcvbuf(sc, toep->ctrlq, toep->tid, drb);
252 t4_free_page_pods(&drb->prsv);
253 free(drb->buf, M_CXGBE);
254 free(drb, M_CXGBE);
260 return (drb);
267 if (db->drb != NULL)
268 free_ddp_rcv_buffer(toep, db->drb);
270 db->drb = NULL;
318 struct ddp_rcv_buffer *drb;
338 while ((drb = TAILQ_FIRST(&toep->ddp.cached_buffers)) != NULL) {
339 TAILQ_REMOVE(&toep->ddp.cached_buffers, drb, link);
340 free_ddp_rcv_buffer(toep, drb);
359 MPASS(toep->ddp.db[i].drb == NULL);
374 struct ddp_rcv_buffer *drb;
384 KASSERT(toep->ddp.db[db_idx ^ 1].drb == NULL,
405 drb = db->drb;
406 if (atomic_fetchadd_int(&drb->refs, -1) == 1)
407 recycle_ddp_rcv_buffer(toep, drb);
408 db->drb = NULL;
424 struct ddp_rcv_buffer *drb = m->m_ext.ext_arg2;
426 recycle_ddp_rcv_buffer(toep, drb);
435 struct ddp_rcv_buffer *drb;
446 drb = db->drb;
447 m_extaddref(m, (char *)drb->buf + db->placed, len, &drb->refs,
448 ddp_rcv_mbuf_done, toep, drb);
497 if (placed > db->drb->len - db->placed)
498 placed = db->drb->len - db->placed;
763 queue_ddp_rcvbuf(struct toepcb *toep, struct ddp_rcv_buffer *drb)
778 if (toep->ddp.db[0].drb == NULL) {
781 MPASS(toep->ddp.db[1].drb == NULL);
822 wr = mk_update_tcb_for_ddp(sc, toep, db_idx, &drb->prsv, 0, drb->len,
825 recycle_ddp_rcv_buffer(toep, drb);
839 drb->refs = 1;
844 db->drb = drb;
866 struct ddp_rcv_buffer *drb;
950 KASSERT(db->placed < db->drb->len,
954 drb = alloc_cached_ddp_rcv_buffer(toep);
955 if (drb == NULL)
956 drb = alloc_ddp_rcv_buffer(toep, M_NOWAIT);
957 if (drb == NULL)
960 if (!queue_ddp_rcvbuf(toep, drb)) {
1125 if (placed > db->drb->len - db->placed)
1126 placed = db->drb->len - db->placed;
1515 struct ddp_rcv_buffer *drb)
1517 struct ppod_reservation *prsv = &drb->prsv;
1522 return (t4_alloc_page_pods_for_buf(pr, (vm_offset_t)drb->buf, drb->len,
1700 struct ddp_rcv_buffer *drb)
1709 struct ppod_reservation *prsv = &drb->prsv;
1722 offset = (uintptr_t)drb->buf & PAGE_MASK;
1724 pva = trunc_page((uintptr_t)drb->buf);
1725 end_pva = trunc_page((uintptr_t)drb->buf + drb->len - 1);
1752 ppod->len_offset = htobe64(V_PPOD_LEN(drb->len) |
2861 struct ddp_rcv_buffer *drb;
2879 drb = alloc_cached_ddp_rcv_buffer(toep);
2882 if (drb == NULL) {
2883 drb = alloc_ddp_rcv_buffer(toep, M_WAITOK);
2884 if (drb == NULL) {
2894 recycle_ddp_rcv_buffer(toep, drb);
2902 recycle_ddp_rcv_buffer(toep, drb);
2909 recycle_ddp_rcv_buffer(toep, drb);
2914 if (!queue_ddp_rcvbuf(toep, drb)) {