14 Aug, 2015

1 commit

  • Instead of using the out-of-line average calculation, use the new
    DECLARE_EWMA() macro to declare a signal EWMA, and use that.

    This actually *reduces* the code size slightly (on x86-64) while
    also reducing the station info size by 80 bytes.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

05 May, 2015

1 commit

  • Since these counters can only be read through debugfs, there's
    very little point in maintaining them all the time. However,
    even just making them depend on debugfs is pointless - they're
    not normally used. Additionally a number of them aren't even
    concurrency safe.

    Move them under MAC80211_DEBUG_COUNTERS so they're normally
    not even compiled in.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

23 Apr, 2015

1 commit


27 Jan, 2015

1 commit

  • This allows mac80211 to configure GCMP and GCMP-256 to the driver and
    also use software-implementation within mac80211 when the driver does
    not support this with hardware accelaration.

    Signed-off-by: Jouni Malinen
    [remove a spurious newline]
    Signed-off-by: Johannes Berg

    Jouni Malinen
     

04 Nov, 2014

1 commit

  • This patch adds 802.11p OCB (Outside the Context of a BSS) mode
    support.

    When communicating in OCB mode a mandatory wildcard BSSID
    (48 '1' bits) is used.

    The EDCA parameters handling function was changed to support
    802.11p specific values.

    The insertion of a newly discovered STAs is done in the similar way
    as in the IBSS mode -- through the deferred insertion.

    The OCB mode uses a periodic 'housekeeping task' for expiration of
    disconnected STAs (in the similar manner as in the MESH mode).

    New Kconfig option for verbose OCB debugging outputs is added.

    Signed-off-by: Rostislav Lisovy
    Signed-off-by: Johannes Berg

    Rostislav Lisovy
     

21 Oct, 2014

1 commit

  • When the new CONFIG_MAC80211_RC_MINSTREL_VHT is not set (default 'N'),
    there is no behavioral change including in sampling and MCS_GROUP_RATES
    remains 8.
    Otherwise MCS_GROUP_RATES is 10, and a module parameter *vht_only*
    (default 'true'), restricts the rates selection to VHT when VHT is
    supported.

    Regarding the debugfs stats buffer:
    It is explicitly increased from 8k to 32k to fit every rates incl. when
    both HT and VHT rates are enabled, as for the format, before:
    type rate tpt eprob *prob ret *ok(*cum) ok( cum)
    HT20/LGI ABCDP MCS0 0.0 0.0 0.0 1 0( 0) 0( 0)
    after:
    type rate tpt eprob *prob ret *ok(*cum) ok( cum)
    HT20/LGI ABCDP MCS0 0.0 0.0 0.0 1 0( 0) 0( 0)
    VHT40/LGI MCS5/2 0.0 0.0 0.0 0 0( 0) 0( 0)

    Signed-off-by: Karl Beldan
    Cc: Felix Fietkau
    Signed-off-by: Johannes Berg

    Karl Beldan
     

23 Jun, 2014

1 commit


28 Oct, 2013

1 commit

  • Process the CSA frame according to the procedures define in IEEE Std
    802.11-2012 section 10.9.8.4.3 as follow:
    * The mesh channel switch parameters element (MCSP) must be availabe.
    * If the MCSP's TTL is 1, drop the frame but still process the CSA.
    * If the MCSP's precedence value is less than or equal to the current
    precedence value, drop the frame and do not process the CSA.
    * The CSA frame is forwarded after TTL is decremented by 1 and the
    initiator field is set to 0. Transmit restrict field and others
    are maintained as is.
    * No beacon or probe response frame are handled here.

    Also, introduce the debug message used for mesh CSA purpose.

    Signed-off-by: Chun-Yeow Yeoh
    Signed-off-by: Johannes Berg

    Chun-Yeow Yeoh
     

11 Oct, 2013

1 commit

  • Use the generic CCM aead chaining mode driver rather than a local
    implementation that sits right on top of the core AES cipher.

    This allows the use of accelerated implementations of either
    CCM as a whole or the CTR mode which it encapsulates.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Johannes Berg

    Ard Biesheuvel
     

22 Feb, 2013

