netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Marek Vasut <marex@denx.de>
To: netdev@vger.kernel.org
Cc: Marek Vasut <marex@denx.de>,
	"David S . Miller" <davem@davemloft.net>,
	Lukas Wunner <lukas@wunner.de>, Petr Stetiar <ynezz@true.cz>,
	YueHaibing <yuehaibing@huawei.com>
Subject: [PATCH V3 14/18] net: ks8851: Factor out TX work flush function
Date: Sat, 28 Mar 2020 01:31:44 +0100	[thread overview]
Message-ID: <20200328003148.498021-15-marex@denx.de> (raw)
In-Reply-To: <20200328003148.498021-1-marex@denx.de>

While the SPI version of the KS8851 requires a TX worker thread to pump
data via SPI, the parallel bus version can write data into the TX FIFO
directly in .ndo_start_xmit, as the parallel bus access is much faster
and does not sleep. Factor out this TX work flush part, so it can be
overridden by the parallel bus driver.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: David S. Miller <davem@davemloft.net>
Cc: Lukas Wunner <lukas@wunner.de>
Cc: Petr Stetiar <ynezz@true.cz>
Cc: YueHaibing <yuehaibing@huawei.com>
---
V3: New patch
---
 drivers/net/ethernet/micrel/ks8851.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
index dc7ff857b53c..0b60acceeae9 100644
--- a/drivers/net/ethernet/micrel/ks8851.c
+++ b/drivers/net/ethernet/micrel/ks8851.c
@@ -781,6 +781,17 @@ static void ks8851_tx_work(struct work_struct *work)
 	ks8851_unlock(ks, &flags);
 }
 
+/**
+ * ks8851_flush_tx_work - flush outstanding TX work
+ * @ks: The device state
+ */
+static void ks8851_flush_tx_work(struct ks8851_net *ks)
+{
+	struct ks8851_net_spi *kss = to_ks8851_spi(ks);
+
+	flush_work(&kss->tx_work);
+}
+
 /**
  * ks8851_net_open - open network device
  * @dev: The network device being opened.
@@ -880,11 +891,8 @@ static int ks8851_net_open(struct net_device *dev)
 static int ks8851_net_stop(struct net_device *dev)
 {
 	struct ks8851_net *ks = netdev_priv(dev);
-	struct ks8851_net_spi *kss;
 	unsigned long flags;
 
-	kss = to_ks8851_spi(ks);
-
 	netif_info(ks, ifdown, dev, "shutting down\n");
 
 	netif_stop_queue(dev);
@@ -896,7 +904,7 @@ static int ks8851_net_stop(struct net_device *dev)
 	ks8851_unlock(ks, &flags);
 
 	/* stop any outstanding work */
-	flush_work(&kss->tx_work);
+	ks8851_flush_tx_work(ks);
 	flush_work(&ks->rxctrl_work);
 
 	ks8851_lock(ks, &flags);
