[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20191109130301.13716-1-olteanv@gmail.com>
Date: Sat, 9 Nov 2019 15:02:46 +0200
From: Vladimir Oltean <olteanv@...il.com>
To: jakub.kicinski@...ronome.com, davem@...emloft.net,
alexandre.belloni@...tlin.com
Cc: andrew@...n.ch, f.fainelli@...il.com, vivien.didelot@...il.com,
joergen.andreasen@...rochip.com, allan.nielsen@...rochip.com,
horatiu.vultur@...rochip.com, claudiu.manoil@....com,
netdev@...r.kernel.org, Vladimir Oltean <olteanv@...il.com>
Subject: [PATCH net-next 00/15] Accomodate DSA front-end into Ocelot
After the nice "change-my-mind" discussion about Ocelot, Felix and
LS1028A (which can be read here: https://lkml.org/lkml/2019/6/21/630),
we have decided to take the route of reworking the Ocelot implementation
in a way that is DSA-compatible.
This is a large series, but hopefully is easy enough to digest, since it
contains mostly code refactoring. What needs to be changed:
- The struct net_device, phy_device needs to be isolated from Ocelot
private structures (struct ocelot, struct ocelot_port). These will
live as 1-to-1 equivalents to struct dsa_switch and struct dsa_port.
- The function prototypes need to be compatible with DSA (of course,
struct dsa_switch will become struct ocelot).
- The CPU port needs to be assigned via a higher-level API, not
hardcoded in the driver.
What is going to be interesting is that the new DSA front-end of Ocelot
will need to have features in lockstep with the DSA core itself. At the
moment, some more advanced tc offloading features of Ocelot (tc-flower,
etc) are not available in the DSA front-end due to lack of API in the
DSA core. It also means that Ocelot practically re-implements large
parts of DSA (although it is not a DSA switch per se) - see the FDB API
for example.
The code has been only compile-tested on Ocelot, since I don't have
access to any VSC7514 hardware. It was proven to work on NXP LS1028A,
which instantiates a DSA derivative of Ocelot. So I would like to ask
Alex Belloni if you could confirm this series causes no regression on
the Ocelot MIPS SoC.
The goal is to get this rework upstream as quickly as possible,
precisely because it is a large volume of code that risks gaining merge
conflicts if we keep it for too long.
This is but the first chunk of the LS1028A Felix DSA driver upstreaming.
For those who are interested, the concept can be seen on my private
Github repo, the user of this reworked Ocelot driver living under
drivers/net/dsa/vitesse/:
https://github.com/vladimiroltean/ls1028ardb-linux
Claudiu Manoil (1):
net: mscc: ocelot: initialize list of multicast addresses in common
code
Vladimir Oltean (14):
net: mscc: ocelot: break apart ocelot_vlan_port_apply
net: mscc: ocelot: break apart vlan operations into
ocelot_vlan_{add,del}
net: mscc: ocelot: break out fdb operations into abstract
implementations
net: mscc: ocelot: change prototypes of hwtstamping ioctls
net: mscc: ocelot: change prototypes of switchdev port attribute
handlers
net: mscc: ocelot: refactor struct ocelot_port out of function
prototypes
net: mscc: ocelot: separate net_device related items out of
ocelot_port
net: mscc: ocelot: refactor ethtool callbacks
net: mscc: ocelot: limit vlan ingress filtering to actual number of
ports
net: mscc: ocelot: move port initialization into separate function
net: mscc: ocelot: separate the common implementation of ndo_open and
ndo_stop
net: mscc: ocelot: refactor adjust_link into a netdev-independent
function
net: mscc: ocelot: split assignment of the cpu port into a separate
function
net: mscc: ocelot: don't hardcode the number of the CPU port
drivers/net/ethernet/mscc/ocelot.c | 948 +++++++++++++---------
drivers/net/ethernet/mscc/ocelot.h | 33 +-
drivers/net/ethernet/mscc/ocelot_ace.h | 4 +-
drivers/net/ethernet/mscc/ocelot_board.c | 24 +-
drivers/net/ethernet/mscc/ocelot_flower.c | 32 +-
drivers/net/ethernet/mscc/ocelot_police.c | 36 +-
drivers/net/ethernet/mscc/ocelot_police.h | 4 +-
drivers/net/ethernet/mscc/ocelot_tc.c | 56 +-
8 files changed, 680 insertions(+), 457 deletions(-)
--
2.17.1
Powered by blists - more mailing lists