1 commit

  • Pull driver core patches from Greg Kroah-Hartman:
    "Here is the big driver core merge for 3.9-rc1

    There are two major series here, both of which touch lots of drivers
    all over the kernel, and will cause you some merge conflicts:

    - add a new function called devm_ioremap_resource() to properly be
    able to check return values.

    - remove CONFIG_EXPERIMENTAL

    Other than those patches, there's not much here, some minor fixes and
    updates"

    Fix up trivial conflicts

    * tag 'driver-core-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (221 commits)
    base: memory: fix soft/hard_offline_page permissions
    drivercore: Fix ordering between deferred_probe and exiting initcalls
    backlight: fix class_find_device() arguments
    TTY: mark tty_get_device call with the proper const values
    driver-core: constify data for class_find_device()
    firmware: Ignore abort check when no user-helper is used
    firmware: Reduce ifdef CONFIG_FW_LOADER_USER_HELPER
    firmware: Make user-mode helper optional
    firmware: Refactoring for splitting user-mode helper code
    Driver core: treat unregistered bus_types as having no devices
    watchdog: Convert to devm_ioremap_resource()
    thermal: Convert to devm_ioremap_resource()
    spi: Convert to devm_ioremap_resource()
    power: Convert to devm_ioremap_resource()
    mtd: Convert to devm_ioremap_resource()
    mmc: Convert to devm_ioremap_resource()
    mfd: Convert to devm_ioremap_resource()
    media: Convert to devm_ioremap_resource()
    iommu: Convert to devm_ioremap_resource()
    drm: Convert to devm_ioremap_resource()
    ...

    Linus Torvalds
     

05 Feb, 2013

1 commit

  • Add routines to
    - maintain a PS mode for each peer and a non-peer PS mode
    - indicate own PS mode in transmitted frames
    - track neighbor STAs power modes
    - buffer frames when neighbors are in PS mode
    - add TIM and Awake Window IE to beacons
    - release frames in Mesh Peer Service Periods

    Add local_pm to sta_info to represent the link-specific power
    mode at this station towards the remote station. When a peer
    link is established, use the default power mode stored in mesh
    config. Update the PS status if the peering status of a neighbor
    changes.
    Maintain a mesh power mode for non-peer mesh STAs. Set the
    non-peer power mode to active mode during peering. Authenticated
    mesh peering is currently not working when either node is
    configured to be in power save mode.

    Indicate the current power mode in transmitted frames. Use QoS
    Nulls to indicate mesh power mode transitions.
    For performance reasons, calls to the function setting the frame
    flags are placed in HWMP routing routines, as there the STA
    pointer is already available.

    Add peer_pm to sta_info to represent the peer's link-specific
    power mode towards the local station. Add nonpeer_pm to
    represent the peer's power mode towards all non-peer stations.
    Track power modes based on received frames.

    Add the ps_data structure to ieee80211_if_mesh (for TIM map, PS
    neighbor counter and group-addressed frame buffer).

    Set WLAN_STA_PS flag for STA in PS mode to use the unicast frame
    buffering routines in the tx path. Update num_sta_ps to buffer
    and release group-addressed frames after DTIM beacons.

    Announce the awake window duration in beacons if in light or
    deep sleep mode towards any peer or non-peer. Create a TIM IE
    similarly to AP mode and add it to mesh beacons. Parse received
    Awake Window IEs and check TIM IEs for buffered frames.

    Release frames towards peers in mesh Peer Service Periods. Use
    the corresponding trigger frames and monitor the MPSP status.
    Append a QoS Null as trigger frame if neccessary to properly end
    the MPSP. Currently, in HT channels MPSPs behave imperfectly and
    show large delay spikes and frame losses.

    Signed-off-by: Marco Porsch
    Signed-off-by: Ivan Bezyazychnyy
    Signed-off-by: Mike Krinkin
    Signed-off-by: Max Filippov
    Signed-off-by: Johannes Berg

    Marco Porsch
     

12 Jan, 2013

1 commit

  • The CONFIG_EXPERIMENTAL config item has not carried much meaning for a
    while now and is almost always enabled by default. As agreed during the
    Linux kernel summit, remove it from any "depends on" lines in Kconfigs.

    CC: "John W. Linville"
    CC: Johannes Berg
    CC: "David S. Miller"
    Signed-off-by: Kees Cook
    Acked-by: Johannes Berg
    Acked-by: David S. Miller

    Kees Cook
     

18 Oct, 2012

1 commit


24 Jun, 2012

