• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/vxge/

Lines Matching defs:mempool

1096 	dma_object = ring->mempool->memblocks_dma_arr;
1319 ring->mempool = __vxge_hw_mempool_create(hldev,
1328 if (ring->mempool == NULL) {
1427 if (ring->mempool)
1428 __vxge_hw_mempool_destroy(ring->mempool);
1438 * Will resize mempool up to %num_allocate value.
1441 __vxge_hw_mempool_grow(struct vxge_hw_mempool *mempool, u32 num_allocate,
1444 u32 i, first_time = mempool->memblocks_allocated == 0 ? 1 : 0;
1445 u32 n_items = mempool->items_per_memblock;
1446 u32 start_block_idx = mempool->memblocks_allocated;
1447 u32 end_block_idx = mempool->memblocks_allocated + num_allocate;
1452 if (end_block_idx > mempool->memblocks_max) {
1461 mempool->memblocks_dma_arr + i;
1466 * mempool's user request. Each time mempool grows, it will
1469 mempool->memblocks_priv_arr[i] =
1470 vmalloc(mempool->items_priv_size * n_items);
1471 if (mempool->memblocks_priv_arr[i] == NULL) {
1476 memset(mempool->memblocks_priv_arr[i], 0,
1477 mempool->items_priv_size * n_items);
1480 mempool->memblocks_arr[i] =
1481 __vxge_hw_blockpool_malloc(mempool->devh,
1482 mempool->memblock_size, dma_object);
1483 if (mempool->memblocks_arr[i] == NULL) {
1484 vfree(mempool->memblocks_priv_arr[i]);
1490 mempool->memblocks_allocated++;
1492 memset(mempool->memblocks_arr[i], 0, mempool->memblock_size);
1494 the_memblock = mempool->memblocks_arr[i];
1500 if (first_time && index >= mempool->items_initial)
1503 mempool->items_arr[index] =
1504 ((char *)the_memblock + j*mempool->item_size);
1507 if (mempool->item_func_alloc != NULL)
1508 mempool->item_func_alloc(mempool, i,
1511 mempool->items_current = index + 1;
1514 if (first_time && mempool->items_current ==
1515 mempool->items_initial)
1542 struct vxge_hw_mempool *mempool = NULL;
1550 mempool = (struct vxge_hw_mempool *)
1552 if (mempool == NULL) {
1556 memset(mempool, 0, sizeof(struct vxge_hw_mempool));
1558 mempool->devh = devh;
1559 mempool->memblock_size = memblock_size;
1560 mempool->items_max = items_max;
1561 mempool->items_initial = items_initial;
1562 mempool->item_size = item_size;
1563 mempool->items_priv_size = items_priv_size;
1564 mempool->item_func_alloc = mp_callback->item_func_alloc;
1565 mempool->userdata = userdata;
1567 mempool->memblocks_allocated = 0;
1569 mempool->items_per_memblock = memblock_size / item_size;
1571 mempool->memblocks_max = (items_max + mempool->items_per_memblock - 1) /
1572 mempool->items_per_memblock;
1575 mempool->memblocks_arr =
1576 (void **) vmalloc(sizeof(void *) * mempool->memblocks_max);
1577 if (mempool->memblocks_arr == NULL) {
1578 __vxge_hw_mempool_destroy(mempool);
1580 mempool = NULL;
1583 memset(mempool->memblocks_arr, 0,
1584 sizeof(void *) * mempool->memblocks_max);
1587 mempool->memblocks_priv_arr =
1588 (void **) vmalloc(sizeof(void *) * mempool->memblocks_max);
1589 if (mempool->memblocks_priv_arr == NULL) {
1590 __vxge_hw_mempool_destroy(mempool);
1592 mempool = NULL;
1595 memset(mempool->memblocks_priv_arr, 0,
1596 sizeof(void *) * mempool->memblocks_max);
1599 mempool->memblocks_dma_arr = (struct vxge_hw_mempool_dma *)
1601 mempool->memblocks_max);
1603 if (mempool->memblocks_dma_arr == NULL) {
1604 __vxge_hw_mempool_destroy(mempool);
1606 mempool = NULL;
1609 memset(mempool->memblocks_dma_arr, 0,
1611 mempool->memblocks_max);
1614 mempool->items_arr =
1615 (void **) vmalloc(sizeof(void *) * mempool->items_max);
1616 if (mempool->items_arr == NULL) {
1617 __vxge_hw_mempool_destroy(mempool);
1619 mempool = NULL;
1622 memset(mempool->items_arr, 0, sizeof(void *) * mempool->items_max);
1625 memblocks_to_allocate = (mempool->items_initial +
1626 mempool->items_per_memblock - 1) /
1627 mempool->items_per_memblock;
1629 /* pre-allocate the mempool */
1630 status = __vxge_hw_mempool_grow(mempool, memblocks_to_allocate,
1633 __vxge_hw_mempool_destroy(mempool);
1635 mempool = NULL;
1640 return mempool;
1646 void __vxge_hw_mempool_destroy(struct vxge_hw_mempool *mempool)
1649 struct __vxge_hw_device *devh = mempool->devh;
1651 for (i = 0; i < mempool->memblocks_allocated; i++) {
1654 vxge_assert(mempool->memblocks_arr[i]);
1655 vxge_assert(mempool->memblocks_dma_arr + i);
1657 dma_object = mempool->memblocks_dma_arr + i;
1659 for (j = 0; j < mempool->items_per_memblock; j++) {
1660 u32 index = i * mempool->items_per_memblock + j;
1663 if (index >= mempool->items_current)
1667 vfree(mempool->memblocks_priv_arr[i]);
1669 __vxge_hw_blockpool_free(devh, mempool->memblocks_arr[i],
1670 mempool->memblock_size, dma_object);
1673 vfree(mempool->items_arr);
1675 vfree(mempool->memblocks_dma_arr);
1677 vfree(mempool->memblocks_priv_arr);
1679 vfree(mempool->memblocks_arr);
1681 vfree(mempool);
2409 fifo->mempool =
2419 if (fifo->mempool == NULL) {
2488 if (fifo->mempool)
2489 __vxge_hw_mempool_destroy(fifo->mempool);