26 Apr, 2016

1 commit


27 May, 2015

1 commit

  • In the past, 802.15.4 interfaces and 6LoWPAN interfaces used the
    same dev->type (ARPHRD_IEEE802154), and 802.15.4 interfaces were
    distinguished from 6LoWPAN interfaces by their differing dev->mtu.

    6LoWPAN interfaces have their own ARPHRD type now, so there is no
    longer any need to check dev->mtu to distinguish 802.15.4 devices
    from 6LoWPAN devices.

    Signed-off-by: Lennert Buytenhek
    Acked-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Lennert Buytenhek
     

23 May, 2015

1 commit

  • This patch removes the mib lock. The new locking mechanism is to protect
    the mib values with the rtnl lock. Note that this isn't always necessary
    if we have an interface up the most mib values are readonly (e.g.
    address settings). With this behaviour we can remove locking in
    hotpath like frame parsing completely. It depends on context if we need
    to hold the rtnl lock or not, this makes the callbacks of
    ieee802154_mlme_ops unnecessary because these callbacks hols always the
    locks.

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

    Alexander Aring
     

19 May, 2015

2 commits

  • This patch change the handling of cca energy detection level from dbm to
    mbm. This prepares to handle floating point cca energy detection levels
    values. The old netlink 802.15.4 will convert the dbm value to mbm for
    handling backward compatibility.

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

    Alexander Aring
     
  • This patch change the handling of transmit power level from dbm to mbm.
    This prepares to handle floating point transmit power levels values. The
    old netlink 802.15.4 will convert the dbm value to mbm for handling
    backward compatibility.

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

    Alexander Aring
     

15 Mar, 2015

1 commit

  • The semantic patch that fixes this problem is as follows:
    (http://coccinelle.lip6.fr/)

    //
    @r@
    type T;
    identifier f;
    @@

    static T f (...) { ... }

    @@
    identifier r.f;
    declarer name EXPORT_SYMBOL;
    @@

    -EXPORT_SYMBOL(f);
    //

    Signed-off-by: Julia Lawall
    Acked-by: Alexander Aring
    Signed-off-by: Marcel Holtmann

    Julia Lawall
     

18 Jan, 2015

1 commit

  • Contrary to common expectations for an "int" return, these functions
    return only a positive value -- if used correctly they cannot even
    return 0 because the message header will necessarily be in the skb.

    This makes the very common pattern of

    if (genlmsg_end(...) < 0) { ... }

    be a whole bunch of dead code. Many places also simply do

    return nlmsg_end(...);

    and the caller is expected to deal with it.

    This also commonly (at least for me) causes errors, because it is very
    common to write

    if (my_function(...))
    /* error condition */

    and if my_function() does "return nlmsg_end()" this is of course wrong.

    Additionally, there's not a single place in the kernel that actually
    needs the message length returned, and if anyone needs it later then
    it'll be very easy to just use skb->len there.

    Remove this, and make the functions void. This removes a bunch of dead
    code as described above. The patch adds lines because I did

    - return nlmsg_end(...);
    + nlmsg_end(...);
    + return 0;

    I could have preserved all the function's return values by returning
    skb->len, but instead I've audited all the places calling the affected
    functions and found that none cared. A few places actually compared
    the return value with < 0 with no change in behaviour, so I opted for the more
    efficient version.

    One instance of the error I've made numerous times now is also present
    in net/phonet/pn_netlink.c in the route_dumpit() function - it didn't
    check for
    Signed-off-by: David S. Miller

    Johannes Berg
     

19 Dec, 2014

1 commit

  • The current cca setting handle is a driver specific call. We need to
    introduce some 802.15.4 specific layer and mapping 802.15.4 cca modes to
    driver specific ones inside the 802.15.4 driver. This patch will add
    such 802.15.4 layer and mapping the cca settings to driver specific ones.

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

    Alexander Aring
     

05 Dec, 2014

1 commit


26 Nov, 2014

1 commit


10 Nov, 2014

2 commits

  • This patch adds a hacked solution for an interface dump with a running
    lowpan interface. This will crash because lowpan and wpan interface use
    the same arphdr. To change the arphdr will change the UAPI, this patch
    checks on mtu which should on lowpan interface always different than
    IEEE802154_MTU.

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

    Alexander Aring
     
  • This patch adds rtnl lock hold mechanism while accessing wpan_dev
    attributes. Furthermore these attributes should be protected by rtnl
    lock and netif_running only.

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

    Alexander Aring
     

06 Nov, 2014

2 commits

  • This patch removes the get_phy callback from mlme ops structure. Instead
    we doing a dereference via ieee802154_ptr dev pointer. For backwards
    compatibility we need to run get_device after dereference wpan_phy via
    ieee802154_ptr.

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

    Alexander Aring
     
  • The include/net/nl802154.h file contains a lot of prototypes which are
    not used inside of ieee802154 subsystem. This patch removes this file
    and make the only one used prototype "ieee802154_nl_start_confirm" as
    static declaration in ieee802154/nl-mac.c

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

    Alexander Aring
     

02 Nov, 2014

1 commit

  • This patch changes the actual behaviour for setting address attributes.
    We should not change addresses while netif_running is true. Furthermore
    when netif_running is running the address attributes becomes read only
    and we can remove locking mechanism in receive and transmit hothpaths
    of 802.15.4 subsystem.

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

    Alexander Aring
     

29 Oct, 2014

1 commit


26 Oct, 2014

2 commits

  • This patch moves the ieee802154 header into include/linux instead
    include/net. Similar like wireless which have the ieee80211 header
    inside of include/linux.

    Signed-off-by: Alexander Aring
    Cc: Alan Ott
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     
  • The wpan-phy header contains the wpan_phy struct information. Later this
    header will be have similar function like cfg80211 header. The cfg80211
    header contains the wiphy struct which is identically the wpan_phy
    struct inside 802.15.4 subsystem.

    Signed-off-by: Alexander Aring
    Cc: Alan Ott
    Signed-off-by: Marcel Holtmann

    Alexander Aring
     

25 Oct, 2014

1 commit


08 Jul, 2014

1 commit

  • This patch fixed the coding style issues reported by checkpatch.pl

    following issues fixed:
    CHECK: Alignment should match open parenthesis
    WARNING: line over 80 characters
    CHECK: Blank lines aren't necessary before a close brace '}'
    WARNING: networking block comments don't use an empty /* line, use /* Comment...
    WARNING: Missing a blank line after declarations
    WARNING: networking block comments start with * on subsequent lines
    CHECK: braces {} should be used on all arms of this statement

    Signed-off-by: Varka Bhadram
    Tested-by: Alexander Aring
    Signed-off-by: David S. Miller

    Varka Bhadram
     

23 May, 2014

1 commit


17 May, 2014

1 commit

  • This patch adds user-visible interfaces for the llsec infrastructure.
    For the added methods, the only major difference between all add/remove
    implementation lies in how the specific object is parsed, and for dump
    requests, how objects are written into netlink messages.

    To save on boilerplate code, table dumps are routed through a helper
    function that handles netlink dump state, leaving the actual dumping
    code to care only about iterating over the table to be dumped and
    filling netlink messages. For add/remove methods, the boilerplate
    required to work is not quite as large, but still enough to also move
    into a local helper.

    Signed-off-by: Phoebe Buckheister
    Signed-off-by: David S. Miller

    Phoebe Buckheister
     

02 Apr, 2014

1 commit

  • Commit 9b2777d6089bcd (ieee802154: add TX power control to wpan_phy)
    and following erroneously added CSMA and CCA parameters for 802.15.4
    devices as PHY parameters, while they are actually MAC parameters and
    can differ for any two WPAN instances. Since it is now sensible to have
    multiple WPAN devices with differing CSMA/CCA parameters, make these
    parameters MAC parameters instead.

    Signed-off-by: Phoebe Buckheister
    Signed-off-by: David S. Miller

    Phoebe Buckheister
     

15 Mar, 2014