2 commits

  • It can be very useful to have all debug messages
    available when debugging, but hard to correlate
    between different sources, so add a trace event
    for all mac80211 debug messages.

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • There are a few things that make the logging and
    debugging in mac80211 less useful than it should
    be right now:
    * a lot of messages should be pr_info, not pr_debug
    * wholesale use of pr_debug makes it require *both*
    Kconfig and dynamic configuration
    * there are still a lot of ifdefs
    * the style is very inconsistent, sometimes the
    sdata->name is printed in front

    Clean up everything, introducing new macros and
    separating out the station MLME debugging into
    a new Kconfig symbol.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

22 Jun, 2012

1 commit


11 Apr, 2012

1 commit

  • This patch adds MBSS extensible synchronization framework (Sec.
    13.13.2 of IEEE Std. 802.11-2012).

    The framework is implemented via an ops table which defines the
    following functions:

    rx_bcn_presp() - this is called every time a mesh beacon is
    received.
    adjust_tbtt() - this is called immediately before a beacon is about
    to be transmitted.

    The default neighbor offset synchronization defined in the standard is
    implemented. We also provide template functions for vendor specific
    methods.

    When neighbor offset synchronization is active (which is the default)
    mesh neighbors in the same MBSS will track timing offsets to each other
    and compensate clock drift.

    In our tests we observed that this mesh synchronization implementation
    successfully corrected drifts between stations of ~2PPM while
    introducing a jitter of ~20us.

    It is also possible to test this framework on mac80211_hwsim simulated
    phys to see how it behaves under different topologies, over poor links,
    etc.

    Signed-off-by: Marco Porsch
    Signed-off-by: Pavel Zubarev
    Signed-off-by: Javier Cardona
    Signed-off-by: John W. Linville

    Javier Cardona
     

29 Nov, 2011

1 commit

  • There's little point in this config symbol, if
    tracing is disabled the overhead is negligible
    and if you think it's too bad you can always
    turn off tracing completely.

    Also remove the part where we don't have sparse
    check the tracing code -- it seems that it can
    now deal with it (or the code changed).

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

01 Oct, 2011

1 commit

  • Register and implement the TDLS cfg80211 callback functions.

    Internally prepare and send TDLS management frames. We incorporate
    local STA capabilities and supported rates with extra IEs given by
    usermode. The resulting packet is either encapsulated in a data frame,
    or assembled as an action frame. It is transmitted either directly or
    through the AP, as mandated by the TDLS specification.

    Declare support for the TDLS external setup wiphy capability. This
    tells usermode to handle link setup and discovery on its own, and use the
    kernel driver for sending TDLS mgmt packets.

    Signed-off-by: Arik Nemtsov
    Cc: Kalyan C Gaddam
    Signed-off-by: John W. Linville

    Arik Nemtsov
     

25 Aug, 2011

1 commit


05 Apr, 2011

1 commit

  • The only thing that using crypto_blkcipher with ecb does over just using
    arc4 directly is wrapping the encrypt/decrypt function into a for loop,
    looping over each individual character.
    To be able to do this, it pulls in around 40 kb worth of unnecessary
    kernel modules (at least on a MIPS embedded device).
    Using arc4 directly not only eliminates those dependencies, it also makes
    the code smaller.

    Signed-off-by: Felix Fietkau
    Signed-off-by: John W. Linville

    Felix Fietkau
     

05 Mar, 2011

1 commit


02 Mar, 2011

1 commit


23 Feb, 2011

1 commit


19 Feb, 2011

1 commit


21 Jan, 2011

1 commit

  • The meaning of CONFIG_EMBEDDED has long since been obsoleted; the option
    is used to configure any non-standard kernel with a much larger scope than
    only small devices.

    This patch renames the option to CONFIG_EXPERT in init/Kconfig and fixes
    references to the option throughout the kernel. A new CONFIG_EMBEDDED
    option is added that automatically selects CONFIG_EXPERT when enabled and
    can be used in the future to isolate options that should only be
    considered for embedded systems (RISC architectures, SLOB, etc).

    Calling the option "EXPERT" more accurately represents its intention: only
    expert users who understand the impact of the configuration changes they
    are making should enable it.

    Reviewed-by: Ingo Molnar
    Acked-by: David Woodhouse
    Signed-off-by: David Rientjes
    Cc: Greg KH
    Cc: "David S. Miller"
    Cc: Jens Axboe
    Cc: Arnd Bergmann
    Cc: Robin Holt
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Rientjes
     

27 Dec, 2010

1 commit


08 Dec, 2010

1 commit

  • Extend nl80211 to report an exponential weighted moving average (EWMA) of the
    signal value. Since the signal value usually fluctuates between different
    packets, an average can be more useful than the value of the last packet.

    This uses the recently added generic EWMA library function.

    --
    v2: fix ABI breakage and change factor to be a power of 2.

    Signed-off-by: Bruno Randolf
    Signed-off-by: John W. Linville

    Bruno Randolf
     

03 Dec, 2010

1 commit

  • It's not useful to build LED triggers when there's no LEDs that can be
    triggered by them. Therefore, fix up the dependencies so that this
    cannot happen, and fix a few users that select triggers to depend on
    LEDS_CLASS as well (there is also one user that also selects LEDS_CLASS,
    which is OK).

    Signed-off-by: Johannes Berg
    Reported-by: Randy Dunlap
    Acked-by: Randy Dunlap
    Tested-by: Ingo Molnar
    Cc: Arnd Hannemann
    Cc: Michal Hocko
    Cc: Richard Purdie
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Berg
     

25 Nov, 2010

1 commit


19 Nov, 2010

1 commit

  • Extend nl80211 to report an exponential weighted moving average (EWMA) of the
    signal value. Since the signal value usually fluctuates between different
    packets, an average can be more useful than the value of the last packet.

    This uses the recently added generic EWMA library function.

    Signed-off-by: Bruno Randolf
    Signed-off-by: John W. Linville

    Bruno Randolf
     

01 Jul, 2010

1 commit

  • Allow selection of minstrel_ht as default rate control algorithm. At
    the moment minstrel_ht can only be requested by the driver code but
    not selected as default in make menuconfig. Fix this by using
    minstrel_ht when minstrel was selected as default and minstrel_ht
    is available.

    This change won't affect legacy devices as minstrel_ht falls back to
    minstrel in that case.

    Signed-off-by: Helmut Schaa
    Signed-off-by: John W. Linville

    Helmut Schaa
     

03 Jun, 2010

1 commit


09 Apr, 2010

1 commit

  • Enhance tracing by adding tracing for a variety of
    callbacks that the drivers call, and also for
    internal calls (currently limited to queue status).
    This can aid debugging what is going on in mac80211
    in interaction with drivers, since we can now see
    what drivers call and not just what mac80211 calls
    in the driver.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

11 Mar, 2010

1 commit

  • I discovered that if EMBEDDED=y, one can accidentally build a mac80211 stack
    and drivers w/ no rate control algorithm. For drivers like RTL8187 that don't
    supply their own RC algorithms, this will cause ieee80211_register_hw to
    fail (making the driver unusable).

    This will tell kconfig to provide a warning if no rate control algorithms
    have been selected. That'll at least warn the user; users that know that
    their drivers supply a rate control algorithm can safely ignore the
    warning, and those who don't know (or who expect to be using multiple
    drivers) can select a default RC algorithm.

    Signed-off-by: Andres Salomon
    Cc: stable@kernel.org
    Signed-off-by: John W. Linville

    Andres Salomon
     

22 Dec, 2009

1 commit

  • The payload alignment warning enabled by MAC80211_DEBUG_PACKET_ALIGNMENT is
    difficult. To fix it, a firmware change is needed but in most cases that's
    very difficult. So the benefit from the warning is low and most probably
    it just creates more confusion for people who just enable all warnings
    (like it did for me).

    Remove the unaligned IP payload warning and the kconfig option. But
    leave the unaligned packet warning, it will be enabled with
    MAC80211_VERBOSE_DEBUG.

    Signed-off-by: Kalle Valo
    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Kalle Valo
     

12 Nov, 2009

1 commit


03 Sep, 2009

1 commit


14 Aug, 2009

1 commit

  • This prevents calling rcu_synchronize from within the tx path by moving the
    table growth code to the mesh workqueue.

    Move mesh_table_free and mesh_table_grow from mesh.c to mesh_pathtbl.c and
    declare them static.

    Also, re-enable mesh in Kconfig and update the configuration description.

    Signed-off-by: Javier Cardona
    Tested-by: Andrey Yurovsky
    Signed-off-by: John W. Linville

    Javier Cardona
     

30 Jul, 2009

1 commit

  • Finally! This is what you've all been waiting for!

    This patch makes cfg80211 take care of wext emulation
    _completely_ by itself, drivers that don't need things
    cfg80211 doesn't do yet don't even need to be aware of
    wireless extensions.
    This means we can also clean up mac80211's and iwm's
    Kconfig and make it possible to build them w/o wext
    now!

    RIP wext.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg