]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
net: xilinx: axiethernet: Fix netconsole implementation
authorRadhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
Tue, 22 Jan 2019 15:49:18 +0000 (21:19 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 29 Jan 2019 11:54:40 +0000 (12:54 +0100)
In axiethernet ndo_poll_controller implementation use correct dma
(axidma/mcdma) queues structures to derive TX and RX interrupts.
This fixes below compilation error when CONFIG_NETCONSOLE is enabled.

CC drivers/net/ethernet/xilinx/xilinx_axienet_main.o
drivers/net/ethernet/xilinx/xilinx_axienet_main.c: In function ‘axienet_poll_controller’:
drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1846:18: error: ‘struct axienet_local’ has no member named ‘tx_irq’; did you mean ‘eth_irq’?
disable_irq(lp->tx_irq);
^~~~~~
eth_irq
<snip>

Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
Acked-by: Appana Durga Kedareswara rao <appana.durga.rao@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/net/ethernet/xilinx/xilinx_axienet_main.c

index b8e7084189f03e67896afc3789b2484fa3a81693..0f6cd194424f93b9cf33aa584c8bf65950e0a980 100644 (file)
@@ -1841,13 +1841,29 @@ static int axienet_change_mtu(struct net_device *ndev, int new_mtu)
 static void axienet_poll_controller(struct net_device *ndev)
 {
        struct axienet_local *lp = netdev_priv(ndev);
+       int i;
+
+       for_each_tx_dma_queue(lp, i)
+               disable_irq(lp->dq[i]->tx_irq);
+       for_each_rx_dma_queue(lp, i)
+               disable_irq(lp->dq[i]->rx_irq);
 
-       disable_irq(lp->tx_irq);
-       disable_irq(lp->rx_irq);
-       axienet_rx_irq(lp->tx_irq, ndev);
-       axienet_tx_irq(lp->rx_irq, ndev);
-       enable_irq(lp->tx_irq);
-       enable_irq(lp->rx_irq);
+       for_each_rx_dma_queue(lp, i)
+#ifdef CONFIG_AXIENET_HAS_MCDMA
+               axienet_mcdma_rx_irq(lp->dq[i]->rx_irq, ndev);
+#else
+               axienet_rx_irq(lp->dq[i]->rx_irq, ndev);
+#endif
+       for_each_tx_dma_queue(lp, i)
+#ifdef CONFIG_AXIENET_HAS_MCDMA
+               axienet_mcdma_tx_irq(lp->dq[i]->tx_irq, ndev);
+#else
+               axienet_tx_irq(lp->dq[i]->tx_irq, ndev);
+#endif
+       for_each_tx_dma_queue(lp, i)
+               enable_irq(lp->dq[i]->tx_irq);
+       for_each_rx_dma_queue(lp, i)
+               enable_irq(lp->dq[i]->rx_irq);
 }
 #endif