Hi,

maybe I miss something, but the ixp4 ethernet driver seems to handle dma pools 
in a wrong way: In init_queues() it creates a dma pool for descriptors and then
 only allocates a single descriptor from this pool. The author seems to assume 
the whole
table has been allocated already, since after that the complete pool size is 
zeroed:

<snip> 
static int init_queues(struct port *port)
{
        int i;

        if (!ports_open) {
                dma_pool = dma_pool_create(DRV_NAME, &port->netdev->dev,
                                           POOL_ALLOC_SIZE, 32, 0);
                if (!dma_pool)
                        return -ENOMEM;
        }

        if (!(port->desc_tab = dma_pool_alloc(dma_pool, GFP_KERNEL,
                                              &port->desc_tab_phys)))
                return -ENOMEM;
        memset(port->desc_tab, 0, POOL_ALLOC_SIZE);
<snap>

Regards,
Lino

Reply via email to