Re: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
Hi Florian, On 09/29/2017 07:11 PM, Florian Fainelli wrote: > On September 29, 2017 6:59:18 AM PDT, Razvan Stefanescu > <razvan.stefane...@nxp.com> wrote: >> >> >>> -Original Message- >>> From: Bogdan Purcareata >>> Sent: Friday, September 29, 2017 16:36 >>> To: Razvan Stefanescu <razvan.stefane...@nxp.com>; >>> gre...@linuxfoundation.org >>> Cc: de...@driverdev.osuosl.org; linux-kernel@vger.kernel.org; >>> net...@vger.kernel.org; ag...@suse.de; a...@arndb.de; Alexandru >> Marginean >>> <alexandru.margin...@nxp.com>; Ruxandra Ioana Radulescu >>> <ruxandra.radule...@nxp.com>; Laurentiu Tudor >> <laurentiu.tu...@nxp.com>; >>> stuyo...@gmail.com >>> Subject: RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add >> Freescale DPAA2 >>> Ethernet Switch driver >>> >>>> Introduce the DPAA2 Ethernet Switch driver, which manages Datapath >> Switch >>>> (DPSW) objects discovered on the MC bus. >>>> >>>> Suggested-by: Alexandru Marginean <alexandru.margin...@nxp.com> >>>> Signed-off-by: Razvan Stefanescu <razvan.stefane...@nxp.com> > > This looks pretty good for a new switchdev driver, is there a reason you > can't target drivers/net/ethernet instead of staging? Is it because the MC > bus code is still in staging (AFAICT)? There's a pending patch [1] that moves the bus from staging to its place in drivers/bus. DPIO plus other bits and pieces are next on the list. Greg, Just a heads up: if this driver goes in first, then i'll need to re-spin my patch [1] to also update the #include's in this switch driver. P.S. Any news on my patch? :-) [1] https://www.spinics.net/lists/arm-kernel/msg603534.html --- Thanks, Laurentiu
Re: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
Hi Florian, On 09/29/2017 07:11 PM, Florian Fainelli wrote: > On September 29, 2017 6:59:18 AM PDT, Razvan Stefanescu > wrote: >> >> >>> -Original Message- >>> From: Bogdan Purcareata >>> Sent: Friday, September 29, 2017 16:36 >>> To: Razvan Stefanescu ; >>> gre...@linuxfoundation.org >>> Cc: de...@driverdev.osuosl.org; linux-kernel@vger.kernel.org; >>> net...@vger.kernel.org; ag...@suse.de; a...@arndb.de; Alexandru >> Marginean >>> ; Ruxandra Ioana Radulescu >>> ; Laurentiu Tudor >> ; >>> stuyo...@gmail.com >>> Subject: RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add >> Freescale DPAA2 >>> Ethernet Switch driver >>> >>>> Introduce the DPAA2 Ethernet Switch driver, which manages Datapath >> Switch >>>> (DPSW) objects discovered on the MC bus. >>>> >>>> Suggested-by: Alexandru Marginean >>>> Signed-off-by: Razvan Stefanescu > > This looks pretty good for a new switchdev driver, is there a reason you > can't target drivers/net/ethernet instead of staging? Is it because the MC > bus code is still in staging (AFAICT)? There's a pending patch [1] that moves the bus from staging to its place in drivers/bus. DPIO plus other bits and pieces are next on the list. Greg, Just a heads up: if this driver goes in first, then i'll need to re-spin my patch [1] to also update the #include's in this switch driver. P.S. Any news on my patch? :-) [1] https://www.spinics.net/lists/arm-kernel/msg603534.html --- Thanks, Laurentiu
RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
> -Original Message- > From: Florian Fainelli [mailto:f.faine...@gmail.com] > Sent: Friday, September 29, 2017 19:11 > To: Razvan Stefanescu <razvan.stefane...@nxp.com>; Bogdan Purcareata > <bogdan.purcare...@nxp.com>; gre...@linuxfoundation.org > Cc: de...@driverdev.osuosl.org; linux-kernel@vger.kernel.org; > net...@vger.kernel.org; ag...@suse.de; a...@arndb.de; Alexandru Marginean > <alexandru.margin...@nxp.com>; Ruxandra Ioana Radulescu > <ruxandra.radule...@nxp.com>; Laurentiu Tudor <laurentiu.tu...@nxp.com>; > stuyo...@gmail.com > Subject: RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 > Ethernet Switch driver > > On September 29, 2017 6:59:18 AM PDT, Razvan Stefanescu > <razvan.stefane...@nxp.com> wrote: > > > > > >> -Original Message- > >> From: Bogdan Purcareata > >> Sent: Friday, September 29, 2017 16:36 > >> To: Razvan Stefanescu <razvan.stefane...@nxp.com>; > >> gre...@linuxfoundation.org > >> Cc: de...@driverdev.osuosl.org; linux-kernel@vger.kernel.org; > >> net...@vger.kernel.org; ag...@suse.de; a...@arndb.de; Alexandru > >Marginean > >> <alexandru.margin...@nxp.com>; Ruxandra Ioana Radulescu > >> <ruxandra.radule...@nxp.com>; Laurentiu Tudor > ><laurentiu.tu...@nxp.com>; > >> stuyo...@gmail.com > >> Subject: RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add > >Freescale DPAA2 > >> Ethernet Switch driver > >> > >> > Introduce the DPAA2 Ethernet Switch driver, which manages Datapath > >Switch > >> > (DPSW) objects discovered on the MC bus. > >> > > >> > Suggested-by: Alexandru Marginean <alexandru.margin...@nxp.com> > >> > Signed-off-by: Razvan Stefanescu <razvan.stefane...@nxp.com> > > This looks pretty good for a new switchdev driver, is there a reason you can't > target drivers/net/ethernet instead of staging? Is it because the MC bus code > is > still in staging (AFAICT)? > Yes, driver depends on MC bus, which is still in staging. Also, control traffic code will require access to DPIO functions, that are also in staging. Best regards, Razvan S. > -- > Florian
RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
> -Original Message- > From: Florian Fainelli [mailto:f.faine...@gmail.com] > Sent: Friday, September 29, 2017 19:11 > To: Razvan Stefanescu ; Bogdan Purcareata > ; gre...@linuxfoundation.org > Cc: de...@driverdev.osuosl.org; linux-kernel@vger.kernel.org; > net...@vger.kernel.org; ag...@suse.de; a...@arndb.de; Alexandru Marginean > ; Ruxandra Ioana Radulescu > ; Laurentiu Tudor ; > stuyo...@gmail.com > Subject: RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 > Ethernet Switch driver > > On September 29, 2017 6:59:18 AM PDT, Razvan Stefanescu > wrote: > > > > > >> -Original Message- > >> From: Bogdan Purcareata > >> Sent: Friday, September 29, 2017 16:36 > >> To: Razvan Stefanescu ; > >> gre...@linuxfoundation.org > >> Cc: de...@driverdev.osuosl.org; linux-kernel@vger.kernel.org; > >> net...@vger.kernel.org; ag...@suse.de; a...@arndb.de; Alexandru > >Marginean > >> ; Ruxandra Ioana Radulescu > >> ; Laurentiu Tudor > >; > >> stuyo...@gmail.com > >> Subject: RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add > >Freescale DPAA2 > >> Ethernet Switch driver > >> > >> > Introduce the DPAA2 Ethernet Switch driver, which manages Datapath > >Switch > >> > (DPSW) objects discovered on the MC bus. > >> > > >> > Suggested-by: Alexandru Marginean > >> > Signed-off-by: Razvan Stefanescu > > This looks pretty good for a new switchdev driver, is there a reason you can't > target drivers/net/ethernet instead of staging? Is it because the MC bus code > is > still in staging (AFAICT)? > Yes, driver depends on MC bus, which is still in staging. Also, control traffic code will require access to DPIO functions, that are also in staging. Best regards, Razvan S. > -- > Florian
RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
On September 29, 2017 6:59:18 AM PDT, Razvan Stefanescu <razvan.stefane...@nxp.com> wrote: > > >> -Original Message- >> From: Bogdan Purcareata >> Sent: Friday, September 29, 2017 16:36 >> To: Razvan Stefanescu <razvan.stefane...@nxp.com>; >> gre...@linuxfoundation.org >> Cc: de...@driverdev.osuosl.org; linux-kernel@vger.kernel.org; >> net...@vger.kernel.org; ag...@suse.de; a...@arndb.de; Alexandru >Marginean >> <alexandru.margin...@nxp.com>; Ruxandra Ioana Radulescu >> <ruxandra.radule...@nxp.com>; Laurentiu Tudor ><laurentiu.tu...@nxp.com>; >> stuyo...@gmail.com >> Subject: RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add >Freescale DPAA2 >> Ethernet Switch driver >> >> > Introduce the DPAA2 Ethernet Switch driver, which manages Datapath >Switch >> > (DPSW) objects discovered on the MC bus. >> > >> > Suggested-by: Alexandru Marginean <alexandru.margin...@nxp.com> >> > Signed-off-by: Razvan Stefanescu <razvan.stefane...@nxp.com> This looks pretty good for a new switchdev driver, is there a reason you can't target drivers/net/ethernet instead of staging? Is it because the MC bus code is still in staging (AFAICT)? -- Florian
RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
On September 29, 2017 6:59:18 AM PDT, Razvan Stefanescu wrote: > > >> -Original Message- >> From: Bogdan Purcareata >> Sent: Friday, September 29, 2017 16:36 >> To: Razvan Stefanescu ; >> gre...@linuxfoundation.org >> Cc: de...@driverdev.osuosl.org; linux-kernel@vger.kernel.org; >> net...@vger.kernel.org; ag...@suse.de; a...@arndb.de; Alexandru >Marginean >> ; Ruxandra Ioana Radulescu >> ; Laurentiu Tudor >; >> stuyo...@gmail.com >> Subject: RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add >Freescale DPAA2 >> Ethernet Switch driver >> >> > Introduce the DPAA2 Ethernet Switch driver, which manages Datapath >Switch >> > (DPSW) objects discovered on the MC bus. >> > >> > Suggested-by: Alexandru Marginean >> > Signed-off-by: Razvan Stefanescu This looks pretty good for a new switchdev driver, is there a reason you can't target drivers/net/ethernet instead of staging? Is it because the MC bus code is still in staging (AFAICT)? -- Florian
RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
> -Original Message- > From: Bogdan Purcareata > Sent: Friday, September 29, 2017 16:36 > To: Razvan Stefanescu <razvan.stefane...@nxp.com>; > gre...@linuxfoundation.org > Cc: de...@driverdev.osuosl.org; linux-kernel@vger.kernel.org; > net...@vger.kernel.org; ag...@suse.de; a...@arndb.de; Alexandru Marginean > <alexandru.margin...@nxp.com>; Ruxandra Ioana Radulescu > <ruxandra.radule...@nxp.com>; Laurentiu Tudor <laurentiu.tu...@nxp.com>; > stuyo...@gmail.com > Subject: RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 > Ethernet Switch driver > > > Introduce the DPAA2 Ethernet Switch driver, which manages Datapath Switch > > (DPSW) objects discovered on the MC bus. > > > > Suggested-by: Alexandru Marginean <alexandru.margin...@nxp.com> > > Signed-off-by: Razvan Stefanescu <razvan.stefane...@nxp.com> > > --- > > drivers/staging/fsl-dpaa2/ethsw/Makefile |2 +- > > drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 1523 > ++ > > drivers/staging/fsl-dpaa2/ethsw/ethsw.h | 88 ++ > > 3 files changed, 1612 insertions(+), 1 deletion(-) > > create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.c > > create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.h > > > > diff --git a/drivers/staging/fsl-dpaa2/ethsw/Makefile b/drivers/staging/fsl- > > dpaa2/ethsw/Makefile > > index db137f7..a6d72d1 100644 > > --- a/drivers/staging/fsl-dpaa2/ethsw/Makefile > > +++ b/drivers/staging/fsl-dpaa2/ethsw/Makefile > > @@ -4,4 +4,4 @@ > > > > obj-$(CONFIG_FSL_DPAA2_ETHSW) += dpaa2-ethsw.o > > > > -dpaa2-ethsw-objs := dpsw.o > > +dpaa2-ethsw-objs := ethsw.o dpsw.o > > diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c b/drivers/staging/fsl- > > dpaa2/ethsw/ethsw.c > > new file mode 100644 > > index 000..ae86078 > > --- /dev/null > > +++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c > > @@ -0,0 +1,1523 @@ > > +/* Copyright 2014-2016 Freescale Semiconductor Inc. > > + * Copyright 2017 NXP > > + * > > + * Redistribution and use in source and binary forms, with or without > > + * modification, are permitted provided that the following conditions are > > met: > > + * * Redistributions of source code must retain the above copyright > > + * notice, this list of conditions and the following disclaimer. > > + * * Redistributions in binary form must reproduce the above copyright > > + * notice, this list of conditions and the following disclaimer in the > > + * documentation and/or other materials provided with the distribution. > > + * * Neither the name of the above-listed copyright holders nor the > > + * names of any contributors may be used to endorse or promote products > > + * derived from this software without specific prior written permission. > > + * > > + * > > + * ALTERNATIVELY, this software may be distributed under the terms of the > > + * GNU General Public License ("GPL") as published by the Free Software > > + * Foundation, either version 2 of that License or (at your option) any > > + * later version. > > + * > > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND > CONTRIBUTORS "AS IS" > > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > LIMITED TO, THE > > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A > PARTICULAR PURPOSE > > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR > CONTRIBUTORS BE > > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, > PROCUREMENT OF > > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR > BUSINESS > > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, > WHETHER IN > > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR > OTHERWISE) > > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF > ADVISED OF THE > > + * POSSIBILITY OF SUCH DAMAGE. > > + */ > > + > > +#include > > + > > +#include > > +#include > > +#include > > +#include > > + > > +#include "../../fsl-mc/include/mc.h" > > + > > +#include "ethsw.h" > > + > > +static struct workqueue_struct *ethsw_owq; > > + > > +/* Minimal supported DPSW version */ > > +#define DPSW_MIN_VER_MAJOR 8 > > +#define DPSW_MIN_VER_MINOR 0 > > + > > +#define DEFAULT_VLAN_ID1 > > + > > +static int ethsw_add_vl
RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
> -Original Message- > From: Bogdan Purcareata > Sent: Friday, September 29, 2017 16:36 > To: Razvan Stefanescu ; > gre...@linuxfoundation.org > Cc: de...@driverdev.osuosl.org; linux-kernel@vger.kernel.org; > net...@vger.kernel.org; ag...@suse.de; a...@arndb.de; Alexandru Marginean > ; Ruxandra Ioana Radulescu > ; Laurentiu Tudor ; > stuyo...@gmail.com > Subject: RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 > Ethernet Switch driver > > > Introduce the DPAA2 Ethernet Switch driver, which manages Datapath Switch > > (DPSW) objects discovered on the MC bus. > > > > Suggested-by: Alexandru Marginean > > Signed-off-by: Razvan Stefanescu > > --- > > drivers/staging/fsl-dpaa2/ethsw/Makefile |2 +- > > drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 1523 > ++ > > drivers/staging/fsl-dpaa2/ethsw/ethsw.h | 88 ++ > > 3 files changed, 1612 insertions(+), 1 deletion(-) > > create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.c > > create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.h > > > > diff --git a/drivers/staging/fsl-dpaa2/ethsw/Makefile b/drivers/staging/fsl- > > dpaa2/ethsw/Makefile > > index db137f7..a6d72d1 100644 > > --- a/drivers/staging/fsl-dpaa2/ethsw/Makefile > > +++ b/drivers/staging/fsl-dpaa2/ethsw/Makefile > > @@ -4,4 +4,4 @@ > > > > obj-$(CONFIG_FSL_DPAA2_ETHSW) += dpaa2-ethsw.o > > > > -dpaa2-ethsw-objs := dpsw.o > > +dpaa2-ethsw-objs := ethsw.o dpsw.o > > diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c b/drivers/staging/fsl- > > dpaa2/ethsw/ethsw.c > > new file mode 100644 > > index 000..ae86078 > > --- /dev/null > > +++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c > > @@ -0,0 +1,1523 @@ > > +/* Copyright 2014-2016 Freescale Semiconductor Inc. > > + * Copyright 2017 NXP > > + * > > + * Redistribution and use in source and binary forms, with or without > > + * modification, are permitted provided that the following conditions are > > met: > > + * * Redistributions of source code must retain the above copyright > > + * notice, this list of conditions and the following disclaimer. > > + * * Redistributions in binary form must reproduce the above copyright > > + * notice, this list of conditions and the following disclaimer in the > > + * documentation and/or other materials provided with the distribution. > > + * * Neither the name of the above-listed copyright holders nor the > > + * names of any contributors may be used to endorse or promote products > > + * derived from this software without specific prior written permission. > > + * > > + * > > + * ALTERNATIVELY, this software may be distributed under the terms of the > > + * GNU General Public License ("GPL") as published by the Free Software > > + * Foundation, either version 2 of that License or (at your option) any > > + * later version. > > + * > > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND > CONTRIBUTORS "AS IS" > > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > LIMITED TO, THE > > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A > PARTICULAR PURPOSE > > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR > CONTRIBUTORS BE > > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, > PROCUREMENT OF > > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR > BUSINESS > > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, > WHETHER IN > > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR > OTHERWISE) > > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF > ADVISED OF THE > > + * POSSIBILITY OF SUCH DAMAGE. > > + */ > > + > > +#include > > + > > +#include > > +#include > > +#include > > +#include > > + > > +#include "../../fsl-mc/include/mc.h" > > + > > +#include "ethsw.h" > > + > > +static struct workqueue_struct *ethsw_owq; > > + > > +/* Minimal supported DPSW version */ > > +#define DPSW_MIN_VER_MAJOR 8 > > +#define DPSW_MIN_VER_MINOR 0 > > + > > +#define DEFAULT_VLAN_ID1 > > + > > +static int ethsw_add_vlan(struct ethsw_core *ethsw, u16 vid) > > +{ > > + int err; > > + > > + struct dpsw_vlan_cfgvcfg = { > > + .fdb_id = 0, > > + }; > >
RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
> Introduce the DPAA2 Ethernet Switch driver, which manages Datapath Switch > (DPSW) objects discovered on the MC bus. > > Suggested-by: Alexandru Marginean> Signed-off-by: Razvan Stefanescu > --- > drivers/staging/fsl-dpaa2/ethsw/Makefile |2 +- > drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 1523 > ++ > drivers/staging/fsl-dpaa2/ethsw/ethsw.h | 88 ++ > 3 files changed, 1612 insertions(+), 1 deletion(-) > create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.c > create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.h > > diff --git a/drivers/staging/fsl-dpaa2/ethsw/Makefile b/drivers/staging/fsl- > dpaa2/ethsw/Makefile > index db137f7..a6d72d1 100644 > --- a/drivers/staging/fsl-dpaa2/ethsw/Makefile > +++ b/drivers/staging/fsl-dpaa2/ethsw/Makefile > @@ -4,4 +4,4 @@ > > obj-$(CONFIG_FSL_DPAA2_ETHSW) += dpaa2-ethsw.o > > -dpaa2-ethsw-objs := dpsw.o > +dpaa2-ethsw-objs := ethsw.o dpsw.o > diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c b/drivers/staging/fsl- > dpaa2/ethsw/ethsw.c > new file mode 100644 > index 000..ae86078 > --- /dev/null > +++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c > @@ -0,0 +1,1523 @@ > +/* Copyright 2014-2016 Freescale Semiconductor Inc. > + * Copyright 2017 NXP > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions are > met: > + * * Redistributions of source code must retain the above copyright > + *notice, this list of conditions and the following disclaimer. > + * * Redistributions in binary form must reproduce the above copyright > + *notice, this list of conditions and the following disclaimer in the > + *documentation and/or other materials provided with the distribution. > + * * Neither the name of the above-listed copyright holders nor the > + *names of any contributors may be used to endorse or promote products > + *derived from this software without specific prior written permission. > + * > + * > + * ALTERNATIVELY, this software may be distributed under the terms of the > + * GNU General Public License ("GPL") as published by the Free Software > + * Foundation, either version 2 of that License or (at your option) any > + * later version. > + * > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS > IS" > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > + * POSSIBILITY OF SUCH DAMAGE. > + */ > + > +#include > + > +#include > +#include > +#include > +#include > + > +#include "../../fsl-mc/include/mc.h" > + > +#include "ethsw.h" > + > +static struct workqueue_struct *ethsw_owq; > + > +/* Minimal supported DPSW version */ > +#define DPSW_MIN_VER_MAJOR 8 > +#define DPSW_MIN_VER_MINOR 0 > + > +#define DEFAULT_VLAN_ID 1 > + > +static int ethsw_add_vlan(struct ethsw_core *ethsw, u16 vid) > +{ > + int err; > + > + struct dpsw_vlan_cfgvcfg = { > + .fdb_id = 0, > + }; > + > + if (ethsw->vlans[vid]) { > + dev_err(ethsw->dev, "VLAN already configured\n"); > + return -EEXIST; > + } > + > + err = dpsw_vlan_add(ethsw->mc_io, 0, > + ethsw->dpsw_handle, vid, ); > + if (err) { > + dev_err(ethsw->dev, "dpsw_vlan_add err %d\n", err); > + return err; > + } > + ethsw->vlans[vid] = ETHSW_VLAN_MEMBER;/ > + > + return 0; > +} > + > +static int ethsw_port_add_vlan(struct ethsw_port_priv *port_priv, > +u16 vid, u16 flags) > +{ > + struct ethsw_core *ethsw = port_priv->ethsw_data; > + struct net_device *netdev = port_priv->netdev; > + struct dpsw_vlan_if_cfg vcfg; > + bool is_oper; > + int err, err2; Mild suggestion - s/err2/ret/, just because it sounds better, at least to me (same for similar situations in the rest of the file). > + > + if (port_priv->vlans[vid]) { > + netdev_warn(netdev, "VLAN %d already configured\n", vid); > + return -EEXIST; > + } > + > + vcfg.num_ifs = 1; > + vcfg.if_id[0] = port_priv->idx; > + err = dpsw_vlan_add_if(ethsw->mc_io, 0, ethsw->dpsw_handle, vid, ); > + if (err) { > +
RE: [RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
> Introduce the DPAA2 Ethernet Switch driver, which manages Datapath Switch > (DPSW) objects discovered on the MC bus. > > Suggested-by: Alexandru Marginean > Signed-off-by: Razvan Stefanescu > --- > drivers/staging/fsl-dpaa2/ethsw/Makefile |2 +- > drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 1523 > ++ > drivers/staging/fsl-dpaa2/ethsw/ethsw.h | 88 ++ > 3 files changed, 1612 insertions(+), 1 deletion(-) > create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.c > create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.h > > diff --git a/drivers/staging/fsl-dpaa2/ethsw/Makefile b/drivers/staging/fsl- > dpaa2/ethsw/Makefile > index db137f7..a6d72d1 100644 > --- a/drivers/staging/fsl-dpaa2/ethsw/Makefile > +++ b/drivers/staging/fsl-dpaa2/ethsw/Makefile > @@ -4,4 +4,4 @@ > > obj-$(CONFIG_FSL_DPAA2_ETHSW) += dpaa2-ethsw.o > > -dpaa2-ethsw-objs := dpsw.o > +dpaa2-ethsw-objs := ethsw.o dpsw.o > diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c b/drivers/staging/fsl- > dpaa2/ethsw/ethsw.c > new file mode 100644 > index 000..ae86078 > --- /dev/null > +++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c > @@ -0,0 +1,1523 @@ > +/* Copyright 2014-2016 Freescale Semiconductor Inc. > + * Copyright 2017 NXP > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions are > met: > + * * Redistributions of source code must retain the above copyright > + *notice, this list of conditions and the following disclaimer. > + * * Redistributions in binary form must reproduce the above copyright > + *notice, this list of conditions and the following disclaimer in the > + *documentation and/or other materials provided with the distribution. > + * * Neither the name of the above-listed copyright holders nor the > + *names of any contributors may be used to endorse or promote products > + *derived from this software without specific prior written permission. > + * > + * > + * ALTERNATIVELY, this software may be distributed under the terms of the > + * GNU General Public License ("GPL") as published by the Free Software > + * Foundation, either version 2 of that License or (at your option) any > + * later version. > + * > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS > IS" > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > + * POSSIBILITY OF SUCH DAMAGE. > + */ > + > +#include > + > +#include > +#include > +#include > +#include > + > +#include "../../fsl-mc/include/mc.h" > + > +#include "ethsw.h" > + > +static struct workqueue_struct *ethsw_owq; > + > +/* Minimal supported DPSW version */ > +#define DPSW_MIN_VER_MAJOR 8 > +#define DPSW_MIN_VER_MINOR 0 > + > +#define DEFAULT_VLAN_ID 1 > + > +static int ethsw_add_vlan(struct ethsw_core *ethsw, u16 vid) > +{ > + int err; > + > + struct dpsw_vlan_cfgvcfg = { > + .fdb_id = 0, > + }; > + > + if (ethsw->vlans[vid]) { > + dev_err(ethsw->dev, "VLAN already configured\n"); > + return -EEXIST; > + } > + > + err = dpsw_vlan_add(ethsw->mc_io, 0, > + ethsw->dpsw_handle, vid, ); > + if (err) { > + dev_err(ethsw->dev, "dpsw_vlan_add err %d\n", err); > + return err; > + } > + ethsw->vlans[vid] = ETHSW_VLAN_MEMBER;/ > + > + return 0; > +} > + > +static int ethsw_port_add_vlan(struct ethsw_port_priv *port_priv, > +u16 vid, u16 flags) > +{ > + struct ethsw_core *ethsw = port_priv->ethsw_data; > + struct net_device *netdev = port_priv->netdev; > + struct dpsw_vlan_if_cfg vcfg; > + bool is_oper; > + int err, err2; Mild suggestion - s/err2/ret/, just because it sounds better, at least to me (same for similar situations in the rest of the file). > + > + if (port_priv->vlans[vid]) { > + netdev_warn(netdev, "VLAN %d already configured\n", vid); > + return -EEXIST; > + } > + > + vcfg.num_ifs = 1; > + vcfg.if_id[0] = port_priv->idx; > + err = dpsw_vlan_add_if(ethsw->mc_io, 0, ethsw->dpsw_handle, vid, ); > + if (err) { > + netdev_err(netdev, "dpsw_vlan_add_if err %d\n", err); > +
[RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
Introduce the DPAA2 Ethernet Switch driver, which manages Datapath Switch (DPSW) objects discovered on the MC bus. Suggested-by: Alexandru MargineanSigned-off-by: Razvan Stefanescu --- drivers/staging/fsl-dpaa2/ethsw/Makefile |2 +- drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 1523 ++ drivers/staging/fsl-dpaa2/ethsw/ethsw.h | 88 ++ 3 files changed, 1612 insertions(+), 1 deletion(-) create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.c create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.h diff --git a/drivers/staging/fsl-dpaa2/ethsw/Makefile b/drivers/staging/fsl-dpaa2/ethsw/Makefile index db137f7..a6d72d1 100644 --- a/drivers/staging/fsl-dpaa2/ethsw/Makefile +++ b/drivers/staging/fsl-dpaa2/ethsw/Makefile @@ -4,4 +4,4 @@ obj-$(CONFIG_FSL_DPAA2_ETHSW) += dpaa2-ethsw.o -dpaa2-ethsw-objs := dpsw.o +dpaa2-ethsw-objs := ethsw.o dpsw.o diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c new file mode 100644 index 000..ae86078 --- /dev/null +++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c @@ -0,0 +1,1523 @@ +/* Copyright 2014-2016 Freescale Semiconductor Inc. + * Copyright 2017 NXP + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the above-listed copyright holders nor the + * names of any contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include +#include +#include +#include + +#include "../../fsl-mc/include/mc.h" + +#include "ethsw.h" + +static struct workqueue_struct *ethsw_owq; + +/* Minimal supported DPSW version */ +#define DPSW_MIN_VER_MAJOR 8 +#define DPSW_MIN_VER_MINOR 0 + +#define DEFAULT_VLAN_ID1 + +static int ethsw_add_vlan(struct ethsw_core *ethsw, u16 vid) +{ + int err; + + struct dpsw_vlan_cfgvcfg = { + .fdb_id = 0, + }; + + if (ethsw->vlans[vid]) { + dev_err(ethsw->dev, "VLAN already configured\n"); + return -EEXIST; + } + + err = dpsw_vlan_add(ethsw->mc_io, 0, + ethsw->dpsw_handle, vid, ); + if (err) { + dev_err(ethsw->dev, "dpsw_vlan_add err %d\n", err); + return err; + } + ethsw->vlans[vid] = ETHSW_VLAN_MEMBER; + + return 0; +} + +static int ethsw_port_add_vlan(struct ethsw_port_priv *port_priv, + u16 vid, u16 flags) +{ + struct ethsw_core *ethsw = port_priv->ethsw_data; + struct net_device *netdev = port_priv->netdev; + struct dpsw_vlan_if_cfg vcfg; + bool is_oper; + int err, err2; + + if (port_priv->vlans[vid]) { + netdev_warn(netdev, "VLAN %d already configured\n", vid); + return -EEXIST; + } + + vcfg.num_ifs = 1; + vcfg.if_id[0] = port_priv->idx; + err = dpsw_vlan_add_if(ethsw->mc_io, 0, ethsw->dpsw_handle, vid, ); + if (err) { + netdev_err(netdev, "dpsw_vlan_add_if err %d\n", err); + return err; + } + + port_priv->vlans[vid] = ETHSW_VLAN_MEMBER; + + if (flags & BRIDGE_VLAN_INFO_UNTAGGED) { + err = dpsw_vlan_add_if_untagged(ethsw->mc_io, 0, +
[RESEND PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
Introduce the DPAA2 Ethernet Switch driver, which manages Datapath Switch (DPSW) objects discovered on the MC bus. Suggested-by: Alexandru Marginean Signed-off-by: Razvan Stefanescu --- drivers/staging/fsl-dpaa2/ethsw/Makefile |2 +- drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 1523 ++ drivers/staging/fsl-dpaa2/ethsw/ethsw.h | 88 ++ 3 files changed, 1612 insertions(+), 1 deletion(-) create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.c create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.h diff --git a/drivers/staging/fsl-dpaa2/ethsw/Makefile b/drivers/staging/fsl-dpaa2/ethsw/Makefile index db137f7..a6d72d1 100644 --- a/drivers/staging/fsl-dpaa2/ethsw/Makefile +++ b/drivers/staging/fsl-dpaa2/ethsw/Makefile @@ -4,4 +4,4 @@ obj-$(CONFIG_FSL_DPAA2_ETHSW) += dpaa2-ethsw.o -dpaa2-ethsw-objs := dpsw.o +dpaa2-ethsw-objs := ethsw.o dpsw.o diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c new file mode 100644 index 000..ae86078 --- /dev/null +++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c @@ -0,0 +1,1523 @@ +/* Copyright 2014-2016 Freescale Semiconductor Inc. + * Copyright 2017 NXP + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the above-listed copyright holders nor the + * names of any contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include +#include +#include +#include + +#include "../../fsl-mc/include/mc.h" + +#include "ethsw.h" + +static struct workqueue_struct *ethsw_owq; + +/* Minimal supported DPSW version */ +#define DPSW_MIN_VER_MAJOR 8 +#define DPSW_MIN_VER_MINOR 0 + +#define DEFAULT_VLAN_ID1 + +static int ethsw_add_vlan(struct ethsw_core *ethsw, u16 vid) +{ + int err; + + struct dpsw_vlan_cfgvcfg = { + .fdb_id = 0, + }; + + if (ethsw->vlans[vid]) { + dev_err(ethsw->dev, "VLAN already configured\n"); + return -EEXIST; + } + + err = dpsw_vlan_add(ethsw->mc_io, 0, + ethsw->dpsw_handle, vid, ); + if (err) { + dev_err(ethsw->dev, "dpsw_vlan_add err %d\n", err); + return err; + } + ethsw->vlans[vid] = ETHSW_VLAN_MEMBER; + + return 0; +} + +static int ethsw_port_add_vlan(struct ethsw_port_priv *port_priv, + u16 vid, u16 flags) +{ + struct ethsw_core *ethsw = port_priv->ethsw_data; + struct net_device *netdev = port_priv->netdev; + struct dpsw_vlan_if_cfg vcfg; + bool is_oper; + int err, err2; + + if (port_priv->vlans[vid]) { + netdev_warn(netdev, "VLAN %d already configured\n", vid); + return -EEXIST; + } + + vcfg.num_ifs = 1; + vcfg.if_id[0] = port_priv->idx; + err = dpsw_vlan_add_if(ethsw->mc_io, 0, ethsw->dpsw_handle, vid, ); + if (err) { + netdev_err(netdev, "dpsw_vlan_add_if err %d\n", err); + return err; + } + + port_priv->vlans[vid] = ETHSW_VLAN_MEMBER; + + if (flags & BRIDGE_VLAN_INFO_UNTAGGED) { + err = dpsw_vlan_add_if_untagged(ethsw->mc_io, 0, + ethsw->dpsw_handle, + vid,
[PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
Introduce the DPAA2 Ethernet Switch driver, which manages Datapath Switch (DPSW) objects discovered on the MC bus. Suggested-by: Alexandru MargineanSigned-off-by: Razvan Stefanescu --- drivers/staging/fsl-dpaa2/ethsw/Makefile |2 +- drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 1523 ++ drivers/staging/fsl-dpaa2/ethsw/ethsw.h | 88 ++ 3 files changed, 1612 insertions(+), 1 deletion(-) create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.c create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.h diff --git a/drivers/staging/fsl-dpaa2/ethsw/Makefile b/drivers/staging/fsl-dpaa2/ethsw/Makefile index db137f7..a6d72d1 100644 --- a/drivers/staging/fsl-dpaa2/ethsw/Makefile +++ b/drivers/staging/fsl-dpaa2/ethsw/Makefile @@ -4,4 +4,4 @@ obj-$(CONFIG_FSL_DPAA2_ETHSW) += dpaa2-ethsw.o -dpaa2-ethsw-objs := dpsw.o +dpaa2-ethsw-objs := ethsw.o dpsw.o diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c new file mode 100644 index 000..ae86078 --- /dev/null +++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c @@ -0,0 +1,1523 @@ +/* Copyright 2014-2016 Freescale Semiconductor Inc. + * Copyright 2017 NXP + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the above-listed copyright holders nor the + * names of any contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include +#include +#include +#include + +#include "../../fsl-mc/include/mc.h" + +#include "ethsw.h" + +static struct workqueue_struct *ethsw_owq; + +/* Minimal supported DPSW version */ +#define DPSW_MIN_VER_MAJOR 8 +#define DPSW_MIN_VER_MINOR 0 + +#define DEFAULT_VLAN_ID1 + +static int ethsw_add_vlan(struct ethsw_core *ethsw, u16 vid) +{ + int err; + + struct dpsw_vlan_cfgvcfg = { + .fdb_id = 0, + }; + + if (ethsw->vlans[vid]) { + dev_err(ethsw->dev, "VLAN already configured\n"); + return -EEXIST; + } + + err = dpsw_vlan_add(ethsw->mc_io, 0, + ethsw->dpsw_handle, vid, ); + if (err) { + dev_err(ethsw->dev, "dpsw_vlan_add err %d\n", err); + return err; + } + ethsw->vlans[vid] = ETHSW_VLAN_MEMBER; + + return 0; +} + +static int ethsw_port_add_vlan(struct ethsw_port_priv *port_priv, + u16 vid, u16 flags) +{ + struct ethsw_core *ethsw = port_priv->ethsw_data; + struct net_device *netdev = port_priv->netdev; + struct dpsw_vlan_if_cfg vcfg; + bool is_oper; + int err, err2; + + if (port_priv->vlans[vid]) { + netdev_warn(netdev, "VLAN %d already configured\n", vid); + return -EEXIST; + } + + vcfg.num_ifs = 1; + vcfg.if_id[0] = port_priv->idx; + err = dpsw_vlan_add_if(ethsw->mc_io, 0, ethsw->dpsw_handle, vid, ); + if (err) { + netdev_err(netdev, "dpsw_vlan_add_if err %d\n", err); + return err; + } + + port_priv->vlans[vid] = ETHSW_VLAN_MEMBER; + + if (flags & BRIDGE_VLAN_INFO_UNTAGGED) { + err = dpsw_vlan_add_if_untagged(ethsw->mc_io, 0, +
[PATCH 2/6] staging: fsl-dpaa2/ethsw: Add Freescale DPAA2 Ethernet Switch driver
Introduce the DPAA2 Ethernet Switch driver, which manages Datapath Switch (DPSW) objects discovered on the MC bus. Suggested-by: Alexandru Marginean Signed-off-by: Razvan Stefanescu --- drivers/staging/fsl-dpaa2/ethsw/Makefile |2 +- drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 1523 ++ drivers/staging/fsl-dpaa2/ethsw/ethsw.h | 88 ++ 3 files changed, 1612 insertions(+), 1 deletion(-) create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.c create mode 100644 drivers/staging/fsl-dpaa2/ethsw/ethsw.h diff --git a/drivers/staging/fsl-dpaa2/ethsw/Makefile b/drivers/staging/fsl-dpaa2/ethsw/Makefile index db137f7..a6d72d1 100644 --- a/drivers/staging/fsl-dpaa2/ethsw/Makefile +++ b/drivers/staging/fsl-dpaa2/ethsw/Makefile @@ -4,4 +4,4 @@ obj-$(CONFIG_FSL_DPAA2_ETHSW) += dpaa2-ethsw.o -dpaa2-ethsw-objs := dpsw.o +dpaa2-ethsw-objs := ethsw.o dpsw.o diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c new file mode 100644 index 000..ae86078 --- /dev/null +++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c @@ -0,0 +1,1523 @@ +/* Copyright 2014-2016 Freescale Semiconductor Inc. + * Copyright 2017 NXP + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the above-listed copyright holders nor the + * names of any contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#include +#include +#include +#include + +#include "../../fsl-mc/include/mc.h" + +#include "ethsw.h" + +static struct workqueue_struct *ethsw_owq; + +/* Minimal supported DPSW version */ +#define DPSW_MIN_VER_MAJOR 8 +#define DPSW_MIN_VER_MINOR 0 + +#define DEFAULT_VLAN_ID1 + +static int ethsw_add_vlan(struct ethsw_core *ethsw, u16 vid) +{ + int err; + + struct dpsw_vlan_cfgvcfg = { + .fdb_id = 0, + }; + + if (ethsw->vlans[vid]) { + dev_err(ethsw->dev, "VLAN already configured\n"); + return -EEXIST; + } + + err = dpsw_vlan_add(ethsw->mc_io, 0, + ethsw->dpsw_handle, vid, ); + if (err) { + dev_err(ethsw->dev, "dpsw_vlan_add err %d\n", err); + return err; + } + ethsw->vlans[vid] = ETHSW_VLAN_MEMBER; + + return 0; +} + +static int ethsw_port_add_vlan(struct ethsw_port_priv *port_priv, + u16 vid, u16 flags) +{ + struct ethsw_core *ethsw = port_priv->ethsw_data; + struct net_device *netdev = port_priv->netdev; + struct dpsw_vlan_if_cfg vcfg; + bool is_oper; + int err, err2; + + if (port_priv->vlans[vid]) { + netdev_warn(netdev, "VLAN %d already configured\n", vid); + return -EEXIST; + } + + vcfg.num_ifs = 1; + vcfg.if_id[0] = port_priv->idx; + err = dpsw_vlan_add_if(ethsw->mc_io, 0, ethsw->dpsw_handle, vid, ); + if (err) { + netdev_err(netdev, "dpsw_vlan_add_if err %d\n", err); + return err; + } + + port_priv->vlans[vid] = ETHSW_VLAN_MEMBER; + + if (flags & BRIDGE_VLAN_INFO_UNTAGGED) { + err = dpsw_vlan_add_if_untagged(ethsw->mc_io, 0, + ethsw->dpsw_handle, + vid,