3 commits

  • Change all internal uses of ieee802154_addr_sa to ieee802154_addr,
    except for those instances that communicate directly with userspace.

    Signed-off-by: Phoebe Buckheister
    Signed-off-by: David S. Miller

    Phoebe Buckheister
     
  • Enable sparse warnings about endianness, replace the remaining fields
    regarding network operations without explicit endianness annotations
    with such that are annotated, and propagate this through the entire
    stack.

    Uses of ieee802154_addr_sa are not changed yet, this patch is only
    concerned with all other fields (such as address filters, operation
    parameters and the likes).

    Signed-off-by: Phoebe Buckheister
    Signed-off-by: David S. Miller

    Phoebe Buckheister
     
  • The struct as currently defined uses host byte order for some fields,
    and most big endian/EUI display byte order for other fields. Inside the
    stack, endianness should ideally match network byte order where possible
    to minimize the number of byteswaps done in critical paths, but this
    patch does not address this; it is only preparatory.

    Signed-off-by: Phoebe Buckheister
    Signed-off-by: David S. Miller

    Phoebe Buckheister
     

20 Nov, 2013

1 commit

  • Register generic netlink multicast groups as an array with
    the family and give them contiguous group IDs. Then instead
    of passing the global group ID to the various functions that
    send messages, pass the ID relative to the family - for most
    families that's just 0 because the only have one group.

    This avoids the list_head and ID in each group, adding a new
    field for the mcast group ID offset to the family.

    At the same time, this allows us to prevent abusing groups
    again like the quota and dropmon code did, since we can now
    check that a family only uses a group it owns.

    Signed-off-by: Johannes Berg
    Signed-off-by: David S. Miller

    Johannes Berg
     

15 Nov, 2013

1 commit

  • This simplifies the code since there's no longer a need to
    have error handling in the registration.

    Unfortunately it means more extern function declarations are
    needed, but the overall goal would seem to justify this.

    While at it, also fix the registration error path - if the
    family registration failed then it shouldn't be unregistered.

    Signed-off-by: Johannes Berg
    Signed-off-by: David S. Miller

    Johannes Berg
     

09 Apr, 2013

1 commit

  • Check for NULL before calling the following operations from "struct
    ieee802154_mlme_ops": assoc_req, assoc_resp, disassoc_req, start_req,
    and scan_req.

    This fixes a current oops where those functions are called but not
    implemented. It also updates the documentation to clarify that they
    are now optional by design. If a call to an unimplemented function
    is attempted, the kernel returns EOPNOTSUPP via netlink.

    The following operations are still required: get_phy, get_pan_id,
    get_short_addr, and get_dsn.

    Note that the places where this patch changes the initialization
    of "ret" should not affect the rest of the code since "ret" was
    always set (again) before returning its value.

    Signed-off-by: Werner Almesberger
    Signed-off-by: David S. Miller

    Werner Almesberger
     

11 Sep, 2012

1 commit

  • It is a frequent mistake to confuse the netlink port identifier with a
    process identifier. Try to reduce this confusion by renaming fields
    that hold port identifiers portid instead of pid.

    I have carefully avoided changing the structures exported to
    userspace to avoid changing the userspace API.

    I have successfully built an allyesconfig kernel with this change.

    Signed-off-by: "Eric W. Biederman"
    Acked-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Eric W. Biederman
     

29 Jun, 2012

1 commit

  • Using NLMSG_GOODSIZE results in multiple pages being used as
    nlmsg_new() will automatically add the size of the netlink
    header to the payload thus exceeding the page limit.

    NLMSG_DEFAULT_SIZE takes this into account.

    Signed-off-by: Thomas Graf
    Cc: Jiri Pirko
    Cc: Dmitry Eremin-Solenikov
    Cc: Sergey Lapin
    Cc: Johannes Berg
    Cc: Lauro Ramos Venancio
    Cc: Aloisio Almeida Jr
    Cc: Samuel Ortiz
    Reviewed-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Thomas Graf
     

02 Apr, 2012

1 commit


01 Nov, 2011

1 commit


30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

06 Nov, 2009

2 commits