Lines Matching refs:ring

40 static int hnae_alloc_buffer(struct hnae_ring *ring, struct hnae_desc_cb *cb)  in hnae_alloc_buffer()  argument
42 unsigned int order = hnae_page_order(ring); in hnae_alloc_buffer()
52 cb->length = hnae_page_size(ring); in hnae_alloc_buffer()
58 static void hnae_free_buffer(struct hnae_ring *ring, struct hnae_desc_cb *cb) in hnae_free_buffer() argument
62 else if (unlikely(is_rx_ring(ring))) in hnae_free_buffer()
67 static int hnae_map_buffer(struct hnae_ring *ring, struct hnae_desc_cb *cb) in hnae_map_buffer() argument
69 cb->dma = dma_map_page(ring_to_dev(ring), cb->priv, 0, in hnae_map_buffer()
70 cb->length, ring_to_dma_dir(ring)); in hnae_map_buffer()
72 if (dma_mapping_error(ring_to_dev(ring), cb->dma)) in hnae_map_buffer()
78 static void hnae_unmap_buffer(struct hnae_ring *ring, struct hnae_desc_cb *cb) in hnae_unmap_buffer() argument
81 dma_unmap_single(ring_to_dev(ring), cb->dma, cb->length, in hnae_unmap_buffer()
82 ring_to_dma_dir(ring)); in hnae_unmap_buffer()
84 dma_unmap_page(ring_to_dev(ring), cb->dma, cb->length, in hnae_unmap_buffer()
85 ring_to_dma_dir(ring)); in hnae_unmap_buffer()
117 static void hnae_free_buffers(struct hnae_ring *ring) in hnae_free_buffers() argument
121 for (i = 0; i < ring->desc_num; i++) in hnae_free_buffers()
122 hnae_free_buffer_detach(ring, i); in hnae_free_buffers()
126 static int hnae_alloc_buffers(struct hnae_ring *ring) in hnae_alloc_buffers() argument
130 for (i = 0; i < ring->desc_num; i++) { in hnae_alloc_buffers()
131 ret = hnae_alloc_buffer_attach(ring, i); in hnae_alloc_buffers()
140 hnae_free_buffer_detach(ring, j); in hnae_alloc_buffers()
145 static void hnae_free_desc(struct hnae_ring *ring) in hnae_free_desc() argument
147 hnae_free_buffers(ring); in hnae_free_desc()
148 dma_unmap_single(ring_to_dev(ring), ring->desc_dma_addr, in hnae_free_desc()
149 ring->desc_num * sizeof(ring->desc[0]), in hnae_free_desc()
150 ring_to_dma_dir(ring)); in hnae_free_desc()
151 ring->desc_dma_addr = 0; in hnae_free_desc()
152 kfree(ring->desc); in hnae_free_desc()
153 ring->desc = NULL; in hnae_free_desc()
157 static int hnae_alloc_desc(struct hnae_ring *ring) in hnae_alloc_desc() argument
159 int size = ring->desc_num * sizeof(ring->desc[0]); in hnae_alloc_desc()
161 ring->desc = kzalloc(size, GFP_KERNEL); in hnae_alloc_desc()
162 if (!ring->desc) in hnae_alloc_desc()
165 ring->desc_dma_addr = dma_map_single(ring_to_dev(ring), in hnae_alloc_desc()
166 ring->desc, size, ring_to_dma_dir(ring)); in hnae_alloc_desc()
167 if (dma_mapping_error(ring_to_dev(ring), ring->desc_dma_addr)) { in hnae_alloc_desc()
168 ring->desc_dma_addr = 0; in hnae_alloc_desc()
169 kfree(ring->desc); in hnae_alloc_desc()
170 ring->desc = NULL; in hnae_alloc_desc()
178 static void hnae_fini_ring(struct hnae_ring *ring) in hnae_fini_ring() argument
180 hnae_free_desc(ring); in hnae_fini_ring()
181 kfree(ring->desc_cb); in hnae_fini_ring()
182 ring->desc_cb = NULL; in hnae_fini_ring()
183 ring->next_to_clean = 0; in hnae_fini_ring()
184 ring->next_to_use = 0; in hnae_fini_ring()
189 hnae_init_ring(struct hnae_queue *q, struct hnae_ring *ring, int flags) in hnae_init_ring() argument
193 if (ring->desc_num <= 0 || ring->buf_size <= 0) in hnae_init_ring()
196 ring->q = q; in hnae_init_ring()
197 ring->flags = flags; in hnae_init_ring()
198 assert(!ring->desc && !ring->desc_cb && !ring->desc_dma_addr); in hnae_init_ring()
201 assert(ring->next_to_use == 0); in hnae_init_ring()
202 assert(ring->next_to_clean == 0); in hnae_init_ring()
204 ring->desc_cb = kcalloc(ring->desc_num, sizeof(ring->desc_cb[0]), in hnae_init_ring()
206 if (!ring->desc_cb) { in hnae_init_ring()
211 ret = hnae_alloc_desc(ring); in hnae_init_ring()
215 if (is_rx_ring(ring)) { in hnae_init_ring()
216 ret = hnae_alloc_buffers(ring); in hnae_init_ring()
224 hnae_free_desc(ring); in hnae_init_ring()
226 kfree(ring->desc_cb); in hnae_init_ring()
227 ring->desc_cb = NULL; in hnae_init_ring()