From 97f10c21d271421c8430824d60321dcf3415a0ff Mon Sep 17 00:00:00 2001 From: John Crispin Date: Mon, 20 Jun 2016 22:57:36 +0200 Subject: mediatek: update patches * fixes NAND * adds latest ethernet patches Signed-off-by: John Crispin --- ...k-move-the-pending_work-struct-to-the-dev.patch | 109 +++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 target/linux/mediatek/patches-4.4/0068-net-mediatek-move-the-pending_work-struct-to-the-dev.patch (limited to 'target/linux/mediatek/patches-4.4/0068-net-mediatek-move-the-pending_work-struct-to-the-dev.patch') diff --git a/target/linux/mediatek/patches-4.4/0068-net-mediatek-move-the-pending_work-struct-to-the-dev.patch b/target/linux/mediatek/patches-4.4/0068-net-mediatek-move-the-pending_work-struct-to-the-dev.patch new file mode 100644 index 0000000000..18f978315e --- /dev/null +++ b/target/linux/mediatek/patches-4.4/0068-net-mediatek-move-the-pending_work-struct-to-the-dev.patch @@ -0,0 +1,109 @@ +From 29bc7a1e374425937b5dd2f316dbeef343d4c68a Mon Sep 17 00:00:00 2001 +From: John Crispin +Date: Tue, 29 Mar 2016 17:24:24 +0200 +Subject: [PATCH 068/102] net: mediatek: move the pending_work struct to the + device generic struct + +The worker always touches both netdevs. It is ethernet core and not MAC +specific. We only need one worker, which belongs into the ethernets core struct. + +Signed-off-by: John Crispin +--- + drivers/net/ethernet/mediatek/mtk_eth_soc.c | 10 ++++------ + drivers/net/ethernet/mediatek/mtk_eth_soc.h | 4 ++-- + 2 files changed, 6 insertions(+), 8 deletions(-) + +diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +index 67b18f9..bbcd607 100644 +--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c ++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c +@@ -1193,7 +1193,7 @@ static void mtk_tx_timeout(struct net_device *dev) + eth->netdev[mac->id]->stats.tx_errors++; + netif_err(eth, tx_err, dev, + "transmit timed out\n"); +- schedule_work(&mac->pending_work); ++ schedule_work(ð->pending_work); + } + + static irqreturn_t mtk_handle_irq(int irq, void *_eth) +@@ -1438,7 +1438,7 @@ static void mtk_pending_work(struct work_struct *work) + + /* stop all devices to make sure that dma is properly shut down */ + for (i = 0; i < MTK_MAC_COUNT; i++) { +- if (!netif_oper_up(eth->netdev[i])) ++ if (!eth->netdev[i]) + continue; + mtk_stop(eth->netdev[i]); + __set_bit(i, &restart); +@@ -1464,15 +1464,13 @@ static int mtk_cleanup(struct mtk_eth *eth) + int i; + + for (i = 0; i < MTK_MAC_COUNT; i++) { +- struct mtk_mac *mac = netdev_priv(eth->netdev[i]); +- + if (!eth->netdev[i]) + continue; + + unregister_netdev(eth->netdev[i]); + free_netdev(eth->netdev[i]); +- cancel_work_sync(&mac->pending_work); + } ++ cancel_work_sync(ð->pending_work); + + return 0; + } +@@ -1660,7 +1658,6 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) + mac->id = id; + mac->hw = eth; + mac->of_node = np; +- INIT_WORK(&mac->pending_work, mtk_pending_work); + + mac->hw_stats = devm_kzalloc(eth->dev, + sizeof(*mac->hw_stats), +@@ -1762,6 +1759,7 @@ static int mtk_probe(struct platform_device *pdev) + + eth->dev = &pdev->dev; + eth->msg_enable = netif_msg_init(mtk_msg_level, MTK_DEFAULT_MSG_ENABLE); ++ INIT_WORK(ð->pending_work, mtk_pending_work); + + err = mtk_hw_init(eth); + if (err) +diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h +index 48a5292..eed626d 100644 +--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h ++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h +@@ -363,6 +363,7 @@ struct mtk_rx_ring { + * @clk_gp1: The gmac1 clock + * @clk_gp2: The gmac2 clock + * @mii_bus: If there is a bus we need to create an instance for it ++ * @pending_work: The workqueue used to reset the dma ring + */ + + struct mtk_eth { +@@ -389,6 +390,7 @@ struct mtk_eth { + struct clk *clk_gp1; + struct clk *clk_gp2; + struct mii_bus *mii_bus; ++ struct work_struct pending_work; + }; + + /* struct mtk_mac - the structure that holds the info about the MACs of the +@@ -398,7 +400,6 @@ struct mtk_eth { + * @hw: Backpointer to our main datastruture + * @hw_stats: Packet statistics counter + * @phy_dev: The attached PHY if available +- * @pending_work: The workqueue used to reset the dma ring + */ + struct mtk_mac { + int id; +@@ -406,7 +407,6 @@ struct mtk_mac { + struct mtk_eth *hw; + struct mtk_hw_stats *hw_stats; + struct phy_device *phy_dev; +- struct work_struct pending_work; + }; + + /* the struct describing the SoC. these are declared in the soc_xyz.c files */ +-- +1.7.10.4 + -- cgit v1.2.3 From 9d81678ab01a06ee718e33c2f2d3913cec684840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Mon, 20 Jun 2016 23:26:13 +0200 Subject: kernel: update kernel 4.4 to version 4.4.12 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Álvaro Fernández Rojas --- ...diatek-move-the-pending_work-struct-to-the-dev.patch | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'target/linux/mediatek/patches-4.4/0068-net-mediatek-move-the-pending_work-struct-to-the-dev.patch') diff --git a/target/linux/mediatek/patches-4.4/0068-net-mediatek-move-the-pending_work-struct-to-the-dev.patch b/target/linux/mediatek/patches-4.4/0068-net-mediatek-move-the-pending_work-struct-to-the-dev.patch index 18f978315e..497309144c 100644 --- a/target/linux/mediatek/patches-4.4/0068-net-mediatek-move-the-pending_work-struct-to-the-dev.patch +++ b/target/linux/mediatek/patches-4.4/0068-net-mediatek-move-the-pending_work-struct-to-the-dev.patch @@ -13,11 +13,9 @@ Signed-off-by: John Crispin drivers/net/ethernet/mediatek/mtk_eth_soc.h | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) -diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -index 67b18f9..bbcd607 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c -@@ -1193,7 +1193,7 @@ static void mtk_tx_timeout(struct net_device *dev) +@@ -1193,7 +1193,7 @@ static void mtk_tx_timeout(struct net_de eth->netdev[mac->id]->stats.tx_errors++; netif_err(eth, tx_err, dev, "transmit timed out\n"); @@ -26,7 +24,7 @@ index 67b18f9..bbcd607 100644 } static irqreturn_t mtk_handle_irq(int irq, void *_eth) -@@ -1438,7 +1438,7 @@ static void mtk_pending_work(struct work_struct *work) +@@ -1438,7 +1438,7 @@ static void mtk_pending_work(struct work /* stop all devices to make sure that dma is properly shut down */ for (i = 0; i < MTK_MAC_COUNT; i++) { @@ -35,7 +33,7 @@ index 67b18f9..bbcd607 100644 continue; mtk_stop(eth->netdev[i]); __set_bit(i, &restart); -@@ -1464,15 +1464,13 @@ static int mtk_cleanup(struct mtk_eth *eth) +@@ -1464,15 +1464,13 @@ static int mtk_cleanup(struct mtk_eth *e int i; for (i = 0; i < MTK_MAC_COUNT; i++) { @@ -52,7 +50,7 @@ index 67b18f9..bbcd607 100644 return 0; } -@@ -1660,7 +1658,6 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) +@@ -1660,7 +1658,6 @@ static int mtk_add_mac(struct mtk_eth *e mac->id = id; mac->hw = eth; mac->of_node = np; @@ -60,7 +58,7 @@ index 67b18f9..bbcd607 100644 mac->hw_stats = devm_kzalloc(eth->dev, sizeof(*mac->hw_stats), -@@ -1762,6 +1759,7 @@ static int mtk_probe(struct platform_device *pdev) +@@ -1762,6 +1759,7 @@ static int mtk_probe(struct platform_dev eth->dev = &pdev->dev; eth->msg_enable = netif_msg_init(mtk_msg_level, MTK_DEFAULT_MSG_ENABLE); @@ -68,8 +66,6 @@ index 67b18f9..bbcd607 100644 err = mtk_hw_init(eth); if (err) -diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h -index 48a5292..eed626d 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h @@ -363,6 +363,7 @@ struct mtk_rx_ring { @@ -104,6 +100,3 @@ index 48a5292..eed626d 100644 }; /* the struct describing the SoC. these are declared in the soc_xyz.c files */ --- -1.7.10.4 - -- cgit v1.2.3