Lines Matching refs:rx_desc_pool

31 QDF_STATUS dp_rx_desc_pool_is_allocated(struct rx_desc_pool *rx_desc_pool)  in dp_rx_desc_pool_is_allocated()  argument
33 if (!rx_desc_pool->desc_pages.num_pages) { in dp_rx_desc_pool_is_allocated()
35 rx_desc_pool->elem_size, rx_desc_pool->pool_size); in dp_rx_desc_pool_is_allocated()
45 struct rx_desc_pool *rx_desc_pool) in dp_rx_desc_pool_alloc() argument
51 rx_desc_pool->elem_size = desc_size; in dp_rx_desc_pool_alloc()
52 rx_desc_pool->desc_pages.page_size = DP_BLOCKMEM_SIZE; in dp_rx_desc_pool_alloc()
53 dp_desc_multi_pages_mem_alloc(soc, rx_desc_pool->desc_type, in dp_rx_desc_pool_alloc()
54 &rx_desc_pool->desc_pages, in dp_rx_desc_pool_alloc()
56 if (!rx_desc_pool->desc_pages.num_pages) { in dp_rx_desc_pool_alloc()
63 &rx_desc_pool->desc_pages, in dp_rx_desc_pool_alloc()
72 dp_rx_desc_pool_free(soc, rx_desc_pool); in dp_rx_desc_pool_alloc()
80 struct rx_desc_pool *rx_desc_pool, in dp_rx_desc_pool_init_generic() argument
87 num_desc_per_page = rx_desc_pool->desc_pages.num_element_per_page; in dp_rx_desc_pool_init_generic()
89 rx_desc_elem = rx_desc_pool->freelist; in dp_rx_desc_pool_init_generic()
114 uint32_t pool_size, struct rx_desc_pool *rx_desc_pool) in dp_rx_desc_pool_init() argument
119 qdf_spinlock_create(&rx_desc_pool->lock); in dp_rx_desc_pool_init()
121 qdf_spin_lock_bh(&rx_desc_pool->lock); in dp_rx_desc_pool_init()
122 rx_desc_pool->pool_size = pool_size; in dp_rx_desc_pool_init()
124 rx_desc_pool->freelist = (union dp_rx_desc_list_elem_t *) in dp_rx_desc_pool_init()
125 *rx_desc_pool->desc_pages.cacheable_pages; in dp_rx_desc_pool_init()
127 status = soc->arch_ops.dp_rx_desc_pool_init(soc, rx_desc_pool, in dp_rx_desc_pool_init()
132 qdf_spin_unlock_bh(&rx_desc_pool->lock); in dp_rx_desc_pool_init()
138 struct rx_desc_pool *rx_desc_pool) in dp_rx_desc_find() argument
140 return rx_desc_pool->desc_pages.cacheable_pages[page_id] + in dp_rx_desc_find()
141 rx_desc_pool->elem_size * offset; in dp_rx_desc_find()
145 struct rx_desc_pool *rx_desc_pool, in dp_rx_desc_nbuf_collect() argument
153 if (qdf_unlikely(!(rx_desc_pool->desc_pages.cacheable_pages))) { in dp_rx_desc_nbuf_collect()
157 num_desc = rx_desc_pool->pool_size; in dp_rx_desc_nbuf_collect()
158 num_desc_per_page = rx_desc_pool->desc_pages.num_element_per_page; in dp_rx_desc_nbuf_collect()
162 rx_desc_elem = dp_rx_desc_find(page_id, offset, rx_desc_pool); in dp_rx_desc_nbuf_collect()
217 struct rx_desc_pool *rx_desc_pool) in dp_rx_desc_nbuf_and_pool_free() argument
222 qdf_spin_lock_bh(&rx_desc_pool->lock); in dp_rx_desc_nbuf_and_pool_free()
223 dp_rx_desc_nbuf_collect(soc, rx_desc_pool, in dp_rx_desc_nbuf_and_pool_free()
225 qdf_spin_unlock_bh(&rx_desc_pool->lock); in dp_rx_desc_nbuf_and_pool_free()
227 rx_desc_pool->buf_size, false); in dp_rx_desc_nbuf_and_pool_free()
228 qdf_spinlock_destroy(&rx_desc_pool->lock); in dp_rx_desc_nbuf_and_pool_free()
232 struct rx_desc_pool *rx_desc_pool, in dp_rx_desc_nbuf_free() argument
237 qdf_spin_lock_bh(&rx_desc_pool->lock); in dp_rx_desc_nbuf_free()
238 dp_rx_desc_nbuf_collect(soc, rx_desc_pool, in dp_rx_desc_nbuf_free()
240 qdf_spin_unlock_bh(&rx_desc_pool->lock); in dp_rx_desc_nbuf_free()
242 rx_desc_pool->buf_size, is_mon_pool); in dp_rx_desc_nbuf_free()
248 struct rx_desc_pool *rx_desc_pool) in dp_rx_desc_pool_free() argument
250 if (qdf_unlikely(!(rx_desc_pool->desc_pages.cacheable_pages))) in dp_rx_desc_pool_free()
253 dp_desc_multi_pages_mem_free(soc, rx_desc_pool->desc_type, in dp_rx_desc_pool_free()
254 &rx_desc_pool->desc_pages, 0, true); in dp_rx_desc_pool_free()
260 struct rx_desc_pool *rx_desc_pool, in dp_rx_desc_pool_deinit() argument
263 qdf_spin_lock_bh(&rx_desc_pool->lock); in dp_rx_desc_pool_deinit()
265 rx_desc_pool->freelist = NULL; in dp_rx_desc_pool_deinit()
266 rx_desc_pool->pool_size = 0; in dp_rx_desc_pool_deinit()
269 rx_desc_pool->rx_mon_dest_frag_enable = false; in dp_rx_desc_pool_deinit()
270 qdf_frag_cache_drain(&rx_desc_pool->pf_cache); in dp_rx_desc_pool_deinit()
272 soc->arch_ops.dp_rx_desc_pool_deinit(soc, rx_desc_pool, pool_id); in dp_rx_desc_pool_deinit()
274 qdf_spin_unlock_bh(&rx_desc_pool->lock); in dp_rx_desc_pool_deinit()
275 qdf_spinlock_destroy(&rx_desc_pool->lock); in dp_rx_desc_pool_deinit()
280 QDF_STATUS dp_rx_desc_pool_is_allocated(struct rx_desc_pool *rx_desc_pool) in dp_rx_desc_pool_is_allocated() argument
282 if (!rx_desc_pool->array) { in dp_rx_desc_pool_is_allocated()
293 struct rx_desc_pool *rx_desc_pool) in dp_rx_desc_pool_alloc() argument
295 rx_desc_pool->array = qdf_mem_common_alloc(pool_size * in dp_rx_desc_pool_alloc()
298 if (!(rx_desc_pool->array)) { in dp_rx_desc_pool_alloc()
309 struct rx_desc_pool *rx_desc_pool, in dp_rx_desc_pool_init_generic() argument
314 for (i = 0; i <= rx_desc_pool->pool_size - 1; i++) { in dp_rx_desc_pool_init_generic()
315 if (i == rx_desc_pool->pool_size - 1) in dp_rx_desc_pool_init_generic()
316 rx_desc_pool->array[i].next = NULL; in dp_rx_desc_pool_init_generic()
318 rx_desc_pool->array[i].next = in dp_rx_desc_pool_init_generic()
319 &rx_desc_pool->array[i + 1]; in dp_rx_desc_pool_init_generic()
320 rx_desc_pool->array[i].rx_desc.cookie = i | (pool_id << 18); in dp_rx_desc_pool_init_generic()
321 rx_desc_pool->array[i].rx_desc.pool_id = pool_id; in dp_rx_desc_pool_init_generic()
322 rx_desc_pool->array[i].rx_desc.in_use = 0; in dp_rx_desc_pool_init_generic()
328 uint32_t pool_size, struct rx_desc_pool *rx_desc_pool) in dp_rx_desc_pool_init() argument
333 qdf_spinlock_create(&rx_desc_pool->lock); in dp_rx_desc_pool_init()
335 qdf_spin_lock_bh(&rx_desc_pool->lock); in dp_rx_desc_pool_init()
336 rx_desc_pool->pool_size = pool_size; in dp_rx_desc_pool_init()
339 rx_desc_pool->freelist = &rx_desc_pool->array[0]; in dp_rx_desc_pool_init()
340 qdf_mem_zero(rx_desc_pool->freelist, rx_desc_pool->pool_size); in dp_rx_desc_pool_init()
342 status = soc->arch_ops.dp_rx_desc_pool_init(soc, rx_desc_pool, in dp_rx_desc_pool_init()
347 qdf_spin_unlock_bh(&rx_desc_pool->lock); in dp_rx_desc_pool_init()
354 qdf_nbuf_t dp_rx_desc_get_nbuf(struct rx_desc_pool *rx_desc_pool, int i) in dp_rx_desc_get_nbuf() argument
356 if (rx_desc_pool->array[i].rx_desc.has_reuse_nbuf) in dp_rx_desc_get_nbuf()
357 return rx_desc_pool->array[i].rx_desc.reuse_nbuf; in dp_rx_desc_get_nbuf()
359 return rx_desc_pool->array[i].rx_desc.nbuf; in dp_rx_desc_get_nbuf()
363 qdf_nbuf_t dp_rx_desc_get_nbuf(struct rx_desc_pool *rx_desc_pool, int i) in dp_rx_desc_get_nbuf() argument
365 return rx_desc_pool->array[i].rx_desc.nbuf; in dp_rx_desc_get_nbuf()
370 struct rx_desc_pool *rx_desc_pool) in dp_rx_desc_nbuf_and_pool_free() argument
375 qdf_spin_lock_bh(&rx_desc_pool->lock); in dp_rx_desc_nbuf_and_pool_free()
376 for (i = 0; i < rx_desc_pool->pool_size; i++) { in dp_rx_desc_nbuf_and_pool_free()
377 if (rx_desc_pool->array[i].rx_desc.in_use) { in dp_rx_desc_nbuf_and_pool_free()
378 nbuf = dp_rx_desc_get_nbuf(rx_desc_pool, i); in dp_rx_desc_nbuf_and_pool_free()
380 if (!(rx_desc_pool->array[i].rx_desc.unmapped)) { in dp_rx_desc_nbuf_and_pool_free()
381 dp_rx_nbuf_unmap_pool(soc, rx_desc_pool, nbuf); in dp_rx_desc_nbuf_and_pool_free()
382 rx_desc_pool->array[i].rx_desc.unmapped = 1; in dp_rx_desc_nbuf_and_pool_free()
387 qdf_mem_common_free(rx_desc_pool->array); in dp_rx_desc_nbuf_and_pool_free()
388 qdf_spin_unlock_bh(&rx_desc_pool->lock); in dp_rx_desc_nbuf_and_pool_free()
389 qdf_spinlock_destroy(&rx_desc_pool->lock); in dp_rx_desc_nbuf_and_pool_free()
393 struct rx_desc_pool *rx_desc_pool, in dp_rx_desc_nbuf_free() argument
399 qdf_spin_lock_bh(&rx_desc_pool->lock); in dp_rx_desc_nbuf_free()
400 for (i = 0; i < rx_desc_pool->pool_size; i++) { in dp_rx_desc_nbuf_free()
401 dp_rx_desc_free_dbg_info(&rx_desc_pool->array[i].rx_desc); in dp_rx_desc_nbuf_free()
402 if (rx_desc_pool->array[i].rx_desc.in_use) { in dp_rx_desc_nbuf_free()
403 nbuf = dp_rx_desc_get_nbuf(rx_desc_pool, i); in dp_rx_desc_nbuf_free()
405 if (!(rx_desc_pool->array[i].rx_desc.unmapped)) { in dp_rx_desc_nbuf_free()
406 dp_rx_nbuf_unmap_pool(soc, rx_desc_pool, nbuf); in dp_rx_desc_nbuf_free()
407 rx_desc_pool->array[i].rx_desc.unmapped = 1; in dp_rx_desc_nbuf_free()
412 qdf_spin_unlock_bh(&rx_desc_pool->lock); in dp_rx_desc_nbuf_free()
419 struct rx_desc_pool *rx_desc_pool) in dp_rx_desc_frag_free() argument
425 qdf_spin_lock_bh(&rx_desc_pool->lock); in dp_rx_desc_frag_free()
426 for (i = 0; i < rx_desc_pool->pool_size; i++) { in dp_rx_desc_frag_free()
427 if (rx_desc_pool->array[i].rx_desc.in_use) { in dp_rx_desc_frag_free()
428 paddr = rx_desc_pool->array[i].rx_desc.paddr_buf_start; in dp_rx_desc_frag_free()
429 vaddr = rx_desc_pool->array[i].rx_desc.rx_buf_start; in dp_rx_desc_frag_free()
431 dp_rx_desc_free_dbg_info(&rx_desc_pool->array[i].rx_desc); in dp_rx_desc_frag_free()
432 if (!(rx_desc_pool->array[i].rx_desc.unmapped)) { in dp_rx_desc_frag_free()
434 rx_desc_pool->buf_size, in dp_rx_desc_frag_free()
436 rx_desc_pool->array[i].rx_desc.unmapped = 1; in dp_rx_desc_frag_free()
441 qdf_spin_unlock_bh(&rx_desc_pool->lock); in dp_rx_desc_frag_free()
448 struct rx_desc_pool *rx_desc_pool) in dp_rx_desc_pool_free() argument
450 qdf_mem_common_free(rx_desc_pool->array); in dp_rx_desc_pool_free()
456 struct rx_desc_pool *rx_desc_pool, in dp_rx_desc_pool_deinit() argument
459 if (rx_desc_pool->pool_size) { in dp_rx_desc_pool_deinit()
460 qdf_spin_lock_bh(&rx_desc_pool->lock); in dp_rx_desc_pool_deinit()
462 rx_desc_pool->freelist = NULL; in dp_rx_desc_pool_deinit()
463 rx_desc_pool->pool_size = 0; in dp_rx_desc_pool_deinit()
466 rx_desc_pool->rx_mon_dest_frag_enable = false; in dp_rx_desc_pool_deinit()
467 qdf_frag_cache_drain(&rx_desc_pool->pf_cache); in dp_rx_desc_pool_deinit()
469 soc->arch_ops.dp_rx_desc_pool_deinit(soc, rx_desc_pool, in dp_rx_desc_pool_deinit()
472 qdf_spin_unlock_bh(&rx_desc_pool->lock); in dp_rx_desc_pool_deinit()
473 qdf_spinlock_destroy(&rx_desc_pool->lock); in dp_rx_desc_pool_deinit()
482 struct rx_desc_pool *rx_desc_pool, in dp_rx_desc_pool_deinit_generic() argument
488 struct rx_desc_pool *rx_desc_pool, in dp_rx_get_free_desc_list() argument
495 qdf_spin_lock_bh(&rx_desc_pool->lock); in dp_rx_get_free_desc_list()
497 *desc_list = *tail = rx_desc_pool->freelist; in dp_rx_get_free_desc_list()
501 if (qdf_unlikely(!rx_desc_pool->freelist)) { in dp_rx_get_free_desc_list()
502 qdf_spin_unlock_bh(&rx_desc_pool->lock); in dp_rx_get_free_desc_list()
505 *tail = rx_desc_pool->freelist; in dp_rx_get_free_desc_list()
506 rx_desc_pool->freelist = rx_desc_pool->freelist->next; in dp_rx_get_free_desc_list()
509 qdf_spin_unlock_bh(&rx_desc_pool->lock); in dp_rx_get_free_desc_list()
519 struct rx_desc_pool *rx_desc_pool) in dp_rx_add_desc_list_to_free_list() argument
523 qdf_spin_lock_bh(&rx_desc_pool->lock); in dp_rx_add_desc_list_to_free_list()
526 temp_list = rx_desc_pool->freelist; in dp_rx_add_desc_list_to_free_list()
530 rx_desc_pool->freelist = *local_desc_list; in dp_rx_add_desc_list_to_free_list()
535 qdf_spin_unlock_bh(&rx_desc_pool->lock); in dp_rx_add_desc_list_to_free_list()