[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200126124911.z5zh44agxbe6lwhh@soft-dev3.microsemi.net>
Date: Sun, 26 Jan 2020 13:49:11 +0100
From: Horatiu Vultur <horatiu.vultur@...rochip.com>
To: Andrew Lunn <andrew@...n.ch>
CC: <linux-kernel@...r.kernel.org>, <netdev@...r.kernel.org>,
<bridge@...ts.linux-foundation.org>, <jiri@...nulli.us>,
<ivecera@...hat.com>, <davem@...emloft.net>,
<roopa@...ulusnetworks.com>, <nikolay@...ulusnetworks.com>,
<anirudh.venkataramanan@...el.com>, <olteanv@...il.com>,
<jeffrey.t.kirsher@...el.com>, <UNGLinuxDriver@...rochip.com>
Subject: Re: [RFC net-next v3 09/10] net: bridge: mrp: Integrate MRP into the
bridge
The 01/25/2020 16:42, Andrew Lunn wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> On Fri, Jan 24, 2020 at 05:18:27PM +0100, Horatiu Vultur wrote:
> > To integrate MRP into the bridge, the bridge needs to do the following:
> > - initialized and destroy the generic netlink used by MRP
> > - detect if the MRP frame was received on a port that is part of a MRP ring. In
> > case it was not, then forward the frame as usual, otherwise redirect the frame
> > to the upper layer.
> >
> > Signed-off-by: Horatiu Vultur <horatiu.vultur@...rochip.com>
> > ---
> > net/bridge/br.c | 11 +++++++++++
> > net/bridge/br_device.c | 3 +++
> > net/bridge/br_if.c | 6 ++++++
> > net/bridge/br_input.c | 14 ++++++++++++++
> > net/bridge/br_private.h | 14 ++++++++++++++
> > 5 files changed, 48 insertions(+)
> >
> > diff --git a/net/bridge/br.c b/net/bridge/br.c
> > index b6fe30e3768f..d5e556eed4ba 100644
> > --- a/net/bridge/br.c
> > +++ b/net/bridge/br.c
> > @@ -344,6 +344,12 @@ static int __init br_init(void)
> > if (err)
> > goto err_out5;
> >
> > +#ifdef CONFIG_BRIDGE_MRP
> > + err = br_mrp_netlink_init();
> > + if (err)
> > + goto err_out6;
> > +#endif
>
> Please try to avoid #ifdef's like this in C code. Add a stub function
> to br_private_mrp.h.
>
> If you really cannot avoid #ifdef, please use #if IS_ENABLED(CONFIG_BRIDGE_MRP).
> That expands to
>
> if (0) {
>
> }
>
> So the compiler will compile it and then optimize it out. That gives
> us added benefit of build testing, we don't suddenly find the code no
> longer compiles when we enable the option.
>
> > --- a/net/bridge/br_input.c
> > +++ b/net/bridge/br_input.c
> > @@ -21,6 +21,9 @@
> > #include <linux/rculist.h>
> > #include "br_private.h"
> > #include "br_private_tunnel.h"
> > +#ifdef CONFIG_BRIDGE_MRP
> > +#include "br_private_mrp.h"
> > +#endif
>
> It should always be safe to include a header file.
>
> Andrew
Thanks for pointing out these mistakes. I will try to avoid all these
#ifdef's in the next patch series.
--
/Horatiu
Powered by blists - more mailing lists