linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net 0/8] net: stmmac: Fixes for -net
@ 2019-12-10 19:33 Jose Abreu
  2019-12-10 19:33 ` [PATCH net 1/8] net: stmmac: selftests: Needs to check the number of Multicast regs Jose Abreu
                   ` (8 more replies)
  0 siblings, 9 replies; 14+ messages in thread
From: Jose Abreu @ 2019-12-10 19:33 UTC (permalink / raw)
  To: netdev
  Cc: Jose Abreu, Joao Pinto, Alexandre Torgue, linux-kernel,
	linux-stm32, Maxime Coquelin, Giuseppe Cavallaro,
	David S. Miller, linux-arm-kernel

Fixes for stmmac.

1) Fixes the filtering selftests (again) for cases when the number of multicast
filters are not enough.

2) Fixes SPH feature for MTU > default.

3) Fixes the behavior of accepting invalid MTU values.

4) Fixes FCS stripping for multi-descriptor packets.

5) Fixes the change of RX buffer size in XGMAC.

6) Fixes RX buffer size alignment.

7) Fixes the 16KB buffer alignment.

8) Fixes the enabling of 16KB buffer size feature.

---
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---

Jose Abreu (8):
  net: stmmac: selftests: Needs to check the number of Multicast regs
  net: stmmac: Determine earlier the size of RX buffer
  net: stmmac: Do not accept invalid MTU values
  net: stmmac: Only the last buffer has the FCS field
  net: stmmac: xgmac: Clear previous RX buffer size
  net: stmmac: RX buffer size must be 16 byte aligned
  net: stmmac: 16KB buffer must be 16 byte aligned
  net: stmmac: Enable 16KB buffer size

 drivers/net/ethernet/stmicro/stmmac/common.h       |  5 +--
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h     |  2 +
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c |  3 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c  | 45 ++++++++++++++--------
 .../net/ethernet/stmicro/stmmac/stmmac_selftests.c |  4 ++
 5 files changed, 38 insertions(+), 21 deletions(-)

-- 
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH net 1/8] net: stmmac: selftests: Needs to check the number of Multicast regs
  2019-12-10 19:33 [PATCH net 0/8] net: stmmac: Fixes for -net Jose Abreu
@ 2019-12-10 19:33 ` Jose Abreu
  2019-12-10 19:33 ` [PATCH net 2/8] net: stmmac: Determine earlier the size of RX buffer Jose Abreu
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 14+ messages in thread
From: Jose Abreu @ 2019-12-10 19:33 UTC (permalink / raw)
  To: netdev
  Cc: Jose Abreu, Joao Pinto, Alexandre Torgue, linux-kernel,
	linux-stm32, Maxime Coquelin, Giuseppe Cavallaro,
	David S. Miller, linux-arm-kernel

When running the MC and UC filter tests we setup a multicast address
that its expected to be blocked. If the number of available multicast
registers is zero, driver will always pass the multicast packets which
will fail the test.

Check if available multicast addresses is enough before running the
tests.

Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>

---
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
index f3d8b9336b8e..13227909287c 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
@@ -624,6 +624,8 @@ static int stmmac_test_mcfilt(struct stmmac_priv *priv)
 		return -EOPNOTSUPP;
 	if (netdev_uc_count(priv->dev) >= priv->hw->unicast_filter_entries)
 		return -EOPNOTSUPP;
