On Fri, Jul 18, 2014 at 04:57:16PM +0200, Phoebe Buckheister wrote: > On Fri, 18 Jul 2014 16:48:08 +0200 > Alexander Aring <alex.ar...@gmail.com> wrote: > > > Hi, > > > > On Fri, Jul 18, 2014 at 11:16:17AM +0100, Martin Townsend wrote: > > > For IEEE802154_ADDR_NONE it now checks that the frame type for > > > acknowledgement. For the reserved dest mode it frees the skb and > > > returns. > > > > > > Signed-off-by: Martin Townsend <martin.towns...@xsilon.com> > > > --- > > > net/mac802154/wpan.c | 6 ++++-- > > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > > > diff --git a/net/mac802154/wpan.c b/net/mac802154/wpan.c > > > index 3c3069f..70d5307 100644 > > > --- a/net/mac802154/wpan.c > > > +++ b/net/mac802154/wpan.c > > > @@ -433,7 +433,7 @@ mac802154_subif_frame(struct > > > mac802154_sub_if_data *sdata, struct sk_buff *skb, > > > switch (mac_cb(skb)->dest.mode) { > > > case IEEE802154_ADDR_NONE: > > > - if (mac_cb(skb)->dest.mode != IEEE802154_ADDR_NONE) > > > > Okay, this if branch is dead code, I agree with that. > > > > Another thing is this branch can only occur on acknowledgement frames, > > because this kind of frames doesn't contain addresses and it's the > > only kind which doesn't include any addresses. > > > > But we can't handle acknowledgement frames over software. > > According IEEE 802.15.4-2011 standard page 45 acknowledgement is time > > critical and need in between macSIFSPeriod after last symbol of data > > or mac frame. > > > > macSIFSPeriod is phy depended but we can't handle this time critical > > ack handling in software. Some phy's like the at86rf2xx support ack > > handling via hardware. We should drop any ack frames which we receive > > and don't send any ack frames. > > > > We should do nothing here, only a "break;", but first check on frame > > type and do nothing. > > > > > + if (mac_cb(skb)->type != IEEE802154_FC_TYPE_ACK) > > > /* FIXME: check if we are PAN coordinator > > > */ skb->pkt_type = PACKET_OTHERHOST; > > > else > > > @@ -462,7 +462,9 @@ mac802154_subif_frame(struct > > > mac802154_sub_if_data *sdata, struct sk_buff *skb, skb->pkt_type = > > > PACKET_OTHERHOST; break; > > > default: > > > > this branch can't never happen and should be contain a BUG(); or > > something like that. > > No, it should not. The addr mode can be invalid in corrupted frames or > because someone chose to just send an invalid mode to begin with, so > it's not a BUG() to receive one. Emitting a rate-limited warning is > fine, but locking up the machine because someone sent an invalid packet > seems rather harsh. >
I think mode is a masked value with 0x3 and can only between 0 - 3 and "1" is a reserved address type. This is actually the default branch. Maybe we can add the RESERVED ADDR type and handle this with a warning and add in default a BUG(). - Alex ------------------------------------------------------------------------------ Want fast and easy access to all the code in your enterprise? Index and search up to 200,000 lines of code with a free copy of Black Duck Code Sight - the same software that powers the world's largest code search on Ohloh, the Black Duck Open Hub! Try it now. http://p.sf.net/sfu/bds _______________________________________________ Linux-zigbee-devel mailing list Linux-zigbee-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel