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
     

03 Jun, 2010

1 commit


08 May, 2010

1 commit

  • Currently (all tested with hwsim) you can do stupid
    things like setting up an AP on a certain channel,
    then adding another virtual interface and making
    that associate on another channel -- this will make
    the beaconing to move channel but obviously without
    the necessary IEs data update.

    In order to improve this situation, first make the
    configuration APIs (cfg80211 and nl80211) aware of
    multi-channel operation -- we'll eventually need
    that in the future anyway. There's one userland API
    change and one API addition. The API change is that
    now SET_WIPHY must be called with virtual interface
    index rather than only wiphy index in order to take
    effect for that interface -- luckily all current
    users (hostapd) do that. For monitor interfaces, the
    old setting is preserved, but monitors are always
    slaved to other devices anyway so no guarantees.

    The second userland API change is the introduction
    of a per virtual interface SET_CHANNEL command, that
    hostapd should use going forward to make it easier
    to understand what's going on (it can automatically
    detect a kernel with this command).

    Other than mac80211, no existing cfg80211 drivers
    are affected by this change because they only allow
    a single virtual interface.

    mac80211, however, now needs to be aware that the
    channel settings are per interface now, and needs
    to disallow (for now) real multi-channel operation,
    which is another important part of this patch.

    One of the immediate benefits is that you can now
    start hostapd to operate on a hardware that already
    has a connection on another virtual interface, as
    long as you specify the same channel.

    Note that two things are left unhandled (this is an
    improvement -- not a complete fix):

    * different HT/no-HT modes

    currently you could start an HT AP and then
    connect to a non-HT network on the same channel
    which would configure the hardware for no HT;
    that can be fixed fairly easily

    * CSA

    An AP we're connected to on a virtual interface
    might indicate switching channels, and in that
    case we would follow it, regardless of how many
    other interfaces are operating; this requires
    more effort to fix but is pretty rare after all

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

    Johannes Berg
     

29 Dec, 2009

2 commits

  • The off-channel operations for going into power save mode (station
    mode) or stop beaconing (AP/IBSS) are not limited to scanning. Move
    these into a separate file and allow them to be used for other
    purposes, too.

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

    Jouni Malinen
     
  • In order to use auth/assoc for different purposes
    other than MLME, it needs to be split up. For other
    purposes, a generic work handling (potentially on
    another channel) will be useful.

    To achieve that, this patch moves much of the MLME
    work handling out of mlme into a new work API. The
    API can currently handle probing a specific AP,
    authentication and association. The MLME previously
    handled probe/authentication as one step and will
    continue to do so, but they are separate in the new
    work handling.

    Work items are RCU-managed to be able to check for
    existence of an item for a specific frame in the RX
    path, but they can be re-used which the MLME right
    now will do for its combined probe/auth step.

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

    Johannes Berg
     

19 Nov, 2009

1 commit


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
     

25 Jul, 2009

1 commit

  • This makes mac80211 use the event tracing framework
    to log all operations as given to the driver. This
    will need to be extended with more information, but
    as a start it should be good.

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

    Johannes Berg
     

28 Feb, 2009

1 commit

  • This patch splits out the ibss code and data from managed (station) mode.
    The reason to do this is to better separate the state machines, and have
    the code be contained better so it gets easier to determine what exactly
    a given change will affect, that in turn makes it easier to understand.

    This is quite some churn, especially because I split sdata->u.sta into
    sdata->u.mgd and sdata->u.ibss, but I think it's easier to maintain that
    way. I've also shuffled around some code -- null function sending is only
    applicable to managed interfaces so put that into that file, some other
    functions are needed from various places so put them into util, and also
    rearranged the prototypes in ieee80211_i.h accordingly.

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

    Johannes Berg
     

14 Feb, 2009

1 commit


30 Jan, 2009

2 commits

  • This patch introduces suspend and resume callbacks to mac80211,
    allowing mac80211 to quiesce its state (bringing down interfaces,
    removing keys, etc) in preparation for suspend. cfg80211 will call
    the suspend hook before the device suspend, and resume hook after
    the device resume.

    Signed-off-by: Bob Copeland
    Acked-by: Johannes Berg
    Signed-off-by: John W. Linville

    Bob Copeland
     
  • Implement Broadcast/Multicast Integrity Protocol for management frame
    protection. This patch adds the needed definitions for the new
    information element (MMIE) and implementation for the new "encryption"
    type (though, BIP is actually not encrypting data, it provides only
    integrity protection). These routines will be used by a follow-on patch
    that enables BIP for multicast/broadcast robust management frames.

    Signed-off-by: Jouni Malinen
    Acked-by: Johannes Berg
    Signed-off-by: John W. Linville

    Jouni Malinen
     

13 Dec, 2008

1 commit


07 Oct, 2008

1 commit


12 Sep, 2008

3 commits


18 Jul, 2008

1 commit


01 Jul, 2008

