1. 06 3月, 2009 1 次提交
    • I
      rt2x00: Fix SW antenna diversity · 64abd803
      Ivo van Doorn 提交于
      Software antenna tuning is broken because of an function
      ordering problem during rt2x00link_tuner().
      
      rt2x00link_precalculate_signal()
      rt2x00leds_led_quality()
      rt2x00lib_antenna_diversity()
      
      rt2x00link_precalculate_signal() will reset the quality TX/RX counters,
      however rt2x00lib_antenna_diversity() requires the RX counter to
      see what RSSI value must be used for a particular antenna.
      We can't change the ordering since rt2x00lib_antenna_diversity() might
      reset other statistics which are needed by the function called earlier.
      
      Move the reset of the quality TX/RX counters into a seperate function
      and move the call to after rt2x00lib_antenna_diversity().
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      64abd803
  2. 28 2月, 2009 4 次提交
  3. 10 2月, 2009 5 次提交
  4. 30 1月, 2009 27 次提交
  5. 23 1月, 2009 1 次提交
  6. 17 1月, 2009 1 次提交
    • R
      rt2x00: fix a wrong parameter for __test_and_clear_bit() in rt2x00rfkill_free(). · e223b6dc
      Rami Rosen 提交于
      When running modprobe rt73usb, and then rmmod rt73usb, and then
      iwconfig, the wlan0 device does not disappear. When repeating this
      process again, we get a kernel Oops errors and "BUG: unable to handle
      kernel paging request..." message in the kernel log.
      
      The reason for this is that there is an error in rt2x00rfkill_free(),
      which is called in the process of removing the device
      (rt2x00lib_remove_dev() in rt2x00dev.c).
      rt2x00rfkill_free() clears the RFKILL_STATE_ALLOCATED bit , which is
      bit number 1 () in rt2x00dev->flags instead of in
      rt2x00dev->rfkill_state. As a result, when checking the
      DEVICE_STATE_REGISTERED_HW bit (bit number 1 in rt2x00dev->flags) in
      rt2x00lib_remove_hw() it is **unset**, and we wrongly **don't** call
      ieee80211_unregister_hw().
      
      This patch corrects this: the parameter for __test_and_clear_bit() in
      rt2x00rfkill_free() should be &rt2x00dev->rfkill_state and not
      &rt2x00dev->flags.
      Signed-off-by: NRami Rosen <ramirose@gmail.com>
      Acked-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e223b6dc
  7. 13 1月, 2009 1 次提交
    • I
      rt2x00: Fix rt2500usb HW crypto: WEP 128 & AES · f1dd2b23
      Ivo van Doorn 提交于
      The TXD_W0_CIPHER field is a 1-bit field. It only acts as boolean value
      to indicate if the frame must be encrypted or not.
      
      The way rt2x00_set_field32() worked it would grab the least signifcant bit
      from txdesc->cipher and use that as value. Because of that WEP 64 and TKIP
      worked since they had odd-numbered values, while WEP 128 and AES were
      even numbers and didn't work.
      
      Correctly booleanize the txdecs->cipher value to allow the hardware to
      encrypt the outgoing data. After this we can enable HW crypto by default again.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f1dd2b23