Lines Matching refs:bm_pool
17 void hwbm_buf_free(struct hwbm_pool *bm_pool, void *buf) in hwbm_buf_free() argument
19 if (likely(bm_pool->frag_size <= PAGE_SIZE)) in hwbm_buf_free()
27 int hwbm_pool_refill(struct hwbm_pool *bm_pool, gfp_t gfp) in hwbm_pool_refill() argument
29 int frag_size = bm_pool->frag_size; in hwbm_pool_refill()
40 if (bm_pool->construct) in hwbm_pool_refill()
41 if (bm_pool->construct(bm_pool, buf)) { in hwbm_pool_refill()
42 hwbm_buf_free(bm_pool, buf); in hwbm_pool_refill()
50 int hwbm_pool_add(struct hwbm_pool *bm_pool, unsigned int buf_num, gfp_t gfp) in hwbm_pool_add() argument
55 spin_lock_irqsave(&bm_pool->lock, flags); in hwbm_pool_add()
56 if (bm_pool->buf_num == bm_pool->size) { in hwbm_pool_add()
58 spin_unlock_irqrestore(&bm_pool->lock, flags); in hwbm_pool_add()
59 return bm_pool->buf_num; in hwbm_pool_add()
62 if (buf_num + bm_pool->buf_num > bm_pool->size) { in hwbm_pool_add()
65 spin_unlock_irqrestore(&bm_pool->lock, flags); in hwbm_pool_add()
69 if ((buf_num + bm_pool->buf_num) < bm_pool->buf_num) { in hwbm_pool_add()
71 buf_num, bm_pool->buf_num); in hwbm_pool_add()
72 spin_unlock_irqrestore(&bm_pool->lock, flags); in hwbm_pool_add()
77 err = hwbm_pool_refill(bm_pool, gfp); in hwbm_pool_add()
83 bm_pool->buf_num += i; in hwbm_pool_add()
86 spin_unlock_irqrestore(&bm_pool->lock, flags); in hwbm_pool_add()