All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver
@ 2021-10-10  7:29 Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 01/14] ravb: Use ALIGN macro for max_rx_len Biju Das
                   ` (13 more replies)
  0 siblings, 14 replies; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Lad Prabhakar, Andrew Lunn,
	Sergei Shtylyov, Geert Uytterhoeven, Adam Ford,
	Yoshihiro Shimoda, netdev, linux-renesas-soc, Chris Paterson,
	Biju Das

The DMAC and EMAC blocks of Gigabit Ethernet IP found on RZ/G2L SoC are
similar to the R-Car Ethernet AVB IP.

The Gigabit Ethernet IP consists of Ethernet controller (E-MAC), Internal
TCP/IP Offload Engine (TOE)  and Dedicated Direct memory access controller
(DMAC).

With a few changes in the driver we can support both IPs.

This patch series is aims to add functional support for Gigabit Ethernet driver
by filling all the stubs except set_features.

set_feature patch will send as separate RFC patch along with rx_checksum
patch, as it needs further discussion related to HW checksum.

With this series, we can do boot kernel with rootFS mounted on NFS on RZ/G2L
platforms.

Ref:-
 https://patchwork.kernel.org/project/linux-renesas-soc/list/?series=557655

V1->V2:
 * Removed the unrelated comment "GbEthernet TOE Hardware checksum status"
   and macros TOE_IPV4_RX_CSUM_OK and TOE_IPV6_RX_CSUM_OK which is accidentally
   introduced as part of RFC discussion from patch #6.

RFC->V1:
 * Removed patch#3 will send it as RFC
 * Removed rx_csum functionality from patch#7, will send it as RFC
 * Renamed "nc_queue" -> "nc_queues"
 * Separated the comment patch into 2 separate patches.
 * Documented PFRI register bit
 * Added Sergey's Rb tag

RFC changes:
 * used ALIGN macro for calculating the value for max_rx_len.
 * used rx_max_buf_size instead of rx_2k_buffers feature bit.
 * moved struct ravb_rx_desc *gbeth_rx_ring near to ravb_private::rx_ring
   and allocating it for 1 RX queue.
 * Started using gbeth_rx_ring instead of gbeth_rx_ring[q].
 * renamed ravb_alloc_rx_desc to ravb_alloc_rx_desc_rcar
 * renamed ravb_rx_ring_free to ravb_rx_ring_free_rcar
 * renamed ravb_rx_ring_format to ravb_rx_ring_format_rcar
 * renamed ravb_rcar_rx to ravb_rx_rcar
 * renamed "tsrq" variable
 * Updated the comments

Biju Das (14):
  ravb: Use ALIGN macro for max_rx_len
  ravb: Add rx_max_buf_size to struct ravb_hw_info
  ravb: Fillup ravb_alloc_rx_desc_gbeth() stub
  ravb: Fillup ravb_rx_ring_free_gbeth() stub
  ravb: Fillup ravb_rx_ring_format_gbeth() stub
  ravb: Fillup ravb_rx_gbeth() stub
  ravb: Add carrier_counters to struct ravb_hw_info
  ravb: Add support to retrieve stats for GbEthernet
  ravb: Rename "tsrq" variable
  ravb: Optimize ravb_emac_init_gbeth function
  ravb: Rename "nc_queue" feature bit
  ravb: Document PFRI register bit
  ravb: Update EMAC configuration mode comment
  ravb: Fix typo AVB->DMAC

 drivers/net/ethernet/renesas/ravb.h      |  13 +-
 drivers/net/ethernet/renesas/ravb_main.c | 325 +++++++++++++++++++----
 2 files changed, 287 insertions(+), 51 deletions(-)

-- 
2.17.1


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

* [PATCH net-next v2 01/14] ravb: Use ALIGN macro for max_rx_len
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 02/14] ravb: Add rx_max_buf_size to struct ravb_hw_info Biju Das
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Lad Prabhakar, Andrew Lunn,
	Sergei Shtylyov, Geert Uytterhoeven, Adam Ford,
	Yoshihiro Shimoda, netdev, linux-renesas-soc, Chris Paterson,
	Biju Das

Use ALIGN macro for calculating the value for max_rx_len.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
v1->v2:
 * No change.
RFC->v1:
 * No Change. Added Sergey's Rb tag
---
 drivers/net/ethernet/renesas/ravb_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 9a4888543384..56a97d583950 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -2227,7 +2227,7 @@ static const struct ravb_hw_info gbeth_hw_info = {
 	.set_feature = ravb_set_features_gbeth,
 	.dmac_init = ravb_dmac_init_gbeth,
 	.emac_init = ravb_emac_init_gbeth,
-	.max_rx_len = GBETH_RX_BUFF_MAX + RAVB_ALIGN - 1,
+	.max_rx_len = ALIGN(GBETH_RX_BUFF_MAX, RAVB_ALIGN),
 	.tsrq = TCCR_TSRQ0,
 	.aligned_tx = 1,
 	.tx_counters = 1,
-- 
2.17.1


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

* [PATCH net-next v2 02/14] ravb: Add rx_max_buf_size to struct ravb_hw_info
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 01/14] ravb: Use ALIGN macro for max_rx_len Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 03/14] ravb: Fillup ravb_alloc_rx_desc_gbeth() stub Biju Das
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Adam Ford,
	Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda, netdev,
	linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

R-Car AVB-DMAC has maximum 2K size on RX buffer, whereas on RZ/G2L
it is 8K. We need to allow for changing the MTU within the limit
of the maximum size of a descriptor.

Add a rx_max_buf_size variable to struct ravb_hw_info to handle
this difference.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
V1->v2:
 * No change
RFC->V1:
 * No Change. Added Sergey's Rb tag
---
 drivers/net/ethernet/renesas/ravb.h      | 1 +
 drivers/net/ethernet/renesas/ravb_main.c | 5 ++++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h
index 5dc1324786e0..b147c4a0dc0b 100644
--- a/drivers/net/ethernet/renesas/ravb.h
+++ b/drivers/net/ethernet/renesas/ravb.h
@@ -1010,6 +1010,7 @@ struct ravb_hw_info {
 	int stats_len;
 	size_t max_rx_len;
 	u32 tsrq;
+	u32 rx_max_buf_size;
 	unsigned aligned_tx: 1;
 
 	/* hardware features */
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 56a97d583950..ed0328a90200 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -2188,6 +2188,7 @@ static const struct ravb_hw_info ravb_gen3_hw_info = {
 	.stats_len = ARRAY_SIZE(ravb_gstrings_stats),
 	.max_rx_len = RX_BUF_SZ + RAVB_ALIGN - 1,
 	.tsrq = TCCR_TSRQ0 | TCCR_TSRQ1 | TCCR_TSRQ2 | TCCR_TSRQ3,
+	.rx_max_buf_size = SZ_2K,
 	.internal_delay = 1,
 	.tx_counters = 1,
 	.multi_irqs = 1,
@@ -2212,6 +2213,7 @@ static const struct ravb_hw_info ravb_gen2_hw_info = {
 	.stats_len = ARRAY_SIZE(ravb_gstrings_stats),
 	.max_rx_len = RX_BUF_SZ + RAVB_ALIGN - 1,
 	.tsrq = TCCR_TSRQ0 | TCCR_TSRQ1 | TCCR_TSRQ2 | TCCR_TSRQ3,
+	.rx_max_buf_size = SZ_2K,
 	.aligned_tx = 1,
 	.gptp = 1,
 	.nc_queue = 1,
@@ -2229,6 +2231,7 @@ static const struct ravb_hw_info gbeth_hw_info = {
 	.emac_init = ravb_emac_init_gbeth,
 	.max_rx_len = ALIGN(GBETH_RX_BUFF_MAX, RAVB_ALIGN),
 	.tsrq = TCCR_TSRQ0,
+	.rx_max_buf_size = SZ_8K,
 	.aligned_tx = 1,
 	.tx_counters = 1,
 	.half_duplex = 1,
@@ -2452,7 +2455,7 @@ static int ravb_probe(struct platform_device *pdev)
 	}
 	clk_prepare_enable(priv->refclk);
 
-	ndev->max_mtu = 2048 - (ETH_HLEN + VLAN_HLEN + ETH_FCS_LEN);
+	ndev->max_mtu = info->rx_max_buf_size - (ETH_HLEN + VLAN_HLEN + ETH_FCS_LEN);
 	ndev->min_mtu = ETH_MIN_MTU;
 
 	/* FIXME: R-Car Gen2 has 4byte alignment restriction for tx buffer
-- 
2.17.1


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

* [PATCH net-next v2 03/14] ravb: Fillup ravb_alloc_rx_desc_gbeth() stub
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 01/14] ravb: Use ALIGN macro for max_rx_len Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 02/14] ravb: Add rx_max_buf_size to struct ravb_hw_info Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 04/14] ravb: Fillup ravb_rx_ring_free_gbeth() stub Biju Das
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov,
	Adam Ford, Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda,
	netdev, linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Fillup ravb_alloc_rx_desc_gbeth() function to support RZ/G2L.

This patch also renames ravb_alloc_rx_desc to ravb_alloc_rx_desc_rcar
to be consistent with the naming convention used in sh_eth driver.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
V1->v2:
 * No change
RFC->V1:
 * No Change. Added Sergey's Rb tag
RFC:
 * started allocating 1 rx queue for "gbeth_rx_ring"
 * Moved gbeth_rx_ring near to rx_ring in priv structure
 * renamed ravb_alloc_rx_desc to ravb_alloc_rx_desc_rcar
---
 drivers/net/ethernet/renesas/ravb.h      |  1 +
 drivers/net/ethernet/renesas/ravb_main.c | 30 ++++++++++++++++++------
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h
index b147c4a0dc0b..ed771ead61b9 100644
--- a/drivers/net/ethernet/renesas/ravb.h
+++ b/drivers/net/ethernet/renesas/ravb.h
@@ -1038,6 +1038,7 @@ struct ravb_private {
 	struct ravb_desc *desc_bat;
 	dma_addr_t rx_desc_dma[NUM_RX_QUEUE];
 	dma_addr_t tx_desc_dma[NUM_TX_QUEUE];
+	struct ravb_rx_desc *gbeth_rx_ring;
 	struct ravb_ex_rx_desc *rx_ring[NUM_RX_QUEUE];
 	struct ravb_tx_desc *tx_ring[NUM_TX_QUEUE];
 	void *tx_align[NUM_TX_QUEUE];
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index ed0328a90200..1a84713446c7 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -385,11 +385,18 @@ static void ravb_ring_format(struct net_device *ndev, int q)
 
 static void *ravb_alloc_rx_desc_gbeth(struct net_device *ndev, int q)
 {
-	/* Place holder */
-	return NULL;
+	struct ravb_private *priv = netdev_priv(ndev);
+	unsigned int ring_size;
+
+	ring_size = sizeof(struct ravb_rx_desc) * (priv->num_rx_ring[q] + 1);
+
+	priv->gbeth_rx_ring = dma_alloc_coherent(ndev->dev.parent, ring_size,
+						 &priv->rx_desc_dma[q],
+						 GFP_KERNEL);
+	return priv->gbeth_rx_ring;
 }
 
-static void *ravb_alloc_rx_desc(struct net_device *ndev, int q)
+static void *ravb_alloc_rx_desc_rcar(struct net_device *ndev, int q)
 {
 	struct ravb_private *priv = netdev_priv(ndev);
 	unsigned int ring_size;
@@ -1084,16 +1091,25 @@ static int ravb_poll(struct napi_struct *napi, int budget)
 	struct net_device *ndev = napi->dev;
 	struct ravb_private *priv = netdev_priv(ndev);
 	const struct ravb_hw_info *info = priv->info;
+	bool gptp = info->gptp || info->ccc_gac;
+	struct ravb_rx_desc *desc;
 	unsigned long flags;
 	int q = napi - priv->napi;
 	int mask = BIT(q);
 	int quota = budget;
+	unsigned int entry;
 
+	if (!gptp) {
+		entry = priv->cur_rx[q] % priv->num_rx_ring[q];
+		desc = &priv->gbeth_rx_ring[entry];
+	}
 	/* Processing RX Descriptor Ring */
 	/* Clear RX interrupt */
 	ravb_write(ndev, ~(mask | RIS0_RESERVED), RIS0);
-	if (ravb_rx(ndev, &quota, q))
-		goto out;
+	if (gptp || desc->die_dt != DT_FEMPTY) {
+		if (ravb_rx(ndev, &quota, q))
+			goto out;
+	}
 
 	/* Processing TX Descriptor Ring */
 	spin_lock_irqsave(&priv->lock, flags);
@@ -2175,7 +2191,7 @@ static int ravb_mdio_release(struct ravb_private *priv)
 static const struct ravb_hw_info ravb_gen3_hw_info = {
 	.rx_ring_free = ravb_rx_ring_free,
 	.rx_ring_format = ravb_rx_ring_format,
-	.alloc_rx_desc = ravb_alloc_rx_desc,
+	.alloc_rx_desc = ravb_alloc_rx_desc_rcar,
 	.receive = ravb_rcar_rx,
 	.set_rate = ravb_set_rate_rcar,
 	.set_feature = ravb_set_features_rcar,
@@ -2200,7 +2216,7 @@ static const struct ravb_hw_info ravb_gen3_hw_info = {
 static const struct ravb_hw_info ravb_gen2_hw_info = {
 	.rx_ring_free = ravb_rx_ring_free,
 	.rx_ring_format = ravb_rx_ring_format,
-	.alloc_rx_desc = ravb_alloc_rx_desc,
+	.alloc_rx_desc = ravb_alloc_rx_desc_rcar,
 	.receive = ravb_rcar_rx,
 	.set_rate = ravb_set_rate_rcar,
 	.set_feature = ravb_set_features_rcar,
-- 
2.17.1


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

* [PATCH net-next v2 04/14] ravb: Fillup ravb_rx_ring_free_gbeth() stub
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
                   ` (2 preceding siblings ...)
  2021-10-10  7:29 ` [PATCH net-next v2 03/14] ravb: Fillup ravb_alloc_rx_desc_gbeth() stub Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 05/14] ravb: Fillup ravb_rx_ring_format_gbeth() stub Biju Das
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov,
	Adam Ford, Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda,
	netdev, linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Fillup ravb_rx_ring_free_gbeth() function to support RZ/G2L.

This patch also renames ravb_rx_ring_free to ravb_rx_ring_free_rcar
to be consistent with the naming convention used in sh_eth driver.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
v1->v2:
 * No change
RFC->V1:
 * No change. Added Sergey's Rb tag.
RFC Changes:
 * moved "gbeth_rx_ring" to previous patch
 * started using "gbeth_rx_ring" instead of gbeth_rx_ring[q].
 * renamed ravb_rx_ring_free to ravb_rx_ring_free_rcar
---
 drivers/net/ethernet/renesas/ravb_main.c | 28 ++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 1a84713446c7..1fc2abd3dc0e 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -236,10 +236,30 @@ static int ravb_tx_free(struct net_device *ndev, int q, bool free_txed_only)
 
 static void ravb_rx_ring_free_gbeth(struct net_device *ndev, int q)
 {
-	/* Place holder */
+	struct ravb_private *priv = netdev_priv(ndev);
+	unsigned int ring_size;
+	unsigned int i;
+
+	if (!priv->gbeth_rx_ring)
+		return;
+
+	for (i = 0; i < priv->num_rx_ring[q]; i++) {
+		struct ravb_rx_desc *desc = &priv->gbeth_rx_ring[i];
+
+		if (!dma_mapping_error(ndev->dev.parent,
+				       le32_to_cpu(desc->dptr)))
+			dma_unmap_single(ndev->dev.parent,
+					 le32_to_cpu(desc->dptr),
+					 GBETH_RX_BUFF_MAX,
+					 DMA_FROM_DEVICE);
+	}
+	ring_size = sizeof(struct ravb_rx_desc) * (priv->num_rx_ring[q] + 1);
+	dma_free_coherent(ndev->dev.parent, ring_size, priv->gbeth_rx_ring,
+			  priv->rx_desc_dma[q]);
+	priv->gbeth_rx_ring = NULL;
 }
 
-static void ravb_rx_ring_free(struct net_device *ndev, int q)
+static void ravb_rx_ring_free_rcar(struct net_device *ndev, int q)
 {
 	struct ravb_private *priv = netdev_priv(ndev);
 	unsigned int ring_size;
@@ -2189,7 +2209,7 @@ static int ravb_mdio_release(struct ravb_private *priv)
 }
 
 static const struct ravb_hw_info ravb_gen3_hw_info = {
-	.rx_ring_free = ravb_rx_ring_free,
+	.rx_ring_free = ravb_rx_ring_free_rcar,
 	.rx_ring_format = ravb_rx_ring_format,
 	.alloc_rx_desc = ravb_alloc_rx_desc_rcar,
 	.receive = ravb_rcar_rx,
@@ -2214,7 +2234,7 @@ static const struct ravb_hw_info ravb_gen3_hw_info = {
 };
 
 static const struct ravb_hw_info ravb_gen2_hw_info = {
-	.rx_ring_free = ravb_rx_ring_free,
+	.rx_ring_free = ravb_rx_ring_free_rcar,
 	.rx_ring_format = ravb_rx_ring_format,
 	.alloc_rx_desc = ravb_alloc_rx_desc_rcar,
 	.receive = ravb_rcar_rx,
-- 
2.17.1


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

* [PATCH net-next v2 05/14] ravb: Fillup ravb_rx_ring_format_gbeth() stub
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
                   ` (3 preceding siblings ...)
  2021-10-10  7:29 ` [PATCH net-next v2 04/14] ravb: Fillup ravb_rx_ring_free_gbeth() stub Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 06/14] ravb: Fillup ravb_rx_gbeth() stub Biju Das
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov,
	Adam Ford, Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda,
	netdev, linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Fillup ravb_rx_ring_format_gbeth() function to support RZ/G2L.

This patch also renames ravb_rx_ring_format to ravb_rx_ring_format_rcar
to be consistent with the naming convention used in sh_eth driver.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
V1->V2:
 * No change
RFC->V1:
 * No change. Added Sergey's Rb tag.
RFC changes:
 * Started using gbeth_rx_ring instead of gbeth_rx_ring[q].
 * renamed ravb_rx_ring_format to ravb_rx_ring_format_rcar
---
 drivers/net/ethernet/renesas/ravb.h      |  1 +
 drivers/net/ethernet/renesas/ravb_main.c | 34 +++++++++++++++++++++---
 2 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h
index ed771ead61b9..e9de3f8306ce 100644
--- a/drivers/net/ethernet/renesas/ravb.h
+++ b/drivers/net/ethernet/renesas/ravb.h
@@ -970,6 +970,7 @@ enum CXR31_BIT {
 #define RX_BUF_SZ	(2048 - ETH_FCS_LEN + sizeof(__sum16))
 
 #define GBETH_RX_BUFF_MAX 8192
+#define GBETH_RX_DESC_DATA_SIZE 4080
 
 struct ravb_tstamp_skb {
 	struct list_head list;
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 1fc2abd3dc0e..7e6ed6eda741 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -327,10 +327,36 @@ static void ravb_ring_free(struct net_device *ndev, int q)
 
 static void ravb_rx_ring_format_gbeth(struct net_device *ndev, int q)
 {
-	/* Place holder */
+	struct ravb_private *priv = netdev_priv(ndev);
+	struct ravb_rx_desc *rx_desc;
+	unsigned int rx_ring_size;
+	dma_addr_t dma_addr;
+	unsigned int i;
+
+	rx_ring_size = sizeof(*rx_desc) * priv->num_rx_ring[q];
+	memset(priv->gbeth_rx_ring, 0, rx_ring_size);
+	/* Build RX ring buffer */
+	for (i = 0; i < priv->num_rx_ring[q]; i++) {
+		/* RX descriptor */
+		rx_desc = &priv->gbeth_rx_ring[i];
+		rx_desc->ds_cc = cpu_to_le16(GBETH_RX_DESC_DATA_SIZE);
+		dma_addr = dma_map_single(ndev->dev.parent, priv->rx_skb[q][i]->data,
+					  GBETH_RX_BUFF_MAX,
+					  DMA_FROM_DEVICE);
+		/* We just set the data size to 0 for a failed mapping which
+		 * should prevent DMA from happening...
+		 */
+		if (dma_mapping_error(ndev->dev.parent, dma_addr))
+			rx_desc->ds_cc = cpu_to_le16(0);
+		rx_desc->dptr = cpu_to_le32(dma_addr);
+		rx_desc->die_dt = DT_FEMPTY;
+	}
+	rx_desc = &priv->gbeth_rx_ring[i];
+	rx_desc->dptr = cpu_to_le32((u32)priv->rx_desc_dma[q]);
+	rx_desc->die_dt = DT_LINKFIX; /* type */
 }
 
-static void ravb_rx_ring_format(struct net_device *ndev, int q)
+static void ravb_rx_ring_format_rcar(struct net_device *ndev, int q)
 {
 	struct ravb_private *priv = netdev_priv(ndev);
 	struct ravb_ex_rx_desc *rx_desc;
@@ -2210,7 +2236,7 @@ static int ravb_mdio_release(struct ravb_private *priv)
 
 static const struct ravb_hw_info ravb_gen3_hw_info = {
 	.rx_ring_free = ravb_rx_ring_free_rcar,
-	.rx_ring_format = ravb_rx_ring_format,
+	.rx_ring_format = ravb_rx_ring_format_rcar,
 	.alloc_rx_desc = ravb_alloc_rx_desc_rcar,
 	.receive = ravb_rcar_rx,
 	.set_rate = ravb_set_rate_rcar,
@@ -2235,7 +2261,7 @@ static const struct ravb_hw_info ravb_gen3_hw_info = {
 
 static const struct ravb_hw_info ravb_gen2_hw_info = {
 	.rx_ring_free = ravb_rx_ring_free_rcar,
-	.rx_ring_format = ravb_rx_ring_format,
+	.rx_ring_format = ravb_rx_ring_format_rcar,
 	.alloc_rx_desc = ravb_alloc_rx_desc_rcar,
 	.receive = ravb_rcar_rx,
 	.set_rate = ravb_set_rate_rcar,
-- 
2.17.1


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

* [PATCH net-next v2 06/14] ravb: Fillup ravb_rx_gbeth() stub
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
                   ` (4 preceding siblings ...)
  2021-10-10  7:29 ` [PATCH net-next v2 05/14] ravb: Fillup ravb_rx_ring_format_gbeth() stub Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-11 12:34   ` Sergey Shtylyov
  2021-10-10  7:29 ` [PATCH net-next v2 07/14] ravb: Add carrier_counters to struct ravb_hw_info Biju Das
                   ` (7 subsequent siblings)
  13 siblings, 1 reply; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov,
	Adam Ford, Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda,
	netdev, linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Fillup ravb_rx_gbeth() function to support RZ/G2L.

This patch also renames ravb_rcar_rx to ravb_rx_rcar to be
consistent with the naming convention used in sh_eth driver.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
V1->V2:
 * Removed the unrelated comment "GbEthernet TOE Hardware checksum status"
   and macros TOE_IPV4_RX_CSUM_OK and TOE_IPV6_RX_CSUM_OK which is accidentally
   introduced as part of RFC discussion.
RFC->v1:
 * Removed ravb_rx_csum_gbeth() and will post this as seperate RFC 
   patch.
---
 drivers/net/ethernet/renesas/ravb.h      |   1 +
 drivers/net/ethernet/renesas/ravb_main.c | 146 ++++++++++++++++++++++-
 2 files changed, 142 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h
index e9de3f8306ce..99164318db26 100644
--- a/drivers/net/ethernet/renesas/ravb.h
+++ b/drivers/net/ethernet/renesas/ravb.h
@@ -1043,6 +1043,7 @@ struct ravb_private {
 	struct ravb_ex_rx_desc *rx_ring[NUM_RX_QUEUE];
 	struct ravb_tx_desc *tx_ring[NUM_TX_QUEUE];
 	void *tx_align[NUM_TX_QUEUE];
+	struct sk_buff *rx_1st_skb;
 	struct sk_buff **rx_skb[NUM_RX_QUEUE];
 	struct sk_buff **tx_skb[NUM_TX_QUEUE];
 	u32 rx_over_errors;
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 7e6ed6eda741..e93c676d8f57 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -734,15 +734,151 @@ static void ravb_rx_csum(struct sk_buff *skb)
 	skb_trim(skb, skb->len - sizeof(__sum16));
 }
 
+static struct sk_buff *ravb_get_skb_gbeth(struct net_device *ndev, int entry,
+					  struct ravb_rx_desc *desc)
+{
+	struct ravb_private *priv = netdev_priv(ndev);
+	struct sk_buff *skb;
+
+	skb = priv->rx_skb[RAVB_BE][entry];
+	priv->rx_skb[RAVB_BE][entry] = NULL;
+	dma_unmap_single(ndev->dev.parent, le32_to_cpu(desc->dptr),
+			 ALIGN(GBETH_RX_BUFF_MAX, 16), DMA_FROM_DEVICE);
+
+	return skb;
+}
+
 /* Packet receive function for Gigabit Ethernet */
 static bool ravb_rx_gbeth(struct net_device *ndev, int *quota, int q)
 {
-	/* Place holder */
-	return true;
+	struct ravb_private *priv = netdev_priv(ndev);
+	const struct ravb_hw_info *info = priv->info;
+	struct net_device_stats *stats;
+	struct ravb_rx_desc *desc;
+	struct sk_buff *skb;
+	dma_addr_t dma_addr;
+	u8  desc_status;
+	int boguscnt;
+	u16 pkt_len;
+	u8  die_dt;
+	int entry;
+	int limit;
+
+	entry = priv->cur_rx[q] % priv->num_rx_ring[q];
+	boguscnt = priv->dirty_rx[q] + priv->num_rx_ring[q] - priv->cur_rx[q];
+	stats = &priv->stats[q];
+
+	boguscnt = min(boguscnt, *quota);
+	limit = boguscnt;
+	desc = &priv->gbeth_rx_ring[entry];
+	while (desc->die_dt != DT_FEMPTY) {
+		/* Descriptor type must be checked before all other reads */
+		dma_rmb();
+		desc_status = desc->msc;
+		pkt_len = le16_to_cpu(desc->ds_cc) & RX_DS;
+
+		if (--boguscnt < 0)
+			break;
+
+		/* We use 0-byte descriptors to mark the DMA mapping errors */
+		if (!pkt_len)
+			continue;
+
+		if (desc_status & MSC_MC)
+			stats->multicast++;
+
+		if (desc_status & (MSC_CRC | MSC_RFE | MSC_RTSF | MSC_RTLF | MSC_CEEF)) {
+			stats->rx_errors++;
+			if (desc_status & MSC_CRC)
+				stats->rx_crc_errors++;
+			if (desc_status & MSC_RFE)
+				stats->rx_frame_errors++;
+			if (desc_status & (MSC_RTLF | MSC_RTSF))
+				stats->rx_length_errors++;
+			if (desc_status & MSC_CEEF)
+				stats->rx_missed_errors++;
+		} else {
+			die_dt = desc->die_dt & 0xF0;
+			switch (die_dt) {
+			case DT_FSINGLE:
+				skb = ravb_get_skb_gbeth(ndev, entry, desc);
+				skb_put(skb, pkt_len);
+				skb->protocol = eth_type_trans(skb, ndev);
+				napi_gro_receive(&priv->napi[q], skb);
+				stats->rx_packets++;
+				stats->rx_bytes += pkt_len;
+				break;
+			case DT_FSTART:
+				priv->rx_1st_skb = ravb_get_skb_gbeth(ndev, entry, desc);
+				skb_put(priv->rx_1st_skb, pkt_len);
+				break;
+			case DT_FMID:
+				skb = ravb_get_skb_gbeth(ndev, entry, desc);
+				skb_copy_to_linear_data_offset(priv->rx_1st_skb,
+							       priv->rx_1st_skb->len,
+							       skb->data,
+							       pkt_len);
+				skb_put(priv->rx_1st_skb, pkt_len);
+				dev_kfree_skb(skb);
+				break;
+			case DT_FEND:
+				skb = ravb_get_skb_gbeth(ndev, entry, desc);
+				skb_copy_to_linear_data_offset(priv->rx_1st_skb,
+							       priv->rx_1st_skb->len,
+							       skb->data,
+							       pkt_len);
+				skb_put(priv->rx_1st_skb, pkt_len);
+				dev_kfree_skb(skb);
+				priv->rx_1st_skb->protocol =
+					eth_type_trans(priv->rx_1st_skb, ndev);
+				napi_gro_receive(&priv->napi[q],
+						 priv->rx_1st_skb);
+				stats->rx_packets++;
+				stats->rx_bytes += priv->rx_1st_skb->len;
+				break;
+			}
+		}
+
+		entry = (++priv->cur_rx[q]) % priv->num_rx_ring[q];
+		desc = &priv->gbeth_rx_ring[entry];
+	}
+
+	/* Refill the RX ring buffers. */
+	for (; priv->cur_rx[q] - priv->dirty_rx[q] > 0; priv->dirty_rx[q]++) {
+		entry = priv->dirty_rx[q] % priv->num_rx_ring[q];
+		desc = &priv->gbeth_rx_ring[entry];
+		desc->ds_cc = cpu_to_le16(GBETH_RX_DESC_DATA_SIZE);
+
+		if (!priv->rx_skb[q][entry]) {
+			skb = netdev_alloc_skb(ndev, info->max_rx_len);
+			if (!skb)
+				break;
+			ravb_set_buffer_align(skb);
+			dma_addr = dma_map_single(ndev->dev.parent,
+						  skb->data,
+						  GBETH_RX_BUFF_MAX,
+						  DMA_FROM_DEVICE);
+			skb_checksum_none_assert(skb);
+			/* We just set the data size to 0 for a failed mapping
+			 * which should prevent DMA  from happening...
+			 */
+			if (dma_mapping_error(ndev->dev.parent, dma_addr))
+				desc->ds_cc = cpu_to_le16(0);
+			desc->dptr = cpu_to_le32(dma_addr);
+			priv->rx_skb[q][entry] = skb;
+		}
+		/* Descriptor type must be set after all the above writes */
+		dma_wmb();
+		desc->die_dt = DT_FEMPTY;
+	}
+
+	*quota -= limit - (++boguscnt);
+
+	return boguscnt <= 0;
 }
 
 /* Packet receive function for Ethernet AVB */
