Lines Matching refs:pvt_pool

20355 	struct lpfc_pvt_pool *pvt_pool;
20365 pvt_pool = &qp->p_multixri_pool->pvt_pool;
20370 multixri_pool->stat_pvt_count = pvt_pool->count;
20444 multixri_pool->pvt_pool.high_watermark = new_watermark;
20457 * This routine is called from hearbeat timer when pvt_pool is idle.
20465 struct lpfc_pvt_pool *pvt_pool;
20475 pvt_pool = &qp->p_multixri_pool->pvt_pool;
20479 lpfc_qp_spin_lock(&pvt_pool->lock, qp, mv_from_pvt_pool);
20481 if (pvt_pool->count > pvt_pool->low_watermark) {
20482 /* Step 1: move (all - low_watermark) from pvt_pool
20486 /* Move low watermark of bufs from pvt_pool to tmp_list */
20489 &pvt_pool->list, list) {
20492 if (tmp_count >= pvt_pool->low_watermark)
20496 /* Move all bufs from pvt_pool to pbl_pool */
20497 list_splice_init(&pvt_pool->list, &pbl_pool->list);
20499 /* Move all bufs from tmp_list to pvt_pool */
20500 list_splice(&tmp_list, &pvt_pool->list);
20502 pbl_pool->count += (pvt_pool->count - tmp_count);
20503 pvt_pool->count = tmp_count;
20505 /* Step 2: move the rest from pvt_pool to pbl_pool */
20506 list_splice_init(&pvt_pool->list, &pbl_pool->list);
20507 pbl_pool->count += pvt_pool->count;
20508 pvt_pool->count = 0;
20511 spin_unlock(&pvt_pool->lock);
20520 * @pvt_pool: specified private free XRI pool
20524 * to the specified pvt_pool. It might move less than count XRIs if there's not
20529 * specified pvt_pool
20535 struct lpfc_pvt_pool *pvt_pool, u32 count)
20546 lpfc_qp_spin_lock(&pvt_pool->lock, qp, mv_to_pvt_pool);
20552 &pvt_pool->list);
20553 pvt_pool->count++;
20560 spin_unlock(&pvt_pool->lock);
20586 struct lpfc_pvt_pool *pvt_pool;
20595 pvt_pool = &multixri_pool->pvt_pool;
20599 ret = _lpfc_move_xri_pbl_to_pvt(phba, qp, pbl_pool, pvt_pool, count);
20622 phba, qp, pbl_pool, pvt_pool, count);
20646 * lpfc_keep_pvt_pool_above_lowwm - Keep pvt_pool above low watermark
20650 * This routine get a batch of XRIs from pbl_pool if pvt_pool is less than
20656 struct lpfc_pvt_pool *pvt_pool;
20659 pvt_pool = &multixri_pool->pvt_pool;
20661 if (pvt_pool->count < pvt_pool->low_watermark)
20673 * the IO buf is returned to pbl_pool or pvt_pool based on watermark and
20682 struct lpfc_pvt_pool *pvt_pool;
20720 pvt_pool = &qp->p_multixri_pool->pvt_pool;
20726 xri_owned = pvt_pool->count + txcmplq_cnt + abts_io_bufs;
20739 if ((pvt_pool->count < pvt_pool->low_watermark) ||
20741 pvt_pool->count < pvt_pool->high_watermark)) {
20742 lpfc_qp_spin_lock_irqsave(&pvt_pool->lock, iflag,
20745 &pvt_pool->list);
20746 pvt_pool->count++;
20747 spin_unlock_irqrestore(&pvt_pool->lock, iflag);
20771 * @pvt_pool: pointer to private pool data structure.
20783 struct lpfc_pvt_pool *pvt_pool,
20790 lpfc_qp_spin_lock_irqsave(&pvt_pool->lock, iflag, qp, alloc_pvt_pool);
20792 &pvt_pool->list, list) {
20797 pvt_pool->count--;
20798 spin_unlock_irqrestore(&pvt_pool->lock, iflag);
20801 spin_unlock_irqrestore(&pvt_pool->lock, iflag);
20854 * 3. If we fail to get one from pvt_pool and this is an expedite request,
20871 struct lpfc_pvt_pool *pvt_pool;
20877 pvt_pool = &multixri_pool->pvt_pool;
20880 /* If pvt_pool is empty, move some XRIs from public to private pool */
20881 if (pvt_pool->count == 0)
20885 lpfc_ncmd = lpfc_get_io_buf_from_private_pool(phba, qp, pvt_pool, ndlp);
20891 /* If we fail to get one from pvt_pool and this is an expedite