Lines Matching refs:rqbd

32 static void oce_rqb_dtor(oce_rq_bdesc_t *rqbd);
33 static int oce_rqb_ctor(oce_rq_bdesc_t *rqbd, struct oce_rq *rq,
46 static void oce_rqb_free(struct oce_rq *rq, oce_rq_bdesc_t *rqbd);
89 oce_rq_bdesc_t *rqbd;
92 rqbd = rq->rq_bdesc_array;
94 for (cnt = 0; cnt < rq->cfg.nbufs; cnt++, rqbd++) {
95 rq->rqb_freelist[cnt] = rqbd;
96 ret = oce_rqb_ctor(rqbd, rq,
122 oce_rq_bdesc_t *rqbd = NULL;
125 rqbd = rq->rq_bdesc_array;
126 for (cnt = 0; cnt < rq->cfg.nbufs; cnt++, rqbd++) {
127 oce_rqb_dtor(rqbd);
134 * rqbd - pointer to rq buffer descriptor
139 oce_rqb_dtor(oce_rq_bdesc_t *rqbd)
141 if ((rqbd == NULL) || (rqbd->rq == NULL)) {
144 if (rqbd->mp != NULL) {
145 rqbd->fr_rtn.free_arg = NULL;
146 freemsg(rqbd->mp);
147 rqbd->mp = NULL;
149 oce_free_dma_buffer(rqbd->rq->parent, rqbd->rqb);
155 * rqbd - pointer to rq buffer descriptor
163 oce_rqb_ctor(oce_rq_bdesc_t *rqbd, struct oce_rq *rq, size_t size, int flags)
176 rqbd->fr_rtn.free_func = (void (*)())oce_rx_pool_free;
177 rqbd->fr_rtn.free_arg = (caddr_t)(void *)rqbd;
178 rqbd->mp = desballoc((uchar_t *)(dbuf->base),
179 dbuf->size, 0, &rqbd->fr_rtn);
180 if (rqbd->mp == NULL) {
184 rqbd->rqb = dbuf;
185 rqbd->rq = rq;
186 rqbd->frag_addr.dw.addr_lo = ADDR_LO(dbuf->addr + OCE_RQE_BUF_HEADROOM);
187 rqbd->frag_addr.dw.addr_hi = ADDR_HI(dbuf->addr + OCE_RQE_BUF_HEADROOM);
188 rqbd->mp->b_rptr = (uchar_t *)rqbd->rqb->base + OCE_RQE_BUF_HEADROOM;
203 oce_rq_bdesc_t *rqbd;
206 rqbd = rq->rqb_freelist[free_index];
209 return (rqbd);
216 * rqbd - pointer to recieve buffer descriptor
221 oce_rqb_free(struct oce_rq *rq, oce_rq_bdesc_t *rqbd)
226 rq->rqb_freelist[free_index] = rqbd;
270 oce_rq_bdesc_t *rqbd;
282 rqbd = oce_rqb_alloc(rq);
285 rqbd = shadow_rq[cur_index];
291 rqe->u0.s.frag_pa_lo = rqbd->frag_addr.dw.addr_lo;
292 rqe->u0.s.frag_pa_hi = rqbd->frag_addr.dw.addr_hi;
293 shadow_rq[rq->ring->pidx] = rqbd;
311 oce_rq_bdesc_t *rqbd;
317 rqbd = shadow_rq[rq->ring->cidx];
318 oce_rqb_free(rq, rqbd);
341 oce_rq_bdesc_t *rqbd;
356 rqbd = rq->shadow_ring[cur_index];
357 if (rqbd->mp == NULL) {
358 rqbd->mp = desballoc((uchar_t *)rqbd->rqb->base,
359 rqbd->rqb->size, 0, &rqbd->fr_rtn);
360 if (rqbd->mp == NULL) {
364 rqbd->mp->b_rptr =
365 (uchar_t *)rqbd->rqb->base + OCE_RQE_BUF_HEADROOM;
368 mp = rqbd->mp;
377 (void) DBUF_SYNC(rqbd->rqb, DDI_DMA_SYNC_FORCPU);
400 oce_rq_bdesc_t *rqbd;
426 rqbd = shadow_rq[cur_index];
429 (void) DBUF_SYNC(rqbd->rqb, DDI_DMA_SYNC_FORCPU);
430 bcopy(rqbd->rqb->base + OCE_RQE_BUF_HEADROOM, rptr, frag_size);
475 oce_rq_bdesc_t *rqbd;
479 rqbd = shadow_rq[rq->ring->cidx];
480 oce_rqb_free(rq, rqbd);
581 oce_rq_bdesc_t *rqbd;
590 rqbd = (oce_rq_bdesc_t *)(void *)arg;
591 rq = rqbd->rq;
592 rqbd->mp = desballoc((uchar_t *)rqbd->rqb->base,
593 rqbd->rqb->size, 0, &rqbd->fr_rtn);
595 if (rqbd->mp) {
596 rqbd->mp->b_rptr =
597 (uchar_t *)rqbd->rqb->base + OCE_RQE_BUF_HEADROOM;
600 oce_rqb_free(rq, rqbd);