diff options
author | Nicolas Ferre <nicolas.ferre@atmel.com> | 2015-03-31 09:01:59 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-03-31 16:51:17 -0400 |
commit | bfa0914afa95d44df9e1a1553e0c03a991223db3 (patch) | |
tree | 566a763975d8065e23becdb275aee2d3bfc97ce7 | |
parent | 34d21e3f399729ca7c89636207fe41c481d99352 (diff) |
net/macb: only probe queues once and use stored values
When merging at91_ether and macb driver during 421d9df0628b (net/macb: merge
at91_ether driver into macb driver) the probe function has been split. The code
dealing with initialization of queues is now moved in macb_init() which needs
information computed in the parent macb_probe() function.
So, add the queue_mask information to the private structure and use it when
needed in macb_init().
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Cc: Cyrille Pitchen <cyrille.pitchen@atmel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/cadence/macb.c | 7 | ||||
-rw-r--r-- | drivers/net/ethernet/cadence/macb.h | 1 |
2 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c index a0a04b3638e6..ac1f18142f7e 100644 --- a/drivers/net/ethernet/cadence/macb.c +++ b/drivers/net/ethernet/cadence/macb.c | |||
@@ -2180,7 +2180,7 @@ static void macb_probe_queues(void __iomem *mem, | |||
2180 | static int macb_init(struct platform_device *pdev) | 2180 | static int macb_init(struct platform_device *pdev) |
2181 | { | 2181 | { |
2182 | struct net_device *dev = platform_get_drvdata(pdev); | 2182 | struct net_device *dev = platform_get_drvdata(pdev); |
2183 | unsigned int hw_q, queue_mask, q, num_queues; | 2183 | unsigned int hw_q, q; |
2184 | struct macb *bp = netdev_priv(dev); | 2184 | struct macb *bp = netdev_priv(dev); |
2185 | struct macb_queue *queue; | 2185 | struct macb_queue *queue; |
2186 | int err; | 2186 | int err; |
@@ -2226,10 +2226,8 @@ static int macb_init(struct platform_device *pdev) | |||
2226 | * register mapping but we don't want to test the queue index then | 2226 | * register mapping but we don't want to test the queue index then |
2227 | * compute the corresponding register offset at run time. | 2227 | * compute the corresponding register offset at run time. |
2228 | */ | 2228 | */ |
2229 | macb_probe_queues(bp->regs, &queue_mask, &num_queues); | ||
2230 | |||
2231 | for (hw_q = 0, q = 0; hw_q < MACB_MAX_QUEUES; ++hw_q) { | 2229 | for (hw_q = 0, q = 0; hw_q < MACB_MAX_QUEUES; ++hw_q) { |
2232 | if (!(queue_mask & (1 << hw_q))) | 2230 | if (!(bp->queue_mask & (1 << hw_q))) |
2233 | continue; | 2231 | continue; |
2234 | 2232 | ||
2235 | queue = &bp->queues[q]; | 2233 | queue = &bp->queues[q]; |
@@ -2715,6 +2713,7 @@ static int macb_probe(struct platform_device *pdev) | |||
2715 | bp->dev = dev; | 2713 | bp->dev = dev; |
2716 | bp->regs = mem; | 2714 | bp->regs = mem; |
2717 | bp->num_queues = num_queues; | 2715 | bp->num_queues = num_queues; |
2716 | bp->queue_mask = queue_mask; | ||
2718 | spin_lock_init(&bp->lock); | 2717 | spin_lock_init(&bp->lock); |
2719 | 2718 | ||
2720 | platform_set_drvdata(pdev, dev); | 2719 | platform_set_drvdata(pdev, dev); |
diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h index bc6e35c40822..0b6afac91bfe 100644 --- a/drivers/net/ethernet/cadence/macb.h +++ b/drivers/net/ethernet/cadence/macb.h | |||
@@ -785,6 +785,7 @@ struct macb { | |||
785 | size_t rx_buffer_size; | 785 | size_t rx_buffer_size; |
786 | 786 | ||
787 | unsigned int num_queues; | 787 | unsigned int num_queues; |
788 | unsigned int queue_mask; | ||
788 | struct macb_queue queues[MACB_MAX_QUEUES]; | 789 | struct macb_queue queues[MACB_MAX_QUEUES]; |
789 | 790 | ||
790 | spinlock_t lock; | 791 | spinlock_t lock; |