+	if (netdev_mc_count(priv->dev) >= priv->hw->multicast_filter_bins)
+		return -EOPNOTSUPP;
 
 	while (--tries) {
 		/* We only need to check the mc_addr for collisions */
@@ -666,6 +668,8 @@ static int stmmac_test_ucfilt(struct stmmac_priv *priv)
 
 	if (stmmac_filter_check(priv))
 		return -EOPNOTSUPP;
+	if (netdev_uc_count(priv->dev) >= priv->hw->unicast_filter_entries)
+		return -EOPNOTSUPP;
 	if (netdev_mc_count(priv->dev) >= priv->hw->multicast_filter_bins)
 		return -EOPNOTSUPP;
 
-- 
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH net 2/8] net: stmmac: Determine earlier the size of RX buffer
  2019-12-10 19:33 [PATCH net 0/8] net: stmmac: Fixes for -net Jose Abreu
  2019-12-10 19:33 ` [PATCH net 1/8] net: stmmac: selftests: Needs to check the number of Multicast regs Jose Abreu
@ 2019-12-10 19:33 ` Jose Abreu
  2019-12-10 19:33 ` [PATCH net 3/8] net: stmmac: Do not accept invalid MTU values Jose Abreu
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 14+ messages in thread
From: Jose Abreu @ 2019-12-10 19:33 UTC (permalink / raw)
  To: netdev
  Cc: Jose Abreu, Joao Pinto, Alexandre Torgue, linux-kernel,
	linux-stm32, Maxime Coquelin, Giuseppe Cavallaro,
	David S. Miller, linux-arm-kernel

Split Header feature needs to know the size of RX buffer but current
code is determining it too late. Fix this by moving the RX buffer
computation to earlier stage

Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>

---
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 24 +++++++++++------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index bbc65bd332a8..dfecced43f29 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -1293,19 +1293,9 @@ static int init_dma_rx_desc_rings(struct net_device *dev, gfp_t flags)
 	struct stmmac_priv *priv = netdev_priv(dev);
 	u32 rx_count = priv->plat->rx_queues_to_use;
 	int ret = -ENOMEM;
-	int bfsize = 0;
 	int queue;
 	int i;
 
-	bfsize = stmmac_set_16kib_bfsize(priv, dev->mtu);
-	if (bfsize < 0)
-		bfsize = 0;
-
-	if (bfsize < BUF_SIZE_16KiB)
-		bfsize = stmmac_set_bfsize(dev->mtu, priv->dma_buf_sz);
-
-	priv->dma_buf_sz = bfsize;
-
 	/* RX INITIALIZATION */
 	netif_dbg(priv, probe, priv->dev,
 		  "SKB addresses:\nskb\t\tskb data\tdma data\n");
@@ -1347,8 +1337,6 @@ static int init_dma_rx_desc_rings(struct net_device *dev, gfp_t flags)
 		}
 	}
 
-	buf_sz = bfsize;
-
 	return 0;
 
 err_init_rx_buffers:
@@ -2658,6 +2646,7 @@ static void stmmac_hw_teardown(struct net_device *dev)
 static int stmmac_open(struct net_device *dev)
 {
 	struct stmmac_priv *priv = netdev_priv(dev);
+	int bfsize = 0;
 	u32 chan;
 	int ret;
 
@@ -2677,7 +2666,16 @@ static int stmmac_open(struct net_device *dev)
 	memset(&priv->xstats, 0, sizeof(struct stmmac_extra_stats));
 	priv->xstats.threshold = tc;
 
-	priv->dma_buf_sz = STMMAC_ALIGN(buf_sz);
+	bfsize = stmmac_set_16kib_bfsize(priv, dev->mtu);
+	if (bfsize < 0)
+		bfsize = 0;
+
+	if (bfsize < BUF_SIZE_16KiB)
+		bfsize = stmmac_set_bfsize(dev->mtu, priv->dma_buf_sz);
+
+	priv->dma_buf_sz = STMMAC_ALIGN(bfsize);
+	buf_sz = bfsize;
+
 	priv->rx_copybreak = STMMAC_RX_COPYBREAK;
 
 	ret = alloc_dma_desc_resources(priv);
-- 
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH net 3/8] net: stmmac: Do not accept invalid MTU values
  2019-12-10 19:33 [PATCH net 0/8] net: stmmac: Fixes for -net Jose Abreu
  2019-12-10 19:33 ` [PATCH net 1/8] net: stmmac: selftests: Needs to check the number of Multicast regs Jose Abreu
  2019-12-10 19:33 ` [PATCH net 2/8] net: stmmac: Determine earlier the size of RX buffer Jose Abreu
@ 2019-12-10 19:33 ` Jose Abreu
  2019-12-10 19:33 ` [PATCH net 4/8] net: stmmac: Only the last buffer has the FCS field Jose Abreu
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 14+ messages in thread
From: Jose Abreu @ 2019-12-10 19:33 UTC (permalink / raw)
  To: netdev
  Cc: Jose Abreu, Joao Pinto, Alexandre Torgue, linux-kernel,
	linux-stm32, Maxime Coquelin, Giuseppe Cavallaro,
	David S. Miller, linux-arm-kernel

The maximum MTU value is determined by the maximum size of TX FIFO so
that a full packet can fit in the FIFO. Add a check for this in the MTU
change callback.

Also check if provided and rounded MTU does not passes the maximum limit
of 16K.

Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>

---
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index dfecced43f29..2ebac89049ed 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -3827,12 +3827,22 @@ static void stmmac_set_rx_mode(struct net_device *dev)
 static int stmmac_change_mtu(struct net_device *dev, int new_mtu)
 {
 	struct stmmac_priv *priv = netdev_priv(dev);
+	int txfifosz = priv->plat->tx_fifo_size;
+
+	if (txfifosz == 0)
+		txfifosz = priv->dma_cap.tx_fifo_size;
+
+	txfifosz /= priv->plat->tx_queues_to_use;
 
 	if (netif_running(dev)) {
 		netdev_err(priv->dev, "must be stopped to change its MTU\n");
 		return -EBUSY;
 	}
 
+	/* If condition true, FIFO is too small or MTU too large */
+	if ((txfifosz < new_mtu) || (new_mtu > STMMAC_ALIGN(BUF_SIZE_16KiB)))
+		return -EINVAL;
+
 	dev->mtu = new_mtu;
 
 	netdev_update_features(dev);
-- 
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH net 4/8] net: stmmac: Only the last buffer has the FCS field
  2019-12-10 19:33 [PATCH net 0/8] net: stmmac: Fixes for -net Jose Abreu
                   ` (2 preceding siblings ...)
  2019-12-10 19:33 ` [PATCH net 3/8] net: stmmac: Do not accept invalid MTU values Jose Abreu
@ 2019-12-10 19:33 ` Jose Abreu
  2019-12-10 19:33 ` [PATCH net 5/8] net: stmmac: xgmac: Clear previous RX buffer size Jose Abreu
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 14+ messages in thread
From: Jose Abreu @ 2019-12-10 19:33 UTC (permalink / raw)
  To: netdev
  Cc: Jose Abreu, Joao Pinto, Alexandre Torgue, linux-kernel,
	linux-stm32, Maxime Coquelin, Giuseppe Cavallaro,
	David S. Miller, linux-arm-kernel

Only the last received buffer contains the FCS field. Check for end of
packet before trying to strip the FCS field.

Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>

---
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 2ebac89049ed..8c191e4d35d0 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -3644,8 +3644,9 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue)
 		 * feature is always disabled and packets need to be
 		 * stripped manually.
 		 */
-		if (unlikely(priv->synopsys_id >= DWMAC_CORE_4_00) ||
-		    unlikely(status != llc_snap)) {
+		if (likely(!(status & rx_not_ls)) &&
+		    (likely(priv->synopsys_id >= DWMAC_CORE_4_00) ||
+		     unlikely(status != llc_snap))) {
 			if (buf2_len)
 				buf2_len -= ETH_FCS_LEN;
 			else
-- 
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH net 5/8] net: stmmac: xgmac: Clear previous RX buffer size
  2019-12-10 19:33 [PATCH net 0/8] net: stmmac: Fixes for -net Jose Abreu
                   ` (3 preceding siblings ...)
  2019-12-10 19:33 ` [PATCH net 4/8] net: stmmac: Only the last buffer has the FCS field Jose Abreu
@ 2019-12-10 19:33 ` Jose Abreu
  2019-12-10 19:33 ` [PATCH net 6/8] net: stmmac: RX buffer size must be 16 byte aligned Jose Abreu
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 14+ messages in thread
From: Jose Abreu @ 2019-12-10 19:33 UTC (permalink / raw)
  To: netdev
  Cc: Jose Abreu, Joao Pinto, Alexandre Torgue, linux-kernel,
	linux-stm32, Maxime Coquelin, Giuseppe Cavallaro,
	David S. Miller, linux-arm-kernel

When switching between buffer sizes we need to clear the previous value.

Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>

---
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h     | 2 ++
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c | 3 ++-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h
index 3b6e559aa0b9..ef8a07c68ca7 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h
+++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h
@@ -343,6 +343,8 @@
 #define XGMAC_DMA_CH_RX_CONTROL(x)	(0x00003108 + (0x80 * (x)))
 #define XGMAC_RxPBL			GENMASK(21, 16)
 #define XGMAC_RxPBL_SHIFT		16
+#define XGMAC_RBSZ			GENMASK(14, 1)
+#define XGMAC_RBSZ_SHIFT		1
 #define XGMAC_RXST			BIT(0)
 #define XGMAC_DMA_CH_TxDESC_HADDR(x)	(0x00003110 + (0x80 * (x)))
 #define XGMAC_DMA_CH_TxDESC_LADDR(x)	(0x00003114 + (0x80 * (x)))
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c
index 22a7f0cc1b90..f3f08ccc379b 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c
@@ -482,7 +482,8 @@ static void dwxgmac2_set_bfsize(void __iomem *ioaddr, int bfsize, u32 chan)
 	u32 value;
 
 	value = readl(ioaddr + XGMAC_DMA_CH_RX_CONTROL(chan));
-	value |= bfsize << 1;
+	value &= ~XGMAC_RBSZ;
+	value |= bfsize << XGMAC_RBSZ_SHIFT;
 	writel(value, ioaddr + XGMAC_DMA_CH_RX_CONTROL(chan));
 }
 
-- 
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH net 6/8] net: stmmac: RX buffer size must be 16 byte aligned
  2019-12-10 19:33 [PATCH net 0/8] net: stmmac: Fixes for -net Jose Abreu
                   ` (4 preceding siblings ...)
  2019-12-10 19:33 ` [PATCH net 5/8] net: stmmac: xgmac: Clear previous RX buffer size Jose Abreu
@ 2019-12-10 19:33 ` Jose Abreu
  2019-12-10 19:33 ` [PATCH net 7/8] net: stmmac: 16KB buffer " Jose Abreu
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 14+ messages in thread
From: Jose Abreu @ 2019-12-10 19:33 UTC (permalink / raw)
  To: netdev
  Cc: Jose Abreu, Joao Pinto, Alexandre Torgue, linux-kernel,
	linux-stm32, Maxime Coquelin, Giuseppe Cavallaro,
	David S. Miller, linux-arm-kernel

We need to align the RX buffer size to at least 16 byte so that IP
doesn't mis-behave. This is required by HW.

Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>

---
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 8c191e4d35d0..eb31d7fb321c 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -46,7 +46,7 @@
 #include "dwxgmac2.h"
 #include "hwif.h"
 
-#define	STMMAC_ALIGN(x)		__ALIGN_KERNEL(x, SMP_CACHE_BYTES)
+#define	STMMAC_ALIGN(x)		ALIGN_DOWN(ALIGN_DOWN(x, SMP_CACHE_BYTES), 16)
 #define	TSO_MAX_BUFF_SIZE	(SZ_16K - 1)
 
 /* Module parameters */
-- 
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH net 7/8] net: stmmac: 16KB buffer must be 16 byte aligned
  2019-12-10 19:33 [PATCH net 0/8] net: stmmac: Fixes for -net Jose Abreu
                   ` (5 preceding siblings ...)
  2019-12-10 19:33 ` [PATCH net 6/8] net: stmmac: RX buffer size must be 16 byte aligned Jose Abreu
@ 2019-12-10 19:33 ` Jose Abreu
  2019-12-10 19:34 ` [PATCH net 8/8] net: stmmac: Enable 16KB buffer size Jose Abreu
  2019-12-14  0:22 ` [PATCH net 0/8] net: stmmac: Fixes for -net Jakub Kicinski
  8 siblings, 0 replies; 14+ messages in thread
From: Jose Abreu @ 2019-12-10 19:33 UTC (permalink / raw)
  To: netdev
  Cc: Jose Abreu, Joao Pinto, Alexandre Torgue, linux-kernel,
	linux-stm32, Maxime Coquelin, Giuseppe Cavallaro,
	David S. Miller, linux-arm-kernel

The 16KB RX Buffer must also be 16 byte aligned. Fix it.

Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>

---
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/net/ethernet/stmicro/stmmac/common.h | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/common.h b/drivers/net/ethernet/stmicro/stmmac/common.h
index b210e987a1db..94f94686cf7d 100644
--- a/drivers/net/ethernet/stmicro/stmmac/common.h
+++ b/drivers/net/ethernet/stmicro/stmmac/common.h
@@ -365,9 +365,8 @@ struct dma_features {
 	unsigned int arpoffsel;
 };
 
-/* GMAC TX FIFO is 8K, Rx FIFO is 16K */
-#define BUF_SIZE_16KiB 16384
-/* RX Buffer size must be < 8191 and multiple of 4/8/16 bytes */
+/* RX Buffer size must be multiple of 4/8/16 bytes */
+#define BUF_SIZE_16KiB 16368
 #define BUF_SIZE_8KiB 8188
 #define BUF_SIZE_4KiB 4096
 #define BUF_SIZE_2KiB 2048
-- 
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH net 8/8] net: stmmac: Enable 16KB buffer size
  2019-12-10 19:33 [PATCH net 0/8] net: stmmac: Fixes for -net Jose Abreu
                   ` (6 preceding siblings ...)
  2019-12-10 19:33 ` [PATCH net 7/8] net: stmmac: 16KB buffer " Jose Abreu
@ 2019-12-10 19:34 ` Jose Abreu
  2019-12-14  0:22 ` [PATCH net 0/8] net: stmmac: Fixes for -net Jakub Kicinski
  8 siblings, 0 replies; 14+ messages in thread
From: Jose Abreu @ 2019-12-10 19:34 UTC (permalink / raw)
  To: netdev
  Cc: Jose Abreu, Joao Pinto, Alexandre Torgue, linux-kernel,
	linux-stm32, Maxime Coquelin, Giuseppe Cavallaro,
	David S. Miller, linux-arm-kernel

XGMAC supports maximum MTU that can go to 16KB. Lets add this check in
the calculation of RX buffer size.

Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>

---
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index eb31d7fb321c..082eeff9f54b 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -1109,7 +1109,9 @@ static int stmmac_set_bfsize(int mtu, int bufsize)
 {
 	int ret = bufsize;
 
-	if (mtu >= BUF_SIZE_4KiB)
+	if (mtu >= BUF_SIZE_8KiB)
+		ret = BUF_SIZE_16KiB;
+	else if (mtu >= BUF_SIZE_4KiB)
 		ret = BUF_SIZE_8KiB;
 	else if (mtu >= BUF_SIZE_2KiB)
 		ret = BUF_SIZE_4KiB;
-- 
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH net 0/8] net: stmmac: Fixes for -net
  2019-12-10 19:33 [PATCH net 0/8] net: stmmac: Fixes for -net Jose Abreu
                   ` (7 preceding siblings ...)
  2019-12-10 19:34 ` [PATCH net 8/8] net: stmmac: Enable 16KB buffer size Jose Abreu
