aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/patches-3.18/077-05-bgmac-leave-interrupts-disabled-as-long-as-there-is-.patch
diff options
context:
space:
mode:
authorJohn Crispin <john@phrozen.org>2016-12-25 20:11:34 +0100
committerJohn Crispin <john@phrozen.org>2017-08-05 08:46:36 +0200
commit74d00a8c3849c1340efd713eb94b786e304c201f (patch)
treede481743de61c34da96ab5f9dba3af3edcfb8260 /target/linux/generic/patches-3.18/077-05-bgmac-leave-interrupts-disabled-as-long-as-there-is-.patch
parentde350550ef648d9728351b986b0516fa29465c45 (diff)
downloadupstream-74d00a8c3849c1340efd713eb94b786e304c201f.tar.gz
upstream-74d00a8c3849c1340efd713eb94b786e304c201f.tar.bz2
upstream-74d00a8c3849c1340efd713eb94b786e304c201f.zip
kernel: split patches folder up into backport, pending and hack folders
* properly format/comment all patches * merge debloat patches * merge Kconfig patches * merge swconfig patches * merge hotplug patches * drop 200-fix_localversion.patch - upstream * drop 222-arm_zimage_none.patch - unused * drop 252-mv_cesa_depends.patch - no longer required * drop 410-mtd-move-forward-declaration-of-struct-mtd_info.patch - unused * drop 661-fq_codel_keep_dropped_stats.patch - outdated * drop 702-phy_add_aneg_done_function.patch - upstream * drop 840-rtc7301.patch - unused * drop 841-rtc_pt7c4338.patch - upstream * drop 921-use_preinit_as_init.patch - unused * drop spio-gpio-old and gpio-mmc - unused Signed-off-by: John Crispin <john@phrozen.org>
Diffstat (limited to 'target/linux/generic/patches-3.18/077-05-bgmac-leave-interrupts-disabled-as-long-as-there-is-.patch')
-rw-r--r--target/linux/generic/patches-3.18/077-05-bgmac-leave-interrupts-disabled-as-long-as-there-is-.patch87
1 files changed, 0 insertions, 87 deletions
diff --git a/target/linux/generic/patches-3.18/077-05-bgmac-leave-interrupts-disabled-as-long-as-there-is-.patch b/target/linux/generic/patches-3.18/077-05-bgmac-leave-interrupts-disabled-as-long-as-there-is-.patch
deleted file mode 100644
index 4e5e2e720a..0000000000
--- a/target/linux/generic/patches-3.18/077-05-bgmac-leave-interrupts-disabled-as-long-as-there-is-.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Date: Sun, 12 Apr 2015 10:08:04 +0200
-Subject: [PATCH] bgmac: leave interrupts disabled as long as there is work
- to do
-
-Always poll rx and tx during NAPI poll instead of relying on the status
-of the first interrupt. This prevents bgmac_poll from leaving unfinished
-work around until the next IRQ.
-In my tests this makes bridging/routing throughput under heavy load more
-stable and ensures that no new IRQs arrive as long as bgmac_poll uses up
-the entire budget.
-
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
-
---- a/drivers/net/ethernet/broadcom/bgmac.c
-+++ b/drivers/net/ethernet/broadcom/bgmac.c
-@@ -1109,8 +1109,6 @@ static void bgmac_chip_reset(struct bgma
- bgmac_phy_init(bgmac);
-
- netdev_reset_queue(bgmac->net_dev);
--
-- bgmac->int_status = 0;
- }
-
- static void bgmac_chip_intrs_on(struct bgmac *bgmac)
-@@ -1225,14 +1223,13 @@ static irqreturn_t bgmac_interrupt(int i
- if (!int_status)
- return IRQ_NONE;
-
-- /* Ack */
-- bgmac_write(bgmac, BGMAC_INT_STATUS, int_status);
-+ int_status &= ~(BGMAC_IS_TX0 | BGMAC_IS_RX);
-+ if (int_status)
-+ bgmac_err(bgmac, "Unknown IRQs: 0x%08X\n", int_status);
-
- /* Disable new interrupts until handling existing ones */
- bgmac_chip_intrs_off(bgmac);
-
-- bgmac->int_status = int_status;
--
- napi_schedule(&bgmac->napi);
-
- return IRQ_HANDLED;
-@@ -1241,25 +1238,17 @@ static irqreturn_t bgmac_interrupt(int i
- static int bgmac_poll(struct napi_struct *napi, int weight)
- {
- struct bgmac *bgmac = container_of(napi, struct bgmac, napi);
-- struct bgmac_dma_ring *ring;
- int handled = 0;
-
-- if (bgmac->int_status & BGMAC_IS_TX0) {
-- ring = &bgmac->tx_ring[0];
-- bgmac_dma_tx_free(bgmac, ring);
-- bgmac->int_status &= ~BGMAC_IS_TX0;
-- }
-+ /* Ack */
-+ bgmac_write(bgmac, BGMAC_INT_STATUS, ~0);
-
-- if (bgmac->int_status & BGMAC_IS_RX) {
-- ring = &bgmac->rx_ring[0];
-- handled += bgmac_dma_rx_read(bgmac, ring, weight);
-- bgmac->int_status &= ~BGMAC_IS_RX;
-- }
-+ bgmac_dma_tx_free(bgmac, &bgmac->tx_ring[0]);
-+ handled += bgmac_dma_rx_read(bgmac, &bgmac->rx_ring[0], weight);
-
-- if (bgmac->int_status) {
-- bgmac_err(bgmac, "Unknown IRQs: 0x%08X\n", bgmac->int_status);
-- bgmac->int_status = 0;
-- }
-+ /* Poll again if more events arrived in the meantime */
-+ if (bgmac_read(bgmac, BGMAC_INT_STATUS) & (BGMAC_IS_TX0 | BGMAC_IS_RX))
-+ return handled;
-
- if (handled < weight) {
- napi_complete(napi);
---- a/drivers/net/ethernet/broadcom/bgmac.h
-+++ b/drivers/net/ethernet/broadcom/bgmac.h
-@@ -452,7 +452,6 @@ struct bgmac {
-
- /* Int */
- u32 int_mask;
-- u32 int_status;
-
- /* Current MAC state */
- int mac_speed;