1 commit

  • The old infrastructure was:
    - the default algorithm is built into mac80211
    - other algorithms get into their own modules

    The implementation of this complicated scheme was horrible
    (just look at net/mac80211/Makefile), and anyone adding a new
    algorithm would most likely not get it right at his first attempt.

    This patch therefore builds all enabled algorithms into the mac80211
    module.

    The user interface for the rate control algorithms changes as follows:
    - first the user can choose which algorithms to enable (currently only
    MAC80211_RC_PID is available)
    - if more than one algorithm is enabled (currently not possible since
    only one algorithm is present) the user then chooses the default one

    Note:
    - MAC80211_RC_PID is always enables for CONFIG_EMBEDDED=n

    Technical changes:
    - all selected algorithms get into the mac80211 module
    - net/mac80211/Makefile can now become much less complicated
    - support for rc80211_pid_algo.c being modular is no longer required
    - this includes unexporting mesh_plink_broken

    Signed-off-by: Adrian Bunk
    Signed-off-by: John W. Linville

    Adrian Bunk
     

22 May, 2008

1 commit

  • This patch updates mac80211 and drivers to be multi-queue aware and
    use that instead of the internal queue mapping. Also does a number
    of cleanups in various pieces of the code that fall out and reduces
    internal mac80211 state size.

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

    Johannes Berg
     

09 Apr, 2008

1 commit


14 Mar, 2008

1 commit


07 Mar, 2008

1 commit


01 Mar, 2008

1 commit

  • This patch creates new cfg80211 wiphy API for channel and bitrate
    registration and converts mac80211 and drivers to the new API. The
    old mac80211 API is completely ripped out. All drivers (except ath5k)
    are updated to the new API, in many cases I expect that optimisations
    can be done.

    Along with the regulatory code I've also ripped out the
    IEEE80211_HW_DEFAULT_REG_DOMAIN_CONFIGURED flag, I believe it to be
    unnecessary if the hardware simply gives us whatever channels it wants
    to support and we then enable/disable them as required, which is pretty
    much required for travelling.

    Additionally, the patch adds proper "basic" rate handling for STA
    mode interface, AP mode interface will have to have new API added
    to allow userspace to set the basic rate set, currently it'll be
    empty... However, the basic rate handling will need to be moved to
    the BSS conf stuff.

    I do expect there to be bugs in this, especially wrt. transmit
    power handling where I'm basically clueless about how it should work.

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

    Johannes Berg
     

29 Jan, 2008

4 commits

  • This patch changes mac80211's Kconfig/Makefile to:
    * select between the PID and the SIMPLE rate control
    algorithm as default
    * always allow tri-state for the rate control algorithms,
    building those that are selected 'y' into the mac80211
    module (if that is a module, otherwise all into the kernel)
    * force the default rate control algorithm to be built into
    mac80211

    It also makes both rate control algorithms proper modules again
    with MODULE_LICENSE etc.

    Only if EMBEDDED is the user allowed to select "NONE" as default
    which will cause no algorithm to be selected, this will work
    only when the driver brings one itself (e.g. iwlwifi drivers).

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Johannes Berg
     
  • This adds a new debugfs file from which rate control relevant events can be
    read one event per line. The output includes the current time, so graphs can be
    created showing the rate control parameters. This helps in evaluating and
    tuning rate control parameters. While at it, we split headers and code for
    better readability.

    Signed-off-by: Mattias Nissler
    Signed-off-by: Stefano Brivio
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Mattias Nissler
     
  • This makes the new PID TX rate control algorithm the default instead of the
    rc80211_simple rate control algorithm. The simple algorithm was flawed in
    several ways: it wasn't responsive at all and didn't age the information it was
    relying on properly. The PID algorithm allows us to tune characteristics such
    as responsiveness by adjusting parameters and was found to generally behave
    better.

    The default algorithm can be overridden to select simple instead. Which
    ever algorithm is the default is included as part of the mac80211
    module automatically. The other algorithm (simple vs. pid) can
    be selected for inclusion as well. If EMBEDDED is selected then
    the choice is available to have no default specified and neither
    algorithm included in mac80211. The default algorithm can be set
    through a modparam.

    While at it, mark rc80211-simple as deprecated, and schedule it
    for removal.

    Signed-off-by: Stefano Brivio
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Stefano Brivio
     
  • Add a new rate control algorithm based on a PID controller. It samples the
    percentage of failed frames over time, feeds the result into the controller and
    uses its output to control the TX rate.

    Signed-off-by: Mattias Nissler
    Signed-off-by: John W. Linville
    Signed-off-by: David S. Miller

    Mattias Nissler
     

11 Nov, 2007

1 commit

  • Too frequently people do not have module autoloading enabled
    or fail to install the rate control module correctly, hence
    their hardware probing fails due to no rate control algorithm
    being available. This makes the 'simple' algorithm built into
    the mac80211 module unless EMBEDDED is enabled in which case
    it can be disabled (eg. if the wanted driver requires another
    rate control algorithm.)

    Signed-off-by: Johannes Berg
    Acked-by: Michael Buesch
    Signed-off-by: John W. Linville

    Johannes Berg
     

11 Oct, 2007

7 commits


18 Jul, 2007

1 commit

  • Currently, a function misnamed ieee80211_init_client() is used to handle
    regulatory domain control. It is called from
    ieee80211_register_hwmode(), which typically runs 2 or 3 times
    (802.11a/b/g), but each time it iterates over all the modes.

    This patch cleans this up and removes the confusion:
    ieee80211_init_client was effectively renamed to
    ieee80211_set_default_regdomain and is now run on a per-mode basis
    (doesn't have to deal with netdevs). I also moved the regdomain handling
    code into its own file and added some documentation.

    Signed-off-by: Daniel Drake
    Acked-by: Jiri Benc
    Signed-off-by: John W. Linville

    Daniel Drake
     

06 May, 2007

2 commits