[PATCH bluetooth-next 00/16] ieee802154: 6lowpan: cleanup and rework dispatch evaluation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

this patch series contains a rework of 802.15.4 6LoWPAN receive handling.
We need to check on some things before which never checked before, like
is 802.15.4 dataframe, if we can access skb->data[0] (could be that skb->len
is 0 then), etc.

Also various bug fixes like the masking for fragmentation dispatch value which
is currently wrong. Also we should again check the dispatch value after successful
reassembly a fragment, we currently assume always a iphc header there. This is wrong
it could also be a non-compressed header. This can occur if the compressed header is
larger than lower interface MTU size, we doesn't react on this while transmit which
is another issue. Nevertheless we also don't reach this case at worst-case compression
currently.

I introduced a complete new handling for the dispatch values based on mac80211
receive handling mechanism.

- Alex

Cc: Jukka Rissanen <jukka.rissanen@xxxxxxxxxxxxxxx>

changes since PATCH:
 - rebase to current bluetooth-next/master
 - remove unnecessary else branch in fragmentation handling
 - add more detailed "why" in the commit message of "ieee802154: 6lowpan:
   register packet layer while open"
 - replace magic numbers for getting dgram size high bytes by some defines.
 - Add the "Updated Last" date at iana code commentary for dispatch values. 
 - Add Jukka into Cc: because we touch the 6LoWPAN generic branch. (Should only
   802.15.4 related changes there, see "ieee820154: 6lowpan: dispatch
   evaluation rework"
 - Add several "Reviewed-by: Stefan Schmidt <stefan@xxxxxxxxxxxxxxx>", thanks
   for giving some feedback. 

changes since v2:
 - I know there is some patch on net-next which occurs in merge conflicts, I
   will wait until this patch is in bluetooth-next before sending as PATCH.
 - fix the "ieee820154: 6lowpan: dispatch evaluation rework" by also doing
   dispatch evaluation on FRAG1. Also we do now FRAG1 uncompression (if iphc)
   on-the-fly. This is currently solved by doing special lltype handling
   in generic 6LoWPAN. Maybe we can introduce some "payload_len" parameter
   to the uncompression functions, to avoid the use of skb->cb.
   The complete patch looks different now, I fixup also some other patches into
   this patch.
   Also add skb_unshare on dispatches where we manipulate the skb data.
   Change address handling for fragmentation for parse again skb_mac_header instead
   using skb->cb which was filled from lower layer.
 - replace the removal of wdev running patch "ieee802154: 6lowpan: change if
   lowpan dev is running".
 - add lowpan_dff dispatch.
 - change reserved dispatch values to use ranges.
 - add "ieee802154: 6lowpan: register packet layer while open".
 - add "ieee802154: 6lowpan: remove check on null".
 - change order at "ieee802154: 6lowpan: trivial checks at" to check on
   "wdev->type != ARPHRD_IEEE802154" at first.
 - change "ieee802154: 6lowpan: check on valid 802.15.4 frame", we don't need
   to check on addr none. Dataframes which belongs to a "node" type should always
   have source and destination addresses. This need to be handled in the lower layers.
 - add "ieee802154: 6lowpan: remove tx full-size" which removes a ugly workaround
   to calculate the full size of iphc packet. We don't need it since we use FRAG1
   uncompression on the fly. Also change this behaviour for transmit and remove
   the ugly workaround functions.

Alexander Aring (16):
  ieee802154: 6lowpan: change dev vars to wdev and ldev
  ieee802154: 6lowpan: register packet layer while open
  ieee802154: 6lowpan: remove check on null
  ieee802154: 6lowpan: remove set to zero
  ieee802154: 6lowpan: remove EXPORT_SYMBOL
  ieee802154: 6lowpan: change if lowpan dev is running
  ieee802154: 6lowpan: cleanup pull of iphc bytes
  ieee802154: 6lowpan: trivial checks at first
  ieee802154: 6lowpan: earlier skb->dev switch
  ieee820154: 6lowpan: dispatch evaluation rework
  ieee802154: 6lowpan: add generic lowpan header check
  ieee802154: 6lowpan: add handler for all dispatch values
  ieee802154: 6lowpan: add check for reserved dispatch
  ieee802154: 6lowpan: check on valid 802.15.4 frame
  ieee802154: 6lowpan: remove packet type to host
  ieee802154: 6lowpan: remove tx full-size calc workaround

 include/linux/ieee802154.h          |  25 +++
 include/net/6lowpan.h               | 144 +++------------
 include/net/mac802154.h             |  15 ++
 net/6lowpan/iphc.c                  |  13 +-
 net/6lowpan/nhc_udp.c               |  13 +-
 net/ieee802154/6lowpan/6lowpan_i.h  |  14 +-
 net/ieee802154/6lowpan/core.c       | 116 ++++++------
 net/ieee802154/6lowpan/reassembly.c | 157 +++++++++++-----
 net/ieee802154/6lowpan/rx.c         | 352 ++++++++++++++++++++++++++++--------
 net/ieee802154/6lowpan/tx.c         |  51 +++---
 10 files changed, 572 insertions(+), 328 deletions(-)

-- 
2.5.1

--
To unsubscribe from this list: send the line "unsubscribe linux-wpan" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux