2016-05-23 09:20:20 +00:00
|
|
|
From 441d87495f33fd444a2b2a16f6df07892dac3f89 Mon Sep 17 00:00:00 2001
|
|
|
|
From: John Crispin <john@phrozen.org>
|
|
|
|
Date: Tue, 3 May 2016 04:12:35 +0200
|
|
|
|
Subject: [PATCH 094/102] net-next: mediatek: don't use intermediate variables
|
|
|
|
to store IRQ masks
|
|
|
|
|
|
|
|
The code currently uses variables to store and never modify the bit masks
|
|
|
|
of interrupts. This is legacy code from an early version of the driver
|
|
|
|
that supported MIPS based SoCs where the IRQ bits depended on the actual
|
|
|
|
SoC. As the bits are the same for all ARM based SoC using this driver we
|
|
|
|
can remove the intermediate variables.
|
|
|
|
|
|
|
|
Signed-off-by: John Crispin <john@phrozen.org>
|
|
|
|
---
|
|
|
|
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 22 ++++++++++------------
|
|
|
|
1 file changed, 10 insertions(+), 12 deletions(-)
|
|
|
|
|
|
|
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
|
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
|
|
@@ -806,7 +806,7 @@ drop:
|
|
|
|
}
|
|
|
|
|
|
|
|
static int mtk_poll_rx(struct napi_struct *napi, int budget,
|
|
|
|
- struct mtk_eth *eth, u32 rx_intr)
|
|
|
|
+ struct mtk_eth *eth)
|
|
|
|
{
|
|
|
|
struct mtk_rx_ring *ring = ð->rx_ring;
|
|
|
|
int idx = ring->calc_idx;
|
|
|
|
@@ -894,7 +894,7 @@ release_desc:
|
|
|
|
}
|
|
|
|
|
|
|
|
if (done < budget)
|
|
|
|
- mtk_w32(eth, rx_intr, MTK_QMTK_INT_STATUS);
|
|
|
|
+ mtk_w32(eth, MTK_RX_DONE_INT, MTK_QMTK_INT_STATUS);
|
|
|
|
|
|
|
|
return done;
|
|
|
|
}
|
2016-06-02 13:34:34 +00:00
|
|
|
@@ -977,28 +977,26 @@ static int mtk_poll_tx(struct mtk_eth *e
|
2016-05-23 09:20:20 +00:00
|
|
|
static int mtk_poll(struct napi_struct *napi, int budget)
|
|
|
|
{
|
|
|
|
struct mtk_eth *eth = container_of(napi, struct mtk_eth, rx_napi);
|
|
|
|
- u32 status, status2, mask, tx_intr, rx_intr, status_intr;
|
|
|
|
+ u32 status, status2, mask;
|
|
|
|
int tx_done, rx_done;
|
|
|
|
bool tx_again = false;
|
|
|
|
|
|
|
|
status = mtk_r32(eth, MTK_QMTK_INT_STATUS);
|
|
|
|
status2 = mtk_r32(eth, MTK_INT_STATUS2);
|
|
|
|
- tx_intr = MTK_TX_DONE_INT;
|
|
|
|
- rx_intr = MTK_RX_DONE_INT;
|
|
|
|
- status_intr = (MTK_GDM1_AF | MTK_GDM2_AF);
|
|
|
|
tx_done = 0;
|
|
|
|
rx_done = 0;
|
|
|
|
tx_again = 0;
|
|
|
|
|
|
|
|
- if (status & tx_intr)
|
|
|
|
+ if (status & MTK_TX_DONE_INT)
|
|
|
|
tx_done = mtk_poll_tx(eth, budget, &tx_again);
|
|
|
|
|
|
|
|
- if (status & rx_intr)
|
|
|
|
- rx_done = mtk_poll_rx(napi, budget, eth, rx_intr);
|
|
|
|
+ if (status & MTK_RX_DONE_INT)
|
|
|
|
+ rx_done = mtk_poll_rx(napi, budget, eth);
|
|
|
|
|
|
|
|
- if (unlikely(status2 & status_intr)) {
|
|
|
|
+ if (unlikely(status2 & (MTK_GDM1_AF | MTK_GDM2_AF))) {
|
|
|
|
mtk_stats_update(eth);
|
|
|
|
- mtk_w32(eth, status_intr, MTK_INT_STATUS2);
|
|
|
|
+ mtk_w32(eth, (MTK_GDM1_AF | MTK_GDM2_AF),
|
|
|
|
+ MTK_INT_STATUS2);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (unlikely(netif_msg_intr(eth))) {
|
2016-06-02 13:34:34 +00:00
|
|
|
@@ -1016,7 +1014,7 @@ static int mtk_poll(struct napi_struct *
|
2016-05-23 09:20:20 +00:00
|
|
|
return budget;
|
|
|
|
|
|
|
|
napi_complete(napi);
|
|
|
|
- mtk_irq_enable(eth, tx_intr | rx_intr);
|
|
|
|
+ mtk_irq_enable(eth, MTK_RX_DONE_INT | MTK_RX_DONE_INT);
|
|
|
|
|
|
|
|
return rx_done;
|
|
|
|
}
|