On Tue, 10 Jun 2014 08:26:01 -0700
Eric Dumazet <eric.duma...@gmail.com> wrote:

> On Tue, 2014-06-10 at 17:08 +0200, Phoebe Buckheister wrote:
> > Only one WPAN devices can be active at any given time, so only
> > deliver packets to that one interface that is actually up.
> > 
> > Signed-off-by: Phoebe Buckheister
> > <phoebe.buckheis...@itwm.fraunhofer.de> ---
> >  net/mac802154/wpan.c |   12 +++++++-----
> >  1 file changed, 7 insertions(+), 5 deletions(-)
> > 
> > diff --git a/net/mac802154/wpan.c b/net/mac802154/wpan.c
> > index c8cfd54..1ba648e 100644
> > --- a/net/mac802154/wpan.c
> > +++ b/net/mac802154/wpan.c
> > @@ -567,7 +567,6 @@ static int mac802154_parse_frame_start(struct
> > sk_buff *skb, void mac802154_wpans_rx(struct mac802154_priv *priv,
> > struct sk_buff *skb) {
> >     int ret;
> > -   struct sk_buff *sskb;
> >     struct mac802154_sub_if_data *sdata;
> >     struct ieee802154_hdr hdr;
> >  
> > @@ -579,12 +578,15 @@ void mac802154_wpans_rx(struct mac802154_priv
> > *priv, struct sk_buff *skb) 
> >     rcu_read_lock();
> >     list_for_each_entry_rcu(sdata, &priv->slaves, list) {
> > -           if (sdata->type != IEEE802154_DEV_WPAN)
> > +           if (sdata->type != IEEE802154_DEV_WPAN ||
> > +               !netif_running(sdata->dev))
> >                     continue;
> >  
> > -           sskb = skb_clone(skb, GFP_ATOMIC);
> > -           if (sskb)
> > -                   mac802154_subif_frame(sdata, sskb, &hdr);
> > +           skb = skb_clone(skb, GFP_ATOMIC);
> > +           if (skb)
> > +                   mac802154_subif_frame(sdata, skb, &hdr);
> > +
> > +           break;
> >     }
> >     rcu_read_unlock();
> >  }
> 
> If this is really the case, do not clone the skb, and fix
> mac802154_subif_rx().
> 
> (mac802154_wpans_rx() would always consume the skb)

That's also possible, I guess. mac802154_wpans_rx is the last call,
after all, and I didn't want to muck with that part of the stack too
much (it's already convoluted and not entirely clear). Monitor devices
will still have to clone their skb though - and they as well could
benefit from not queueing packets to inactive devices.

I'll change and resend.

------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
_______________________________________________
Linux-zigbee-devel mailing list
Linux-zigbee-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel

Reply via email to