04 Oct, 2018

1 commit

  • [ Upstream commit 03bc05e1a4972f73b4eb8907aa373369e825c252 ]

    After decompression of 6lowpan socket data, an IPv6 header is inserted
    before the existing socket payload. After this, we reset the
    network_header value of the skb to account for the difference in payload
    size from prior to decompression + the addition of the IPv6 header.

    However, we fail to reset the mac_header value.

    Leaving the mac_header value untouched here, can cause a calculation
    error in net/packet/af_packet.c packet_rcv() function when an
    AF_PACKET socket is opened in SOCK_RAW mode for use on a 6lowpan
    interface.

    On line 2088, the data pointer is moved backward by the value returned
    from skb_mac_header(). If skb->data is adjusted so that it is before
    the skb->head pointer (which can happen when an old value of mac_header
    is left in place) the kernel generates a panic in net/core/skbuff.c
    line 1717.

    This panic can be generated by BLE 6lowpan interfaces (such as bt0) and
    802.15.4 interfaces (such as lowpan0) as they both use the same 6lowpan
    sources for compression and decompression.

    Signed-off-by: Michael Scott
    Acked-by: Alexander Aring
    Acked-by: Jukka Rissanen
    Signed-off-by: Marcel Holtmann
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Michael Scott
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

13 Apr, 2017

4 commits

  • There is no point in setting IFF_NO_QUEUE should already have taken
    care of setting it if tx_queue_len is not set, in fact this may
    actually disable queue for interfaces that require it and do set
    tx_queue_len.

    Signed-off-by: Luiz Augusto von Dentz
    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
     
  • The skb->pkt_type need to be set by L2, but on 6LoWPAN there exists L2
    e.g. BTLE which doesn't has multicast addressing. If it's a multicast or
    not is detected by IPHC headers multicast bit. The IPv6 layer will
    evaluate this pkt_type, so we force set this type while uncompressing.
    Should be okay for 802.15.4 as well.

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

    Alexander Aring
     
  • Set MAC address length according to the 6LoWPAN link layer in use.
    Bluetooth Low Energy uses 48 bit addressing while IEEE802.15.4 uses
    64 bits.

    Signed-off-by: Patrik Flykt
    Reviewed-by: Stefan Schmidt
    Signed-off-by: Marcel Holtmann

    Patrik Flykt
     

23 Jan, 2017

1 commit


20 Sep, 2016

1 commit

  • This patch removes handling to remove short address for a neigbour entry
    if RS/RA/NS/NA doesn't contain a short address. If these messages
    doesn't has any short address option, the existing short address from
    ndisc cache will be used. The current behaviour will set that the
    neigbour doesn't has a short address anymore.

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

    Alexander Aring
     

08 Jul, 2016

3 commits


16 Jun, 2016

5 commits

  • This patch adds necessary handling for use the short address for
    802.15.4 6lowpan. It contains support for IPHC address compression
    and new matching algorithmn to decide which link layer address will be
    used for 802.15.4 frame.

    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: David S. Miller

    Alexander Aring
     
  • In case of sending RA messages we need some way to get the short address
    from an 802.15.4 6LoWPAN interface. This patch will add a temporary
    debugfs entry for experimental userspace api.

    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: David S. Miller

    Alexander Aring
     
  • This patch introduce different 6lowpan handling for receive and transmit
    NS/NA messages for the ipv6 neighbour discovery. The first use-case is
    for supporting 802.15.4 short addresses inside the option fields and
    handling for RFC6775 6CO option field as userspace option.

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

    Alexander Aring
     
  • Since we use exported function from ipv6 kernel module we don't need to
    request the module anymore to have ipv6 functionality.

    Acked-by: Hannes Frederic Sowa
    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: David S. Miller

    Alexander Aring
     
  • 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
     

13 Apr, 2016

6 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 patch adds the lowpan_is_ll function, which can be used to make a
    special 6lowpan linklayer handling for a specific 6lowpan linklayer
    type.

    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 removes unnecessary zero data for a stack variable.

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

    Alexander Aring
     
  • This patch adds a lowpan prefix to each functions which doesn't have
    such prefix currently.

    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
     

09 Apr, 2016

1 commit

  • This patch fixes handling in case of link-local address compression. A
    IPv6 link-local address is defined as fe80::/10 prefix which is also
    what ipv6_addr_type checks for link-local addresses.

    But IPHC compression for link-local addresses are for fe80::/64 types
    only. This patch adds additional checks for zero padded bits in case of
    link-local address compression to match on a fe80::/64 address only.

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

    Alexander Aring
     

11 Mar, 2016

2 commits


26 Feb, 2016

1 commit

  • This patch fixes the return value in a case which should never occur.
    Instead returning "-EINVAL" we return LOWPAN_IPHC_DAM_00 which is
    invalid on context based addresses. Also change the WARN_ON_ONCE to
    WARN_ONCE which was suggested by Dan Carpenter.

    Reported-by: Dan Carpenter
    Signed-off-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

24 Feb, 2016

3 commits

  • Bool variable 'fail' is always non-negative, it indicates an error if it
    is true.

    The problem has been detected using coccinelle script
    scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci

    Signed-off-by: Andrzej Hajda
    Acked-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Andrzej Hajda
     
  • In case of multicast address we need to set always the LOWPAN_IPHC_M bit
    and if a destination context identifier was found for a multicast
    address then we need to set the LOWPAN_IPHC_DAC as well.

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

    Alexander Aring
     
  • 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
     

20 Dec, 2015

1 commit

  • This patches moves the debugfs interface related register after
    netdevice register. The function lowpan_dev_debugfs_init will use
    "dev->name" which can be before register_netdevice a format string.
    The function register_netdevice will evaluate the format string if
    necessary and replace "dev->name" to the real interface name.

    Reported-by: Lukasz Duda
    Signed-off-by: Alexander Aring
    Acked-by: Lukasz Duda
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

10 Dec, 2015

9 commits


21 Oct, 2015

1 commit