13 Apr, 2017

2 commits

  • According to RFC 7668 U/L bit shall not be used:

    https://wiki.tools.ietf.org/html/rfc7668#section-3.2.2 [Page 10]:

    In the figure, letter 'b' represents a bit from the
    Bluetooth device address, copied as is without any changes on any
    bit. This means that no bit in the IID indicates whether the
    underlying Bluetooth device address is public or random.

    |0 1|1 3|3 4|4 6|
    |0 5|6 1|2 7|8 3|
    +----------------+----------------+----------------+----------------+
    |bbbbbbbbbbbbbbbb|bbbbbbbb11111111|11111110bbbbbbbb|bbbbbbbbbbbbbbbb|
    +----------------+----------------+----------------+----------------+

    Because of this the code cannot figure out the address type from the IP
    address anymore thus it makes no sense to use peer_lookup_ba as it needs
    the peer address type.

    Signed-off-by: Luiz Augusto von Dentz
    Reviewed-by: Stefan Schmidt
    Acked-by: Jukka Rissanen
    Signed-off-by: Marcel Holtmann

    Luiz Augusto von Dentz
     
  • This allow technologies such as Bluetooth to use its native lladdr which
    is eui48 instead of eui64 which was expected by functions like
    lowpan_header_decompress and lowpan_header_compress.

    Signed-off-by: Luiz Augusto von Dentz
    Reviewed-by: Stefan Schmidt
    Signed-off-by: Marcel Holtmann

    Luiz Augusto von Dentz
     

16 Jun, 2016

2 commits

  • This patch adds the autoconfiguration if a valid 802.15.4 short address
    is available for 802.15.4 6LoWPAN interfaces.

    Cc: David S. Miller
    Cc: Alexey Kuznetsov
    Cc: James Morris
    Cc: Hideaki YOSHIFUJI
    Cc: Patrick McHardy
    Acked-by: Hannes Frederic Sowa
    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: David S. Miller

    Alexander Aring
     
  • This patch will introduce a 6lowpan neighbour private data. Like the
    interface private data we handle private data for generic 6lowpan and
    for link-layer specific 6lowpan.

    The current first use case if to save the short address for a 802.15.4
    6lowpan neighbour.

    Cc: David S. Miller
    Reviewed-by: Stefan Schmidt
    Acked-by: YOSHIFUJI Hideaki
    Signed-off-by: Alexander Aring
    Signed-off-by: David S. Miller

    Alexander Aring
     

13 Apr, 2016

4 commits

  • In case of link-layer specific handling for 802.15.4 we need to cast to
    802.15.4 sepcific structures. Simple add this header when include the
    6lowpan header.

    Signed-off-by: Alexander Aring
    Reviewed-by: Stefan Schmidt
    Acked-by: Jukka Rissanen
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This function will be use in later functionality in other branches than
    generic 6lowpan, so we move it to the global 6lowpan header.

    Signed-off-by: Alexander Aring
    Reviewed-by: Stefan Schmidt
    Acked-by: Jukka Rissanen
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch moves the 802.15.4 link layer specific structures to generic
    6lowpan. This is necessary for special 802.15.4 6lowpan handling in
    6lowpan generic layer.

    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Acked-by: Jukka Rissanen
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch changes the naming for interface private data for lowpan
    intefaces. The current private data scheme is:

    -------------------------------------------------
    | 6LoWPAN Generic | LinkLayer 6LoWPAN |
    -------------------------------------------------

    the current naming schemes are:

    - 6LoWPAN Generic:
    - lowpan_priv
    - LinkLayer 6LoWPAN:
    - BTLE
    - lowpan_dev
    - 802.15.4:
    - lowpan_dev_info

    the new naming scheme with this patch will be:

    - 6LoWPAN Generic:
    - lowpan_dev
    - LinkLayer 6LoWPAN:
    - BTLE
    - lowpan_btle_dev
    - 802.15.4:
    - lowpan_802154_dev

    Signed-off-by: Alexander Aring
    Reviewed-by: Stefan Schmidt
    Acked-by: Jukka Rissanen
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

24 Feb, 2016

1 commit

  • This patch introduce support for IPHC stateful address compression. It
    will offer the context table via one debugfs entry.
    This debugfs has and directory for each cid entry for the context table.
    Inside each cid directory there exists the following files:

    - "active": If the entry is added or deleted. The context table is
    original a list implementation, this flag will indicate if the
    context is part of list or not.
    - "prefix": The ipv6 prefix.
    - "prefix_length": The prefix length for the prefix.
    - "compression": The compression flag according RFC6775.

    This part should be moved into sysfs after some testing time.

    Also the debugfs entry contains a "show" file which is a pretty-printout
    for the current context table information.

    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

10 Dec, 2015

2 commits

  • This patch will introduce a 6lowpan entry into the debugfs if enabled.
    Inside this 6lowpan directory we create a subdirectories of all 6lowpan
    interfaces to offer a per interface debugfs support.

    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch introduces register and unregister functionality for lowpan
    interfaces. While register a lowpan interface there are several things
    which need to be initialize by the 6lowpan subsystem. Upcoming
    functionality need to register/unregister per interface components e.g.
    debugfs entry.

    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

