From: Biju Das <biju.das.jz@bp.renesas.com> Date: 2021-08-18 19:08:21
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.
Currently a runtime decision based on the chip type is used to distinguish
the HW differences between the SoC families.
This patch series is in preparation for supporting the RZ/G2L SoC by
replacing driver data chip type with struct ravb_hw_info by moving chip
type to it and also adding gstrings_stats, gstrings_size, net_hw_features,
net_features, aligned_tx, stats_len, max_rx_len variables to
it. This patch also adds the feature bit for {RX, TX} clock internal
delays and TX counters HW features found on R-Car Gen3 to struct
ravb_hw_info.
This patch series is based on net-next.
v2->v3:
* Removed num_gstat_queue variable from struct ravb_hw_info.
* started using unsigned int for num_tx_desc variable in struct ravb_private
* split the patch 'Add struct ravb_hw_info to driver data' into two
* Renamed skb_sz to max_rx_len and tx_drop_cntrs to tx_counters
and also updated the comments.
v1->v2:
* Replaced driver data chip type with struct ravb_hw_info
* Added gstrings_stats, gstrings_size, net_hw_features, net_features,
num_gstat_queue, num_tx_desc, stats_len, skb_sz to struct ravb_hw_info
* Added internal_delay and tx_drop_cntrs hw feature bit to struct ravb_hw_info
RFC->V1
* Incorporated feedback from Andrew, Sergei, Geert and Prabhakar
* https://patchwork.kernel.org/project/linux-renesas-soc/list/?series=515525
Biju Das (9):
ravb: Use unsigned int for num_tx_desc variable in struct ravb_private
ravb: Add struct ravb_hw_info to driver data
ravb: Add aligned_tx to struct ravb_hw_info
ravb: Add max_rx_len to struct ravb_hw_info
ravb: Add stats_len to struct ravb_hw_info
ravb: Add gstrings_stats and gstrings_size to struct ravb_hw_info
ravb: Add net_features and net_hw_features to struct ravb_hw_info
ravb: Add internal delay hw feature to struct ravb_hw_info
ravb: Add tx_counters to struct ravb_hw_info
drivers/net/ethernet/renesas/ravb.h | 19 +++-
drivers/net/ethernet/renesas/ravb_main.c | 112 ++++++++++++++---------
2 files changed, 89 insertions(+), 42 deletions(-)
--
2.17.1
From: Biju Das <biju.das.jz@bp.renesas.com> Date: 2021-08-18 19:08:22
The number of TX descriptors per packet is an unsigned value and
the variable for holding this information should be unsigned.
This patch replaces the data type of num_tx_desc variable in struct
ravb_private from 'int' to 'unsigned int'.
This patch also updates the data type of local variables to unsigned int,
where the local variables are evaluated using num_tx_desc.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v3:- new patch
ref:- https://patchwork.kernel.org/project/linux-renesas-soc/patch/20210802102654.5996-2-biju.das.jz@bp.renesas.com/
---
drivers/net/ethernet/renesas/ravb.h | 2 +-
drivers/net/ethernet/renesas/ravb_main.c | 28 ++++++++++++------------
2 files changed, 15 insertions(+), 15 deletions(-)
@@ -177,10 +177,10 @@ static int ravb_tx_free(struct net_device *ndev, int q, bool free_txed_only){structravb_private*priv=netdev_priv(ndev);structnet_device_stats*stats=&priv->stats[q];-intnum_tx_desc=priv->num_tx_desc;+unsignedintnum_tx_desc=priv->num_tx_desc;structravb_tx_desc*desc;+unsignedintentry;intfree_num=0;-intentry;u32size;for(;priv->cur_tx[q]-priv->dirty_tx[q]>0;priv->dirty_tx[q]++){
@@ -220,9 +220,9 @@ static int ravb_tx_free(struct net_device *ndev, int q, bool free_txed_only)staticvoidravb_ring_free(structnet_device*ndev,intq){structravb_private*priv=netdev_priv(ndev);-intnum_tx_desc=priv->num_tx_desc;-intring_size;-inti;+unsignedintnum_tx_desc=priv->num_tx_desc;+unsignedintring_size;+unsignedinti;if(priv->rx_ring[q]){for(i=0;i<priv->num_rx_ring[q];i++){
From: Biju Das <biju.das.jz@bp.renesas.com> Date: 2021-08-18 19:08:39
R-Car Gen2 needs a 4byte aligned address for the transmission buffer,
whereas R-Car Gen3 doesn't have any such restriction.
Add aligned_tx to struct ravb_hw_info to select the driver to choose
between aligned and unaligned tx buffers.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v3:
* New patch
---
drivers/net/ethernet/renesas/ravb.h | 1 +
drivers/net/ethernet/renesas/ravb_main.c | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
@@ -2140,7 +2141,7 @@ static int ravb_probe(struct platform_device *pdev)ndev->max_mtu=2048-(ETH_HLEN+VLAN_HLEN+ETH_FCS_LEN);ndev->min_mtu=ETH_MIN_MTU;-priv->num_tx_desc=info->chip_id==RCAR_GEN2?+priv->num_tx_desc=info->aligned_tx?NUM_TX_DESC_GEN2:NUM_TX_DESC_GEN3;/* Set function */
From: Biju Das <biju.das.jz@bp.renesas.com> Date: 2021-08-18 19:08:40
The DMAC and EMAC blocks of Gigabit Ethernet IP found on RZ/G2L SoC are
similar to the R-Car Ethernet AVB IP. With a few changes in the driver we
can support both IPs.
This patch adds the struct ravb_hw_info to hold hw features, driver data
and function pointers to support both the IPs. It also replaces the driver
data chip type with struct ravb_hw_info by moving chip type to it.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
v2->v3:
* Retained Rb tag from Andrew, since there is no functionality change
apart from just splitting the patch into 2. Also updated the commit
description.
v2:
* Incorporated Andrew and Sergei's review comments for making it smaller patch
and provided detailed description.
---
drivers/net/ethernet/renesas/ravb.h | 6 ++++
drivers/net/ethernet/renesas/ravb_main.c | 35 +++++++++++++++---------
2 files changed, 28 insertions(+), 13 deletions(-)
@@ -2047,9 +2055,9 @@ static int ravb_probe(struct platform_device *pdev)pm_runtime_enable(&pdev->dev);pm_runtime_get_sync(&pdev->dev);-chip_id=(enumravb_chip_id)of_device_get_match_data(&pdev->dev);+info=of_device_get_match_data(&pdev->dev);-if(chip_id==RCAR_GEN3)+if(info->chip_id==RCAR_GEN3)irq=platform_get_irq_byname(pdev,"ch22");elseirq=platform_get_irq(pdev,0);
@@ -2062,6 +2070,7 @@ static int ravb_probe(struct platform_device *pdev)SET_NETDEV_DEV(ndev,&pdev->dev);priv=netdev_priv(ndev);+priv->info=info;priv->ndev=ndev;priv->pdev=pdev;priv->num_tx_ring[RAVB_BE]=BE_TX_RING_SIZE;
@@ -2088,7 +2097,7 @@ static int ravb_probe(struct platform_device *pdev)priv->avb_link_active_low=of_property_read_bool(np,"renesas,ether-link-active-low");-if(chip_id==RCAR_GEN3){+if(info->chip_id==RCAR_GEN3){irq=platform_get_irq_byname(pdev,"ch24");if(irq<0){error=irq;
@@ -2113,7 +2122,7 @@ static int ravb_probe(struct platform_device *pdev)}}-priv->chip_id=chip_id;+priv->chip_id=info->chip_id;priv->clk=devm_clk_get(&pdev->dev,NULL);if(IS_ERR(priv->clk)){
@@ -2131,7 +2140,7 @@ static int ravb_probe(struct platform_device *pdev)ndev->max_mtu=2048-(ETH_HLEN+VLAN_HLEN+ETH_FCS_LEN);ndev->min_mtu=ETH_MIN_MTU;-priv->num_tx_desc=chip_id==RCAR_GEN2?+priv->num_tx_desc=info->chip_id==RCAR_GEN2?NUM_TX_DESC_GEN2:NUM_TX_DESC_GEN3;/* Set function */
From: Biju Das <biju.das.jz@bp.renesas.com> Date: 2021-08-18 19:08:42
R-Car Gen3 supports TX and RX clock internal delay modes, whereas R-Car
Gen2 and RZ/G2L do not support it.
Add an internal_delay hw feature bit to struct ravb_hw_info to enable this
only for R-Car Gen3.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Sergei Shtylyov <redacted>
---
v2->v3:
* No change. Only comments updated
* Added Rb tag from Andrew and Sergei.
v2:
* Incorporated Andrew and Sergei's review comments for making it smaller patch
and provided detailed description.
---
drivers/net/ethernet/renesas/ravb.h | 3 +++
drivers/net/ethernet/renesas/ravb_main.c | 6 ++++--
2 files changed, 7 insertions(+), 2 deletions(-)
@@ -2348,6 +2349,7 @@ static int __maybe_unused ravb_resume(struct device *dev){structnet_device*ndev=dev_get_drvdata(dev);structravb_private*priv=netdev_priv(ndev);+conststructravb_hw_info*info=priv->info;intret=0;/* If WoL is enabled set reset mode to rearm the WoL logic */
@@ -2370,7 +2372,7 @@ static int __maybe_unused ravb_resume(struct device *dev)/* Request GTI loading */ravb_modify(ndev,GCCR,GCCR_LTI,GCCR_LTI);-if(priv->chip_id!=RCAR_GEN2)+if(info->internal_delay)ravb_set_delay_mode(ndev);/* Restore descriptor base address table */
From: Biju Das <biju.das.jz@bp.renesas.com> Date: 2021-08-18 19:08:45
The maximum descriptor size that can be specified on the reception side for
R-Car is 2048 bytes, whereas for RZ/G2L it is 8096.
Add the max_rx_len variable to struct ravb_hw_info for allocating different
RX skb buffer sizes for R-Car and RZ/G2L using the netdev_alloc_skb
function.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
v3:
* Retained Rb tag from Andrew, since the change is just renaming
the variable from skb_sz to max_rx_len.
v2:
* Incorporated Andrew and Sergei's review comments for making it smaller patch
and provided detailed description.
---
drivers/net/ethernet/renesas/ravb.h | 1 +
drivers/net/ethernet/renesas/ravb_main.c | 10 ++++++----
2 files changed, 7 insertions(+), 4 deletions(-)
From: Biju Das <biju.das.jz@bp.renesas.com> Date: 2021-08-18 19:08:47
The device stats strings for R-Car and RZ/G2L are different.
R-Car provides 30 device stats, whereas RZ/G2L provides only 15. In
addition, RZ/G2L has stats "rx_queue_0_csum_offload_errors" instead of
"rx_queue_0_missed_errors".
Add structure variables gstrings_stats and gstrings_size to struct
ravb_hw_info, so that subsequent SoCs can be added without any code
changes in the ravb_get_strings function.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Sergei Shtylyov <redacted>
---
v2->v3:
* No change
* Added Rb tag from Andrew and Sergei.
v2:
* Incorporated Andrew and Sergei's review comments for making it smaller patch
and provided detailed description.
---
drivers/net/ethernet/renesas/ravb.h | 2 ++
drivers/net/ethernet/renesas/ravb_main.c | 9 ++++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
From: Biju Das <biju.das.jz@bp.renesas.com> Date: 2021-08-18 19:08:50
On R-Car the checksum calculation on RX frames is done by the E-MAC
module, whereas on RZ/G2L it is done by the TOE.
TOE calculates the checksum of received frames from E-MAC and outputs it to
DMAC. TOE also calculates the checksum of transmission frames from DMAC and
outputs it E-MAC.
Add net_features and net_hw_features to struct ravb_hw_info, to support
subsequent SoCs without any code changes in the ravb_probe function.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Sergei Shtylyov <redacted>
---
v2->v3:
* No Change
* Added Rb tag from Andrew and Sergei.
v2:
* Incorporated Andrew and Sergei's review comments for making it smaller patch
and provided detailed description.
---
drivers/net/ethernet/renesas/ravb.h | 2 ++
drivers/net/ethernet/renesas/ravb_main.c | 12 ++++++++----
2 files changed, 10 insertions(+), 4 deletions(-)
From: Biju Das <biju.das.jz@bp.renesas.com> Date: 2021-08-18 19:08:51
R-Car provides 30 device stats, whereas RZ/G2L provides only 15. In
addition, RZ/G2L has stats "rx_queue_0_csum_offload_errors" instead of
"rx_queue_0_missed_errors".
Replace RAVB_STATS_LEN macro with a structure variable stats_len to
struct ravb_hw_info, to support subsequent SoCs without any code changes
to the ravb_get_sset_count function.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Sergei Shtylyov <redacted>
---
v2->v3:
* No change.Added Rb tag from Sergei.
v2:
* Incorporated Andrew and Sergei's review comments for making it smaller patch
and provided detailed description.
---
drivers/net/ethernet/renesas/ravb.h | 1 +
drivers/net/ethernet/renesas/ravb_main.c | 9 ++++++---
2 files changed, 7 insertions(+), 3 deletions(-)
From: Biju Das <biju.das.jz@bp.renesas.com> Date: 2021-08-18 19:08:53
The register for retrieving TX counters is present only on R-Car Gen3
and RZ/G2L; it is not present on R-Car Gen2.
Add the tx_counters hw feature bit to struct ravb_hw_info, to enable this
feature specifically for R-Car Gen3 now and later extend it to RZ/G2L.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
v2->v3:
* Retained Rb tag from Andrew, since change is just renaming the variable
and comment update.
v2:
* Incorporated Andrew and Sergei's review comments for making it smaller patch
and provided detailed description.
---
drivers/net/ethernet/renesas/ravb.h | 1 +
drivers/net/ethernet/renesas/ravb_main.c | 4 +++-
2 files changed, 4 insertions(+), 1 deletion(-)
Hello:
This series was applied to netdev/net-next.git (refs/heads/master):
On Wed, 18 Aug 2021 20:07:51 +0100 you wrote:
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).
[...]
On 8/19/21 2:10 PM, patchwork-bot+netdevbpf@kernel.org wrote:
[...]
This series was applied to netdev/net-next.git (refs/heads/master):
On Wed, 18 Aug 2021 20:07:51 +0100 you wrote:
quoted
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).
[...]
The number of TX descriptors per packet is an unsigned value and
the variable for holding this information should be unsigned.
This patch replaces the data type of num_tx_desc variable in struct
ravb_private from 'int' to 'unsigned int'.
This patch also updates the data type of local variables to unsigned int,
where the local variables are evaluated using num_tx_desc.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
From: Andrew Lunn <andrew@lunn.ch> Date: 2021-08-19 15:30:14
Are we in such a haste? I was just going to review these patches
today...
I guess the thinking is, fixup patches can always be applied after the
fact. But i agree, i really liked the 3 day wait time for patches to
be merged, it gave a reasonable amount of time for reviews, without
slowing down development work. The current 1 day or less does seem
counter productive, i expect there are less reviews happening as a
result, lower quality code, more bugs...
Andrew
From: Sergei Shtylyov <hidden> Date: 2021-08-19 15:42:01
On 8/18/21 10:07 PM, Biju Das wrote:
R-Car Gen2 needs a 4byte aligned address for the transmission buffer,
whereas R-Car Gen3 doesn't have any such restriction.
Add aligned_tx to struct ravb_hw_info to select the driver to choose
between aligned and unaligned tx buffers.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v3:
* New patch
(Resending from the proper email.)
On 8/18/21 10:07 PM, Biju Das wrote:
R-Car Gen2 needs a 4byte aligned address for the transmission buffer,
whereas R-Car Gen3 doesn't have any such restriction.
Add aligned_tx to struct ravb_hw_info to select the driver to choose
between aligned and unaligned tx buffers.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v3:
* New patch
The DMAC and EMAC blocks of Gigabit Ethernet IP found on RZ/G2L SoC are
similar to the R-Car Ethernet AVB IP. With a few changes in the driver we
can support both IPs.
This patch adds the struct ravb_hw_info to hold hw features, driver data
and function pointers to support both the IPs. It also replaces the driver
data chip type with struct ravb_hw_info by moving chip type to it.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
v2->v3:
* Retained Rb tag from Andrew, since there is no functionality change
apart from just splitting the patch into 2. Also updated the commit
description.
v2:
* Incorporated Andrew and Sergei's review comments for making it smaller patch
and provided detailed description.
The maximum descriptor size that can be specified on the reception side for
R-Car is 2048 bytes, whereas for RZ/G2L it is 8096.
Add the max_rx_len variable to struct ravb_hw_info for allocating different
RX skb buffer sizes for R-Car and RZ/G2L using the netdev_alloc_skb
function.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
R-Car provides 30 device stats, whereas RZ/G2L provides only 15. In
addition, RZ/G2L has stats "rx_queue_0_csum_offload_errors" instead of
"rx_queue_0_missed_errors".
Replace RAVB_STATS_LEN macro with a structure variable stats_len to
Structure field, maybe? :-)
struct ravb_hw_info, to support subsequent SoCs without any code changes
to the ravb_get_sset_count function.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Sergei Shtylyov <redacted>
The register for retrieving TX counters is present only on R-Car Gen3
and RZ/G2L; it is not present on R-Car Gen2.
Add the tx_counters hw feature bit to struct ravb_hw_info, to enable this
feature specifically for R-Car Gen3 now and later extend it to RZ/G2L.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
v2->v3:
* Retained Rb tag from Andrew, since change is just renaming the variable
and comment update.
v2:
* Incorporated Andrew and Sergei's review comments for making it smaller patch
and provided detailed description.
From: Biju Das <biju.das.jz@bp.renesas.com> Date: 2021-08-19 17:33:19
Hi Sergei,
Subject: Re: [PATCH net-next v3 2/9] ravb: Add struct ravb_hw_info to
driver data
On 8/18/21 10:07 PM, Biju Das wrote:
quoted
The DMAC and EMAC blocks of Gigabit Ethernet IP found on RZ/G2L SoC
are similar to the R-Car Ethernet AVB IP. With a few changes in the
driver we can support both IPs.
This patch adds the struct ravb_hw_info to hold hw features, driver
data and function pointers to support both the IPs. It also replaces
the driver data chip type with struct ravb_hw_info by moving chip type
to it.
quoted
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
---
v2->v3:
* Retained Rb tag from Andrew, since there is no functionality change
apart from just splitting the patch into 2. Also updated the commit
description.
v2:
* Incorporated Andrew and Sergei's review comments for making it
The patch currently merged is preparation patch, subsequent patch will replace
all the chip_id in ravb_main with hardware features and driver features.
After that both priv->chip_id and info_chipid is not required for ravb_main.c
However ptp driver[1] still uses it, by adding a feature bit we can replace
that as well. So going forward, there won't be any priv->chip_id or info->chip_id.
Does it makes sense?
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/ethernet/renesas/ravb_ptp.c?h=v5.14-rc6#n200
Regards,
Biju
quoted
priv->clk = devm_clk_get(&pdev->dev, NULL);
if (IS_ERR(priv->clk)) {
The DMAC and EMAC blocks of Gigabit Ethernet IP found on RZ/G2L SoC
are similar to the R-Car Ethernet AVB IP. With a few changes in the
driver we can support both IPs.
This patch adds the struct ravb_hw_info to hold hw features, driver
data and function pointers to support both the IPs. It also replaces
the driver data chip type with struct ravb_hw_info by moving chip type
to it.
quoted
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
[...]
quoted
quoted
reg) diff --git a/drivers/net/ethernet/renesas/ravb_main.c
b/drivers/net/ethernet/renesas/ravb_main.c
index 94eb9136752d..b6554e5e13af 100644
The patch currently merged is preparation patch, subsequent patch will replace
all the chip_id in ravb_main with hardware features and driver features.
After that both priv->chip_id and info_chipid is not required for ravb_main.c
However ptp driver[1] still uses it, by adding a feature bit we can replace
that as well. So going forward, there won't be any priv->chip_id or info->chip_id.
Does it makes sense?
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/ethernet/renesas/ravb_ptp.c?h=v5.14-rc6#n200
Hi Biju,
On Wed, Aug 18, 2021 at 9:08 PM Biju Das [off-list ref] wrote:
R-Car Gen2 needs a 4byte aligned address for the transmission buffer,
whereas R-Car Gen3 doesn't have any such restriction.
Add aligned_tx to struct ravb_hw_info to select the driver to choose
between aligned and unaligned tx buffers.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Thanks for your patch, which is now commit 68ca3c923213b908 ("ravb:
Add aligned_tx to struct ravb_hw_info") in net-next.
@@ -2140,7 +2141,7 @@ static int ravb_probe(struct platform_device *pdev)ndev->max_mtu=2048-(ETH_HLEN+VLAN_HLEN+ETH_FCS_LEN);ndev->min_mtu=ETH_MIN_MTU;-priv->num_tx_desc=info->chip_id==RCAR_GEN2?+priv->num_tx_desc=info->aligned_tx?NUM_TX_DESC_GEN2:NUM_TX_DESC_GEN3;
At first look, this change does not seem to match the patch description.
Upon a deeper look, it is correct, as num_tx_desc is also used to
control alignment.
But now NUM_TX_DESC_GEN[23] no longer match their use.
Perhaps they should be renamed, or replaced by hardcoded values,
with a comment?
/*
* FIXME: Explain the relationship between alignment and number of buffers
*/
priv->num_tx_desc = info->aligned_tx ? 2 : 1;
/* Set function */
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
From: Biju Das <biju.das.jz@bp.renesas.com> Date: 2021-08-23 09:27:09
Hi Geert,
Thanks for the feedback
Subject: Re: [PATCH net-next v3 3/9] ravb: Add aligned_tx to struct
ravb_hw_info
Hi Biju,
On Wed, Aug 18, 2021 at 9:08 PM Biju Das [off-list ref]
wrote:
quoted
R-Car Gen2 needs a 4byte aligned address for the transmission buffer,
whereas R-Car Gen3 doesn't have any such restriction.
Add aligned_tx to struct ravb_hw_info to select the driver to choose
between aligned and unaligned tx buffers.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Thanks for your patch, which is now commit 68ca3c923213b908 ("ravb:
Add aligned_tx to struct ravb_hw_info") in net-next.
At first look, this change does not seem to match the patch description.
Upon a deeper look, it is correct, as num_tx_desc is also used to control
alignment.
But now NUM_TX_DESC_GEN[23] no longer match their use.
Perhaps they should be renamed, or replaced by hardcoded values, with a
comment?
OK, will replace this macros with hardcoded values with a comment.
Regards,
Biju
/*
* FIXME: Explain the relationship between alignment and number of
buffers
*/
priv->num_tx_desc = info->aligned_tx ? 2 : 1;
quoted
/* Set function */
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-
m68k.org
In personal conversations with technical people, I call myself a hacker.
But when I'm talking to journalists I just say "programmer" or something
like that.
-- Linus Torvalds