-static bool ravb_rcar_rx(struct net_device *ndev, int *quota, int q)
+static bool ravb_rx_rcar(struct net_device *ndev, int *quota, int q)
 {
 	struct ravb_private *priv = netdev_priv(ndev);
 	const struct ravb_hw_info *info = priv->info;
@@ -2238,7 +2374,7 @@ static const struct ravb_hw_info ravb_gen3_hw_info = {
 	.rx_ring_free = ravb_rx_ring_free_rcar,
 	.rx_ring_format = ravb_rx_ring_format_rcar,
 	.alloc_rx_desc = ravb_alloc_rx_desc_rcar,
-	.receive = ravb_rcar_rx,
+	.receive = ravb_rx_rcar,
 	.set_rate = ravb_set_rate_rcar,
 	.set_feature = ravb_set_features_rcar,
 	.dmac_init = ravb_dmac_init_rcar,
@@ -2263,7 +2399,7 @@ static const struct ravb_hw_info ravb_gen2_hw_info = {
 	.rx_ring_free = ravb_rx_ring_free_rcar,
 	.rx_ring_format = ravb_rx_ring_format_rcar,
 	.alloc_rx_desc = ravb_alloc_rx_desc_rcar,
-	.receive = ravb_rcar_rx,
+	.receive = ravb_rx_rcar,
 	.set_rate = ravb_set_rate_rcar,
 	.set_feature = ravb_set_features_rcar,
 	.dmac_init = ravb_dmac_init_rcar,
-- 
2.17.1


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

* [PATCH net-next v2 07/14] ravb: Add carrier_counters to struct ravb_hw_info
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
                   ` (5 preceding siblings ...)
  2021-10-10  7:29 ` [PATCH net-next v2 06/14] ravb: Fillup ravb_rx_gbeth() stub Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 08/14] ravb: Add support to retrieve stats for GbEthernet Biju Das
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov,
	Adam Ford, Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda,
	netdev, linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

RZ/G2L E-MAC supports carrier counters.
Add a carrier_counter hw feature bit to struct ravb_hw_info
to add this feature only for RZ/G2L.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
V1->V2:
 * No change
RFC->V1:
 * Moved carrier_counters near to tx_counters.
 * removed CXR55 and CXR56 registers as it is rx related registers.
 * Retained Sergey's Rb tag as it is trivial change.
RFC changes:
 * Added Sergey's Rb tag.
---
 drivers/net/ethernet/renesas/ravb.h      | 3 +++
 drivers/net/ethernet/renesas/ravb_main.c | 8 ++++++++
 2 files changed, 11 insertions(+)

diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h
index 99164318db26..527e865dee81 100644
--- a/drivers/net/ethernet/renesas/ravb.h
+++ b/drivers/net/ethernet/renesas/ravb.h
@@ -196,6 +196,8 @@ enum ravb_reg {
 	MAHR	= 0x05c0,
 	MALR	= 0x05c8,
 	TROCR	= 0x0700,	/* R-Car Gen3 and RZ/G2L only */
+	CXR41	= 0x0708,	/* RZ/G2L only */
+	CXR42	= 0x0710,	/* RZ/G2L only */
 	CEFCR	= 0x0740,
 	FRECR	= 0x0748,
 	TSFRCR	= 0x0750,
@@ -1017,6 +1019,7 @@ struct ravb_hw_info {
 	/* hardware features */
 	unsigned internal_delay:1;	/* AVB-DMAC has internal delays */
 	unsigned tx_counters:1;		/* E-MAC has TX counters */
+	unsigned carrier_counters:1;	/* E-MAC has carrier counters */
 	unsigned multi_irqs:1;		/* AVB-DMAC and E-MAC has multiple irqs */
 	unsigned gptp:1;		/* AVB-DMAC has gPTP support */
 	unsigned ccc_gac:1;		/* AVB-DMAC has gPTP support active in config mode */
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index e93c676d8f57..eefff19d1739 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -2053,6 +2053,13 @@ static struct net_device_stats *ravb_get_stats(struct net_device *ndev)
 		ravb_write(ndev, 0, TROCR);	/* (write clear) */
 	}
 
+	if (info->carrier_counters) {
+		nstats->collisions += ravb_read(ndev, CXR41);
+		ravb_write(ndev, 0, CXR41);	/* (write clear) */
+		nstats->tx_carrier_errors += ravb_read(ndev, CXR42);
+		ravb_write(ndev, 0, CXR42);	/* (write clear) */
+	}
+
 	nstats->rx_packets = stats0->rx_packets;
 	nstats->tx_packets = stats0->tx_packets;
 	nstats->rx_bytes = stats0->rx_bytes;
@@ -2432,6 +2439,7 @@ static const struct ravb_hw_info gbeth_hw_info = {
 	.rx_max_buf_size = SZ_8K,
 	.aligned_tx = 1,
 	.tx_counters = 1,
+	.carrier_counters = 1,
 	.half_duplex = 1,
 };
 
-- 
2.17.1


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

* [PATCH net-next v2 08/14] ravb: Add support to retrieve stats for GbEthernet
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
                   ` (6 preceding siblings ...)
  2021-10-10  7:29 ` [PATCH net-next v2 07/14] ravb: Add carrier_counters to struct ravb_hw_info Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 09/14] ravb: Rename "tsrq" variable Biju Das
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov,
	Adam Ford, Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda,
	netdev, linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Add support for retrieving stats information for GbEthernet.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
V1->V2:
 * No change
RFC->v1:
 * No change. Added Sergey's Rb tag.
RFC changes:
 * New patch.
---
 drivers/net/ethernet/renesas/ravb_main.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index eefff19d1739..2f194a7bc367 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -1493,6 +1493,24 @@ static void ravb_set_msglevel(struct net_device *ndev, u32 value)
 	priv->msg_enable = value;
 }
 
+static const char ravb_gstrings_stats_gbeth[][ETH_GSTRING_LEN] = {
+	"rx_queue_0_current",
+	"tx_queue_0_current",
+	"rx_queue_0_dirty",
+	"tx_queue_0_dirty",
+	"rx_queue_0_packets",
+	"tx_queue_0_packets",
+	"rx_queue_0_bytes",
+	"tx_queue_0_bytes",
+	"rx_queue_0_mcast_packets",
+	"rx_queue_0_errors",
+	"rx_queue_0_crc_errors",
+	"rx_queue_0_frame_errors",
+	"rx_queue_0_length_errors",
+	"rx_queue_0_csum_offload_errors",
+	"rx_queue_0_over_errors",
+};
+
 static const char ravb_gstrings_stats[][ETH_GSTRING_LEN] = {
 	"rx_queue_0_current",
 	"tx_queue_0_current",
@@ -2434,6 +2452,9 @@ static const struct ravb_hw_info gbeth_hw_info = {
 	.set_feature = ravb_set_features_gbeth,
 	.dmac_init = ravb_dmac_init_gbeth,
 	.emac_init = ravb_emac_init_gbeth,
+	.gstrings_stats = ravb_gstrings_stats_gbeth,
+	.gstrings_size = sizeof(ravb_gstrings_stats_gbeth),
+	.stats_len = ARRAY_SIZE(ravb_gstrings_stats_gbeth),
 	.max_rx_len = ALIGN(GBETH_RX_BUFF_MAX, RAVB_ALIGN),
 	.tsrq = TCCR_TSRQ0,
 	.rx_max_buf_size = SZ_8K,
-- 
2.17.1


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

* [PATCH net-next v2 09/14] ravb: Rename "tsrq" variable
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
                   ` (7 preceding siblings ...)
  2021-10-10  7:29 ` [PATCH net-next v2 08/14] ravb: Add support to retrieve stats for GbEthernet Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 10/14] ravb: Optimize ravb_emac_init_gbeth function Biju Das
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov,
	Adam Ford, Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda,
	netdev, linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Rename the variable "tsrq" with "tccr_mask" as we are passing
TCCR mask to the ravb_wait() function.

There is no functional change.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
V1->v2:
 * No change
RFC->v1:
 * No Change. Added Sergey's Rb tag.
RFC changes:
 * New patch.
---
 drivers/net/ethernet/renesas/ravb.h      | 2 +-
 drivers/net/ethernet/renesas/ravb_main.c | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h
index 527e865dee81..99d666a5fb49 100644
--- a/drivers/net/ethernet/renesas/ravb.h
+++ b/drivers/net/ethernet/renesas/ravb.h
@@ -1012,7 +1012,7 @@ struct ravb_hw_info {
 	netdev_features_t net_features;
 	int stats_len;
 	size_t max_rx_len;
-	u32 tsrq;
+	u32 tccr_mask;
 	u32 rx_max_buf_size;
 	unsigned aligned_tx: 1;
 
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 2f194a7bc367..eac3bbefff11 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -1021,7 +1021,7 @@ static int ravb_stop_dma(struct net_device *ndev)
 	int error;
 
 	/* Wait for stopping the hardware TX process */
-	error = ravb_wait(ndev, TCCR, info->tsrq, 0);
+	error = ravb_wait(ndev, TCCR, info->tccr_mask, 0);
 
 	if (error)
 		return error;
@@ -2410,7 +2410,7 @@ static const struct ravb_hw_info ravb_gen3_hw_info = {
 	.net_features = NETIF_F_RXCSUM,
 	.stats_len = ARRAY_SIZE(ravb_gstrings_stats),
 	.max_rx_len = RX_BUF_SZ + RAVB_ALIGN - 1,
-	.tsrq = TCCR_TSRQ0 | TCCR_TSRQ1 | TCCR_TSRQ2 | TCCR_TSRQ3,
+	.tccr_mask = TCCR_TSRQ0 | TCCR_TSRQ1 | TCCR_TSRQ2 | TCCR_TSRQ3,
 	.rx_max_buf_size = SZ_2K,
 	.internal_delay = 1,
 	.tx_counters = 1,
@@ -2435,7 +2435,7 @@ static const struct ravb_hw_info ravb_gen2_hw_info = {
 	.net_features = NETIF_F_RXCSUM,
 	.stats_len = ARRAY_SIZE(ravb_gstrings_stats),
 	.max_rx_len = RX_BUF_SZ + RAVB_ALIGN - 1,
-	.tsrq = TCCR_TSRQ0 | TCCR_TSRQ1 | TCCR_TSRQ2 | TCCR_TSRQ3,
+	.tccr_mask = TCCR_TSRQ0 | TCCR_TSRQ1 | TCCR_TSRQ2 | TCCR_TSRQ3,
 	.rx_max_buf_size = SZ_2K,
 	.aligned_tx = 1,
 	.gptp = 1,
@@ -2456,7 +2456,7 @@ static const struct ravb_hw_info gbeth_hw_info = {
 	.gstrings_size = sizeof(ravb_gstrings_stats_gbeth),
 	.stats_len = ARRAY_SIZE(ravb_gstrings_stats_gbeth),
 	.max_rx_len = ALIGN(GBETH_RX_BUFF_MAX, RAVB_ALIGN),
-	.tsrq = TCCR_TSRQ0,
+	.tccr_mask = TCCR_TSRQ0,
 	.rx_max_buf_size = SZ_8K,
 	.aligned_tx = 1,
 	.tx_counters = 1,
-- 
2.17.1


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

* [PATCH net-next v2 10/14] ravb: Optimize ravb_emac_init_gbeth function
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
                   ` (8 preceding siblings ...)
  2021-10-10  7:29 ` [PATCH net-next v2 09/14] ravb: Rename "tsrq" variable Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 11/14] ravb: Rename "nc_queue" feature bit Biju Das
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov,
	Adam Ford, Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda,
	netdev, linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Optimize CXR31 register initialization on ravb_emac_init_gbeth
function.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
v1->v2:
 * No change
RFC->V1:
 * No Change. Added Sergey's Rb tag.
RFC changes:
 * New patch.
---
 drivers/net/ethernet/renesas/ravb_main.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index eac3bbefff11..081d9b70f038 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -538,8 +538,7 @@ static void ravb_emac_init_gbeth(struct net_device *ndev)
 	/* E-MAC interrupt enable register */
 	ravb_write(ndev, ECSIPR_ICDIP, ECSIPR);
 
-	ravb_modify(ndev, CXR31, CXR31_SEL_LINK1, 0);
-	ravb_modify(ndev, CXR31, CXR31_SEL_LINK0, CXR31_SEL_LINK0);
+	ravb_modify(ndev, CXR31, CXR31_SEL_LINK0 | CXR31_SEL_LINK1, CXR31_SEL_LINK0);
 }
 
 static void ravb_emac_init_rcar(struct net_device *ndev)
-- 
2.17.1


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

* [PATCH net-next v2 11/14] ravb: Rename "nc_queue" feature bit
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
                   ` (9 preceding siblings ...)
  2021-10-10  7:29 ` [PATCH net-next v2 10/14] ravb: Optimize ravb_emac_init_gbeth function Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-11 15:38   ` Sergey Shtylyov
  2021-10-10  7:29 ` [PATCH net-next v2 12/14] ravb: Document PFRI register bit Biju Das
                   ` (2 subsequent siblings)
  13 siblings, 1 reply; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov,
	Adam Ford, Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda,
	netdev, linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Rename the feature bit "nc_queue" with "nc_queues" as AVB DMAC has
RX and TX NC queues.

There is no functional change.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
v1->v2:
 * No change
v1:
 * New patch.
---
 drivers/net/ethernet/renesas/ravb.h      |  2 +-
 drivers/net/ethernet/renesas/ravb_main.c | 36 ++++++++++++------------
 2 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h
index 99d666a5fb49..5d07732ef35a 100644
--- a/drivers/net/ethernet/renesas/ravb.h
+++ b/drivers/net/ethernet/renesas/ravb.h
@@ -1023,7 +1023,7 @@ struct ravb_hw_info {
 	unsigned multi_irqs:1;		/* AVB-DMAC and E-MAC has multiple irqs */
 	unsigned gptp:1;		/* AVB-DMAC has gPTP support */
 	unsigned ccc_gac:1;		/* AVB-DMAC has gPTP support active in config mode */
-	unsigned nc_queue:1;		/* AVB-DMAC has NC queue */
+	unsigned nc_queues:1;		/* AVB-DMAC has RX and TX NC queues */
 	unsigned magic_pkt:1;		/* E-MAC supports magic packet detection */
 	unsigned half_duplex:1;		/* E-MAC supports half duplex mode */
 };
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 081d9b70f038..9a770a05c017 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -1176,7 +1176,7 @@ static irqreturn_t ravb_interrupt(int irq, void *dev_id)
 			result = IRQ_HANDLED;
 
 		/* Network control and best effort queue RX/TX */
-		if (info->nc_queue) {
+		if (info->nc_queues) {
 			for (q = RAVB_NC; q >= RAVB_BE; q--) {
 				if (ravb_queue_interrupt(ndev, q))
 					result = IRQ_HANDLED;
@@ -1315,7 +1315,7 @@ static int ravb_poll(struct napi_struct *napi, int budget)
 
 	/* Receive error message handling */
 	priv->rx_over_errors =  priv->stats[RAVB_BE].rx_over_errors;
-	if (info->nc_queue)
+	if (info->nc_queues)
 		priv->rx_over_errors += priv->stats[RAVB_NC].rx_over_errors;
 	if (priv->rx_over_errors != ndev->stats.rx_over_errors)
 		ndev->stats.rx_over_errors = priv->rx_over_errors;
@@ -1566,7 +1566,7 @@ static void ravb_get_ethtool_stats(struct net_device *ndev,
 	int i = 0;
 	int q;
 
-	num_rx_q = info->nc_queue ? NUM_RX_QUEUE : 1;
+	num_rx_q = info->nc_queues ? NUM_RX_QUEUE : 1;
 	/* Device-specific stats */
 	for (q = RAVB_BE; q < num_rx_q; q++) {
 		struct net_device_stats *stats = &priv->stats[q];
@@ -1643,7 +1643,7 @@ static int ravb_set_ringparam(struct net_device *ndev,
 
 		/* Free all the skb's in the RX queue and the DMA buffers. */
 		ravb_ring_free(ndev, RAVB_BE);
-		if (info->nc_queue)
+		if (info->nc_queues)
 			ravb_ring_free(ndev, RAVB_NC);
 	}
 
@@ -1763,7 +1763,7 @@ static int ravb_open(struct net_device *ndev)
 	int error;
 
 	napi_enable(&priv->napi[RAVB_BE]);
-	if (info->nc_queue)
+	if (info->nc_queues)
 		napi_enable(&priv->napi[RAVB_NC]);
 
 	if (!info->multi_irqs) {
@@ -1838,7 +1838,7 @@ static int ravb_open(struct net_device *ndev)
 out_free_irq:
 	free_irq(ndev->irq, ndev);
 out_napi_off:
-	if (info->nc_queue)
+	if (info->nc_queues)
 		napi_disable(&priv->napi[RAVB_NC]);
 	napi_disable(&priv->napi[RAVB_BE]);
 	return error;
@@ -1888,7 +1888,7 @@ static void ravb_tx_timeout_work(struct work_struct *work)
 	}
 
 	ravb_ring_free(ndev, RAVB_BE);
-	if (info->nc_queue)
+	if (info->nc_queues)
 		ravb_ring_free(ndev, RAVB_NC);
 
 	/* Device init */
@@ -2088,7 +2088,7 @@ static struct net_device_stats *ravb_get_stats(struct net_device *ndev)
 	nstats->rx_length_errors = stats0->rx_length_errors;
 	nstats->rx_missed_errors = stats0->rx_missed_errors;
 	nstats->rx_over_errors = stats0->rx_over_errors;
-	if (info->nc_queue) {
+	if (info->nc_queues) {
 		stats1 = &priv->stats[RAVB_NC];
 
 		nstats->rx_packets += stats1->rx_packets;
@@ -2169,13 +2169,13 @@ static int ravb_close(struct net_device *ndev)
 	}
 	free_irq(ndev->irq, ndev);
 
-	if (info->nc_queue)
+	if (info->nc_queues)
 		napi_disable(&priv->napi[RAVB_NC]);
 	napi_disable(&priv->napi[RAVB_BE]);
 
 	/* Free all the skb's in the RX queue and the DMA buffers. */
 	ravb_ring_free(ndev, RAVB_BE);
-	if (info->nc_queue)
+	if (info->nc_queues)
 		ravb_ring_free(ndev, RAVB_NC);
 
 	return 0;
@@ -2415,7 +2415,7 @@ static const struct ravb_hw_info ravb_gen3_hw_info = {
 	.tx_counters = 1,
 	.multi_irqs = 1,
 	.ccc_gac = 1,
-	.nc_queue = 1,
+	.nc_queues = 1,
 	.magic_pkt = 1,
 };
 
@@ -2438,7 +2438,7 @@ static const struct ravb_hw_info ravb_gen2_hw_info = {
 	.rx_max_buf_size = SZ_2K,
 	.aligned_tx = 1,
 	.gptp = 1,
-	.nc_queue = 1,
+	.nc_queues = 1,
 	.magic_pkt = 1,
 };
 
@@ -2618,7 +2618,7 @@ static int ravb_probe(struct platform_device *pdev)
 	priv->pdev = pdev;
 	priv->num_tx_ring[RAVB_BE] = BE_TX_RING_SIZE;
 	priv->num_rx_ring[RAVB_BE] = BE_RX_RING_SIZE;
-	if (info->nc_queue) {
+	if (info->nc_queues) {
 		priv->num_tx_ring[RAVB_NC] = NC_TX_RING_SIZE;
 		priv->num_rx_ring[RAVB_NC] = NC_RX_RING_SIZE;
 	}
@@ -2754,7 +2754,7 @@ static int ravb_probe(struct platform_device *pdev)
 	}
 
 	netif_napi_add(ndev, &priv->napi[RAVB_BE], ravb_poll, 64);
-	if (info->nc_queue)
+	if (info->nc_queues)
 		netif_napi_add(ndev, &priv->napi[RAVB_NC], ravb_poll, 64);
 
 	/* Network device register */
@@ -2773,7 +2773,7 @@ static int ravb_probe(struct platform_device *pdev)
 	return 0;
 
 out_napi_del:
-	if (info->nc_queue)
+	if (info->nc_queues)
 		netif_napi_del(&priv->napi[RAVB_NC]);
 
 	netif_napi_del(&priv->napi[RAVB_BE]);
@@ -2814,7 +2814,7 @@ static int ravb_remove(struct platform_device *pdev)
 	ravb_write(ndev, CCC_OPC_RESET, CCC);
 	pm_runtime_put_sync(&pdev->dev);
 	unregister_netdev(ndev);
-	if (info->nc_queue)
+	if (info->nc_queues)
 		netif_napi_del(&priv->napi[RAVB_NC]);
 	netif_napi_del(&priv->napi[RAVB_BE]);
 	ravb_mdio_release(priv);
@@ -2838,7 +2838,7 @@ static int ravb_wol_setup(struct net_device *ndev)
 
 	/* Only allow ECI interrupts */
 	synchronize_irq(priv->emac_irq);
-	if (info->nc_queue)
+	if (info->nc_queues)
 		napi_disable(&priv->napi[RAVB_NC]);
 	napi_disable(&priv->napi[RAVB_BE]);
 	ravb_write(ndev, ECSIPR_MPDIP, ECSIPR);
@@ -2855,7 +2855,7 @@ static int ravb_wol_restore(struct net_device *ndev)
 	const struct ravb_hw_info *info = priv->info;
 	int ret;
 
-	if (info->nc_queue)
+	if (info->nc_queues)
 		napi_enable(&priv->napi[RAVB_NC]);
 	napi_enable(&priv->napi[RAVB_BE]);
 
-- 
2.17.1


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

* [PATCH net-next v2 12/14] ravb: Document PFRI register bit
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
                   ` (10 preceding siblings ...)
  2021-10-10  7:29 ` [PATCH net-next v2 11/14] ravb: Rename "nc_queue" feature bit Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-11 15:42   ` Sergey Shtylyov
  2021-10-10  7:29 ` [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment Biju Das
  2021-10-10  7:29 ` [PATCH net-next v2 14/14] ravb: Fix typo AVB->DMAC Biju Das
  13 siblings, 1 reply; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov,
	Adam Ford, Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda,
	netdev, linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Document PFRI register bit, as it is documented on R-Car Gen3 and
RZ/G2L hardware manuals.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
v1->v2:
 * No change
V1:
 * New patch.
---
 drivers/net/ethernet/renesas/ravb.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/renesas/ravb.h b/drivers/net/ethernet/renesas/ravb.h
index 5d07732ef35a..69a771526776 100644
--- a/drivers/net/ethernet/renesas/ravb.h
+++ b/drivers/net/ethernet/renesas/ravb.h
@@ -828,7 +828,7 @@ enum ECSR_BIT {
 	ECSR_MPD	= 0x00000002,
 	ECSR_LCHNG	= 0x00000004,
 	ECSR_PHYI	= 0x00000008,
-	ECSR_PFRI	= 0x00000010,
+	ECSR_PFRI	= 0x00000010,	/* Documented for R-Car Gen3 and RZ/G2L */
 };
 
 /* ECSIPR */
-- 
2.17.1


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

* [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
                   ` (11 preceding siblings ...)
  2021-10-10  7:29 ` [PATCH net-next v2 12/14] ravb: Document PFRI register bit Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-10  9:27   ` Sergei Shtylyov
  2021-10-10  7:29 ` [PATCH net-next v2 14/14] ravb: Fix typo AVB->DMAC Biju Das
  13 siblings, 1 reply; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov,
	Adam Ford, Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda,
	netdev, linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Update EMAC configuration mode comment from "PAUSE prohibition"
to "EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through;
Promiscuous".

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
v1->v2:
 * No change
V1:
 * New patch.
---
 drivers/net/ethernet/renesas/ravb_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 9a770a05c017..b78aca235c37 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -519,7 +519,7 @@ static void ravb_emac_init_gbeth(struct net_device *ndev)
 	/* Receive frame limit set register */
 	ravb_write(ndev, GBETH_RX_BUFF_MAX + ETH_FCS_LEN, RFLR);
 
-	/* PAUSE prohibition */
+	/* EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through; Promiscuous */
 	ravb_write(ndev, ECMR_ZPF | ((priv->duplex > 0) ? ECMR_DM : 0) |
 			 ECMR_TE | ECMR_RE | ECMR_RCPT |
 			 ECMR_TXF | ECMR_RXF | ECMR_PRM, ECMR);
-- 
2.17.1


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

* [PATCH net-next v2 14/14] ravb: Fix typo AVB->DMAC
  2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
                   ` (12 preceding siblings ...)
  2021-10-10  7:29 ` [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment Biju Das
@ 2021-10-10  7:29 ` Biju Das
  2021-10-11 15:44   ` Sergey Shtylyov
  13 siblings, 1 reply; 29+ messages in thread
From: Biju Das @ 2021-10-10  7:29 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski
  Cc: Biju Das, Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov,
	Adam Ford, Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda,
	netdev, linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Fix the typo AVB->DMAC in comment, as the code following the comment
is for DMAC on Gigabit Ethernet IP.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
---
v1->v2:
 * No change
v1:
 * New patch.
---
 drivers/net/ethernet/renesas/ravb_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index b78aca235c37..139d48746935 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -587,7 +587,7 @@ static int ravb_dmac_init_gbeth(struct net_device *ndev)
 	/* Descriptor format */
 	ravb_ring_format(ndev, RAVB_BE);
 
-	/* Set AVB RX */
+	/* Set DMAC RX */
 	ravb_write(ndev, 0x60000000, RCR);
 
 	/* Set Max Frame Length (RTC) */
-- 
2.17.1


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

* Re: [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment
  2021-10-10  7:29 ` [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment Biju Das
@ 2021-10-10  9:27   ` Sergei Shtylyov
  2021-10-10  9:37     ` Biju Das
  0 siblings, 1 reply; 29+ messages in thread
From: Sergei Shtylyov @ 2021-10-10  9:27 UTC (permalink / raw)
  To: Biju Das, David S. Miller, Jakub Kicinski
  Cc: Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov, Adam Ford,
	Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda, netdev,
	linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

On 10.10.2021 10:29, Biju Das wrote:

> Update EMAC configuration mode comment from "PAUSE prohibition"
> to "EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through;
> Promiscuous".
> 
> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
> ---
> v1->v2:
>   * No change
> V1:
>   * New patch.
> ---
>   drivers/net/ethernet/renesas/ravb_main.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
> index 9a770a05c017..b78aca235c37 100644
> --- a/drivers/net/ethernet/renesas/ravb_main.c
> +++ b/drivers/net/ethernet/renesas/ravb_main.c
> @@ -519,7 +519,7 @@ static void ravb_emac_init_gbeth(struct net_device *ndev)
>   	/* Receive frame limit set register */
>   	ravb_write(ndev, GBETH_RX_BUFF_MAX + ETH_FCS_LEN, RFLR);
>   
> -	/* PAUSE prohibition */
> +	/* EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through; Promiscuous */

    Promiscuous mode, really? Why?!

>   	ravb_write(ndev, ECMR_ZPF | ((priv->duplex > 0) ? ECMR_DM : 0) |
>   			 ECMR_TE | ECMR_RE | ECMR_RCPT |
>   			 ECMR_TXF | ECMR_RXF | ECMR_PRM, ECMR);

MBR, Sergey

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

* RE: [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment
  2021-10-10  9:27   ` Sergei Shtylyov
@ 2021-10-10  9:37     ` Biju Das
  2021-10-10  9:49       ` Sergei Shtylyov
  0 siblings, 1 reply; 29+ messages in thread
From: Biju Das @ 2021-10-10  9:37 UTC (permalink / raw)
  To: Sergei Shtylyov, David S. Miller, Jakub Kicinski
  Cc: Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov, Adam Ford,
	Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda, netdev,
	linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Hi Sergey,

> -----Original Message-----
> From: Sergei Shtylyov <sergei.shtylyov@gmail.com>
> Sent: 10 October 2021 10:28
> To: Biju Das <biju.das.jz@bp.renesas.com>; David S. Miller
> <davem@davemloft.net>; Jakub Kicinski <kuba@kernel.org>
> Cc: Sergey Shtylyov <s.shtylyov@omp.ru>; Geert Uytterhoeven
> <geert+renesas@glider.be>; Sergey Shtylyov <s.shtylyov@omprussia.ru>; Adam
> Ford <aford173@gmail.com>; Andrew Lunn <andrew@lunn.ch>; Yuusuke Ashizuka
> <ashiduka@fujitsu.com>; Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com>; netdev@vger.kernel.org; linux-renesas-
> soc@vger.kernel.org; Chris Paterson <Chris.Paterson2@renesas.com>; Biju
> Das <biju.das@bp.renesas.com>; Prabhakar Mahadev Lad <prabhakar.mahadev-
> lad.rj@bp.renesas.com>
> Subject: Re: [PATCH net-next v2 13/14] ravb: Update EMAC configuration
> mode comment
> 
> On 10.10.2021 10:29, Biju Das wrote:
> 
> > Update EMAC configuration mode comment from "PAUSE prohibition"
> > to "EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through;
> > Promiscuous".
> >
> > Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> > Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
> > ---
> > v1->v2:
> >   * No change
> > V1:
> >   * New patch.
> > ---
> >   drivers/net/ethernet/renesas/ravb_main.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ethernet/renesas/ravb_main.c
> > b/drivers/net/ethernet/renesas/ravb_main.c
> > index 9a770a05c017..b78aca235c37 100644
> > --- a/drivers/net/ethernet/renesas/ravb_main.c
> > +++ b/drivers/net/ethernet/renesas/ravb_main.c
> > @@ -519,7 +519,7 @@ static void ravb_emac_init_gbeth(struct net_device
> *ndev)
> >   	/* Receive frame limit set register */
> >   	ravb_write(ndev, GBETH_RX_BUFF_MAX + ETH_FCS_LEN, RFLR);
> >
> > -	/* PAUSE prohibition */
> > +	/* EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through;
> > +Promiscuous */
> 
>     Promiscuous mode, really? Why?!

This is TOE related and is recommendation from BSP/HW team. If you think it is wrong.
I can take this out. Please let me know. Currently the board is booting and everything works without issues.

The meaning of promiscuous in H/W manual as follows.

Promiscuous Mode
1: All the frames except for PAUSE frame are received. Self-addressed unicast,
different address unicast, multicast, and broadcast frames are all transferred to
TOE. PAUSE frame reception is controlled by PFR bit.
0: Self-addressed unicast, multicast, and broadcast frames are received, then
transferred to TOE.

Regards,
Biju

> 
> >   	ravb_write(ndev, ECMR_ZPF | ((priv->duplex > 0) ? ECMR_DM : 0) |
> >   			 ECMR_TE | ECMR_RE | ECMR_RCPT |
> >   			 ECMR_TXF | ECMR_RXF | ECMR_PRM, ECMR);
> 
> MBR, Sergey

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

* Re: [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment
  2021-10-10  9:37     ` Biju Das
@ 2021-10-10  9:49       ` Sergei Shtylyov
  2021-10-10 10:56         ` Biju Das
  0 siblings, 1 reply; 29+ messages in thread
From: Sergei Shtylyov @ 2021-10-10  9:49 UTC (permalink / raw)
  To: Biju Das, David S. Miller, Jakub Kicinski
  Cc: Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov, Adam Ford,
	Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda, netdev,
	linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

On 10.10.2021 12:37, Biju Das wrote:
> Hi Sergey,
> 
>> -----Original Message-----
>> From: Sergei Shtylyov <sergei.shtylyov@gmail.com>
>> Sent: 10 October 2021 10:28
>> To: Biju Das <biju.das.jz@bp.renesas.com>; David S. Miller
>> <davem@davemloft.net>; Jakub Kicinski <kuba@kernel.org>
>> Cc: Sergey Shtylyov <s.shtylyov@omp.ru>; Geert Uytterhoeven
>> <geert+renesas@glider.be>; Sergey Shtylyov <s.shtylyov@omprussia.ru>; Adam
>> Ford <aford173@gmail.com>; Andrew Lunn <andrew@lunn.ch>; Yuusuke Ashizuka
>> <ashiduka@fujitsu.com>; Yoshihiro Shimoda
>> <yoshihiro.shimoda.uh@renesas.com>; netdev@vger.kernel.org; linux-renesas-
>> soc@vger.kernel.org; Chris Paterson <Chris.Paterson2@renesas.com>; Biju
>> Das <biju.das@bp.renesas.com>; Prabhakar Mahadev Lad <prabhakar.mahadev-
>> lad.rj@bp.renesas.com>
>> Subject: Re: [PATCH net-next v2 13/14] ravb: Update EMAC configuration
>> mode comment
>>
>> On 10.10.2021 10:29, Biju Das wrote:
>>
>>> Update EMAC configuration mode comment from "PAUSE prohibition"
>>> to "EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through;
>>> Promiscuous".
>>>
>>> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
>>> Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
>>> ---
>>> v1->v2:
>>>    * No change
>>> V1:
>>>    * New patch.
>>> ---
>>>    drivers/net/ethernet/renesas/ravb_main.c | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/net/ethernet/renesas/ravb_main.c
>>> b/drivers/net/ethernet/renesas/ravb_main.c
>>> index 9a770a05c017..b78aca235c37 100644
>>> --- a/drivers/net/ethernet/renesas/ravb_main.c
>>> +++ b/drivers/net/ethernet/renesas/ravb_main.c
>>> @@ -519,7 +519,7 @@ static void ravb_emac_init_gbeth(struct net_device
>> *ndev)
>>>    	/* Receive frame limit set register */
>>>    	ravb_write(ndev, GBETH_RX_BUFF_MAX + ETH_FCS_LEN, RFLR);
>>>
>>> -	/* PAUSE prohibition */
>>> +	/* EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through;
>>> +Promiscuous */
>>
>>      Promiscuous mode, really? Why?!
> 
> This is TOE related 

    The promiscuous mode is supported by _all_ Ethernet controllers, I think.

> and is recommendation from BSP/HW team.

    On what grounds?

> If you think it is wrong.
> I can take this out. Please let me know. Currently the board is booting and everything works without issues.

    Please do take it out. It'll needlessly overload the controller when 
there's much traffic on the local network.

> The meaning of promiscuous in H/W manual as follows.

    I know what the promiscuous mode is. :-)
    It's needed by things like 'tcpdump' and normally shoild be off.

> Promiscuous Mode
> 1: All the frames except for PAUSE frame are received. Self-addressed unicast,
> different address unicast, multicast, and broadcast frames are all transferred to
> TOE. PAUSE frame reception is controlled by PFR bit.
> 0: Self-addressed unicast, multicast, and broadcast frames are received, then
> transferred to TOE.
> 
> Regards,
> Biju

MBR, Sergey

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

* RE: [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment
  2021-10-10  9:49       ` Sergei Shtylyov
@ 2021-10-10 10:56         ` Biju Das
  2021-10-10 11:29           ` Biju Das
                             ` (3 more replies)
  0 siblings, 4 replies; 29+ messages in thread
From: Biju Das @ 2021-10-10 10:56 UTC (permalink / raw)
  To: Sergei Shtylyov, David S. Miller, Jakub Kicinski
  Cc: Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov, Adam Ford,
	Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda, netdev,
	linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad



> -----Original Message-----
> From: Sergei Shtylyov <sergei.shtylyov@gmail.com>
> Sent: 10 October 2021 10:49
> To: Biju Das <biju.das.jz@bp.renesas.com>; David S. Miller
> <davem@davemloft.net>; Jakub Kicinski <kuba@kernel.org>
> Cc: Sergey Shtylyov <s.shtylyov@omp.ru>; Geert Uytterhoeven
> <geert+renesas@glider.be>; Sergey Shtylyov <s.shtylyov@omprussia.ru>; Adam
> Ford <aford173@gmail.com>; Andrew Lunn <andrew@lunn.ch>; Yuusuke Ashizuka
> <ashiduka@fujitsu.com>; Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com>; netdev@vger.kernel.org; linux-renesas-
> soc@vger.kernel.org; Chris Paterson <Chris.Paterson2@renesas.com>; Biju
> Das <biju.das@bp.renesas.com>; Prabhakar Mahadev Lad <prabhakar.mahadev-
> lad.rj@bp.renesas.com>
> Subject: Re: [PATCH net-next v2 13/14] ravb: Update EMAC configuration
> mode comment
> 
> On 10.10.2021 12:37, Biju Das wrote:
> > Hi Sergey,
> >
> >> -----Original Message-----
> >> From: Sergei Shtylyov <sergei.shtylyov@gmail.com>
> >> Sent: 10 October 2021 10:28
> >> To: Biju Das <biju.das.jz@bp.renesas.com>; David S. Miller
> >> <davem@davemloft.net>; Jakub Kicinski <kuba@kernel.org>
> >> Cc: Sergey Shtylyov <s.shtylyov@omp.ru>; Geert Uytterhoeven
> >> <geert+renesas@glider.be>; Sergey Shtylyov <s.shtylyov@omprussia.ru>;
> >> Adam Ford <aford173@gmail.com>; Andrew Lunn <andrew@lunn.ch>; Yuusuke
> >> Ashizuka <ashiduka@fujitsu.com>; Yoshihiro Shimoda
> >> <yoshihiro.shimoda.uh@renesas.com>; netdev@vger.kernel.org;
> >> linux-renesas- soc@vger.kernel.org; Chris Paterson
> >> <Chris.Paterson2@renesas.com>; Biju Das <biju.das@bp.renesas.com>;
> >> Prabhakar Mahadev Lad <prabhakar.mahadev- lad.rj@bp.renesas.com>
> >> Subject: Re: [PATCH net-next v2 13/14] ravb: Update EMAC
> >> configuration mode comment
> >>
> >> On 10.10.2021 10:29, Biju Das wrote:
> >>
> >>> Update EMAC configuration mode comment from "PAUSE prohibition"
> >>> to "EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through;
> >>> Promiscuous".
> >>>
> >>> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> >>> Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
> >>> ---
> >>> v1->v2:
> >>>    * No change
> >>> V1:
> >>>    * New patch.
> >>> ---
> >>>    drivers/net/ethernet/renesas/ravb_main.c | 2 +-
> >>>    1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/drivers/net/ethernet/renesas/ravb_main.c
> >>> b/drivers/net/ethernet/renesas/ravb_main.c
> >>> index 9a770a05c017..b78aca235c37 100644
> >>> --- a/drivers/net/ethernet/renesas/ravb_main.c
> >>> +++ b/drivers/net/ethernet/renesas/ravb_main.c
> >>> @@ -519,7 +519,7 @@ static void ravb_emac_init_gbeth(struct
> >>> net_device
> >> *ndev)
> >>>    	/* Receive frame limit set register */
> >>>    	ravb_write(ndev, GBETH_RX_BUFF_MAX + ETH_FCS_LEN, RFLR);
> >>>
> >>> -	/* PAUSE prohibition */
> >>> +	/* EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through;
> >>> +Promiscuous */
> >>
> >>      Promiscuous mode, really? Why?!
> >
> > This is TOE related,

I meant the context here is TOE register related. That is what I meant.

> 
>     The promiscuous mode is supported by _all_ Ethernet controllers, I
> think.
> 
> > and is recommendation from BSP team.
> 
>     On what grounds?

The reference implementation has this on. Any way it is good catch. 
I will turn it off and check.

by looking at the RJ LED's there is not much activity and packet statistics also show not much activity by default.

How can we check, it is overloading the controller? So that I can compare with and without this setting

> 
> > If you think it is wrong.
> > I can take this out. Please let me know. Currently the board is booting
> and everything works without issues.
> 
>     Please do take it out. It'll needlessly overload the controller when
> there's much traffic on the local network.


I can see much activity only on RJ45 LED's when I call tcpdump or by setting IP link set eth0 promisc on.
Otherwise there is no traffic at all.

Regards,
Biju

> 
> > The meaning of promiscuous in H/W manual as follows.
> 
>     I know what the promiscuous mode is. :-)
>     It's needed by things like 'tcpdump' and normally shoild be off.
> 
> > Promiscuous Mode
> > 1: All the frames except for PAUSE frame are received. Self-addressed
> > unicast, different address unicast, multicast, and broadcast frames
> > are all transferred to TOE. PAUSE frame reception is controlled by PFR
> bit.
> > 0: Self-addressed unicast, multicast, and broadcast frames are
> > received, then transferred to TOE.



> >
> > Regards,
> > Biju
> 
> MBR, Sergey

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

* RE: [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment
  2021-10-10 10:56         ` Biju Das
@ 2021-10-10 11:29           ` Biju Das
  2021-10-10 15:06           ` Andrew Lunn
                             ` (2 subsequent siblings)
  3 siblings, 0 replies; 29+ messages in thread
From: Biju Das @ 2021-10-10 11:29 UTC (permalink / raw)
  To: Biju Das, Sergei Shtylyov, David S. Miller, Jakub Kicinski
  Cc: Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov, Adam Ford,
	Andrew Lunn, Yuusuke Ashizuka, Yoshihiro Shimoda, netdev,
	linux-renesas-soc, Chris Paterson, Biju Das,
	Prabhakar Mahadev Lad

Hi Sergey,

Thanks for the suggestion.

> Subject: RE: [PATCH net-next v2 13/14] ravb: Update EMAC configuration
> mode comment
> 
> 
> 
> > -----Original Message-----
> > From: Sergei Shtylyov <sergei.shtylyov@gmail.com>
> > Sent: 10 October 2021 10:49
> > To: Biju Das <biju.das.jz@bp.renesas.com>; David S. Miller
> > <davem@davemloft.net>; Jakub Kicinski <kuba@kernel.org>
> > Cc: Sergey Shtylyov <s.shtylyov@omp.ru>; Geert Uytterhoeven
> > <geert+renesas@glider.be>; Sergey Shtylyov <s.shtylyov@omprussia.ru>;
> > Adam Ford <aford173@gmail.com>; Andrew Lunn <andrew@lunn.ch>; Yuusuke
> > Ashizuka <ashiduka@fujitsu.com>; Yoshihiro Shimoda
> > <yoshihiro.shimoda.uh@renesas.com>; netdev@vger.kernel.org;
> > linux-renesas- soc@vger.kernel.org; Chris Paterson
> > <Chris.Paterson2@renesas.com>; Biju Das <biju.das@bp.renesas.com>;
> > Prabhakar Mahadev Lad <prabhakar.mahadev- lad.rj@bp.renesas.com>
> > Subject: Re: [PATCH net-next v2 13/14] ravb: Update EMAC configuration
> > mode comment
> >
> > On 10.10.2021 12:37, Biju Das wrote:
> > > Hi Sergey,
> > >
> > >> -----Original Message-----
> > >> From: Sergei Shtylyov <sergei.shtylyov@gmail.com>
> > >> Sent: 10 October 2021 10:28
> > >> To: Biju Das <biju.das.jz@bp.renesas.com>; David S. Miller
> > >> <davem@davemloft.net>; Jakub Kicinski <kuba@kernel.org>
> > >> Cc: Sergey Shtylyov <s.shtylyov@omp.ru>; Geert Uytterhoeven
> > >> <geert+renesas@glider.be>; Sergey Shtylyov
> > >> <s.shtylyov@omprussia.ru>; Adam Ford <aford173@gmail.com>; Andrew
> > >> Lunn <andrew@lunn.ch>; Yuusuke Ashizuka <ashiduka@fujitsu.com>;
> > >> Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>;
> > >> netdev@vger.kernel.org;
> > >> linux-renesas- soc@vger.kernel.org; Chris Paterson
> > >> <Chris.Paterson2@renesas.com>; Biju Das <biju.das@bp.renesas.com>;
> > >> Prabhakar Mahadev Lad <prabhakar.mahadev- lad.rj@bp.renesas.com>
> > >> Subject: Re: [PATCH net-next v2 13/14] ravb: Update EMAC
> > >> configuration mode comment
> > >>
> > >> On 10.10.2021 10:29, Biju Das wrote:
> > >>
> > >>> Update EMAC configuration mode comment from "PAUSE prohibition"
> > >>> to "EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass
> > >>> Through; Promiscuous".
> > >>>
> > >>> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> > >>> Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
> > >>> ---
> > >>> v1->v2:
> > >>>    * No change
> > >>> V1:
> > >>>    * New patch.
> > >>> ---
> > >>>    drivers/net/ethernet/renesas/ravb_main.c | 2 +-
> > >>>    1 file changed, 1 insertion(+), 1 deletion(-)
> > >>>
> > >>> diff --git a/drivers/net/ethernet/renesas/ravb_main.c
> > >>> b/drivers/net/ethernet/renesas/ravb_main.c
> > >>> index 9a770a05c017..b78aca235c37 100644
> > >>> --- a/drivers/net/ethernet/renesas/ravb_main.c
> > >>> +++ b/drivers/net/ethernet/renesas/ravb_main.c
> > >>> @@ -519,7 +519,7 @@ static void ravb_emac_init_gbeth(struct
> > >>> net_device
> > >> *ndev)
> > >>>    	/* Receive frame limit set register */
> > >>>    	ravb_write(ndev, GBETH_RX_BUFF_MAX + ETH_FCS_LEN, RFLR);
> > >>>
> > >>> -	/* PAUSE prohibition */
> > >>> +	/* EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass
> > >>> +Through; Promiscuous */
> > >>
> > >>      Promiscuous mode, really? Why?!
> > >
> > > This is TOE related,
> 
> I meant the context here is TOE register related. That is what I meant.
> 
> >
> >     The promiscuous mode is supported by _all_ Ethernet controllers, I
> > think.
> >
> > > and is recommendation from BSP team.
> >
> >     On what grounds?
> 
> The reference implementation has this on. Any way it is good catch.
> I will turn it off and check.
> 
> by looking at the RJ LED's there is not much activity and packet
> statistics also show not much activity by default.
> 
> How can we check, it is overloading the controller? So that I can compare
> with and without this setting
> 
> >
> > > If you think it is wrong.
> > > I can take this out. Please let me know. Currently the board is
> > > booting
> > and everything works without issues.
> >
> >     Please do take it out. It'll needlessly overload the controller
> > when there's much traffic on the local network.

I have tested without this as well and I don't find any difference.
So I plan to take this out.

Do you have any idea how to check the "overloading the controller" with PRM bit ON/OFF 
to check the actual impact? Please let me know, so that I can compare the same.

Regards,
Biju

> 
> 
> I can see much activity only on RJ45 LED's when I call tcpdump or by
> setting IP link set eth0 promisc on.
> Otherwise there is no traffic at all.
> 
> Regards,
> Biju
> 
> >
> > > The meaning of promiscuous in H/W manual as follows.
> >
> >     I know what the promiscuous mode is. :-)
> >     It's needed by things like 'tcpdump' and normally shoild be off.
> >
> > > Promiscuous Mode
> > > 1: All the frames except for PAUSE frame are received.
> > > Self-addressed unicast, different address unicast, multicast, and
> > > broadcast frames are all transferred to TOE. PAUSE frame reception
> > > is controlled by PFR
> > bit.
> > > 0: Self-addressed unicast, multicast, and broadcast frames are
> > > received, then transferred to TOE.
> 
> 
> 
> > >
> > > Regards,
> > > Biju
> >
> > MBR, Sergey

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

* Re: [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment
  2021-10-10 10:56         ` Biju Das
  2021-10-10 11:29           ` Biju Das
@ 2021-10-10 15:06           ` Andrew Lunn
  2021-10-12 13:34             ` Biju Das
  2021-10-10 17:24           ` Sergey Shtylyov
       [not found]           ` <20211011072032.6948dbe0@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>
  3 siblings, 1 reply; 29+ messages in thread
From: Andrew Lunn @ 2021-10-10 15:06 UTC (permalink / raw)
  To: Biju Das
  Cc: Sergei Shtylyov, David S. Miller, Jakub Kicinski,
	Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov, Adam Ford,
	Yuusuke Ashizuka, Yoshihiro Shimoda, netdev, linux-renesas-soc,
	Chris Paterson, Biju Das, Prabhakar Mahadev Lad

> by looking at the RJ LED's there is not much activity and packet
> statistics also show not much activity by default.

> How can we check, it is overloading the controller? So that I can
> compare with and without this setting

What is you link peer? A switch? That will be doing some filtering, so
you probably don't see unicast traffic from other devices. So you need
to flood your link with traffic the switch does not filter. Try
multicast traffic for a group you are not a member off. You might need
to disable IGMP snooping on the switch.

Or use a traffic generator as a link peer and have it generate streams
with mixed sources and destinations.

     Andrew

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

* Re: [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment
  2021-10-10 10:56         ` Biju Das
  2021-10-10 11:29           ` Biju Das
  2021-10-10 15:06           ` Andrew Lunn
@ 2021-10-10 17:24           ` Sergey Shtylyov
  2021-10-10 17:45             ` Sergei Shtylyov
       [not found]           ` <20211011072032.6948dbe0@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>
  3 siblings, 1 reply; 29+ messages in thread
From: Sergey Shtylyov @ 2021-10-10 17:24 UTC (permalink / raw)
  To: Biju Das, Sergei Shtylyov, David S. Miller, Jakub Kicinski
  Cc: Geert Uytterhoeven, Sergey Shtylyov, Adam Ford, Andrew Lunn,
	Yuusuke Ashizuka, Yoshihiro Shimoda, netdev, linux-renesas-soc,
	Chris Paterson, Biju Das, Prabhakar Mahadev Lad

On 10/10/21 1:56 PM, Biju Das wrote:

[...]
>>>>> Update EMAC configuration mode comment from "PAUSE prohibition"
>>>>> to "EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through;
>>>>> Promiscuous".
>>>>>
>>>>> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
>>>>> Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
>>>>> ---
>>>>> v1->v2:
>>>>>    * No change
>>>>> V1:
>>>>>    * New patch.
>>>>> ---
>>>>>    drivers/net/ethernet/renesas/ravb_main.c | 2 +-
>>>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/net/ethernet/renesas/ravb_main.c
>>>>> b/drivers/net/ethernet/renesas/ravb_main.c
>>>>> index 9a770a05c017..b78aca235c37 100644
>>>>> --- a/drivers/net/ethernet/renesas/ravb_main.c
>>>>> +++ b/drivers/net/ethernet/renesas/ravb_main.c
>>>>> @@ -519,7 +519,7 @@ static void ravb_emac_init_gbeth(struct
>>>>> net_device
>>>> *ndev)
>>>>>    	/* Receive frame limit set register */
>>>>>    	ravb_write(ndev, GBETH_RX_BUFF_MAX + ETH_FCS_LEN, RFLR);
>>>>>
>>>>> -	/* PAUSE prohibition */
>>>>> +	/* EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through;
>>>>> +Promiscuous */
>>>>
>>>>      Promiscuous mode, really? Why?!
>>>
>>> This is TOE related,
> 
> I meant the context here is TOE register related. That is what I meant.
> 
>>
>>     The promiscuous mode is supported by _all_ Ethernet controllers, I
>> think.
>>
>>> and is recommendation from BSP team.
>>
>>     On what grounds?
> 
> The reference implementation has this on. Any way it is good catch. 
> I will turn it off and check.
> 
> by looking at the RJ LED's there is not much activity and packet statistics also show not much activity by default.
> 
> How can we check, it is overloading the controller? So that I can compare with and without this setting

   Maybe it doesn't get overloaded that simply, but definitely the promiscuous mode is not the thing
for the normal driver use...

>>> If you think it is wrong.
>>> I can take this out. Please let me know. Currently the board is booting
>> and everything works without issues.
>>
>>     Please do take it out. It'll needlessly overload the controller when
>> there's much traffic on the local network.
> 
> 
> I can see much activity only on RJ45 LED's when I call tcpdump or by setting IP link set eth0 promisc on.
> Otherwise there is no traffic at all.

   Sounds like the kernel initially sets the RX mode with IFF_PROMISC = 0 and thus clear ECMR.PRM but I don't
see where it does this? Could you instrument ravb_set_tx_mode() plz?

> Regards,
> Biju

[...]

MBR, Sergey

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

* Re: [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment
  2021-10-10 17:24           ` Sergey Shtylyov
@ 2021-10-10 17:45             ` Sergei Shtylyov
  0 siblings, 0 replies; 29+ messages in thread
From: Sergei Shtylyov @ 2021-10-10 17:45 UTC (permalink / raw)
  To: Sergey Shtylyov, Biju Das, David S. Miller, Jakub Kicinski
  Cc: Geert Uytterhoeven, Sergey Shtylyov, Adam Ford, Andrew Lunn,
	Yuusuke Ashizuka, Yoshihiro Shimoda, netdev, linux-renesas-soc,
	Chris Paterson, Biju Das, Prabhakar Mahadev Lad

On 10/10/21 8:24 PM, Sergey Shtylyov wrote:

[...]
>>>>>> Update EMAC configuration mode comment from "PAUSE prohibition"
>>>>>> to "EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through;
>>>>>> Promiscuous".
>>>>>>
>>>>>> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
>>>>>> Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>
>>>>>> ---
>>>>>> v1->v2:
>>>>>>    * No change
>>>>>> V1:
>>>>>>    * New patch.
>>>>>> ---
>>>>>>    drivers/net/ethernet/renesas/ravb_main.c | 2 +-
>>>>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/drivers/net/ethernet/renesas/ravb_main.c
>>>>>> b/drivers/net/ethernet/renesas/ravb_main.c
>>>>>> index 9a770a05c017..b78aca235c37 100644
>>>>>> --- a/drivers/net/ethernet/renesas/ravb_main.c
>>>>>> +++ b/drivers/net/ethernet/renesas/ravb_main.c
>>>>>> @@ -519,7 +519,7 @@ static void ravb_emac_init_gbeth(struct
>>>>>> net_device
>>>>> *ndev)
>>>>>>    	/* Receive frame limit set register */
>>>>>>    	ravb_write(ndev, GBETH_RX_BUFF_MAX + ETH_FCS_LEN, RFLR);
>>>>>>
>>>>>> -	/* PAUSE prohibition */
>>>>>> +	/* EMAC Mode: PAUSE prohibition; Duplex; TX; RX; CRC Pass Through;
>>>>>> +Promiscuous */
>>>>>
>>>>>      Promiscuous mode, really? Why?!
>>>>
>>>> This is TOE related,
>>
>> I meant the context here is TOE register related. That is what I meant.
>>
>>>
>>>     The promiscuous mode is supported by _all_ Ethernet controllers, I
>>> think.
>>>
>>>> and is recommendation from BSP team.
>>>
>>>     On what grounds?
>>
>> The reference implementation has this on. Any way it is good catch. 
>> I will turn it off and check.
>>
>> by looking at the RJ LED's there is not much activity and packet statistics also show not much activity by default.
>>
>> How can we check, it is overloading the controller? So that I can compare with and without this setting
> 
>    Maybe it doesn't get overloaded that simply, but definitely the promiscuous mode is not the thing
> for the normal driver use...
> 
>>>> If you think it is wrong.
>>>> I can take this out. Please let me know. Currently the board is booting
>>> and everything works without issues.
>>>
>>>     Please do take it out. It'll needlessly overload the controller when
>>> there's much traffic on the local network.
>>
>>
>> I can see much activity only on RJ45 LED's when I call tcpdump or by setting IP link set eth0 promisc on.
>> Otherwise there is no traffic at all.
> 
>    Sounds like the kernel initially sets the RX mode with IFF_PROMISC = 0 and thus clear ECMR.PRM but I don't
> see where it does this? Could you instrument ravb_set_tx_mode() plz?

   Sorry, ravb_set_rx_mode(), of/c. :-)

>> Regards,
>> Biju
> 
> [...]

MBR, Sergey

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

* Re: [PATCH net-next v2 06/14] ravb: Fillup ravb_rx_gbeth() stub
  2021-10-10  7:29 ` [PATCH net-next v2 06/14] ravb: Fillup ravb_rx_gbeth() stub Biju Das
@ 2021-10-11 12:34   ` Sergey Shtylyov
  0 siblings, 0 replies; 29+ messages in thread
From: Sergey Shtylyov @ 2021-10-11 12:34 UTC (permalink / raw)
  To: Biju Das, David S. Miller, Jakub Kicinski
  Cc: Geert Uytterhoeven, Sergey Shtylyov, Adam Ford, Andrew Lunn,
	Yuusuke Ashizuka, Yoshihiro Shimoda, netdev, linux-renesas-soc,
	Chris Paterson, Biju Das, Prabhakar Mahadev Lad

On 10/10/21 10:29 AM, Biju Das wrote:

> Fillup ravb_rx_gbeth() function to support RZ/G2L.
> 
> This patch also renames ravb_rcar_rx to ravb_rx_rcar to be
> consistent with the naming convention used in sh_eth driver.
> 
> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>

[...]

MBR, Sergey

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

* Re: [PATCH net-next v2 11/14] ravb: Rename "nc_queue" feature bit
  2021-10-10  7:29 ` [PATCH net-next v2 11/14] ravb: Rename "nc_queue" feature bit Biju Das
@ 2021-10-11 15:38   ` Sergey Shtylyov
  0 siblings, 0 replies; 29+ messages in thread
From: Sergey Shtylyov @ 2021-10-11 15:38 UTC (permalink / raw)
  To: Biju Das, David S. Miller, Jakub Kicinski
  Cc: Geert Uytterhoeven, Sergey Shtylyov, Adam Ford, Andrew Lunn,
	Yuusuke Ashizuka, Yoshihiro Shimoda, netdev, linux-renesas-soc,
	Chris Paterson, Biju Das, Prabhakar Mahadev Lad

On 10/10/21 10:29 AM, Biju Das wrote:

> Rename the feature bit "nc_queue" with "nc_queues" as AVB DMAC has
> RX and TX NC queues.
> 
> There is no functional change.
> 
> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>

Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>

[...]

MBR, Sergey

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

* Re: [PATCH net-next v2 12/14] ravb: Document PFRI register bit
  2021-10-10  7:29 ` [PATCH net-next v2 12/14] ravb: Document PFRI register bit Biju Das
@ 2021-10-11 15:42   ` Sergey Shtylyov
  0 siblings, 0 replies; 29+ messages in thread
From: Sergey Shtylyov @ 2021-10-11 15:42 UTC (permalink / raw)
  To: Biju Das, David S. Miller, Jakub Kicinski
  Cc: Geert Uytterhoeven, Sergey Shtylyov, Adam Ford, Andrew Lunn,
	Yuusuke Ashizuka, Yoshihiro Shimoda, netdev, linux-renesas-soc,
	Chris Paterson, Biju Das, Prabhakar Mahadev Lad

On 10/10/21 10:29 AM, Biju Das wrote:

> Document PFRI register bit, as it is documented on R-Car Gen3 and
> RZ/G2L hardware manuals.
> 
> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>

Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>

[...]

MBR, Sergey

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

* Re: [PATCH net-next v2 14/14] ravb: Fix typo AVB->DMAC
  2021-10-10  7:29 ` [PATCH net-next v2 14/14] ravb: Fix typo AVB->DMAC Biju Das
@ 2021-10-11 15:44   ` Sergey Shtylyov
  0 siblings, 0 replies; 29+ messages in thread
From: Sergey Shtylyov @ 2021-10-11 15:44 UTC (permalink / raw)
  To: Biju Das, David S. Miller, Jakub Kicinski
  Cc: Geert Uytterhoeven, Sergey Shtylyov, Adam Ford, Andrew Lunn,
	Yuusuke Ashizuka, Yoshihiro Shimoda, netdev, linux-renesas-soc,
	Chris Paterson, Biju Das, Prabhakar Mahadev Lad

On 10/10/21 10:29 AM, Biju Das wrote:

> Fix the typo AVB->DMAC in comment, as the code following the comment
> is for DMAC on Gigabit Ethernet IP.
> 
> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> Suggested-by: Sergey Shtylyov <s.shtylyov@omp.ru>

Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>

[...]

MBR, Sergey

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

* RE: [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment
  2021-10-10 15:06           ` Andrew Lunn
@ 2021-10-12 13:34             ` Biju Das
  0 siblings, 0 replies; 29+ messages in thread
From: Biju Das @ 2021-10-12 13:34 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Sergei Shtylyov, David S. Miller, Jakub Kicinski,
	Sergey Shtylyov, Geert Uytterhoeven, Sergey Shtylyov, Adam Ford,
	Yuusuke Ashizuka, Yoshihiro Shimoda, netdev, linux-renesas-soc,
	Chris Paterson, Biju Das, Prabhakar Mahadev Lad

Hi Andrew,

Thanks for the feedback.

> Subject: Re: [PATCH net-next v2 13/14] ravb: Update EMAC configuration
> mode comment
> 
> > by looking at the RJ LED's there is not much activity and packet
> > statistics also show not much activity by default.
> 
> > How can we check, it is overloading the controller? So that I can
> > compare with and without this setting
> 
> What is you link peer? A switch? That will be doing some filtering, so you
> probably don't see unicast traffic from other devices. So you need to
> flood your link with traffic the switch does not filter. Try multicast
> traffic for a group you are not a member off. You might need to disable
> IGMP snooping on the switch.
> 

I have tested in below environments
Setup 1: 
  Machine1: RZ/G2L platform connected to Ubuntu Guest VM(bridged),Host oS windows via SWITCH and
  Machine2: RZ/G2M platform connected to Ubuntu Guest VM(bridged),Host oS windows via SWITCH

Then ran multicast_sender app from machine 2 and ran tcpdump on machine 1.
using devmem, I have controlled on/off PRM bit.

In both cases, on tcpdump from machine 1, I see multicast packets which I am not a member off.

Setup2:-

  RZ/G2L platform directly connected to RZ/G2M platform. 

Ran UDP unicast sockets to send data from RZ/G2M platform

ran tcpdump from from RZ/G2L platform

using devmem, I am controlling on/off PRM bit.

But for different addressed packet, I see RZ/G2L platfrom is trying to do ARP request for
different address. So packets are handled, with and without PRM bit set.

Regards,
Biju

> Or use a traffic generator as a link peer and have it generate streams
> with mixed sources and destinations.



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

* RE: [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment
       [not found]           ` <20211011072032.6948dbe0@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>
@ 2021-10-12 13:39             ` Biju Das
  0 siblings, 0 replies; 29+ messages in thread
From: Biju Das @ 2021-10-12 13:39 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: Sergei Shtylyov, David S. Miller, Sergey Shtylyov,
	Geert Uytterhoeven, Sergey Shtylyov, Adam Ford, Andrew Lunn,
	Yuusuke Ashizuka, Yoshihiro Shimoda, netdev,
	linux-renesas-soc@vger.kernel.org>,
	Chris Paterson <Chris.Paterson2@renesas.com>,
	Biju Das <biju.das@bp.renesas.com>,
	Prabhakar Mahadev Lad
	<prabhakar.mahadev-lad.rj@bp.renesas.com

Hi Jakub Kicinski,

> Subject: Re: [PATCH net-next v2 13/14] ravb: Update EMAC configuration
> mode comment
> 
> On Sun, 10 Oct 2021 10:56:32 +0000 Biju Das wrote:
> > > > This is TOE related,
> >
> > I meant the context here is TOE register related. That is what I meant.
> 
> Did you test TCP packets with bad checksums? The description you posted
> earlier could indicate this is about dropping such packets, not about
> address filtering?

I have made changes similar to R-Car for HW Checksum on RX and passed wrong checksum(0x0000 or 0xffff) and it crashed the system.

Regards,
Biju

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

end of thread, other threads:[~2021-10-12 13:39 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-10  7:29 [PATCH net-next v2 00/14] Add functional support for Gigabit Ethernet driver Biju Das
2021-10-10  7:29 ` [PATCH net-next v2 01/14] ravb: Use ALIGN macro for max_rx_len Biju Das
2021-10-10  7:29 ` [PATCH net-next v2 02/14] ravb: Add rx_max_buf_size to struct ravb_hw_info Biju Das
2021-10-10  7:29 ` [PATCH net-next v2 03/14] ravb: Fillup ravb_alloc_rx_desc_gbeth() stub Biju Das
2021-10-10  7:29 ` [PATCH net-next v2 04/14] ravb: Fillup ravb_rx_ring_free_gbeth() stub Biju Das
2021-10-10  7:29 ` [PATCH net-next v2 05/14] ravb: Fillup ravb_rx_ring_format_gbeth() stub Biju Das
2021-10-10  7:29 ` [PATCH net-next v2 06/14] ravb: Fillup ravb_rx_gbeth() stub Biju Das
2021-10-11 12:34   ` Sergey Shtylyov
2021-10-10  7:29 ` [PATCH net-next v2 07/14] ravb: Add carrier_counters to struct ravb_hw_info Biju Das
2021-10-10  7:29 ` [PATCH net-next v2 08/14] ravb: Add support to retrieve stats for GbEthernet Biju Das
2021-10-10  7:29 ` [PATCH net-next v2 09/14] ravb: Rename "tsrq" variable Biju Das
2021-10-10  7:29 ` [PATCH net-next v2 10/14] ravb: Optimize ravb_emac_init_gbeth function Biju Das
2021-10-10  7:29 ` [PATCH net-next v2 11/14] ravb: Rename "nc_queue" feature bit Biju Das
2021-10-11 15:38   ` Sergey Shtylyov
2021-10-10  7:29 ` [PATCH net-next v2 12/14] ravb: Document PFRI register bit Biju Das
2021-10-11 15:42   ` Sergey Shtylyov
2021-10-10  7:29 ` [PATCH net-next v2 13/14] ravb: Update EMAC configuration mode comment Biju Das
2021-10-10  9:27   ` Sergei Shtylyov
2021-10-10  9:37     ` Biju Das
2021-10-10  9:49       ` Sergei Shtylyov
2021-10-10 10:56         ` Biju Das
2021-10-10 11:29           ` Biju Das
2021-10-10 15:06           ` Andrew Lunn
2021-10-12 13:34             ` Biju Das
2021-10-10 17:24           ` Sergey Shtylyov
2021-10-10 17:45             ` Sergei Shtylyov
     [not found]           ` <20211011072032.6948dbe0@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>
2021-10-12 13:39             ` Biju Das
2021-10-10  7:29 ` [PATCH net-next v2 14/14] ravb: Fix typo AVB->DMAC Biju Das
2021-10-11 15:44   ` Sergey Shtylyov

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.