Re: [net-next v4 1/6] net: marvell: prestera: Add driver for Prestera family ASIC devices
From: Jonathan McDowell
Date: Fri Aug 14 2020 - 08:05:48 EST
On Fri, Aug 14, 2020 at 11:20:54AM +0300, Vadym Kochan wrote:
> On Thu, Aug 13, 2020 at 09:03:22AM +0100, Jonathan McDowell wrote:
> > On Mon, Jul 27, 2020 at 03:22:37PM +0300, Vadym Kochan wrote:
> > > Marvell Prestera 98DX326x integrates up to 24 ports of 1GbE with 8
> > > ports of 10GbE uplinks or 2 ports of 40Gbps stacking for a largely
> > > wireless SMB deployment.
> > >
> > > The current implementation supports only boards designed for the Marvell
> > > Switchdev solution and requires special firmware.
> > >
> > > The core Prestera switching logic is implemented in prestera_main.c,
> > > there is an intermediate hw layer between core logic and firmware. It is
> > > implemented in prestera_hw.c, the purpose of it is to encapsulate hw
> > > related logic, in future there is a plan to support more devices with
> > > different HW related configurations.
> >
> > The Prestera range covers a lot of different silicon. 98DX326x appears
> > to be AlleyCat3; does this driver definitely support all previous
> > revisions too? I've started looking at some 98DX4122 (BobCat+) hardware
> > and while some of the register mappings seem to match up it looks like
> > the DSA tagging has some extra information at least.
> >
> > Worth making it clear exactly what this driver is expected to support,
> > and possibly fix up the naming/device tree compatibles as a result.
> >
> Regarding "naming/device tree compatibles", do you mean to add
> compatible matching for particular ASIC and also for common ?
>
> Currently
>
> compatible = "marvell,prestera"
>
> is used as default, so may be
>
> you mean to support few matching including particular silicon too, like ?
>
>
> compatible = "marvell,prestera"
> compatible = "marvell,prestera-ac3x"
>
> Would you please give an example ?
AFAICT "Prestera" is the general name for the Marvell
enterprise/data-centre silicon, comparable to the "LinkStreet"
designation for their lower end switching. The mv88e* drivers do not
mention LinkStreet in their compatible strings at all, choosing instead
to refer to chip IDs (I see mv88e6085, mv88e6190 + mv88e6250).
I do not have enough familiarity with the Prestera range to be able to
tell what commonality there is between the different versions (it
appears you need an NDA to get hold of the programming references), but
even just looking at your driver and the vendor code for the BobCat it
seems that AlleyCat3 uses an extended DSA header format, and requires a
firmware with message based access, in comparison to the BobCat which
uses register poking.
Based on that I'd recommend not using the bare "marvell,prestera"
compatible string, but instead something more specific.
"marvell,prestera-ac3x" seems like a suitable choice, assuming that's
how these chips are named/generally referred to.
Also I'd expand your Kconfig information to actually include "Marvell
Prestera 98DX326x" as that's the only supported chip range at present.
J.
--
... "'And the beast shall come forth surrounded by a roiling cloud of
vengeance. The house of the unbelievers shall be razed and they shall
be scorched to the earth. Their tags shall blink until the end of
days.' from The Book of Mozilla, 12:10" -- about:mozilla