net: remove NR_CPUS arrays in net/core/dev.c
Remove the fixed size channels[NR_CPUS] array in net/core/dev.c and dynamically allocate array based on nr_cpu_ids. Signed-off-by: Mike Travis <travis@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d3e2ce3bcd
commit
0c0b0aca66
@ -162,7 +162,7 @@ struct net_dma {
|
||||
struct dma_client client;
|
||||
spinlock_t lock;
|
||||
cpumask_t channel_mask;
|
||||
struct dma_chan *channels[NR_CPUS];
|
||||
struct dma_chan **channels;
|
||||
};
|
||||
|
||||
static enum dma_state_client
|
||||
@ -2444,7 +2444,7 @@ static struct netif_rx_stats *softnet_get_online(loff_t *pos)
|
||||
{
|
||||
struct netif_rx_stats *rc = NULL;
|
||||
|
||||
while (*pos < NR_CPUS)
|
||||
while (*pos < nr_cpu_ids)
|
||||
if (cpu_online(*pos)) {
|
||||
rc = &per_cpu(netdev_rx_stat, *pos);
|
||||
break;
|
||||
@ -4324,7 +4324,7 @@ netdev_dma_event(struct dma_client *client, struct dma_chan *chan,
|
||||
spin_lock(&net_dma->lock);
|
||||
switch (state) {
|
||||
case DMA_RESOURCE_AVAILABLE:
|
||||
for (i = 0; i < NR_CPUS; i++)
|
||||
for (i = 0; i < nr_cpu_ids; i++)
|
||||
if (net_dma->channels[i] == chan) {
|
||||
found = 1;
|
||||
break;
|
||||
@ -4339,7 +4339,7 @@ netdev_dma_event(struct dma_client *client, struct dma_chan *chan,
|
||||
}
|
||||
break;
|
||||
case DMA_RESOURCE_REMOVED:
|
||||
for (i = 0; i < NR_CPUS; i++)
|
||||
for (i = 0; i < nr_cpu_ids; i++)
|
||||
if (net_dma->channels[i] == chan) {
|
||||
found = 1;
|
||||
pos = i;
|
||||
@ -4366,6 +4366,13 @@ netdev_dma_event(struct dma_client *client, struct dma_chan *chan,
|
||||
*/
|
||||
static int __init netdev_dma_register(void)
|
||||
{
|
||||
net_dma.channels = kzalloc(nr_cpu_ids * sizeof(struct net_dma),
|
||||
GFP_KERNEL);
|
||||
if (unlikely(!net_dma.channels)) {
|
||||
printk(KERN_NOTICE
|
||||
"netdev_dma: no memory for net_dma.channels\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
spin_lock_init(&net_dma.lock);
|
||||
dma_cap_set(DMA_MEMCPY, net_dma.client.cap_mask);
|
||||
dma_async_client_register(&net_dma.client);
|
||||
|
Loading…
Reference in New Issue
Block a user