devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] arm64: dts: imx8mp-evk: configure multiple queues on eqos
@ 2021-12-16  9:24 Xiaoliang Yang
  2021-12-16 10:14 ` Shawn Guo
  2021-12-16 10:27 ` (EXT) " Alexander Stein
  0 siblings, 2 replies; 4+ messages in thread
From: Xiaoliang Yang @ 2021-12-16  9:24 UTC (permalink / raw)
  To: robh+dt, shawnguo, s.hauer, festevam
  Cc: linux-arm-kernel, linux-tegra, linux-imx, kernel, devicetree,
	qiangqing.zhang, xiaoliang.yang_1

Eqos ethernet support five queues on hardware, enable these queues and
configure the priority of each queue. Uses Strict Priority as scheduling
algorithms to ensure that the TSN function works.

The priority of each queue is a bitmask value that maps VLAN tag
priority to the queue. Since the hardware only supports five queues,
this patch maps priority 0-4 to queues one by one, and priority 5-7 to
queue 4.

The total fifo size of 5 queues is 8192 bytes, if enable 5 queues with
store-and-forward mode, it's not enough for large packets, which would
trigger fifo overflow frequently. This patch set DMA to thresh mode to
enable all 5 queues.

Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com>
Reviewed-by: Joakim Zhang <qiangqing.zhang@nxp.com>
---
v1->v2:
 - Use bitmask to set priority attributes.
 - Add default properties for each queue.
 - Add CC to the maintainers.
v2->v3:
 - Add newline between properties and child node.

 arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 68 ++++++++++++++++++++
 1 file changed, 68 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
index 7b99fad6e4d6..6fd1376258db 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
@@ -86,6 +86,9 @@
 	pinctrl-0 = <&pinctrl_eqos>;
 	phy-mode = "rgmii-id";
 	phy-handle = <&ethphy0>;
+	snps,force_thresh_dma_mode;
+	snps,mtl-tx-config = <&mtl_tx_setup>;
+	snps,mtl-rx-config = <&mtl_rx_setup>;
 	status = "okay";
 
 	mdio {
@@ -99,6 +102,71 @@
 			eee-broken-1000t;
 		};
 	};
+
+	mtl_tx_setup: tx-queues-config {
+		snps,tx-queues-to-use = <5>;
+		snps,tx-sched-sp;
+
+		queue0 {
+			snps,dcb-algorithm;
+			snps,priority = <0x1>;
+		};
+
+		queue1 {
+			snps,dcb-algorithm;
+			snps,priority = <0x2>;
+		};
+
+		queue2 {
+			snps,dcb-algorithm;
+			snps,priority = <0x4>;
+		};
+
+		queue3 {
+			snps,dcb-algorithm;
+			snps,priority = <0x8>;
+		};
+
+		queue4 {
+			snps,dcb-algorithm;
+			snps,priority = <0xf0>;
+		};
+	};
+
+	mtl_rx_setup: rx-queues-config {
+		snps,rx-queues-to-use = <5>;
+		snps,rx-sched-sp;
+
+		queue0 {
+			snps,dcb-algorithm;
+			snps,priority = <0x1>;
+			snps,map-to-dma-channel = <0>;
+		};
+
+		queue1 {
+			snps,dcb-algorithm;
+			snps,priority = <0x2>;
+			snps,map-to-dma-channel = <1>;
+		};
+
+		queue2 {
+			snps,dcb-algorithm;
+			snps,priority = <0x4>;
+			snps,map-to-dma-channel = <2>;
+		};
+
+		queue3 {
+			snps,dcb-algorithm;
+			snps,priority = <0x8>;
+			snps,map-to-dma-channel = <3>;
+		};
+
+		queue4 {
+			snps,dcb-algorithm;
+			snps,priority = <0xf0>;
+			snps,map-to-dma-channel = <4>;
+		};
+	};
 };
 
 &fec {
-- 
2.17.1


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

* Re: [PATCH v3] arm64: dts: imx8mp-evk: configure multiple queues on eqos
  2021-12-16  9:24 [PATCH v3] arm64: dts: imx8mp-evk: configure multiple queues on eqos Xiaoliang Yang
@ 2021-12-16 10:14 ` Shawn Guo
  2021-12-16 10:27 ` (EXT) " Alexander Stein
  1 sibling, 0 replies; 4+ messages in thread
From: Shawn Guo @ 2021-12-16 10:14 UTC (permalink / raw)
  To: Xiaoliang Yang
  Cc: robh+dt, s.hauer, festevam, linux-arm-kernel, linux-tegra,
	linux-imx, kernel, devicetree, qiangqing.zhang

On Thu, Dec 16, 2021 at 05:24:48PM +0800, Xiaoliang Yang wrote:
> Eqos ethernet support five queues on hardware, enable these queues and
> configure the priority of each queue. Uses Strict Priority as scheduling
> algorithms to ensure that the TSN function works.
> 
> The priority of each queue is a bitmask value that maps VLAN tag
> priority to the queue. Since the hardware only supports five queues,
> this patch maps priority 0-4 to queues one by one, and priority 5-7 to
> queue 4.
> 
> The total fifo size of 5 queues is 8192 bytes, if enable 5 queues with
> store-and-forward mode, it's not enough for large packets, which would
> trigger fifo overflow frequently. This patch set DMA to thresh mode to
> enable all 5 queues.
> 
> Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com>
> Reviewed-by: Joakim Zhang <qiangqing.zhang@nxp.com>

Applied, thanks!

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

* Re: (EXT) [PATCH v3] arm64: dts: imx8mp-evk: configure multiple queues on eqos
  2021-12-16  9:24 [PATCH v3] arm64: dts: imx8mp-evk: configure multiple queues on eqos Xiaoliang Yang
  2021-12-16 10:14 ` Shawn Guo
@ 2021-12-16 10:27 ` Alexander Stein
  2021-12-16 10:54   ` [EXT] " Xiaoliang Yang
  1 sibling, 1 reply; 4+ messages in thread
From: Alexander Stein @ 2021-12-16 10:27 UTC (permalink / raw)
  To: Xiaoliang Yang, robh+dt, shawnguo, s.hauer, festevam
  Cc: linux-arm-kernel, linux-tegra, linux-imx, kernel, devicetree,
	qiangqing.zhang

Am Donnerstag, dem 16.12.2021 um 17:24 +0800 schrieb Xiaoliang Yang:
> Eqos ethernet support five queues on hardware, enable these queues
> and
> configure the priority of each queue. Uses Strict Priority as
> scheduling
> algorithms to ensure that the TSN function works.
> 
> The priority of each queue is a bitmask value that maps VLAN tag
> priority to the queue. Since the hardware only supports five queues,
> this patch maps priority 0-4 to queues one by one, and priority 5-7
> to
> queue 4.
> 
> The total fifo size of 5 queues is 8192 bytes, if enable 5 queues
> with
> store-and-forward mode, it's not enough for large packets, which
> would
> trigger fifo overflow frequently. This patch set DMA to thresh mode
> to
> enable all 5 queues.

Is there a specific reason to configure this only on board-level but
not for all imx8mp in general?

Thanks
Alexander

> Signed-off-by: Xiaoliang Yang <
> xiaoliang.yang_1@nxp.com
> >
> Reviewed-by: Joakim Zhang <
> qiangqing.zhang@nxp.com
> >
> ---
> v1->v2:
>  - Use bitmask to set priority attributes.
>  - Add default properties for each queue.
>  - Add CC to the maintainers.
> v2->v3:
>  - Add newline between properties and child node.
> 
>  arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 68
> ++++++++++++++++++++
>  1 file changed, 68 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> index 7b99fad6e4d6..6fd1376258db 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> @@ -86,6 +86,9 @@
>  	pinctrl-0 = <&pinctrl_eqos>;
>  	phy-mode = "rgmii-id";
>  	phy-handle = <&ethphy0>;
> +	snps,force_thresh_dma_mode;
> +	snps,mtl-tx-config = <&mtl_tx_setup>;
> +	snps,mtl-rx-config = <&mtl_rx_setup>;
>  	status = "okay";
>  
>  	mdio {
> @@ -99,6 +102,71 @@
>  			eee-broken-1000t;
>  		};
>  	};
> +
> +	mtl_tx_setup: tx-queues-config {
> +		snps,tx-queues-to-use = <5>;
> +		snps,tx-sched-sp;
> +
> +		queue0 {
> +			snps,dcb-algorithm;
> +			snps,priority = <0x1>;
> +		};
> +
> +		queue1 {
> +			snps,dcb-algorithm;
> +			snps,priority = <0x2>;
> +		};
> +
> +		queue2 {
> +			snps,dcb-algorithm;
> +			snps,priority = <0x4>;
> +		};
> +
> +		queue3 {
> +			snps,dcb-algorithm;
> +			snps,priority = <0x8>;
> +		};
> +
> +		queue4 {
> +			snps,dcb-algorithm;
> +			snps,priority = <0xf0>;
> +		};
> +	};
> +
> +	mtl_rx_setup: rx-queues-config {
> +		snps,rx-queues-to-use = <5>;
> +		snps,rx-sched-sp;
> +
> +		queue0 {
> +			snps,dcb-algorithm;
> +			snps,priority = <0x1>;
> +			snps,map-to-dma-channel = <0>;
> +		};
> +
> +		queue1 {
> +			snps,dcb-algorithm;
> +			snps,priority = <0x2>;
> +			snps,map-to-dma-channel = <1>;
> +		};
> +
> +		queue2 {
> +			snps,dcb-algorithm;
> +			snps,priority = <0x4>;
> +			snps,map-to-dma-channel = <2>;
> +		};
> +
> +		queue3 {
> +			snps,dcb-algorithm;
> +			snps,priority = <0x8>;
> +			snps,map-to-dma-channel = <3>;
> +		};
> +
> +		queue4 {
> +			snps,dcb-algorithm;
> +			snps,priority = <0xf0>;
> +			snps,map-to-dma-channel = <4>;
> +		};
> +	};
>  };
>  
>  &fec {


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

* RE: [EXT] Re: (EXT) [PATCH v3] arm64: dts: imx8mp-evk: configure multiple queues on eqos
  2021-12-16 10:27 ` (EXT) " Alexander Stein
@ 2021-12-16 10:54   ` Xiaoliang Yang
  0 siblings, 0 replies; 4+ messages in thread
From: Xiaoliang Yang @ 2021-12-16 10:54 UTC (permalink / raw)
  To: Alexander Stein, robh+dt@kernel.org, shawnguo@kernel.org,
	s.hauer@pengutronix.de, festevam@gmail.com
  Cc: linux-arm-kernel@lists.infradead.org, linux-tegra@vger.kernel.org,
	dl-linux-imx, kernel@pengutronix.de, devicetree@vger.kernel.org,
	Joakim Zhang


On Thu, 16 Dec 2021 18:07:13 Alexander Stein wrote:
> > Eqos ethernet support five queues on hardware, enable these queues and
> > configure the priority of each queue. Uses Strict Priority as
> > scheduling algorithms to ensure that the TSN function works.
> >
> > The priority of each queue is a bitmask value that maps VLAN tag
> > priority to the queue. Since the hardware only supports five queues,
> > this patch maps priority 0-4 to queues one by one, and priority 5-7 to
> > queue 4.
> >
> > The total fifo size of 5 queues is 8192 bytes, if enable 5 queues with
> > store-and-forward mode, it's not enough for large packets, which would
> > trigger fifo overflow frequently. This patch set DMA to thresh mode to
> > enable all 5 queues.
> 
> Is there a specific reason to configure this only on board-level but not for all
> imx8mp in general?
How many queues are enabled and what attributes are set to eqos depends on the needs of users. Different boards may have different requirements. For example, we set the threshold mode and 5 queues on the imx8mp-evk board, but other boards may also require SF mode and 3 queues. We set up 5 queues and SP scheduling modes on the i.mx9mp-evk board to better use the TSN function.

Thanks,
Xiaoliang

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

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

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-12-16  9:24 [PATCH v3] arm64: dts: imx8mp-evk: configure multiple queues on eqos Xiaoliang Yang
2021-12-16 10:14 ` Shawn Guo
2021-12-16 10:27 ` (EXT) " Alexander Stein
2021-12-16 10:54   ` [EXT] " Xiaoliang Yang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).