All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: netdev@vger.kernel.org
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Subject: [PATCH 08/10] ftgmac100: Add more register inits in ftgmac100_init_hw()
Date: Tue, 11 Apr 2017 11:04:34 +1000	[thread overview]
Message-ID: <20170411010436.23290-9-benh@kernel.crashing.org> (raw)
In-Reply-To: <20170411010436.23290-1-benh@kernel.crashing.org>

Clear stale interrupts on entry, configure FIFO sizes, set FIFO
thresholds, configure interrupt mitigation.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
 drivers/net/ethernet/faraday/ftgmac100.c | 36 ++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
index 3c7a1e4..d4fe599 100644
--- a/drivers/net/ethernet/faraday/ftgmac100.c
+++ b/drivers/net/ethernet/faraday/ftgmac100.c
@@ -210,7 +210,11 @@ static int ftgmac100_set_mac_addr(struct net_device *dev, void *p)
 
 static void ftgmac100_init_hw(struct ftgmac100 *priv)
 {
+	u32 reg, rfifo_sz, tfifo_sz;
 
+	/* Clear stale interrupts */
+	reg = ioread32(priv->base + FTGMAC100_OFFSET_ISR);
+	iowrite32(reg, priv->base + FTGMAC100_OFFSET_ISR);
 
 	/* Setup RX ring buffer base */
 	iowrite32(priv->descs_dma_addr +
@@ -232,6 +236,38 @@ static void ftgmac100_init_hw(struct ftgmac100 *priv)
 
 	/* Write MAC address */
 	ftgmac100_write_mac_addr(priv, priv->netdev->dev_addr);
+
+	/* Configure descriptor sizes and increase burst sizes according
+	 * to values in Aspeed SDK. The FIFO arbitration is enabled and
+	 * the thresholds set based on the recommended values in the
+	 * AST2400 specification.
+	 */
+	iowrite32(FTGMAC100_DBLAC_RXDES_SIZE(2) |   /* 2*8 bytes RX descs */
+		  FTGMAC100_DBLAC_TXDES_SIZE(2) |   /* 2*8 bytes TX descs */
+		  FTGMAC100_DBLAC_RXBURST_SIZE(3) | /* 512 bytes max RX bursts */
+		  FTGMAC100_DBLAC_TXBURST_SIZE(3) | /* 512 bytes max TX bursts */
+		  FTGMAC100_DBLAC_RX_THR_EN |       /* Enable fifo threshold arb */
+		  FTGMAC100_DBLAC_RXFIFO_HTHR(6) |  /* 6/8 of FIFO high threshold */
+		  FTGMAC100_DBLAC_RXFIFO_LTHR(2),   /* 2/8 of FIFO low threshold */
+		  priv->base + FTGMAC100_OFFSET_DBLAC);
+
+	/* Interrupt mitigation configured for 1 interrupt/packet. HW interrupt
+	 * mitigation doesn't seem to provide any benefit with NAPI so leave
+	 * it at that.
+	 */
+	iowrite32(FTGMAC100_ITC_RXINT_THR(1) |
+		  FTGMAC100_ITC_TXINT_THR(1),
+		  priv->base + FTGMAC100_OFFSET_ITC);
+
+	/* Configure FIFO sizes in the TPAFCR register */
+	reg = ioread32(priv->base + FTGMAC100_OFFSET_FEAR);
+	rfifo_sz = reg & 0x00000007;
+	tfifo_sz = (reg >> 3) & 0x00000007;
+	reg = ioread32(priv->base + FTGMAC100_OFFSET_TPAFCR);
+	reg &= ~0x3f000000;
+	reg |= (tfifo_sz << 27);
+	reg |= (rfifo_sz << 24);
+	iowrite32(reg, priv->base + FTGMAC100_OFFSET_TPAFCR);
 }
 
 static void ftgmac100_start_hw(struct ftgmac100 *priv)
-- 
2.9.3

  parent reply	other threads:[~2017-04-11  1:06 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-11  1:04 [PATCH 00/10] ftgmac100: Rework batch 4 - Misc Benjamin Herrenschmidt
2017-04-11  1:04 ` [PATCH 01/10] ftgmac100: Upgrade to NETIF_F_HW_CSUM Benjamin Herrenschmidt
2017-04-11 10:57   ` Sergei Shtylyov
2017-04-11 11:13     ` Benjamin Herrenschmidt
2017-04-11 13:50       ` Benjamin Herrenschmidt
2017-04-11 15:27       ` David Miller
2017-04-11 22:06         ` Benjamin Herrenschmidt
2017-04-11 23:36           ` Benjamin Herrenschmidt
2017-04-12  0:03             ` David Miller
2017-04-12  0:08               ` Benjamin Herrenschmidt
2017-04-11  1:04 ` [PATCH 02/10] ftgmac100: Use device "compatible" property, not machine Benjamin Herrenschmidt
2017-04-11  1:04 ` [PATCH 03/10] ftgmac100: Disable HW checksum generation on AST2400, enable on others Benjamin Herrenschmidt
2017-04-11  1:04 ` [PATCH 04/10] ftgmac100: Set netdev->hw_features Benjamin Herrenschmidt
2017-04-11  1:04 ` [PATCH 05/10] ftgmac100: Rename ftgmac100_set_mac to ftgmac100_write_mac_addr Benjamin Herrenschmidt
2017-04-11  1:04 ` [PATCH 06/10] ftgmac100: Rename ftgmac100_setup_mac to ftgmac100_initial_mac Benjamin Herrenschmidt
2017-04-11  1:04 ` [PATCH 07/10] ftgmac100: Open code remaining register writes Benjamin Herrenschmidt
2017-04-11  1:04 ` Benjamin Herrenschmidt [this message]
2017-04-11  1:04 ` [PATCH 09/10] ftgmac100: Make ring sizes configurable via ethtool Benjamin Herrenschmidt
2017-04-11  1:04 ` [PATCH 10/10] ftgmac100: Set default ring sizes to 128 entries Benjamin Herrenschmidt
2017-04-11  1:08 ` [PATCH 00/10] ftgmac100: Rework batch 4 - Misc Benjamin Herrenschmidt

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=20170411010436.23290-9-benh@kernel.crashing.org \
    --to=benh@kernel.crashing.org \
    --cc=netdev@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.