Lines Matching refs:buf_info

134 struct buf_info {  struct
148 static void free_buf_info(struct cfv_info *cfv, struct buf_info *buf_info) in free_buf_info() argument
150 if (!buf_info) in free_buf_info()
152 gen_pool_free(cfv->genpool, (unsigned long) buf_info->vaddr, in free_buf_info()
153 buf_info->size); in free_buf_info()
154 kfree(buf_info); in free_buf_info()
169 struct buf_info *buf_info; in cfv_release_used_buf() local
173 buf_info = virtqueue_get_buf(vq_tx, &len); in cfv_release_used_buf()
177 if (!buf_info) in cfv_release_used_buf()
180 free_buf_info(cfv, buf_info); in cfv_release_used_buf()
458 struct buf_info *buf_info; in cfv_netdev_close() local
469 while ((buf_info = virtqueue_detach_unused_buf(cfv->vq_tx))) in cfv_netdev_close()
470 free_buf_info(cfv, buf_info); in cfv_netdev_close()
479 static struct buf_info *cfv_alloc_and_copy_to_shm(struct cfv_info *cfv, in cfv_alloc_and_copy_to_shm()
484 struct buf_info *buf_info = NULL; in cfv_alloc_and_copy_to_shm() local
496 buf_info = kmalloc(sizeof(struct buf_info), GFP_ATOMIC); in cfv_alloc_and_copy_to_shm()
497 if (unlikely(!buf_info)) in cfv_alloc_and_copy_to_shm()
503 buf_info->size = cfv->tx_hr + skb->len + cfv->tx_tr + pad_len; in cfv_alloc_and_copy_to_shm()
506 buf_info->vaddr = (void *)gen_pool_alloc(cfv->genpool, buf_info->size); in cfv_alloc_and_copy_to_shm()
507 if (unlikely(!buf_info->vaddr)) in cfv_alloc_and_copy_to_shm()
511 skb_copy_bits(skb, 0, buf_info->vaddr + cfv->tx_hr + pad_len, skb->len); in cfv_alloc_and_copy_to_shm()
512 sg_init_one(sg, buf_info->vaddr + pad_len, in cfv_alloc_and_copy_to_shm()
515 return buf_info; in cfv_alloc_and_copy_to_shm()
517 kfree(buf_info); in cfv_alloc_and_copy_to_shm()
525 struct buf_info *buf_info; in cfv_netdev_tx() local
548 buf_info = cfv_alloc_and_copy_to_shm(cfv, skb, &sg); in cfv_netdev_tx()
549 if (unlikely(!buf_info)) { in cfv_netdev_tx()
557 buf_info = cfv_alloc_and_copy_to_shm(cfv, skb, &sg); in cfv_netdev_tx()
569 if (unlikely(!buf_info)) { in cfv_netdev_tx()
575 ret = virtqueue_add_outbuf(cfv->vq_tx, &sg, 1, buf_info, GFP_ATOMIC); in cfv_netdev_tx()
596 free_buf_info(cfv, buf_info); in cfv_netdev_tx()