1. 15 Jun, 2010 2 commits
    • Jouni Malinen's avatar
      mac80211: Protect Deauthentication frame when using MFP · 05e48e8e
      Jouni Malinen authored
      When management frame protection (IEEE 802.11w) is used,
      Deauthentication frame needs to be protected when the pairwise key is
      configured. mac80211 was removing the station entry (and its keys)
      before actually sending out the Deauthentication frame. Fix this by
      reordering the code to send the frame before the station entry gets
      removed. This matches an earlier change that handled the Disassociation
      frame processing, but missed Deauthentication frames.
      Signed-off-by: default avatarJouni Malinen <jouni.malinen@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    • Juuso Oikarinen's avatar
      mac80211: Fix ps-qos network latency handling · ff616381
      Juuso Oikarinen authored
      The ps-qos latency handling is broken. It uses predetermined latency values
      to select specific dynamic PS timeouts. With common AP configurations, these
      values overlap with beacon interval and are therefore essentially useless
      (for network latencies less than the beacon interval, PSM is disabled.)
      This patch remedies the problem by replacing the predetermined network latency
      values with one high value (1900ms) which is used to go trigger full psm. For
      backwards compatibility, the value 2000ms is still mapped to a dynamic ps
      timeout of 100ms.
      Currently also the mac80211 internal value for storing user space configured
      dynamic PSM values is incorrectly in the driver visible ieee80211_conf struct.
      Move it to the ieee80211_local struct.
      Signed-off-by: default avatarJuuso Oikarinen <juuso.oikarinen@nokia.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  2. 14 Jun, 2010 9 commits
    • Juuso Oikarinen's avatar
      mac80211: Fix circular locking dependency in ARP filter handling · 68542962
      Juuso Oikarinen authored
      There is a circular locking dependency when configuring the
      hardware ARP filters on association, occurring when flushing the mac80211
      workqueue. This is what happens:
      [   92.026800] =======================================================
      [   92.030507] [ INFO: possible circular locking dependency detected ]
      [   92.030507] 2.6.34-04781-g2b2c009e #85
      [   92.030507] -------------------------------------------------------
      [   92.030507] modprobe/5225 is trying to acquire lock:
      [   92.030507]  ((wiphy_name(local->hw.wiphy))){+.+.+.}, at: [<ffffffff8105b5c0>] flush_workq
      [   92.030507]
      [   92.030507] but task is already holding lock:
      [   92.030507]  (rtnl_mutex){+.+.+.}, at: [<ffffffff812b9ce2>] rtnl_lock+0x12/0x20
      [   92.030507]
      [   92.030507] which lock already depends on the new lock.
      [   92.030507]
      [   92.030507]
      [   92.030507] the existing dependency chain (in reverse order) is:
      [   92.030507]
      [   92.030507] -> #2 (rtnl_mutex){+.+.+.}:
      [   92.030507]        [<ffffffff810761fb>] lock_acquire+0xdb/0x110
      [   92.030507]        [<ffffffff81341754>] mutex_lock_nested+0x44/0x300
      [   92.030507]        [<ffffffff812b9ce2>] rtnl_lock+0x12/0x20
      [   92.030507]        [<ffffffffa022d47c>] ieee80211_assoc_done+0x6c/0xe0 [mac80211]
      [   92.030507]        [<ffffffffa022f2ad>] ieee80211_work_work+0x31d/0x1280 [mac80211]
      [   92.030507] -> #1 ((&local->work_work)){+.+.+.}:
      [   92.030507]        [<ffffffff810761fb>] lock_acquire+0xdb/0x110
      [   92.030507]        [<ffffffff8105a51a>] worker_thread+0x22a/0x370
      [   92.030507]        [<ffffffff8105ecc6>] kthread+0x96/0xb0
      [   92.030507]        [<ffffffff81003a94>] kernel_thread_helper+0x4/0x10
      [   92.030507]
      [   92.030507] -> #0 ((wiphy_name(local->hw.wiphy))){+.+.+.}:
      [   92.030507]        [<ffffffff81075fdc>] __lock_acquire+0x1c0c/0x1d50
      [   92.030507]        [<ffffffff810761fb>] lock_acquire+0xdb/0x110
      [   92.030507]        [<ffffffff8105b60e>] flush_workqueue+0x4e/0xb0
      [   92.030507]        [<ffffffffa023ff7b>] ieee80211_stop_device+0x2b/0xb0 [mac80211]
      [   92.030507]        [<ffffffffa0231635>] ieee80211_stop+0x3e5/0x680 [mac80211]
      The locking in this case is quite complex. Fix the problem by rewriting the
      way the hardware ARP filter list is handled - i.e. make a copy of the address
      list to the bss_conf struct, and provide that list to the hardware driver
      when needed.
      The current patch will enable filtering also in promiscuous mode. This may need
      to be changed in the future.
      Reported-by: default avatarReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: default avatarJuuso Oikarinen <juuso.oikarinen@nokia.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    • Johannes Berg's avatar
      mac80211: always process blockack action from workqueue · bed7ee6e
      Johannes Berg authored
      To prepare for making the ampdu_action callback
      sleep, make mac80211 always process blockack
      action frames from the skb queue. This gets rid
      of the current special case for managed mode
      interfaces as well.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    • Johannes Berg's avatar
      mac80211: pull mgmt frame rx into rx handler · 77a121c3
      Johannes Berg authored
      Some code is duplicated between ibss, mesh and
      managed mode regarding the queueing of management
      frames. Since all modes now use a common skb
      queue and a common work function, we can pull
      the queueing code into the rx handler directly
      and remove the duplicated length checks etc.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    • Johannes Berg's avatar
      mac80211: common work skb freeing · 36b3a628
      Johannes Berg authored
      All the management processing functions free the
      skb after they are done, so this can be done in
      the new common code instead.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    • Johannes Berg's avatar
      mac80211: use common work function · 1fa57d01
      Johannes Berg authored
      Even with the previous patch, IBSS, managed
      and mesh modes all attach their own work
      function to the shared work struct, which
      means some duplicated code. Change that to
      only have a frame processing function and a
      further work function for each of them and
      share some common code.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    • Johannes Berg's avatar
      mac80211: use common work struct · 64592c8f
      Johannes Berg authored
      IBSS, managed and mesh modes all have their
      own work struct, and in the future we want
      to also use it in other modes to process
      frames from the now common skb queue.
      This also makes the skb queue and work safe
      to use from other interface types.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    • Johannes Berg's avatar
      mac80211: use common skb queue · 35f20c14
      Johannes Berg authored
      IBSS, managed and mesh modes all have an
      skb queue, and in the future we want to
      also use it in other modes, so make them
      all use a common skb queue already.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    • Johannes Berg's avatar
      mac80211: simplify station/aggregation code · 2a419056
      Johannes Berg authored
      A number of places use RCU locking for accessing
      the station list, even though they do not need
      to. Use mutex locking instead to prepare for the
      locking changes I want to make. The mlme code is
      also using a WLAN_STA_DISASSOC flag that has the
      same meaning as WLAN_STA_BLOCK_BA, so use that.
      While doing so, combine places where we loop
      over stations twice, and optimise away some of
      the loops by checking if the hardware supports
      aggregation at all first.
      Also fix a more theoretical race condition: right
      now we could resume, set up an aggregation session,
      and right after tear it down again due to the code
      that is needed for hardware reconfiguration here.
      Also mark add a comment to that code marking it as
      a workaround.
      Finally, remove a pointless aggregation disabling
      loop when an interface is stopped, directly after
      that we remove all stations from it which will also
      disable all aggregation sessions that may still be
      active, and does so in a race-free way unlike the
      current loop that doesn't block new sessions.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    • Johannes Berg's avatar
      cfg80211/mac80211: allow action frame TX/RX in IBSS · 9d38d85d
      Johannes Berg authored
      When in IBSS mode, currently action frame TX and RX
      cannot be used. Allow using it to talk to any peer,
      or for public action frames. Also, while at it,
      restructure the code in mac80211 to make it easier
      to add this for other interface types in the future.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  3. 08 Jun, 2010 1 commit
  4. 07 Jun, 2010 1 commit
  5. 04 Jun, 2010 2 commits
    • Johannes Berg's avatar
      mac80211: process station blockack action frames from work · 8b9a4e6e
      Johannes Berg authored
      Processing an association response could take a bit
      of time while we set up the hardware etc. During that
      time, the AP might already send a blockack request.
      If this happens very quickly on a fairly slow machine,
      we can end up processing the blockack request before
      the association processing has finished. Since the
      blockack processing cannot sleep right now, we also
      cannot make it wait in the driver.
      As a result, sometimes on slow machines the iwlagn
      driver gets totally confused, and no traffic can pass
      when the aggregation setup was done before the assoc
      setup completed.
      I'm working on a proper fix for this, which involves
      queuing all blockack category action frames from a
      work struct, and also allowing the ampdu_action driver
      callback to sleep, which will generally clean up the
      code and make things easier.
      However, this is a very involved and complex change.
      To fix the problem at hand in a way that can also be
      backported to stable, I've come up with this patch.
      Here, I simply process all aggregation action frames
      from the managed interface skb queue, which means
      their processing will be serialized with processing
      the association response, thereby fixing the problem.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    • John W. Linville's avatar
  6. 03 Jun, 2010 1 commit
  7. 02 Jun, 2010 2 commits
  8. 12 May, 2010 2 commits
  9. 10 May, 2010 1 commit
    • Mark Gross's avatar
      PM QOS update · ed77134b
      Mark Gross authored
      This patch changes the string based list management to a handle base
      implementation to help with the hot path use of pm-qos, it also renames
      much of the API to use "request" as opposed to "requirement" that was
      used in the initial implementation.  I did this because request more
      accurately represents what it actually does.
      Also, I added a string based ABI for users wanting to use a string
      interface.  So if the user writes 0xDDDDDDDD formatted hex it will be
      accepted by the interface.  (someone asked me for it and I don't think
      it hurts anything.)
      This patch updates some documentation input I got from Randy.
      Signed-off-by: default avatarmarkgross <mgross@linux.intel.com>
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
  10. 07 May, 2010 2 commits
    • Johannes Berg's avatar
      mac80211: improve HT channel handling · 0aaffa9b
      Johannes Berg authored
      Currently, when one interface switches HT mode,
      all others will follow along. This is clearly
      undesirable, since the new one might switch to
      no-HT while another one is operating in HT.
      Address this issue by keeping track of the HT
      mode per interface, and allowing only changes
      that are compatible, i.e. switching into HT40+
      is not possible when another interface is in
      HT40-, in that case the second one needs to
      fall back to HT20.
      Also, to allow drivers to know what's going on,
      store the per-interface HT mode (channel type)
      in the virtual interface's bss_conf.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    • Reinette Chatre's avatar
      mac80211: remove association work when processing deauth request · 79733a86
      Reinette Chatre authored
      In https://bugzilla.kernel.org/show_bug.cgi?id=15794 a user encountered the
      [18967.469098] wlan0: authenticated
      [18967.472527] wlan0: associate with 00:1c:10:b8:e3:ea (try 1)
      [18967.472585] wlan0: deauthenticating from 00:1c:10:b8:e3:ea by local choice (reason=3)
      [18967.672057] wlan0: associate with 00:1c:10:b8:e3:ea (try 2)
      [18967.872357] wlan0: associate with 00:1c:10:b8:e3:ea (try 3)
      [18968.072960] wlan0: association with 00:1c:10:b8:e3:ea timed out
      [18968.076890] ------------[ cut here ]------------
      [18968.076898] WARNING: at net/wireless/mlme.c:341 cfg80211_send_assoc_timeout+0xa8/0x140()
      [18968.076900] Hardware name: GX628
      [18968.076924] Pid: 1408, comm: phy0 Not tainted 2.6.34-rc4-00082-g250541fc-dirty #3
      [18968.076926] Call Trace:
      [18968.076931]  [<ffffffff8103459e>] ?  warn_slowpath_common+0x6e/0xb0
      [18968.076934]  [<ffffffff8157c2d8>] ?  cfg80211_send_assoc_timeout+0xa8/0x140
      [18968.076937]  [<ffffffff8103ff8b>] ? mod_timer+0x10b/0x180
      [18968.076940]  [<ffffffff8158f0fc>] ?  ieee80211_assoc_done+0xbc/0xc0
      [18968.076943]  [<ffffffff81590d53>] ?  ieee80211_work_work+0x553/0x11c0
      [18968.076945]  [<ffffffff8102d931>] ? finish_task_switch+0x41/0xb0
      [18968.076948]  [<ffffffff81590800>] ?  ieee80211_work_work+0x0/0x11c0
      [18968.076951]  [<ffffffff810476fb>] ? worker_thread+0x13b/0x210
      [18968.076954]  [<ffffffff8104b6b0>] ?  autoremove_wake_function+0x0/0x30
      [18968.076956]  [<ffffffff810475c0>] ? worker_thread+0x0/0x210
      [18968.076959]  [<ffffffff8104b21e>] ? kthread+0x8e/0xa0
      [18968.076962]  [<ffffffff810031f4>] ?  kernel_thread_helper+0x4/0x10
      [18968.076964]  [<ffffffff8104b190>] ? kthread+0x0/0xa0
      [18968.076966]  [<ffffffff810031f0>] ?  kernel_thread_helper+0x0/0x10
      [18968.076968] ---[ end trace 8aa6265f4b1adfe0 ]---
      As explained by Johannes Berg <johannes@sipsolutions.net>:
      We authenticate successfully, and then userspace requests association.
      Then we start that process, but the AP doesn't respond. While we're
      still waiting for an AP response, userspace asks for a deauth. We do
      the deauth, but don't abort the association work. Then once the
      association work times out we tell cfg80211, but it no longer wants
      to know since for all it is concerned we accepted the deauth that
      also kills the association attempt.
      Fix this by, upon receipt of deauth request, removing the association work
      and continuing to send the deauth.
      Unfortunately the user reporting the issue is not able to reproduce this
      problem anymore and cannot verify this fix. This seems like a well understood
      issue though and I thus present the patch.
      Bug-identified-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  11. 27 Apr, 2010 1 commit
  12. 20 Apr, 2010 1 commit
  13. 19 Apr, 2010 1 commit
    • Reinette Chatre's avatar
      mac80211: pass HT changes to driver when off channel · fe6f212c
      Reinette Chatre authored
      Since "mac80211: make off-channel work generic" drivers have not been
      notified of configuration changes after association or authentication. This
      caused more dependence on current state to ensure driver will be notified
      when configuration changes occur. One such problem arises if off-channel is
      in progress when HT information changes. Since HT is only enabled on the
      "oper_channel" the driver will never be notified of this change. Usually
      the driver is notified soon after of a BSS information change
      (BSS_CHANGED_HT) ... but since the driver did not get a notification that
      this is a HT channel the new BSS information does not make sense.
      Fix this by also changing the off-channel information when HT is enabled
      and thus cause driver to be notified correctly.
      This fixes a problem in 4965 when associated with 5GHz 40MHz channel.
      Without this patch the system can associate but is unable to transfer any
      data, not even ping.
      See http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2158Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  14. 08 Apr, 2010 1 commit
  15. 07 Apr, 2010 1 commit
    • Jouni Malinen's avatar
      cfg80211: Add local-state-change-only auth/deauth/disassoc · d5cdfacb
      Jouni Malinen authored
      cfg80211 is quite strict on allowing authentication and association
      commands only in certain states. In order to meet these requirements,
      user space applications may need to clear authentication or
      association state in some cases. Currently, this can be done with
      deauth/disassoc command, but that ends up sending out Deauthentication
      or Disassociation frame unnecessarily. Add a new nl80211 attribute to
      allow this sending of the frame be skipped, but with all other
      deauth/disassoc operations being completed.
      Similar state change is also needed for IEEE 802.11r FT protocol in
      the FT-over-DS case which does not use Authentication frame exchange
      in a transition to another BSS. For this to work with cfg80211, an
      authentication entry needs to be created for the target BSS without
      sending out an Authentication frame. The nl80211 authentication
      command can be used for this purpose, too, with the new attribute to
      indicate that the command is only for changing local state. This
      enables wpa_supplicant to complete FT-over-DS transition successfully.
      Signed-off-by: default avatarJouni Malinen <j@w1.fi>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  16. 31 Mar, 2010 3 commits
  17. 30 Mar, 2010 1 commit
    • Tejun Heo's avatar
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking... · 5a0e3ad6
      Tejun Heo authored
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit 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.
      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
      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
      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
      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: default avatarTejun Heo <tj@kernel.org>
      Guess-its-ok-by: default avatarChristoph Lameter <cl@linux-foundation.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
  18. 24 Mar, 2010 1 commit
  19. 23 Mar, 2010 1 commit
  20. 10 Mar, 2010 1 commit
  21. 03 Mar, 2010 1 commit
    • Sujith's avatar
      mac80211: Fix HT rate control configuration · 4fa00437
      Sujith authored
      Handling HT configuration changes involved setting the channel
      with the new HT parameters and then issuing a rate_update()
      notification to the driver.
      This behavior changed after the off-channel changes. Now, the channel
      is not updated with the new HT params in enable_ht() - instead, it
      is now done when the scan work terminates. This results in the driver
      depending on stale information, defaulting to non-HT mode always.
      Fix this by passing the new channel type to the driver.
      Cc: stable@kernel.org
      Signed-off-by: default avatarSujith <Sujith.Manoharan@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  22. 02 Mar, 2010 1 commit
    • Jouni Malinen's avatar
      mac80211: Fix reassociation processing (within ESS roaming) · 9c87ba67
      Jouni Malinen authored
      Commit e1dd33f60ced091114e4aacf141e0d03b88d3e13 changed cfg80211 to
      allow association commands while in associated state to enable support
      for roaming within an ESS. However, this was not enough to resolve all
      cases with mac80211 which needs some additional handling of the
      reassociation case to clear internal state with the BSS that was in use
      This patch makes ieee80211_mgd_assoc() accept a valid reassociation
      command and clean the association state with the previous BSS. This
      fixes roaming between BSSes in an ESS when using wpa_supplicant with
      Signed-off-by: default avatarJouni Malinen <j@w1.fi>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  23. 15 Feb, 2010 1 commit
    • Jouni Malinen's avatar
      cfg80211/mac80211: allow registering for and sending action frames · 026331c4
      Jouni Malinen authored
      This implements a new command to register for action frames
      that userspace wants to handle instead of the in-kernel
      rejection. It is then responsible for rejecting ones that
      it decided not to handle. There is no unregistration, but
      the socket can be closed for that.
      Frames that are not registered for will not be forwarded
      to userspace and will be rejected by the kernel, the
      cfg80211 API helps implementing that.
      Additionally, this patch adds a new command that allows
      doing action frame transmission from userspace. It can be
      used either to exchange action frames on the current
      operational channel (e.g., with the AP with which we are
      currently associated) or to exchange off-channel Public
      Action frames with the remain-on-channel command.
      Signed-off-by: default avatarJouni Malinen <jouni.malinen@atheros.com>
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  24. 10 Feb, 2010 1 commit
  25. 09 Feb, 2010 1 commit