1. 10 Jul, 2009 3 commits
    • Johannes Berg's avatar
      mac80211: rework MLME for multiple authentications · 77fdaa12
      Johannes Berg authored
      
      
      Sit tight. This shakes up the world as you know
      it. Let go of your spaghetti tongs, they will no
      longer be required, the horrible statemachine in
      net/mac80211/mlme.c is no more...
      
      With the cfg80211 SME mac80211 now has much less
      to keep track of, but, on the other hand, for FT
      it needs to be able to keep track of at least one
      authentication being in progress while associated.
      So convert from a single state machine to having
      small ones for all the different things we need to
      do. For real FT it will still need work wrt. PS,
      but this should be a good step.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      77fdaa12
    • Johannes Berg's avatar
      cfg80211: use proper allocation flags · e6d6e342
      Johannes Berg authored
      
      
      Instead of hardcoding GFP_ATOMIC everywhere, add a
      new function parameter that gets the flags from the
      caller. Obviously then I need to update all callers
      (all of them in mac80211), and it turns out that now
      it's ok to use GFP_KERNEL in almost all places.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      e6d6e342
    • Johannes Berg's avatar
      mac80211: push rx status into skb->cb · f1d58c25
      Johannes Berg authored
      
      
      Within mac80211, we often need to copy the rx status into
      skb->cb. This is wasteful, as drivers could be building it
      in there to start with. This patch changes the API so that
      drivers are expected to pass the RX status in skb->cb, now
      accessible as IEEE80211_SKB_RXCB(skb). It also updates all
      drivers to pass the rx status in there, but only by making
      them memcpy() it into place before the call to the receive
      function (ieee80211_rx(_irqsafe)). Each driver can now be
      optimised on its own schedule.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      f1d58c25
  2. 10 Jun, 2009 2 commits
  3. 22 May, 2009 1 commit
  4. 20 May, 2009 1 commit
    • Johannes Berg's avatar
      mac80211: move channel switch code · cc32abd4
      Johannes Berg authored
      
      
      The channel switch code is currently in the spectrum
      management file, where arguably it belongs. However,
      it is for managed mode only and uses the structures
      for that mode only so having it in a more generic
      file can be confusing. Additionally, my next patch
      gets simpler with the code here.
      
      When/if we ever implement this for IBSS or mesh then
      we will need to rework the structures it uses anyway
      at which point we could move the code back.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      cc32abd4
  5. 11 May, 2009 2 commits
    • Jouni Malinen's avatar
      mac80211: MFP - Drop unprotected Action frames prior key setup · f2ca3ea4
      Jouni Malinen authored
      
      
      When management frame protection (IEEE 802.11w) is used, unprotected
      Robust Action frames are not allowed prior to key configuration.
      However, unprotected Deauthentication and Disassociation frames are
      allowed at that point, but not after key configuration.
      
      Make ieee80211_drop_unencrypted() handle the special cases for MFP by
      separating the basic Data frame case from Management frame processing
      and handle the Management frames only if MFP has been negotiated. In
      addition, do not use sdata->drop_unencrypted for Management frames
      since the decision on whether to accept the frame depends on the key
      being configured.
      Signed-off-by: default avatarJouni Malinen <jouni.malinen@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      f2ca3ea4
    • Jouni Malinen's avatar
      mac80211: Drop unencrypted frames based on key setup · 0c7c10c7
      Jouni Malinen authored
      
      
      When using nl80211, we do not have a mechanism to set
      sdata->drop_unencrypted. Currently, this breaks code that is supposed
      to drop unencrypted frames when protection is expected since
      ieee80211_rx_h_decrypt() is optimized to not set rx->key when the
      frame is not protected.
      
      This patch modifies ieee80211_rx_h_decrypt() to set rx->key for all
      frames and only skip decryption if the frame is not protected. This
      allows ieee80211_drop_unencrypted() to correctly drop frames even if
      drop_unencrypted is not set.
      
      The changes here are not enough to handle all cases, though. Additional
      patches will be needed to implement proper IEEE 802.1X PAE for station
      mode (currently, this is only used for AP mode) and some additional
      rules are needed for MFP to drop unprotected Robust Action frames prior
      to having PTK and IGTK configured.
      
      In theory, the unprotected frames could and should be dropped in
      ieee80211_rx_h_decrypt(). However, due to the special case with EAPOL
      frames that have to be allowed to be received unprotected even when
      keys are set, it is simpler to only set rx->key and allow the
      ieee80211_frame_allowed() function to handle the actual dropping of
      data frames after 802.11->802.3 header conversion. In addition,
      unprotected robust management frames are dropped before they are
      processed.
      Signed-off-by: default avatarJouni Malinen <jouni.malinen@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      0c7c10c7
  6. 06 May, 2009 4 commits
    • Jouni Malinen's avatar
      mac80211: Comment the order of HT RX reorder handler vs. RX handlers · aec67952
      Jouni Malinen authored
      
      
      We are currently processing block ack reordering as a separate task
      before all other RX handlers. In theory, this is wrong since this step
      should be done only after duplicate removal (see Figure 6-1 in IEEE
      802.11n). However, moving this needs some work and the current
      situation is not too bad. Add a comment here so that this small detail
      does not get forgotten and who knows, maybe someone has some extra
      time to take a look at cleaning this up.
      Signed-off-by: default avatarJouni Malinen <jouni.malinen@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      aec67952
    • Jouni Malinen's avatar
      mac80211: Add a timeout for frames in the RX reorder buffer · 4d050f1d
      Jouni Malinen authored
      
      
      This patch allows skbs to be released from the RX reorder buffer in
      case they have been there for an unexpectedly long time without us
      having received the missing frames before them. Previously, these
      frames were only released when the reorder window moved and that could
      take very long time unless new frames were received constantly (e.g.,
      TCP connections could be killed more or less indefinitely).
      
      This situation should not happen very frequently, but it looks like
      there are some scenarious that trigger it for some reason. As such,
      this should be considered mostly a workaround to speed up recovery
      from unexpected siutation that could result in connections hanging for
      long periods of time.
      
      The changes here will only check for timeout situation when adding new
      RX frames to the reorder buffer. It does not handle all possible
      cases, but seems to help for most cases that could result from common
      network usage (e.g., TCP retrying at least couple of times). For more
      completely coverage, a timer could be used to periodically check
      whether there are any frames remaining in the reorder buffer if no new
      frames are received.
      Signed-off-by: default avatarJouni Malinen <jouni.malinen@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      4d050f1d
    • Jouni Malinen's avatar
      mac80211: Use a shared function to release frames from RX reorder buf · 2d3babd1
      Jouni Malinen authored
      
      
      No need to duplicate the same code in two places (and that would be
      three after the followup patch).
      Signed-off-by: default avatarJouni Malinen <jouni.malinen@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      2d3babd1
    • Johannes Berg's avatar
      mac80211: add driver ops wrappers · 24487981
      Johannes Berg authored
      
      
      In order to later add tracing or verifications to the driver
      calls mac80211 makes, this patch adds static inline wrappers
      for all operations.
      
      All calls are now written as
      
      	drv_<op>(local, ...);
      
      instead of
      
      	local->ops-><op>(&local->hw, ...);
      
      Where necessary, the wrappers also do existence checking and
      return default values as appropriate.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      24487981
  7. 22 Apr, 2009 1 commit
    • Jouni Malinen's avatar
      nl80211: Add Michael MIC failure event · a3b8b056
      Jouni Malinen authored
      
      
      Define a new nl80211 event, NL80211_CMD_MICHAEL_MIC_FAILURE, to be
      used to notify user space about locally detected Michael MIC failures.
      This matches with the MLME-MICHAELMICFAILURE.indication() primitive.
      
      Since we do not actually have TSC in the skb anymore when
      mac80211_ev_michael_mic_failure() is called, that function is changed
      to take in the TSC as an optional parameter instead of as a
      requirement to include the TSC after the hdr field (which we did not
      really follow). For now, TSC is not included in the events from
      mac80211, but it could be added at some point.
      Signed-off-by: default avatarJouni Malinen <j@w1.fi>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      a3b8b056
  8. 21 Apr, 2009 1 commit
  9. 16 Apr, 2009 1 commit
  10. 27 Mar, 2009 5 commits
  11. 27 Feb, 2009 1 commit
    • Johannes Berg's avatar
      mac80211: split IBSS/managed code · 46900298
      Johannes Berg authored
      
      
      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: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      46900298
  12. 13 Feb, 2009 4 commits
  13. 09 Feb, 2009 2 commits
  14. 29 Jan, 2009 7 commits
  15. 19 Dec, 2008 2 commits
  16. 12 Dec, 2008 2 commits
  17. 05 Dec, 2008 1 commit