Lines Matching +full:memory +full:- +full:mapped
4 * Copyright (C) 2017-2018 Broadcom. All Rights Reserved. The term *
6 * Copyright (C) 2004-2014 Emulex. All rights reserved. *
9 * Portions Copyright (C) 2004-2005 Christoph Hellwig *
17 * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE *
34 #include <linux/nvme-fc-driver.h>
50 #define LPFC_MEM_POOL_SIZE 64 /* max elem in non-DMA safety pool */
56 int max_xri = phba->sli4_hba.max_cfg_param.max_xri; in lpfc_mem_alloc_active_rrq_pool_s4()
59 return -ENOMEM; in lpfc_mem_alloc_active_rrq_pool_s4()
60 bytes = ((BITS_PER_LONG - 1 + max_xri) / BITS_PER_LONG) * in lpfc_mem_alloc_active_rrq_pool_s4()
62 phba->cfg_rrq_xri_bitmap_sz = bytes; in lpfc_mem_alloc_active_rrq_pool_s4()
63 phba->active_rrq_pool = mempool_create_kmalloc_pool(LPFC_MEM_POOL_SIZE, in lpfc_mem_alloc_active_rrq_pool_s4()
65 if (!phba->active_rrq_pool) in lpfc_mem_alloc_active_rrq_pool_s4()
66 return -ENOMEM; in lpfc_mem_alloc_active_rrq_pool_s4()
72 * lpfc_mem_alloc - create and allocate all PCI and memory pools
76 * lpfc_mbuf_pool, lpfc_hrb_pool. Creates and allocates kmalloc-backed mempools
79 * Notes: Not interrupt-safe. Must be called with no locks held. If any
80 * allocation fails, frees all successfully allocated memory before returning.
84 * -ENOMEM on failure (if any memory allocations fail)
89 struct lpfc_dma_pool *pool = &phba->lpfc_mbuf_safety_pool; in lpfc_mem_alloc()
92 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_mem_alloc()
94 if (phba->cfg_sg_dma_buf_size < SLI4_PAGE_SIZE) in lpfc_mem_alloc()
95 i = phba->cfg_sg_dma_buf_size; in lpfc_mem_alloc()
99 phba->lpfc_sg_dma_buf_pool = in lpfc_mem_alloc()
101 &phba->pcidev->dev, in lpfc_mem_alloc()
102 phba->cfg_sg_dma_buf_size, in lpfc_mem_alloc()
104 if (!phba->lpfc_sg_dma_buf_pool) in lpfc_mem_alloc()
108 phba->lpfc_sg_dma_buf_pool = in lpfc_mem_alloc()
110 &phba->pcidev->dev, phba->cfg_sg_dma_buf_size, in lpfc_mem_alloc()
113 if (!phba->lpfc_sg_dma_buf_pool) in lpfc_mem_alloc()
117 phba->lpfc_mbuf_pool = dma_pool_create("lpfc_mbuf_pool", &phba->pcidev->dev, in lpfc_mem_alloc()
120 if (!phba->lpfc_mbuf_pool) in lpfc_mem_alloc()
123 pool->elements = kmalloc_array(LPFC_MBUF_POOL_SIZE, in lpfc_mem_alloc()
126 if (!pool->elements) in lpfc_mem_alloc()
129 pool->max_count = 0; in lpfc_mem_alloc()
130 pool->current_count = 0; in lpfc_mem_alloc()
132 pool->elements[i].virt = dma_pool_alloc(phba->lpfc_mbuf_pool, in lpfc_mem_alloc()
133 GFP_KERNEL, &pool->elements[i].phys); in lpfc_mem_alloc()
134 if (!pool->elements[i].virt) in lpfc_mem_alloc()
136 pool->max_count++; in lpfc_mem_alloc()
137 pool->current_count++; in lpfc_mem_alloc()
140 phba->mbox_mem_pool = mempool_create_kmalloc_pool(LPFC_MEM_POOL_SIZE, in lpfc_mem_alloc()
142 if (!phba->mbox_mem_pool) in lpfc_mem_alloc()
145 phba->nlp_mem_pool = mempool_create_kmalloc_pool(LPFC_MEM_POOL_SIZE, in lpfc_mem_alloc()
147 if (!phba->nlp_mem_pool) in lpfc_mem_alloc()
150 if (phba->sli_rev == LPFC_SLI_REV4) { in lpfc_mem_alloc()
151 phba->rrq_pool = in lpfc_mem_alloc()
154 if (!phba->rrq_pool) in lpfc_mem_alloc()
156 phba->lpfc_hrb_pool = dma_pool_create("lpfc_hrb_pool", in lpfc_mem_alloc()
157 &phba->pcidev->dev, in lpfc_mem_alloc()
159 if (!phba->lpfc_hrb_pool) in lpfc_mem_alloc()
162 phba->lpfc_drb_pool = dma_pool_create("lpfc_drb_pool", in lpfc_mem_alloc()
163 &phba->pcidev->dev, in lpfc_mem_alloc()
165 if (!phba->lpfc_drb_pool) in lpfc_mem_alloc()
167 phba->lpfc_hbq_pool = NULL; in lpfc_mem_alloc()
169 phba->lpfc_hbq_pool = dma_pool_create("lpfc_hbq_pool", in lpfc_mem_alloc()
170 &phba->pcidev->dev, LPFC_BPL_SIZE, align, 0); in lpfc_mem_alloc()
171 if (!phba->lpfc_hbq_pool) in lpfc_mem_alloc()
173 phba->lpfc_hrb_pool = NULL; in lpfc_mem_alloc()
174 phba->lpfc_drb_pool = NULL; in lpfc_mem_alloc()
177 if (phba->cfg_EnableXLane) { in lpfc_mem_alloc()
178 phba->device_data_mem_pool = mempool_create_kmalloc_pool( in lpfc_mem_alloc()
181 if (!phba->device_data_mem_pool) in lpfc_mem_alloc()
184 phba->device_data_mem_pool = NULL; in lpfc_mem_alloc()
189 dma_pool_destroy(phba->lpfc_drb_pool); in lpfc_mem_alloc()
190 phba->lpfc_drb_pool = NULL; in lpfc_mem_alloc()
192 dma_pool_destroy(phba->lpfc_hrb_pool); in lpfc_mem_alloc()
193 phba->lpfc_hrb_pool = NULL; in lpfc_mem_alloc()
195 mempool_destroy(phba->rrq_pool); in lpfc_mem_alloc()
196 phba->rrq_pool = NULL; in lpfc_mem_alloc()
198 mempool_destroy(phba->nlp_mem_pool); in lpfc_mem_alloc()
199 phba->nlp_mem_pool = NULL; in lpfc_mem_alloc()
201 mempool_destroy(phba->mbox_mem_pool); in lpfc_mem_alloc()
202 phba->mbox_mem_pool = NULL; in lpfc_mem_alloc()
204 while (i--) in lpfc_mem_alloc()
205 dma_pool_free(phba->lpfc_mbuf_pool, pool->elements[i].virt, in lpfc_mem_alloc()
206 pool->elements[i].phys); in lpfc_mem_alloc()
207 kfree(pool->elements); in lpfc_mem_alloc()
209 dma_pool_destroy(phba->lpfc_mbuf_pool); in lpfc_mem_alloc()
210 phba->lpfc_mbuf_pool = NULL; in lpfc_mem_alloc()
212 dma_pool_destroy(phba->lpfc_sg_dma_buf_pool); in lpfc_mem_alloc()
213 phba->lpfc_sg_dma_buf_pool = NULL; in lpfc_mem_alloc()
215 return -ENOMEM; in lpfc_mem_alloc()
221 phba->lpfc_nvmet_drb_pool = in lpfc_nvmet_mem_alloc()
223 &phba->pcidev->dev, LPFC_NVMET_DATA_BUF_SIZE, in lpfc_nvmet_mem_alloc()
225 if (!phba->lpfc_nvmet_drb_pool) { in lpfc_nvmet_mem_alloc()
227 "6024 Can't enable NVME Target - no memory\n"); in lpfc_nvmet_mem_alloc()
228 return -ENOMEM; in lpfc_nvmet_mem_alloc()
234 * lpfc_mem_free - Frees memory allocated by lpfc_mem_alloc
235 * @phba: HBA to free memory for
237 * Description: Free the memory allocated by lpfc_mem_alloc routine. This
246 struct lpfc_dma_pool *pool = &phba->lpfc_mbuf_safety_pool; in lpfc_mem_free()
251 if (phba->lpfc_nvmet_drb_pool) in lpfc_mem_free()
252 dma_pool_destroy(phba->lpfc_nvmet_drb_pool); in lpfc_mem_free()
253 phba->lpfc_nvmet_drb_pool = NULL; in lpfc_mem_free()
254 if (phba->lpfc_drb_pool) in lpfc_mem_free()
255 dma_pool_destroy(phba->lpfc_drb_pool); in lpfc_mem_free()
256 phba->lpfc_drb_pool = NULL; in lpfc_mem_free()
257 if (phba->lpfc_hrb_pool) in lpfc_mem_free()
258 dma_pool_destroy(phba->lpfc_hrb_pool); in lpfc_mem_free()
259 phba->lpfc_hrb_pool = NULL; in lpfc_mem_free()
260 if (phba->txrdy_payload_pool) in lpfc_mem_free()
261 dma_pool_destroy(phba->txrdy_payload_pool); in lpfc_mem_free()
262 phba->txrdy_payload_pool = NULL; in lpfc_mem_free()
264 if (phba->lpfc_hbq_pool) in lpfc_mem_free()
265 dma_pool_destroy(phba->lpfc_hbq_pool); in lpfc_mem_free()
266 phba->lpfc_hbq_pool = NULL; in lpfc_mem_free()
268 if (phba->rrq_pool) in lpfc_mem_free()
269 mempool_destroy(phba->rrq_pool); in lpfc_mem_free()
270 phba->rrq_pool = NULL; in lpfc_mem_free()
272 /* Free NLP memory pool */ in lpfc_mem_free()
273 mempool_destroy(phba->nlp_mem_pool); in lpfc_mem_free()
274 phba->nlp_mem_pool = NULL; in lpfc_mem_free()
275 if (phba->sli_rev == LPFC_SLI_REV4 && phba->active_rrq_pool) { in lpfc_mem_free()
276 mempool_destroy(phba->active_rrq_pool); in lpfc_mem_free()
277 phba->active_rrq_pool = NULL; in lpfc_mem_free()
280 /* Free mbox memory pool */ in lpfc_mem_free()
281 mempool_destroy(phba->mbox_mem_pool); in lpfc_mem_free()
282 phba->mbox_mem_pool = NULL; in lpfc_mem_free()
284 /* Free MBUF memory pool */ in lpfc_mem_free()
285 for (i = 0; i < pool->current_count; i++) in lpfc_mem_free()
286 dma_pool_free(phba->lpfc_mbuf_pool, pool->elements[i].virt, in lpfc_mem_free()
287 pool->elements[i].phys); in lpfc_mem_free()
288 kfree(pool->elements); in lpfc_mem_free()
290 dma_pool_destroy(phba->lpfc_mbuf_pool); in lpfc_mem_free()
291 phba->lpfc_mbuf_pool = NULL; in lpfc_mem_free()
293 /* Free DMA buffer memory pool */ in lpfc_mem_free()
294 dma_pool_destroy(phba->lpfc_sg_dma_buf_pool); in lpfc_mem_free()
295 phba->lpfc_sg_dma_buf_pool = NULL; in lpfc_mem_free()
297 /* Free Device Data memory pool */ in lpfc_mem_free()
298 if (phba->device_data_mem_pool) { in lpfc_mem_free()
300 while (!list_empty(&phba->luns)) { in lpfc_mem_free()
301 device_data = list_first_entry(&phba->luns, in lpfc_mem_free()
304 list_del(&device_data->listentry); in lpfc_mem_free()
305 mempool_free(device_data, phba->device_data_mem_pool); in lpfc_mem_free()
307 mempool_destroy(phba->device_data_mem_pool); in lpfc_mem_free()
309 phba->device_data_mem_pool = NULL; in lpfc_mem_free()
314 * lpfc_mem_free_all - Frees all PCI and driver memory
315 * @phba: HBA to free memory for
317 * Description: Free memory from PCI and driver memory pools and also those
319 * kmalloc-backed mempools for LPFC_MBOXQ_t and lpfc_nodelist. Also frees
327 struct lpfc_sli *psli = &phba->sli; in lpfc_mem_free_all()
331 /* Free memory used in mailbox queue back to mailbox memory pool */ in lpfc_mem_free_all()
332 list_for_each_entry_safe(mbox, next_mbox, &psli->mboxq, list) { in lpfc_mem_free_all()
333 mp = (struct lpfc_dmabuf *) (mbox->context1); in lpfc_mem_free_all()
335 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_mem_free_all()
338 list_del(&mbox->list); in lpfc_mem_free_all()
339 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_mem_free_all()
341 /* Free memory used in mailbox cmpl list back to mailbox memory pool */ in lpfc_mem_free_all()
342 list_for_each_entry_safe(mbox, next_mbox, &psli->mboxq_cmpl, list) { in lpfc_mem_free_all()
343 mp = (struct lpfc_dmabuf *) (mbox->context1); in lpfc_mem_free_all()
345 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_mem_free_all()
348 list_del(&mbox->list); in lpfc_mem_free_all()
349 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_mem_free_all()
351 /* Free the active mailbox command back to the mailbox memory pool */ in lpfc_mem_free_all()
352 spin_lock_irq(&phba->hbalock); in lpfc_mem_free_all()
353 psli->sli_flag &= ~LPFC_SLI_MBOX_ACTIVE; in lpfc_mem_free_all()
354 spin_unlock_irq(&phba->hbalock); in lpfc_mem_free_all()
355 if (psli->mbox_active) { in lpfc_mem_free_all()
356 mbox = psli->mbox_active; in lpfc_mem_free_all()
357 mp = (struct lpfc_dmabuf *) (mbox->context1); in lpfc_mem_free_all()
359 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_mem_free_all()
362 mempool_free(mbox, phba->mbox_mem_pool); in lpfc_mem_free_all()
363 psli->mbox_active = NULL; in lpfc_mem_free_all()
366 /* Free and destroy all the allocated memory pools */ in lpfc_mem_free_all()
370 kfree(psli->iocbq_lookup); in lpfc_mem_free_all()
371 psli->iocbq_lookup = NULL; in lpfc_mem_free_all()
377 * lpfc_mbuf_alloc - Allocate an mbuf from the lpfc_mbuf_pool PCI pool
380 * @handle: used to return the DMA-mapped address of the mbuf
382 * Description: Allocates a DMA-mapped buffer from the lpfc_mbuf_pool PCI pool.
387 * Notes: Not interrupt-safe. Must be called with no locks held. Takes
388 * phba->hbalock.
397 struct lpfc_dma_pool *pool = &phba->lpfc_mbuf_safety_pool; in lpfc_mbuf_alloc()
401 ret = dma_pool_alloc(phba->lpfc_mbuf_pool, GFP_KERNEL, handle); in lpfc_mbuf_alloc()
403 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_mbuf_alloc()
404 if (!ret && (mem_flags & MEM_PRI) && pool->current_count) { in lpfc_mbuf_alloc()
405 pool->current_count--; in lpfc_mbuf_alloc()
406 ret = pool->elements[pool->current_count].virt; in lpfc_mbuf_alloc()
407 *handle = pool->elements[pool->current_count].phys; in lpfc_mbuf_alloc()
409 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_mbuf_alloc()
414 * __lpfc_mbuf_free - Free an mbuf from the lpfc_mbuf_pool PCI pool (locked)
417 * @dma: the DMA-mapped address of the lpfc_mbuf_pool to be freed
422 * Notes: Must be called with phba->hbalock held to synchronize access to
430 struct lpfc_dma_pool *pool = &phba->lpfc_mbuf_safety_pool; in __lpfc_mbuf_free()
432 if (pool->current_count < pool->max_count) { in __lpfc_mbuf_free()
433 pool->elements[pool->current_count].virt = virt; in __lpfc_mbuf_free()
434 pool->elements[pool->current_count].phys = dma; in __lpfc_mbuf_free()
435 pool->current_count++; in __lpfc_mbuf_free()
437 dma_pool_free(phba->lpfc_mbuf_pool, virt, dma); in __lpfc_mbuf_free()
443 * lpfc_mbuf_free - Free an mbuf from the lpfc_mbuf_pool PCI pool (unlocked)
446 * @dma: the DMA-mapped address of the lpfc_mbuf_pool to be freed
451 * Notes: Takes phba->hbalock. Can be called with or without other locks held.
460 spin_lock_irqsave(&phba->hbalock, iflags); in lpfc_mbuf_free()
462 spin_unlock_irqrestore(&phba->hbalock, iflags); in lpfc_mbuf_free()
467 * lpfc_nvmet_buf_alloc - Allocate an nvmet_buf from the
471 * @handle: used to return the DMA-mapped address of the nvmet_buf
473 * Description: Allocates a DMA-mapped buffer from the lpfc_sg_dma_buf_pool
485 ret = dma_pool_alloc(phba->lpfc_sg_dma_buf_pool, GFP_KERNEL, handle); in lpfc_nvmet_buf_alloc()
490 * lpfc_nvmet_buf_free - Free an nvmet_buf from the lpfc_sg_dma_buf_pool
494 * @dma: the DMA-mapped address of the lpfc_sg_dma_buf_pool to be freed
501 dma_pool_free(phba->lpfc_sg_dma_buf_pool, virt, dma); in lpfc_nvmet_buf_free()
505 * lpfc_els_hbq_alloc - Allocate an HBQ buffer
508 * Description: Allocates a DMA-mapped HBQ buffer from the lpfc_hrb_pool PCI
509 * pool along a non-DMA-mapped container for it.
511 * Notes: Not interrupt-safe. Must be called with no locks held.
526 hbqbp->dbuf.virt = dma_pool_alloc(phba->lpfc_hbq_pool, GFP_KERNEL, in lpfc_els_hbq_alloc()
527 &hbqbp->dbuf.phys); in lpfc_els_hbq_alloc()
528 if (!hbqbp->dbuf.virt) { in lpfc_els_hbq_alloc()
532 hbqbp->total_size = LPFC_BPL_SIZE; in lpfc_els_hbq_alloc()
537 * lpfc_els_hbq_free - Frees an HBQ buffer allocated with lpfc_els_hbq_alloc
541 * Description: Frees both the container and the DMA-mapped buffer returned by
551 dma_pool_free(phba->lpfc_hbq_pool, hbqbp->dbuf.virt, hbqbp->dbuf.phys); in lpfc_els_hbq_free()
557 * lpfc_sli4_rb_alloc - Allocate an SLI4 Receive buffer
560 * Description: Allocates a DMA-mapped receive buffer from the lpfc_hrb_pool PCI
561 * pool along a non-DMA-mapped container for it.
563 * Notes: Not interrupt-safe. Must be called with no locks held.
578 dma_buf->hbuf.virt = dma_pool_alloc(phba->lpfc_hrb_pool, GFP_KERNEL, in lpfc_sli4_rb_alloc()
579 &dma_buf->hbuf.phys); in lpfc_sli4_rb_alloc()
580 if (!dma_buf->hbuf.virt) { in lpfc_sli4_rb_alloc()
584 dma_buf->dbuf.virt = dma_pool_alloc(phba->lpfc_drb_pool, GFP_KERNEL, in lpfc_sli4_rb_alloc()
585 &dma_buf->dbuf.phys); in lpfc_sli4_rb_alloc()
586 if (!dma_buf->dbuf.virt) { in lpfc_sli4_rb_alloc()
587 dma_pool_free(phba->lpfc_hrb_pool, dma_buf->hbuf.virt, in lpfc_sli4_rb_alloc()
588 dma_buf->hbuf.phys); in lpfc_sli4_rb_alloc()
592 dma_buf->total_size = LPFC_DATA_BUF_SIZE; in lpfc_sli4_rb_alloc()
597 * lpfc_sli4_rb_free - Frees a receive buffer
601 * Description: Frees both the container and the DMA-mapped buffers returned by
611 dma_pool_free(phba->lpfc_hrb_pool, dmab->hbuf.virt, dmab->hbuf.phys); in lpfc_sli4_rb_free()
612 dma_pool_free(phba->lpfc_drb_pool, dmab->dbuf.virt, dmab->dbuf.phys); in lpfc_sli4_rb_free()
617 * lpfc_sli4_nvmet_alloc - Allocate an SLI4 Receive buffer
620 * Description: Allocates a DMA-mapped receive buffer from the lpfc_hrb_pool PCI
621 * pool along a non-DMA-mapped container for it.
623 * Notes: Not interrupt-safe. Must be called with no locks held.
638 dma_buf->hbuf.virt = dma_pool_alloc(phba->lpfc_hrb_pool, GFP_KERNEL, in lpfc_sli4_nvmet_alloc()
639 &dma_buf->hbuf.phys); in lpfc_sli4_nvmet_alloc()
640 if (!dma_buf->hbuf.virt) { in lpfc_sli4_nvmet_alloc()
644 dma_buf->dbuf.virt = dma_pool_alloc(phba->lpfc_nvmet_drb_pool, in lpfc_sli4_nvmet_alloc()
645 GFP_KERNEL, &dma_buf->dbuf.phys); in lpfc_sli4_nvmet_alloc()
646 if (!dma_buf->dbuf.virt) { in lpfc_sli4_nvmet_alloc()
647 dma_pool_free(phba->lpfc_hrb_pool, dma_buf->hbuf.virt, in lpfc_sli4_nvmet_alloc()
648 dma_buf->hbuf.phys); in lpfc_sli4_nvmet_alloc()
652 dma_buf->total_size = LPFC_NVMET_DATA_BUF_SIZE; in lpfc_sli4_nvmet_alloc()
657 * lpfc_sli4_nvmet_free - Frees a receive buffer
661 * Description: Frees both the container and the DMA-mapped buffers returned by
671 dma_pool_free(phba->lpfc_hrb_pool, dmab->hbuf.virt, dmab->hbuf.phys); in lpfc_sli4_nvmet_free()
672 dma_pool_free(phba->lpfc_nvmet_drb_pool, in lpfc_sli4_nvmet_free()
673 dmab->dbuf.virt, dmab->dbuf.phys); in lpfc_sli4_nvmet_free()
678 * lpfc_in_buf_free - Free a DMA buffer
685 * Notes: Takes phba->hbalock. Can be called with or without other locks held.
698 if (phba->sli3_options & LPFC_SLI3_HBQ_ENABLED) { in lpfc_in_buf_free()
701 spin_lock_irqsave(&phba->hbalock, flags); in lpfc_in_buf_free()
702 if (!phba->hbq_in_use) { in lpfc_in_buf_free()
703 spin_unlock_irqrestore(&phba->hbalock, flags); in lpfc_in_buf_free()
706 list_del(&hbq_entry->dbuf.list); in lpfc_in_buf_free()
707 if (hbq_entry->tag == -1) { in lpfc_in_buf_free()
708 (phba->hbqs[LPFC_ELS_HBQ].hbq_free_buffer) in lpfc_in_buf_free()
713 spin_unlock_irqrestore(&phba->hbalock, flags); in lpfc_in_buf_free()
715 lpfc_mbuf_free(phba, mp->virt, mp->phys); in lpfc_in_buf_free()
722 * lpfc_rq_buf_free - Free a RQ DMA buffer
729 * Notes: Takes phba->hbalock. Can be called with or without other locks held.
747 rqbp = rqb_entry->hrq->rqbp; in lpfc_rq_buf_free()
749 spin_lock_irqsave(&phba->hbalock, flags); in lpfc_rq_buf_free()
750 list_del(&rqb_entry->hbuf.list); in lpfc_rq_buf_free()
751 hrqe.address_lo = putPaddrLow(rqb_entry->hbuf.phys); in lpfc_rq_buf_free()
752 hrqe.address_hi = putPaddrHigh(rqb_entry->hbuf.phys); in lpfc_rq_buf_free()
753 drqe.address_lo = putPaddrLow(rqb_entry->dbuf.phys); in lpfc_rq_buf_free()
754 drqe.address_hi = putPaddrHigh(rqb_entry->dbuf.phys); in lpfc_rq_buf_free()
755 rc = lpfc_sli4_rq_put(rqb_entry->hrq, rqb_entry->drq, &hrqe, &drqe); in lpfc_rq_buf_free()
757 (rqbp->rqb_free_buffer)(phba, rqb_entry); in lpfc_rq_buf_free()
761 rqb_entry->hrq->queue_id, in lpfc_rq_buf_free()
762 rqb_entry->hrq->host_index, in lpfc_rq_buf_free()
763 rqb_entry->hrq->hba_index, in lpfc_rq_buf_free()
764 rqb_entry->hrq->entry_count, in lpfc_rq_buf_free()
765 rqb_entry->drq->host_index, in lpfc_rq_buf_free()
766 rqb_entry->drq->hba_index); in lpfc_rq_buf_free()
768 list_add_tail(&rqb_entry->hbuf.list, &rqbp->rqb_buffer_list); in lpfc_rq_buf_free()
769 rqbp->buffer_count++; in lpfc_rq_buf_free()
772 spin_unlock_irqrestore(&phba->hbalock, flags); in lpfc_rq_buf_free()