21 Oct, 2015

6 commits

  • This macro is used at 802.15.4 6LoWPAN only and can be replaced by
    memcmp with the interface broadcast address.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch removes the IPHC related defines for doing bit manipulation
    from global 6lowpan header to the iphc file which should the only one
    implementation which use these defines.

    Also move next header compression defines to their nhc implementation.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch removes the lowpan_fetch_skb_u8 function for getting the iphc
    bytes. Instead we using the generic which has a len parameter to tell
    the amount of bytes to fetch.

    Signed-off-by: Alexander Aring
    Acked-by: Jukka Rissanen
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch changes the lowpan_header_decompress function by removing
    inklayer related information from parameters. This is currently for
    supporting short and extended address for iphc handling in 802154.
    We don't support short address handling anyway right now, but there
    exists already code for handling short addresses in
    lowpan_header_decompress.

    The address parameters are also changed to a void pointer, so 6LoWPAN
    linklayer specific code can put complex structures as these parameters
    and cast it again inside the generic code by evaluating linklayer type
    before. The order is also changed by destination address at first and
    then source address, which is the same like all others functions where
    destination is always the first, memcpy, dev_hard_header,
    lowpan_header_compress, etc.

    This patch also moves the fetching of iphc values from 6LoWPAN linklayer
    specific code into the generic branch.

    Signed-off-by: Alexander Aring
    Acked-by: Jukka Rissanen
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch changes the lowpan_header_compress function by removing
    unused parameters like "len" and drop static value parameters of
    protocol type. Instead we really check the protocol type inside inside
    the skb structure. Also we drop the use of IEEE802154_ADDR_LEN which is
    link-layer specific. Instead we using EUI64_ADDR_LEN which should always
    the default case for now.

    Signed-off-by: Alexander Aring
    Acked-by: Jukka Rissanen
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch introduces the LOWPAN_IPHC_MAX_HC_BUF_LEN define which
    represent the worst-case supported IPHC buffer length. It's used to
    allocate the stack buffer space for creating the IPHC header.

    Signed-off-by: Alexander Aring
    Acked-by: Jukka Rissanen
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

08 Oct, 2015

1 commit

  • This patch moves values for all lowpan interface to the shared
    implementation of 6lowpan. This patch also quietly fixes the forgotten
    IFF_NO_QUEUE flag for the bluetooth 6LoWPAN interface. An identically
    commit is 4afbc0d ("net: 6lowpan: convert to using IFF_NO_QUEUE") which
    wasn't changed for bluetooth 6lowpan.

    All 6lowpan interfaces should be virtual with IFF_NO_QUEUE, using EUI64
    address length, the mtu size is 1280 (IPV6_MIN_MTU) and the netdev type
    is ARPHRD_6LOWPAN.

    Signed-off-by: Alexander Aring
    Acked-by: Jukka Rissanen
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

22 Sep, 2015

1 commit

  • This patch cleanups needed_headroom, needed_tailroom and hard_header_len
    fields for wpan and lowpan interfaces.

    For wpan interfaces the worst case mac header len should be part of
    needed_headroom, currently this is set as hard_header_len, but
    hard_header_len should be set to the minimum header length which xmit
    call assumes and this is the minimum frame length of 802.15.4.
    The hard_header_len value will check inside send callbacl of AF_PACKET
    raw sockets.

    For lowpan interfaces, if fragmentation isn't needed the skb will
    call dev_hard_header for 802154 layer and queue it afterwards. This
    happens without new skb allocation, so we need the same headroom and
    tailroom lengths like 802154 inside 802154 6lowpan layer. At least we
    assume as minimum header length an ipv6 header size.

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

17 Sep, 2015

2 commits

  • This patch removes a workaround for datagram_size calculation while
    doing fragmentation on transmit.

    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • This patch complete reworks the evaluation of 6lowpan dispatch value by
    introducing a receive handler mechanism for each dispatch value.

    A list of changes:

    - Doing uncompression on-the-fly when FRAG1 is received, this require
    some special handling for 802.15.4 lltype in generic 6lowpan branch
    for setting the payload length correct.
    - Fix dispatch mask for fragmentation.
    - Add IPv6 dispatch evaluation for FRAG1.
    - Add skb_unshare for dispatch which might manipulate the skb data
    buffer.

    Cc: Jukka Rissanen
    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

12 Aug, 2015

1 commit

  • This patch introduced the 6lowpan netdev private data struct. We name it
    lowpan_priv and it's placed at the beginning of netdev private data. All
    lowpan interfaces should allocate this room at first of netdev private
    data. 6LoWPAN LL private data can be allocate by additional netdev private
    data, e.g. dev->priv_size should be "sizeof(struct lowpan_priv) +
    sizeof(LL_LOWPAN_PRIVATE_DATA)".

    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

27 Oct, 2014

2 commits


31 Jul, 2014

4 commits


21 Apr, 2014

1 commit


07 Mar, 2014

1 commit