@ 2019-12-14  0:22 ` Jakub Kicinski
  2019-12-16  9:26   ` Jose Abreu
  8 siblings, 1 reply; 14+ messages in thread
From: Jakub Kicinski @ 2019-12-14  0:22 UTC (permalink / raw)
  To: Jose Abreu
  Cc: Joao Pinto, Alexandre Torgue, netdev, linux-kernel, linux-stm32,
	Maxime Coquelin, Giuseppe Cavallaro, David S. Miller,
	linux-arm-kernel

On Tue, 10 Dec 2019 20:33:52 +0100, Jose Abreu wrote:
> Fixes for stmmac.
> 
> 1) Fixes the filtering selftests (again) for cases when the number of multicast
> filters are not enough.
> 
> 2) Fixes SPH feature for MTU > default.
> 
> 3) Fixes the behavior of accepting invalid MTU values.
> 
> 4) Fixes FCS stripping for multi-descriptor packets.
> 
> 5) Fixes the change of RX buffer size in XGMAC.
> 
> 6) Fixes RX buffer size alignment.
> 
> 7) Fixes the 16KB buffer alignment.
> 
> 8) Fixes the enabling of 16KB buffer size feature.

Hi Jose!

Patches directed at net should have a Fixes tag identifying the commit
which introduced the problem. The commit messages should also describe
user-visible outcomes of the bugs. Without those two its hard to judge
which patches are important for stable backports.

Could you please repost with appropriate Fixes tags?

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* RE: [PATCH net 0/8] net: stmmac: Fixes for -net
  2019-12-14  0:22 ` [PATCH net 0/8] net: stmmac: Fixes for -net Jakub Kicinski
@ 2019-12-16  9:26   ` Jose Abreu
  2019-12-16 20:21     ` Jakub Kicinski
  0 siblings, 1 reply; 14+ messages in thread
From: Jose Abreu @ 2019-12-16  9:26 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: Joao Pinto, Alexandre Torgue, netdev, linux-kernel, linux-stm32,
	Maxime Coquelin, Giuseppe Cavallaro, David S. Miller,
	linux-arm-kernel

From: Jakub Kicinski <jakub.kicinski@netronome.com>
Date: Dec/14/2019, 00:22:16 (UTC+00:00)

> On Tue, 10 Dec 2019 20:33:52 +0100, Jose Abreu wrote:
> > Fixes for stmmac.
> > 
> > 1) Fixes the filtering selftests (again) for cases when the number of multicast
> > filters are not enough.
> > 
> > 2) Fixes SPH feature for MTU > default.
> > 
> > 3) Fixes the behavior of accepting invalid MTU values.
> > 
> > 4) Fixes FCS stripping for multi-descriptor packets.
> > 
> > 5) Fixes the change of RX buffer size in XGMAC.
> > 
> > 6) Fixes RX buffer size alignment.
> > 
> > 7) Fixes the 16KB buffer alignment.
> > 
> > 8) Fixes the enabling of 16KB buffer size feature.
> 
> Hi Jose!
> 
> Patches directed at net should have a Fixes tag identifying the commit
> which introduced the problem. The commit messages should also describe
> user-visible outcomes of the bugs. Without those two its hard to judge
> which patches are important for stable backports.
> 
> Could you please repost with appropriate Fixes tags?

I agree with you Jakub but although these are bugs they are either for 
recently introduced features (such as SPH and selftests), or for 
features that are not commonly used. I can dig into the GIT history and 
provide fixes tag for them all or I can always provide a backport fix if 
any user requires so. Can you please comment on which one you prefer ?

---
Thanks,
Jose Miguel Abreu

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net 0/8] net: stmmac: Fixes for -net
  2019-12-16  9:26   ` Jose Abreu
@ 2019-12-16 20:21     ` Jakub Kicinski
  0 siblings, 0 replies; 14+ messages in thread
From: Jakub Kicinski @ 2019-12-16 20:21 UTC (permalink / raw)
  To: Jose Abreu
  Cc: Joao Pinto, Alexandre Torgue, netdev, linux-kernel, linux-stm32,
	Maxime Coquelin, Giuseppe Cavallaro, David S. Miller,
	linux-arm-kernel

On Mon, 16 Dec 2019 09:26:22 +0000, Jose Abreu wrote:
> From: Jakub Kicinski <jakub.kicinski@netronome.com>
> Date: Dec/14/2019, 00:22:16 (UTC+00:00)
> 
> > On Tue, 10 Dec 2019 20:33:52 +0100, Jose Abreu wrote:  
> > > Fixes for stmmac.
> > > 
> > > 1) Fixes the filtering selftests (again) for cases when the number of multicast
> > > filters are not enough.
> > > 
> > > 2) Fixes SPH feature for MTU > default.
> > > 
> > > 3) Fixes the behavior of accepting invalid MTU values.
> > > 
> > > 4) Fixes FCS stripping for multi-descriptor packets.
> > > 
> > > 5) Fixes the change of RX buffer size in XGMAC.
> > > 
> > > 6) Fixes RX buffer size alignment.
> > > 
> > > 7) Fixes the 16KB buffer alignment.
> > > 
> > > 8) Fixes the enabling of 16KB buffer size feature.  
> > 
> > Hi Jose!
> > 
> > Patches directed at net should have a Fixes tag identifying the commit
> > which introduced the problem. The commit messages should also describe
> > user-visible outcomes of the bugs. Without those two its hard to judge
> > which patches are important for stable backports.
> > 
> > Could you please repost with appropriate Fixes tags?  
> 
> I agree with you Jakub but although these are bugs they are either for 
> recently introduced features (such as SPH and selftests), or for 
> features that are not commonly used. I can dig into the GIT history and 
> provide fixes tag for them all or I can always provide a backport fix if 
> any user requires so. Can you please comment on which one you prefer ?

I think Fixes tags helps either way, if the fix is not important enough
upstream maintainers should be able to figure that out based on the
commit message (or you can give advice on backporting below the ---
line, like "Probably not worth backporting").

For the recent features it's quite useful to see the fixes tag so both
humans and bots can immediately see its a recent feature and we don't
have to worry about backports.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* RE: [PATCH net 0/8] net: stmmac: Fixes for -net
  2019-09-27  7:48 Jose Abreu
@ 2019-09-28  9:01 ` Jose Abreu
  0 siblings, 0 replies; 14+ messages in thread
From: Jose Abreu @ 2019-09-28  9:01 UTC (permalink / raw)
  To: Jose Abreu, netdev
  Cc: Joao Pinto, Alexandre Torgue, linux-kernel, David  S. Miller,
	Maxime Coquelin, Giuseppe Cavallaro, linux-stm32,
	linux-arm-kernel

From: Jose Abreu <Jose.Abreu@synopsys.com>
Date: Sep/27/2019, 08:48:48 (UTC+00:00)

> Misc fixes for -net tree. More info in commit logs.

David, please do not apply these. I forgot to rebase my tree against 
-net and this was based on -next. I'll resend. Sorry for the mess :(

---
Thanks,
Jose Miguel Abreu

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH net 0/8] net: stmmac: Fixes for -net
@ 2019-09-27  7:48 Jose Abreu
  2019-09-28  9:01 ` Jose Abreu
  0 siblings, 1 reply; 14+ messages in thread
From: Jose Abreu @ 2019-09-27  7:48 UTC (permalink / raw)
  To: netdev
  Cc: Jose Abreu, Joao Pinto, Alexandre Torgue, linux-kernel,
	linux-stm32, Maxime Coquelin, Giuseppe Cavallaro,
	David S. Miller, linux-arm-kernel

Misc fixes for -net tree. More info in commit logs.

---
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Jose Abreu <joabreu@synopsys.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---

Jose Abreu (8):
  net: stmmac: xgmac: Not all Unicast addresses may be available
  net: stmmac: xgmac: Detect Hash Table size dinamically
  net: stmmac: selftests: Always use max DMA size in Jumbo Test
  net: stmmac: dwmac4: Always update the MAC Hash Filter
  net: stmmac: Correctly take timestamp for PTPv2
  net: stmmac: Do not stop PHY if WoL is enabled
  net: stmmac: xgmac: Disable the Timestamp interrupt by default
  net: stmmac: xgmac: Fix RSS not writing all Keys to HW

 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c     | 13 +++++++------
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h        |  3 ++-
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c   |  4 ++--
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c    |  1 +
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c     | 19 +++++++++++++------
 .../net/ethernet/stmicro/stmmac/stmmac_selftests.c    |  4 ----
 6 files changed, 25 insertions(+), 19 deletions(-)

-- 
2.7.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2019-12-16 20:21 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-10 19:33 [PATCH net 0/8] net: stmmac: Fixes for -net Jose Abreu
2019-12-10 19:33 ` [PATCH net 1/8] net: stmmac: selftests: Needs to check the number of Multicast regs Jose Abreu
2019-12-10 19:33 ` [PATCH net 2/8] net: stmmac: Determine earlier the size of RX buffer Jose Abreu
2019-12-10 19:33 ` [PATCH net 3/8] net: stmmac: Do not accept invalid MTU values Jose Abreu
2019-12-10 19:33 ` [PATCH net 4/8] net: stmmac: Only the last buffer has the FCS field Jose Abreu
2019-12-10 19:33 ` [PATCH net 5/8] net: stmmac: xgmac: Clear previous RX buffer size Jose Abreu
2019-12-10 19:33 ` [PATCH net 6/8] net: stmmac: RX buffer size must be 16 byte aligned Jose Abreu
2019-12-10 19:33 ` [PATCH net 7/8] net: stmmac: 16KB buffer " Jose Abreu
2019-12-10 19:34 ` [PATCH net 8/8] net: stmmac: Enable 16KB buffer size Jose Abreu
2019-12-14  0:22 ` [PATCH net 0/8] net: stmmac: Fixes for -net Jakub Kicinski
2019-12-16  9:26   ` Jose Abreu
2019-12-16 20:21     ` Jakub Kicinski
  -- strict thread matches above, loose matches on Subject: below --
2019-09-27  7:48 Jose Abreu
2019-09-28  9:01 ` Jose Abreu

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).