Lines Matching refs:bm_pool

3346 				struct mvpp2_bm_pool *bm_pool, int size)  in mvpp2_bm_pool_create()  argument
3352 bm_pool->virt_addr = dma_alloc_coherent(&pdev->dev, size_bytes, in mvpp2_bm_pool_create()
3353 &bm_pool->phys_addr, in mvpp2_bm_pool_create()
3355 if (!bm_pool->virt_addr) in mvpp2_bm_pool_create()
3358 if (!IS_ALIGNED((u32)bm_pool->virt_addr, MVPP2_BM_POOL_PTR_ALIGN)) { in mvpp2_bm_pool_create()
3359 dma_free_coherent(&pdev->dev, size_bytes, bm_pool->virt_addr, in mvpp2_bm_pool_create()
3360 bm_pool->phys_addr); in mvpp2_bm_pool_create()
3362 bm_pool->id, MVPP2_BM_POOL_PTR_ALIGN); in mvpp2_bm_pool_create()
3366 mvpp2_write(priv, MVPP2_BM_POOL_BASE_REG(bm_pool->id), in mvpp2_bm_pool_create()
3367 bm_pool->phys_addr); in mvpp2_bm_pool_create()
3368 mvpp2_write(priv, MVPP2_BM_POOL_SIZE_REG(bm_pool->id), size); in mvpp2_bm_pool_create()
3370 val = mvpp2_read(priv, MVPP2_BM_POOL_CTRL_REG(bm_pool->id)); in mvpp2_bm_pool_create()
3372 mvpp2_write(priv, MVPP2_BM_POOL_CTRL_REG(bm_pool->id), val); in mvpp2_bm_pool_create()
3374 bm_pool->type = MVPP2_BM_FREE; in mvpp2_bm_pool_create()
3375 bm_pool->size = size; in mvpp2_bm_pool_create()
3376 bm_pool->pkt_size = 0; in mvpp2_bm_pool_create()
3377 bm_pool->buf_num = 0; in mvpp2_bm_pool_create()
3378 atomic_set(&bm_pool->in_use, 0); in mvpp2_bm_pool_create()
3379 spin_lock_init(&bm_pool->lock); in mvpp2_bm_pool_create()
3386 struct mvpp2_bm_pool *bm_pool, in mvpp2_bm_pool_bufsize_set() argument
3391 bm_pool->buf_size = buf_size; in mvpp2_bm_pool_bufsize_set()
3394 mvpp2_write(priv, MVPP2_POOL_BUF_SIZE_REG(bm_pool->id), val); in mvpp2_bm_pool_bufsize_set()
3398 static void mvpp2_bm_bufs_free(struct mvpp2 *priv, struct mvpp2_bm_pool *bm_pool) in mvpp2_bm_bufs_free() argument
3402 for (i = 0; i < bm_pool->buf_num; i++) { in mvpp2_bm_bufs_free()
3406 mvpp2_read(priv, MVPP2_BM_PHY_ALLOC_REG(bm_pool->id)); in mvpp2_bm_bufs_free()
3414 bm_pool->buf_num -= i; in mvpp2_bm_bufs_free()
3420 struct mvpp2_bm_pool *bm_pool) in mvpp2_bm_pool_destroy() argument
3424 mvpp2_bm_bufs_free(priv, bm_pool); in mvpp2_bm_pool_destroy()
3425 if (bm_pool->buf_num) { in mvpp2_bm_pool_destroy()
3426 WARN(1, "cannot free all buffers in pool %d\n", bm_pool->id); in mvpp2_bm_pool_destroy()
3430 val = mvpp2_read(priv, MVPP2_BM_POOL_CTRL_REG(bm_pool->id)); in mvpp2_bm_pool_destroy()
3432 mvpp2_write(priv, MVPP2_BM_POOL_CTRL_REG(bm_pool->id), val); in mvpp2_bm_pool_destroy()
3434 dma_free_coherent(&pdev->dev, sizeof(u32) * bm_pool->size, in mvpp2_bm_pool_destroy()
3435 bm_pool->virt_addr, in mvpp2_bm_pool_destroy()
3436 bm_pool->phys_addr); in mvpp2_bm_pool_destroy()
3444 struct mvpp2_bm_pool *bm_pool; in mvpp2_bm_pools_init() local
3449 bm_pool = &priv->bm_pools[i]; in mvpp2_bm_pools_init()
3450 bm_pool->id = i; in mvpp2_bm_pools_init()
3451 err = mvpp2_bm_pool_create(pdev, priv, bm_pool, size); in mvpp2_bm_pools_init()
3454 mvpp2_bm_pool_bufsize_set(priv, bm_pool, 0); in mvpp2_bm_pools_init()
3526 struct mvpp2_bm_pool *bm_pool, in mvpp2_skb_alloc() argument
3533 skb = __dev_alloc_skb(bm_pool->pkt_size, gfp_mask); in mvpp2_skb_alloc()
3538 MVPP2_RX_BUF_SIZE(bm_pool->pkt_size), in mvpp2_skb_alloc()
3600 struct mvpp2_bm_pool *bm_pool, int buf_num) in mvpp2_bm_bufs_add() argument
3607 buf_size = MVPP2_RX_BUF_SIZE(bm_pool->pkt_size); in mvpp2_bm_bufs_add()
3611 (buf_num + bm_pool->buf_num > bm_pool->size)) { in mvpp2_bm_bufs_add()
3614 buf_num, bm_pool->id); in mvpp2_bm_bufs_add()
3618 bm = mvpp2_bm_cookie_pool_set(0, bm_pool->id); in mvpp2_bm_bufs_add()
3620 skb = mvpp2_skb_alloc(port, bm_pool, &phys_addr, GFP_KERNEL); in mvpp2_bm_bufs_add()
3628 bm_pool->buf_num += i; in mvpp2_bm_bufs_add()
3629 bm_pool->in_use_thresh = bm_pool->buf_num / 4; in mvpp2_bm_bufs_add()
3633 bm_pool->type == MVPP2_BM_SWF_SHORT ? "short" : " long", in mvpp2_bm_bufs_add()
3634 bm_pool->id, bm_pool->pkt_size, buf_size, total_size); in mvpp2_bm_bufs_add()
3638 bm_pool->type == MVPP2_BM_SWF_SHORT ? "short" : " long", in mvpp2_bm_bufs_add()
3639 bm_pool->id, i, buf_num); in mvpp2_bm_bufs_add()
4934 struct mvpp2_bm_pool *bm_pool, in mvpp2_rx_refill() argument
4941 (atomic_read(&bm_pool->in_use) < bm_pool->in_use_thresh)) in mvpp2_rx_refill()
4945 skb = mvpp2_skb_alloc(port, bm_pool, &phys_addr, GFP_ATOMIC); in mvpp2_rx_refill()
4950 atomic_dec(&bm_pool->in_use); in mvpp2_rx_refill()
5039 struct mvpp2_bm_pool *bm_pool; in mvpp2_rx() local
5050 bm_pool = &port->priv->bm_pools[pool]; in mvpp2_rx()
5074 atomic_inc(&bm_pool->in_use); in mvpp2_rx()
5083 err = mvpp2_rx_refill(port, bm_pool, bm, 0); in mvpp2_rx()
6396 struct mvpp2_bm_pool *bm_pool = &priv->bm_pools[i]; in mvpp2_remove() local
6398 mvpp2_bm_pool_destroy(pdev, priv, bm_pool); in mvpp2_remove()