+ for (q = 0, queue = bp->queues; q < bp->num_queues;Operation in this for loop could be moved in the the above IRQ disable
+ ++q, ++queue) {
+ /* Disable RX queues */
loop. Have you tried it? are there any issues with it?
+ if (bp->caps & MACB_CAPS_QUEUE_DISABLE) {I think this should be guarded by:
+ queue_writel(queue, RBQP, GEM_RBQP_DISABLE);
+ } else {
+ /* Tie off RX queues */
+ queue_writel(queue, RBQP,
+ lower_32_bits(bp->rx_ring_tieoff_dma));
#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
+ queue_writel(queue, RBQPH,Is this needed?
+ upper_32_bits(bp->rx_ring_tieoff_dma));
+ }
+ }
+ /* Enable Receive engine */
+ ctrlmask = macb_readl(bp, NCR);
<...>
+ ctrlmask |= MACB_BIT(RE);