1. 01 11月, 2008 3 次提交
  2. 16 9月, 2008 1 次提交
  3. 06 9月, 2008 1 次提交
  4. 30 8月, 2008 3 次提交
    • I
      rt2x00: Add Signal type flag · 6c6aa3c0
      Ivo van Doorn 提交于
      Instead of using the PLCP flag to indicate if the
      signal value is plcp or the bitrate we should add
      a new flag to mark the bitrate type explicitely.
      This is usefull when new types are added later for
      rt2800.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      6c6aa3c0
    • M
      rt2x00: Only configure hardware when radio is enabled · 2575c11d
      Mattias Nissler 提交于
      Some hardware configuration registers such as antenna and channel configuration
      can only be written when the radio is enabled. Previously, we didn't consider
      this, so some configuration items could be set inconsistently after reenabling
      the radio. This patch changes the config() handler to only reprogram the
      hardware when the radio is enabled. Configuration changes that are made while
      the radio is off are postponed until the radio is switched back on. We also
      leave the radio turned off during initialization and only enable it when
      requested by mac80211. This allows us to get rid of the DIRTY_CONFIG flag,
      because the device is now guaranteed to be completely initialized when brought
      up by mac80211.
      Signed-off-by: NMattias Nissler <mattias.nissler@gmx.de>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      2575c11d
    • I
      rt2x00: Fix race conditions in flag handling · 0262ab0d
      Ivo van Doorn 提交于
      Some of the flags should be accessed atomically to
      prevent race conditions. The flags that are most important
      are those that can change often and indicate the actual
      state of the device, queue or queue entry.
      
      The big flag rename was done to move all state flags to
      the same naming type as the other rt2x00dev flags and
      made sure all places where the flags were used were changed. ;)
      
      Thanks to Stephen for most of the queue flags updates,
      which fixes some of the most obvious consequences of the
      race conditions. Among those the notorious:
      
      rt2x00queue_write_tx_frame: Error - Arrived at non-free entry in the non-full queue 0.
      rt2x00queue_write_tx_frame: Error - Arrived at non-free entry in the non-full queue 0.
      rt2x00queue_write_tx_frame: Error - Arrived at non-free entry in the non-full queue 0.
      Signed-off-by: NStephen Blackheath <tramp.enshrine.stephen@blacksapphire.com>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      0262ab0d
  5. 23 8月, 2008 2 次提交
  6. 30 7月, 2008 1 次提交
    • I
      rt2x00: Force full register config after start() · 74c0ee9b
      Ivo van Doorn 提交于
      rt2x00 will only perform configuration changes from
      mac80211 when the configuration option has changed.
      This means it keeps track of the current active configuration
      and will check these values when the config() callback function
      is used.
      
      However this causes breakage when the interface has been
      brought down and up again, since all stored active values
      aren't reset while the registers might have.
      This is for example the case with rt61pci antenna registers which
      will jump to invalid values when the interface has been started.
      
      To make sure a full configuration takes place after the start()
      callback function, a new flag is added which will be checked
      during config() and skips the "what's changed" phase.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      74c0ee9b
  7. 15 7月, 2008 2 次提交
  8. 09 7月, 2008 3 次提交
  9. 28 6月, 2008 1 次提交
    • I
      rt2x00: Fix lock dependency errror · 980dfcb9
      Ivo van Doorn 提交于
      This fixes a circular locking dependency in the workqueue handling.
      The interface work task uses the mac80211 function
      ieee80211_iterate_active_interfaces() which grabs the RTNL lock.
      
      However when the interface is brough down, this happens under the RTNL
      lock as well, this causes problems because mac80211 will flush the workqueue
      during the ifdown event. This causes mac80211 to wait until the driver has
      completed all work which can't finish because it is waiting on the RTNL lock.
      
      This is fixed by moving rt2x00 workqueue tasks on a different workqueue,
      this workqueue can be flushed when the ieee80211_hw structure is removed
      by the driver (when the driver is unloaded) which does not happen under the
      RTNL lock.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      980dfcb9
  10. 27 6月, 2008 4 次提交
  11. 15 6月, 2008 3 次提交
  12. 10 6月, 2008 1 次提交
  13. 29 5月, 2008 2 次提交
  14. 22 5月, 2008 7 次提交
  15. 15 5月, 2008 1 次提交
    • B
      mac80211: use hardware flags for signal/noise units · 566bfe5a
      Bruno Randolf 提交于
      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: NBruno Randolf <br1@einfach.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      566bfe5a
  16. 13 5月, 2008 1 次提交
    • I
      rt2x00: Fix broken recover-on-error path · ed499983
      Ivo van Doorn 提交于
      During initialization the initialize() callback function
      in rt2x00pci and rt2x00usb will cleanup the mess they made.
      
      rt2x00lib shouldn't call uninitialize because the callback function already
      cleaned up _and_ the DEVICE_INITIALIZED isn't set which causes the
      rt2x00lib_uninitialize() to halt directly anyway. All that is required
      to be cleaned up by rt2x00lib is the queue, and that can be done by
      calling rt2x00queue_uninitialize() directly.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ed499983
  17. 08 5月, 2008 2 次提交
  18. 02 5月, 2008 1 次提交
  19. 17 4月, 2008 1 次提交