1. 22 Aug, 2011 4 commits
  2. 08 Jul, 2011 1 commit
    • Johannes Berg's avatar
      mac80211: fix TKIP races, make API easier to use · 523b02ea
      Johannes Berg authored
      Our current TKIP code races against itself on TX
      since we can process multiple packets at the same
      time on different ACs, but they all share the TX
      context for TKIP. This can lead to bad IVs etc.
      Also, the crypto offload helper code just obtains
      the P1K/P2K from the cache, and can update it as
      well, but there's no guarantee that packets are
      really processed in order.
      To fix these issues, first introduce a spinlock
      that will protect the IV16/IV32 values in the TX
      context. This first step makes sure that we don't
      assign the same IV multiple times or get confused
      in other ways.
      Secondly, change the way the P1K cache works. I
      add a field "p1k_iv32" that stores the value of
      the IV32 when the P1K was last recomputed, and
      if different from the last time, then a new P1K
      is recomputed. This can cause the P1K computation
      to flip back and forth if packets are processed
      out of order. All this also happens under the new
      Finally, because there are argument differences,
      split up the ieee80211_get_tkip_key() API into
      ieee80211_get_tkip_p1k() and ieee80211_get_tkip_p2k()
      and give them the correct arguments.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  3. 07 Jul, 2011 1 commit
  4. 01 Jun, 2011 1 commit
  5. 16 May, 2011 1 commit
  6. 25 Feb, 2011 1 commit
  7. 23 Feb, 2011 1 commit
  8. 28 Apr, 2010 1 commit
  9. 06 Nov, 2009 1 commit
  10. 27 Oct, 2009 2 commits
  11. 12 Oct, 2009 1 commit
  12. 07 Oct, 2009 1 commit
  13. 23 Sep, 2009 2 commits
  14. 09 Sep, 2009 1 commit
    • Michael Buesch's avatar
      b43: Fix sparse warning in hw-tkip code · cde1b55b
      Michael Buesch authored
      This fixes a sparse warning in the hardware-TKIP code:
      drivers/net/wireless/b43/xmit.c:272:18: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/b43/xmit.c:272:18:    expected unsigned short [unsigned] [short] <noident>
      drivers/net/wireless/b43/xmit.c:272:18:    got restricted unsigned short [usertype] <noident>
      The code should work correctly with and without this patch applied.
      Signed-off-by: default avatarMichael Buesch <mb@bu3sch.de>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  15. 20 Aug, 2009 2 commits
  16. 14 Aug, 2009 1 commit
  17. 10 Jul, 2009 1 commit
    • 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>
  18. 10 Jun, 2009 1 commit
  19. 27 Mar, 2009 1 commit
  20. 05 Mar, 2009 1 commit
  21. 21 Nov, 2008 1 commit
    • Johannes Berg's avatar
      b43: remove rate index warning · 1e87d680
      Johannes Berg authored
      I frequently run into this warning, and added some
      debugging to see why, and got this:
      b43 bad rx: 00000000: 2f d2 e2 63 cf a7 14 04 28 18 c8 5f 88 4a a2 00
                            bogus junk       | plcp            | fctl| dur
      b43 bad rx: 00000010: 00 11 24 91 07 4d 00 06 25 ff 8f 78 00 06 25 ff
                            my MAC address   | BSSID           | AP MAC
      b43 bad rx: 00000020: 8f 76 20 74 00 00 42 07 00 20 00 00 00 00 aa aa
                                 | seq | QoS | CCMP IV               | data
      As you can see, there are 6 bogus bytes (sometimes only five) and then
      the frame. I don't know why, and I don't see how to recover, so let's
      just drop these frames.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarMichael Buesch <mb@bu3sch.de>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  22. 31 Oct, 2008 1 commit
  23. 06 Oct, 2008 2 commits
  24. 29 Aug, 2008 2 commits
    • Michael Buesch's avatar
      b43: Rewrite TX power adjustment · 18c8adeb
      Michael Buesch authored
      This patch rewrites the TX power recalculation algorithms to scale better
      with changed enviromnent. If there's low
      TX traffic, the power will be checked against the desired values
      every 60 seconds.
      If there is high TX traffic, the check is redone every 2 seconds. This improves
      the reaction times a lot and confuses the rate control less.
      It will also reduce the time it initially takes to tune to a new TX power
      value. With the old algorithm it could take about 30 to 45 seconds to settle to
      a new power value. This will happen in about two to four seconds now.
      Signed-off-by: default avatarMichael Buesch <mb@bu3sch.de>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    • Michael Buesch's avatar
      b43: Implement dynamic PHY API · ef1a628d
      Michael Buesch authored
      This patch implements a dynamic "ops" based PHY API.
      This is needed in order to conveniently support future PHY types
      to avoid the "switch"-hell.
      This patch does not change any functionality. It just moves lots
      of code from one place to another and adjusts it for the changed
      data structures.
      Signed-off-by: default avatarMichael Buesch <mb@bu3sch.de>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  25. 29 Jul, 2008 1 commit
  26. 14 Jul, 2008 1 commit
    • Johannes Berg's avatar
      mac80211: fix TX sequence numbers · f591fa5d
      Johannes Berg authored
      This patch makes mac80211 assign proper sequence numbers to
      QoS-data frames. It also removes the old sequence number code
      because we noticed that only the driver or hardware can assign
      sequence numbers to non-QoS-data and especially management
      frames in a race-free manner because beacons aren't passed
      through mac80211's TX path.
      This patch also adds temporary code to the rt2x00 drivers to
      not break them completely, that code will have to be reworked
      for proper sequence numbers on beacons.
      It also moves sequence number assignment down in the TX path
      so no sequence numbers are assigned to frames that are dropped.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  27. 26 Jun, 2008 1 commit
  28. 21 May, 2008 2 commits
  29. 14 May, 2008 1 commit
    • Bruno Randolf's avatar
      mac80211: use hardware flags for signal/noise units · 566bfe5a
      Bruno Randolf authored
      trying to clean up the signal/noise code. the previous code in mac80211 had
      confusing names for the related variables, did not have much definition of
      what units of signal and noise were provided and used implicit mechanisms from
      the wireless extensions.
      this patch introduces hardware capability flags to let the hardware specify
      clearly if it can provide signal and noise level values and which units it can
      provide. this also anticipates possible new units like RCPI in the future.
      for signal:
        IEEE80211_HW_SIGNAL_UNSPEC - unspecified, unknown, hw specific
        IEEE80211_HW_SIGNAL_DB     - dB difference to unspecified reference point
        IEEE80211_HW_SIGNAL_DBM    - dBm, difference to 1mW
      for noise we currently only have dBm:
        IEEE80211_HW_NOISE_DBM     - dBm, difference to 1mW
      if IEEE80211_HW_SIGNAL_UNSPEC or IEEE80211_HW_SIGNAL_DB is used the driver has
      to provide the maximum value (max_signal) it reports in order for applications
      to make sense of the signal values.
      i tried my best to find out for each driver what it can provide and update it
      but i'm not sure (?) for some of them and used the more conservative guess in
      doubt. this can be fixed easily after this patch has been merged by changing
      the hardware flags of the driver.
      DRIVER          SIGNAL    MAX	NOISE   QUAL
      adm8211         unspec(?) 100   n/a     missing
      at76_usb        unspec(?) (?)   unused  missing
      ath5k           dBm             dBm     percent rssi
      b43legacy       dBm             dBm     percent jssi(?)
      b43             dBm             dBm     percent jssi(?)
      iwl-3945        dBm             dBm     percent snr+more
      iwl-4965        dBm             dBm     percent snr+more
      p54             unspec    127   n/a     missing
      rt2x00          dBm	        n/a     percent rssi+tx/rx frame success
        rt2400        dBm             n/a
        rt2500pci     dBm             n/a
        rt2500usb     dBm             n/a
        rt61pci       dBm             n/a
        rt73usb       dBm             n/a
      rtl8180         unspec(?) 65    n/a     (?)
      rtl8187         unspec(?) 65    (?)     noise(?)
      zd1211          dB(?)     100   n/a     percent
      drivers/net/wireless/ath5k/base.c:      Changes-licensed-under: 3-Clause-BSD
      Signed-off-by: default avatarBruno Randolf <br1@einfach.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
  30. 07 May, 2008 1 commit
  31. 08 Apr, 2008 1 commit