From: Pavel Machek <pavel@ucw.cz>
To: peppe.cavallaro@st.com, netdev@vger.kernel.org,
kernel list <linux-kernel@vger.kernel.org>,
ezequiel@vanguardiasur.com.ar, sonic.zhang@analog.com,
fabrice.gasnier@st.com
Subject: [PATCH] stmmac ethernet: remove cut & paste code
Date: Thu, 24 Nov 2016 12:05:48 +0100 [thread overview]
Message-ID: <20161124110548.GB30723@amd> (raw)
In-Reply-To: <20161124104619.GA30723@amd>
[-- Attachment #1: Type: text/plain, Size: 3963 bytes --]
Remove duplicate code from _tx routines.
Signed-off-by: Pavel Machek <pavel@denx.de>
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 1cff258..5cf9cef 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -1960,6 +1960,38 @@ static void stmmac_tso_allocator(struct stmmac_priv *priv, unsigned int des,
}
}
+static void stmmac_xmit_common(struct sk_buff *skb, struct net_device *dev, int nfrags, struct dma_desc *desc)
+{
+ struct stmmac_priv *priv = netdev_priv(dev);
+
+ if (unlikely(stmmac_tx_avail(priv) <= (MAX_SKB_FRAGS + 1))) {
+ if (netif_msg_hw(priv))
+ pr_debug("%s: stop transmitted packets\n", __func__);
+ netif_stop_queue(dev);
+ }
+
+ dev->stats.tx_bytes += skb->len;
+
+ /* According to the coalesce parameter the IC bit for the latest
+ * segment is reset and the timer re-started to clean the tx status.
+ * This approach takes care about the fragments: desc is the first
+ * element in case of no SG.
+ */
+ priv->tx_count_frames += nfrags + 1;
+ if (likely(priv->tx_coal_frames > priv->tx_count_frames)) {
+ mod_timer(&priv->txtimer,
+ STMMAC_COAL_TIMER(priv->tx_coal_timer));
+ } else {
+ priv->tx_count_frames = 0;
+ priv->hw->desc->set_tx_ic(desc);
+ priv->xstats.tx_set_ic_bit++;
+ }
+
+ if (!priv->hwts_tx_en)
+ skb_tx_timestamp(skb);
+}
+
+
/**
* stmmac_tso_xmit - Tx entry point of the driver for oversized frames (TSO)
* @skb : the socket buffer
@@ -2081,30 +2113,11 @@ static netdev_tx_t stmmac_tso_xmit(struct sk_buff *skb, struct net_device *dev)
priv->cur_tx = STMMAC_GET_ENTRY(priv->cur_tx, DMA_TX_SIZE);
- if (unlikely(stmmac_tx_avail(priv) <= (MAX_SKB_FRAGS + 1))) {
- if (netif_msg_hw(priv))
- pr_debug("%s: stop transmitted packets\n", __func__);
- netif_stop_queue(dev);
- }
-
- dev->stats.tx_bytes += skb->len;
+ stmmac_xmit_common(skb, dev, nfrags, desc);
+
priv->xstats.tx_tso_frames++;
priv->xstats.tx_tso_nfrags += nfrags;
- /* Manage tx mitigation */
- priv->tx_count_frames += nfrags + 1;
- if (likely(priv->tx_coal_frames > priv->tx_count_frames)) {
- mod_timer(&priv->txtimer,
- STMMAC_COAL_TIMER(priv->tx_coal_timer));
- } else {
- priv->tx_count_frames = 0;
- priv->hw->desc->set_tx_ic(desc);
- priv->xstats.tx_set_ic_bit++;
- }
-
- if (!priv->hwts_tx_en)
- skb_tx_timestamp(skb);
-
if (unlikely((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) &&
priv->hwts_tx_en)) {
/* declare that device is doing timestamping */
@@ -2280,31 +2293,7 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
print_pkt(skb->data, skb->len);
}
- if (unlikely(stmmac_tx_avail(priv) <= (MAX_SKB_FRAGS + 1))) {
- if (netif_msg_hw(priv))
- pr_debug("%s: stop transmitted packets\n", __func__);
- netif_stop_queue(dev);
- }
-
- dev->stats.tx_bytes += skb->len;
-
- /* According to the coalesce parameter the IC bit for the latest
- * segment is reset and the timer re-started to clean the tx status.
- * This approach takes care about the fragments: desc is the first
- * element in case of no SG.
- */
- priv->tx_count_frames += nfrags + 1;
- if (likely(priv->tx_coal_frames > priv->tx_count_frames)) {
- mod_timer(&priv->txtimer,
- STMMAC_COAL_TIMER(priv->tx_coal_timer));
- } else {
- priv->tx_count_frames = 0;
- priv->hw->desc->set_tx_ic(desc);
- priv->xstats.tx_set_ic_bit++;
- }
-
- if (!priv->hwts_tx_en)
- skb_tx_timestamp(skb);
+ stmmac_xmit_common(skb, dev, nfrags, desc);
/* Ready to fill the first descriptor and set the OWN bit w/o any
* problems because all the descriptors are actually ready to be
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
next prev parent reply other threads:[~2016-11-24 11:05 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-23 10:51 stmmac ethernet in kernel 4.4: coalescing related pauses? Pavel Machek
2016-11-24 8:55 ` stmmac ethernet in kernel 4.9-rc6: coalescing related pauses Pavel Machek
2016-11-24 10:29 ` Pavel Machek
2016-11-24 10:36 ` Pavel Machek
2016-11-24 10:46 ` [PATCH] stmmac ethernet: unify locking Pavel Machek
2016-11-24 11:05 ` Pavel Machek [this message]
2016-11-24 20:05 ` [PATCH] stmmac ethernet: remove cut & paste code Joe Perches
2016-11-24 21:44 ` Pavel Machek
2016-11-24 22:27 ` Joe Perches
2016-11-28 11:50 ` Pavel Machek
2016-11-28 14:24 ` Joe Perches
2016-11-28 14:35 ` Pavel Machek
2016-11-28 16:03 ` Joe Perches
2016-11-24 16:04 ` stmmac ethernet in kernel 4.9-rc6: coalescing related pauses David Miller
2016-11-24 21:25 ` Pavel Machek
2016-12-02 8:24 ` Giuseppe CAVALLARO
2016-12-02 8:41 ` Giuseppe CAVALLARO
2016-12-02 8:45 ` Pavel Machek
2016-12-02 9:43 ` Giuseppe CAVALLARO
2016-12-02 12:32 ` Pavel Machek
2016-12-02 13:51 ` Giuseppe CAVALLARO
2016-12-02 14:26 ` Alexandre Torgue
2016-12-02 15:19 ` Giuseppe CAVALLARO
2016-12-05 12:14 ` Pavel Machek
2016-12-05 12:01 ` Pavel Machek
2016-12-05 10:15 ` Pavel Machek
2016-12-05 11:40 ` Lino Sanfilippo
2016-12-05 22:02 ` Pavel Machek
2016-12-05 22:37 ` Lino Sanfilippo
2016-12-05 22:40 ` Pavel Machek
2016-12-05 22:54 ` Lino Sanfilippo
2016-12-05 23:11 ` Lino Sanfilippo
2016-12-02 14:05 ` Aw: " Lino Sanfilippo
2016-12-07 12:31 ` [RFC] " Pavel Machek
2016-12-07 13:18 ` Lino Sanfilippo
2016-12-05 11:56 ` Pavel Machek
2016-11-28 11:55 ` [PATCH] stmmac: fix comments, make debug output consistent Pavel Machek
2016-11-30 0:53 ` David Miller
2016-11-28 12:13 ` stmmac ethernet in kernel 4.9-rc6: coalescing related pauses Pavel Machek
2016-11-28 12:17 ` [PATCH] stmmac: reduce code duplication getting basic descriptors Pavel Machek
2016-11-28 15:25 ` kbuild test robot
2016-12-02 14:09 ` Alexandre Torgue
2016-11-30 11:44 ` [PATCH] stmmac: simplify flag assignment Pavel Machek
2016-12-01 20:23 ` David Miller
2016-12-01 22:48 ` stmmac: turn coalescing / NAPI off in stmmac Pavel Machek
2016-12-02 8:39 ` Giuseppe CAVALLARO
2016-12-02 10:42 ` Pavel Machek
2016-12-02 15:31 ` Giuseppe CAVALLARO
2016-12-05 11:45 ` Pavel Machek
2016-12-02 8:27 ` [PATCH] stmmac: simplify flag assignment Giuseppe CAVALLARO
2016-12-01 10:32 ` [PATCH] stmmac: cleanup documenation, make it match reality Pavel Machek
2016-12-03 20:07 ` David Miller
2016-12-05 12:27 ` [PATCH] stmmac: disable tx coalescing Pavel Machek
2016-12-11 19:07 ` Pavel Machek
2016-12-11 19:31 ` David Miller
2016-12-11 19:57 ` Pavel Machek
2016-11-28 13:07 ` stmmac ethernet in kernel 4.4: coalescing related pauses? Lino Sanfilippo
2016-11-28 14:54 ` David Miller
2016-11-28 15:31 ` Eric Dumazet
2016-11-28 15:57 ` Lino Sanfilippo
2016-11-28 16:30 ` David Miller
2016-11-28 17:01 ` Lino Sanfilippo
2016-11-30 10:28 ` Pavel Machek
2016-11-28 15:33 ` Lino Sanfilippo
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=20161124110548.GB30723@amd \
--to=pavel@ucw.cz \
--cc=ezequiel@vanguardiasur.com.ar \
--cc=fabrice.gasnier@st.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=peppe.cavallaro@st.com \
--cc=sonic.zhang@analog.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).