diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-29 11:19:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-29 11:19:14 -0400 |
commit | 867a89e0b73af48838c7987e80899a1ff26dd6ff (patch) | |
tree | b4a8830b3e880b9a5133ad1ec3106665819cc8d4 /drivers/net | |
parent | 44473d991332053eb3fea1e08f8a6ee2c6fb409c (diff) | |
parent | 6c39103ce5192bdb2195f3daab7323dfa44fb52e (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:
[RAPIDIO] Change RapidIO doorbell source and target ID field to 16-bit
[RAPIDIO] Add RapidIO connection info print out and re-training for broken connections
[RAPIDIO] Add serial RapidIO controller support, which includes MPC8548, MPC8641
[RAPIDIO] Add RapidIO node probing into MPC86xx_HPCN board id table
[RAPIDIO] Add RapidIO node into MPC8641HPCN dts file
[RAPIDIO] Auto-probe the RapidIO system size
[RAPIDIO] Add OF-tree support to RapidIO controller driver
[RAPIDIO] Add RapidIO multi mport support
[RAPIDIO] Move include/asm-ppc/rio.h to asm-powerpc
[RAPIDIO] Add RapidIO option to kernel configuration
[RAPIDIO] Change RIO function mpc85xx_ to fsl_
[POWERPC] Provide walk_memory_resource() for powerpc
[POWERPC] Update lmb data structures for hotplug memory add/remove
[POWERPC] Hotplug memory remove notifications for powerpc
[POWERPC] windfarm: Add PowerMac 12,1 support
[POWERPC] Fix building of pmac32 when CONFIG_NVRAM=m
[POWERPC] Add IRQSTACKS support on ppc32
[POWERPC] Use __always_inline for xchg* and cmpxchg*
[POWERPC] Add fast little-endian switch system call
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/rionet.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c index e7fd08adbbac..2b8fd68bc516 100644 --- a/drivers/net/rionet.c +++ b/drivers/net/rionet.c | |||
@@ -77,7 +77,7 @@ static int rionet_capable = 1; | |||
77 | * could be made into a hash table to save memory depending | 77 | * could be made into a hash table to save memory depending |
78 | * on system trade-offs. | 78 | * on system trade-offs. |
79 | */ | 79 | */ |
80 | static struct rio_dev *rionet_active[RIO_MAX_ROUTE_ENTRIES]; | 80 | static struct rio_dev **rionet_active; |
81 | 81 | ||
82 | #define is_rionet_capable(pef, src_ops, dst_ops) \ | 82 | #define is_rionet_capable(pef, src_ops, dst_ops) \ |
83 | ((pef & RIO_PEF_INB_MBOX) && \ | 83 | ((pef & RIO_PEF_INB_MBOX) && \ |
@@ -195,7 +195,8 @@ static int rionet_start_xmit(struct sk_buff *skb, struct net_device *ndev) | |||
195 | } | 195 | } |
196 | 196 | ||
197 | if (eth->h_dest[0] & 0x01) { | 197 | if (eth->h_dest[0] & 0x01) { |
198 | for (i = 0; i < RIO_MAX_ROUTE_ENTRIES; i++) | 198 | for (i = 0; i < RIO_MAX_ROUTE_ENTRIES(rnet->mport->sys_size); |
199 | i++) | ||
199 | if (rionet_active[i]) | 200 | if (rionet_active[i]) |
200 | rionet_queue_tx_msg(skb, ndev, | 201 | rionet_queue_tx_msg(skb, ndev, |
201 | rionet_active[i]); | 202 | rionet_active[i]); |
@@ -385,6 +386,8 @@ static void rionet_remove(struct rio_dev *rdev) | |||
385 | struct net_device *ndev = NULL; | 386 | struct net_device *ndev = NULL; |
386 | struct rionet_peer *peer, *tmp; | 387 | struct rionet_peer *peer, *tmp; |
387 | 388 | ||
389 | free_pages((unsigned long)rionet_active, rdev->net->hport->sys_size ? | ||
390 | __ilog2(sizeof(void *)) + 4 : 0); | ||
388 | unregister_netdev(ndev); | 391 | unregister_netdev(ndev); |
389 | kfree(ndev); | 392 | kfree(ndev); |
390 | 393 | ||
@@ -443,6 +446,15 @@ static int rionet_setup_netdev(struct rio_mport *mport) | |||
443 | goto out; | 446 | goto out; |
444 | } | 447 | } |
445 | 448 | ||
449 | rionet_active = (struct rio_dev **)__get_free_pages(GFP_KERNEL, | ||
450 | mport->sys_size ? __ilog2(sizeof(void *)) + 4 : 0); | ||
451 | if (!rionet_active) { | ||
452 | rc = -ENOMEM; | ||
453 | goto out; | ||
454 | } | ||
455 | memset((void *)rionet_active, 0, sizeof(void *) * | ||
456 | RIO_MAX_ROUTE_ENTRIES(mport->sys_size)); | ||
457 | |||
446 | /* Set up private area */ | 458 | /* Set up private area */ |
447 | rnet = (struct rionet_private *)ndev->priv; | 459 | rnet = (struct rionet_private *)ndev->priv; |
448 | rnet->mport = mport; | 460 | rnet->mport = mport; |