-- 
2.25.1


  parent reply	other threads:[~2020-03-28  0:32 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-28  0:31 [PATCH V3 00/18] net: ks8851: Unify KS8851 SPI and MLL drivers Marek Vasut
2020-03-28  0:31 ` [PATCH V3 01/18] net: ks8851: Factor out spi->dev in probe()/remove() Marek Vasut
2020-03-28  0:31 ` [PATCH V3 02/18] net: ks8851: Rename ndev to netdev in probe Marek Vasut
2020-03-28  0:31 ` [PATCH V3 03/18] net: ks8851: Replace dev_err() with netdev_err() in IRQ handler Marek Vasut
2020-03-28  0:31 ` [PATCH V3 04/18] net: ks8851: Pass device node into ks8851_init_mac() Marek Vasut
2020-03-28  0:31 ` [PATCH V3 05/18] net: ks8851: Use devm_alloc_etherdev() Marek Vasut
2020-03-28  0:31 ` [PATCH V3 06/18] net: ks8851: Use dev_{get,set}_drvdata() Marek Vasut
2020-03-28  0:31 ` [PATCH V3 07/18] net: ks8851: Remove ks8851_rdreg32() Marek Vasut
2020-03-28  0:31 ` [PATCH V3 08/18] net: ks8851: Use 16-bit writes to program MAC address Marek Vasut
2020-03-28  0:31 ` [PATCH V3 09/18] net: ks8851: Use 16-bit read of RXFC register Marek Vasut
2020-03-28  0:31 ` [PATCH V3 10/18] net: ks8851: Factor out bus lock handling Marek Vasut
2020-03-28  0:31 ` [PATCH V3 11/18] net: ks8851: Factor out SKB receive function Marek Vasut
2020-03-28  0:31 ` [PATCH V3 12/18] net: ks8851: Split out SPI specific entries in struct ks8851_net Marek Vasut
2020-03-28  0:31 ` [PATCH V3 13/18] net: ks8851: Split out SPI specific code from probe() and remove() Marek Vasut
2020-03-28  0:31 ` Marek Vasut [this message]
2020-03-28  0:31 ` [PATCH V3 15/18] net: ks8851: Permit overridding interrupt enable register Marek Vasut
2020-03-28  0:31 ` [PATCH V3 16/18] net: ks8851: Separate SPI operations into separate file Marek Vasut
2020-03-28  2:45   ` kbuild test robot
2020-03-28  4:11   ` kbuild test robot
2020-03-28  0:31 ` [PATCH V3 17/18] net: ks8851: Implement Parallel bus operations Marek Vasut
2020-03-28  0:31 ` [PATCH V3 18/18] net: ks8851: Remove ks8851_mll.c Marek Vasut
2020-03-29 16:15 ` [PATCH V3 00/18] net: ks8851: Unify KS8851 SPI and MLL drivers Marek Vasut
2020-04-06  3:16 ` Lukas Wunner
2020-04-06 11:20   ` Marek Vasut
2020-04-08 19:49     ` Marek Vasut
2020-04-10 11:01       ` Lukas Wunner
2020-04-10 18:10         ` Marek Vasut
2020-04-14 18:20           ` [PATCH V4 00/19] " Marek Vasut
2020-04-14 18:20             ` [PATCH V4 01/19] net: ks8851: Factor out spi->dev in probe()/remove() Marek Vasut
2020-04-14 18:20             ` [PATCH V4 02/19] net: ks8851: Rename ndev to netdev in probe Marek Vasut
2020-04-14 18:20             ` [PATCH V4 03/19] net: ks8851: Replace dev_err() with netdev_err() in IRQ handler Marek Vasut
2020-04-14 18:20             ` [PATCH V4 04/19] net: ks8851: Pass device node into ks8851_init_mac() Marek Vasut
2020-04-14 18:20             ` [PATCH V4 05/19] net: ks8851: Use devm_alloc_etherdev() Marek Vasut
2020-04-14 18:20             ` [PATCH V4 06/19] net: ks8851: Use dev_{get,set}_drvdata() Marek Vasut
2020-04-14 18:20             ` [PATCH V4 07/19] net: ks8851: Remove ks8851_rdreg32() Marek Vasut
2020-04-20 14:07               ` Lukas Wunner
2020-04-20 14:12                 ` Marek Vasut
2020-04-20 14:20                   ` Lukas Wunner
2020-04-20 14:24                     ` Marek Vasut
2020-04-20 14:44                       ` Lukas Wunner
2020-04-20 15:38                         ` Marek Vasut
2020-04-20 15:50                           ` Andrew Lunn
2020-05-07 14:22                             ` Marek Vasut
2020-04-14 18:20             ` [PATCH V4 08/19] net: ks8851: Use 16-bit writes to program MAC address Marek Vasut
2020-04-14 18:20             ` [PATCH V4 09/19] net: ks8851: Use 16-bit read of RXFC register Marek Vasut
2020-04-14 18:20             ` [PATCH V4 10/19] net: ks8851: Factor out bus lock handling Marek Vasut
2020-04-14 18:20             ` [PATCH V4 11/19] net: ks8851: Factor out SKB receive function Marek Vasut
2020-04-14 18:20             ` [PATCH V4 12/19] net: ks8851: Split out SPI specific entries in struct ks8851_net Marek Vasut
2020-04-14 18:20             ` [PATCH V4 13/19] net: ks8851: Split out SPI specific code from probe() and remove() Marek Vasut
2020-04-14 18:20             ` [PATCH V4 14/19] net: ks8851: Factor out TX work flush function Marek Vasut
2020-04-14 18:20             ` [PATCH V4 15/19] net: ks8851: Permit overridding interrupt enable register Marek Vasut
2020-04-14 18:20             ` [PATCH V4 16/19] net: ks8851: Implement register, FIFO, lock accessor callbacks Marek Vasut
2020-04-14 18:20             ` [PATCH V4 17/19] net: ks8851: Separate SPI operations into separate file Marek Vasut
2020-04-15 14:56               ` Lukas Wunner
2020-04-16  9:58                 ` Marek Vasut
2020-04-14 18:20             ` [PATCH V4 18/19] net: ks8851: Implement Parallel bus operations Marek Vasut
2020-04-14 18:20             ` [PATCH V4 19/19] net: ks8851: Remove ks8851_mll.c Marek Vasut
2020-04-14 20:13             ` [PATCH V4 00/19] net: ks8851: Unify KS8851 SPI and MLL drivers David Miller
2020-04-15 14:39             ` Lukas Wunner
2020-04-15 14:51               ` Marek Vasut
2020-04-15 15:12                 ` Lukas Wunner
2020-04-16 10:18                   ` Marek Vasut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200328003148.498021-15-marex@denx.de \
    --to=marex@denx.de \
    --cc=davem@davemloft.net \
    --cc=lukas@wunner.de \
    --cc=netdev@vger.kernel.org \
    --cc=ynezz@true.cz \
    --cc=yuehaibing@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).