[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210411200135.35fb5985@thinkpad>
Date: Sun, 11 Apr 2021 20:01:35 +0200
From: Marek Behun <marek.behun@....cz>
To: Ansuel Smith <ansuelsmth@...il.com>
Cc: netdev@...r.kernel.org, "David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>, Andrew Lunn <andrew@...n.ch>,
Vivien Didelot <vivien.didelot@...il.com>,
Florian Fainelli <f.fainelli@...il.com>,
Vladimir Oltean <olteanv@...il.com>,
Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Andrii Nakryiko <andriin@...com>,
Eric Dumazet <edumazet@...gle.com>,
Wei Wang <weiwan@...gle.com>,
Cong Wang <cong.wang@...edance.com>,
Taehee Yoo <ap420073@...il.com>,
Björn Töpel <bjorn@...nel.org>,
zhang kai <zhangkaiheb@....com>,
Weilong Chen <chenweilong@...wei.com>,
Roopa Prabhu <roopa@...ulusnetworks.com>,
Di Zhu <zhudi21@...wei.com>,
Francis Laniel <laniel_francis@...vacyrequired.com>,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH RFC net-next 0/3] Multi-CPU DSA support
On Sat, 10 Apr 2021 15:34:46 +0200
Ansuel Smith <ansuelsmth@...il.com> wrote:
> Hi,
> this is a respin of the Marek series in hope that this time we can
> finally make some progress with dsa supporting multi-cpu port.
>
> This implementation is similar to the Marek series but with some tweaks.
> This adds support for multiple-cpu port but leave the driver the
> decision of the type of logic to use about assigning a CPU port to the
> various port. The driver can also provide no preference and the CPU port
> is decided using a round-robin way.
In the last couple of months I have been giving some thought to this
problem, and came up with one important thing: if there are multiple
upstream ports, it would make a lot of sense to dynamically reallocate
them to each user port, based on which user port is actually used, and
at what speed.
For example on Turris Omnia we have 2 CPU ports and 5 user ports. All
ports support at most 1 Gbps. Round-robin would assign:
CPU port 0 - Port 0
CPU port 1 - Port 1
CPU port 0 - Port 2
CPU port 1 - Port 3
CPU port 0 - Port 4
Now suppose that the user plugs ethernet cables only into ports 0 and 2,
with 1, 3 and 4 free:
CPU port 0 - Port 0 (plugged)
CPU port 1 - Port 1 (free)
CPU port 0 - Port 2 (plugged)
CPU port 1 - Port 3 (free)
CPU port 0 - Port 4 (free)
We end up in a situation where ports 0 and 2 share 1 Gbps bandwidth to
CPU, and the second CPU port is not used at all.
A mechanism for automatic reassignment of CPU ports would be ideal here.
What do you guys think?
Marek
Powered by blists - more mailing lists