1. 28 2月, 2012 3 次提交
  2. 09 2月, 2012 1 次提交
  3. 28 1月, 2012 1 次提交
  4. 14 1月, 2012 1 次提交
  5. 20 12月, 2011 1 次提交
  6. 23 11月, 2011 1 次提交
  7. 18 11月, 2011 1 次提交
    • S
      rt2800pci: handle spurious interrupts · 4ba7d999
      Stanislaw Gruszka 提交于
      Some devices may generate spurious interrupts, we have to handle them
      otherwise interrupt line will be disabled with below message and driver
      will not work:
      
      [ 2052.114334] irq 17: nobody cared (try booting with the "irqpoll" option)
      [ 2052.114339] Pid: 0, comm: swapper Tainted: P           2.6.35.6-48.fc14.x86_64 #1
      [ 2052.114341] Call Trace:
      [ 2052.114342]  <IRQ>  [<ffffffff810a6e2b>] __report_bad_irq.clone.1+0x3d/0x8b
      [ 2052.114349]  [<ffffffff810a6f93>] note_interrupt+0x11a/0x17f
      [ 2052.114352]  [<ffffffff810a7a73>] handle_fasteoi_irq+0xa8/0xce
      [ 2052.114355]  [<ffffffff8100c2ea>] handle_irq+0x88/0x90
      [ 2052.114357]  [<ffffffff8146f034>] do_IRQ+0x5c/0xb4
      [ 2052.114360]  [<ffffffff81469593>] ret_from_intr+0x0/0x11
      [ 2052.114361]  <EOI>  [<ffffffff8102b7f9>] ? native_safe_halt+0xb/0xd
      [ 2052.114366]  [<ffffffff81010f03>] ? need_resched+0x23/0x2d
      [ 2052.114367]  [<ffffffff8101102a>] default_idle+0x34/0x4f
      [ 2052.114370]  [<ffffffff81008325>] cpu_idle+0xaa/0xcc
      [ 2052.114373]  [<ffffffff81461f2a>] start_secondary+0x24d/0x28e
      [ 2052.114374] handlers:
      [ 2052.114375] [<ffffffff81332944>] (usb_hcd_irq+0x0/0x7c)
      [ 2052.114378] [<ffffffffa00697da>] (rt2800pci_interrupt+0x0/0x18d [rt2800pci])
      [ 2052.114384] Disabling IRQ #17
      
      Resolve:
      https://bugzilla.redhat.com/show_bug.cgi?id=658451Reported-and-tested-by: NAmir Hedayaty <hedayaty@gmail.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NStanislaw Gruszka <sgruszka@redhat.com>
      Acked-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4ba7d999
  8. 15 9月, 2011 3 次提交
  9. 14 9月, 2011 1 次提交
  10. 10 8月, 2011 1 次提交
    • H
      rt2x00: Fix PCI interrupt processing race on SMP systems · abc11994
      Helmut Schaa 提交于
      When toggle_irq is called for PCI devices to disable device interrupts
      it used tasklet_disable to wait for a possibly running tasklet to finish.
      However, on SMP systems the tasklet might still be scheduled on another CPU.
      Instead, use tasklet_kill to ensure that all scheduled tasklets are finished
      before returning from toggle_irq.
      
      Furthermore, it was possible that a tasklet reenabled its interrupt even
      though interrupts have been disabled already. Fix this by checking the
      DEVICE_STATE_ENABLED_RADIO flag before reenabling single interrupts
      during tasklet processing.
      
      While at it also enable/kill the TBTT and PRETBTT tasklets in the
      toggle_irq callback and only use tasklet_kill in stop_queue to wait
      for a currently scheduled beacon update before returning.
      Signed-off-by: NHelmut Schaa <helmut.schaa@googlemail.com>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      abc11994
  11. 08 7月, 2011 2 次提交
  12. 06 6月, 2011 1 次提交
  13. 02 6月, 2011 1 次提交
  14. 03 5月, 2011 1 次提交
  15. 20 4月, 2011 6 次提交
    • I
      rt2x00: Implement get_ringparam callback function · e7dee444
      Ivo van Doorn 提交于
      With the get_ringparam callback function we can export ring parameters
      to ethtool through the mac80211 interface.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e7dee444
    • H
      rt2x00: Optimize register access in rt2800pci · 9a819996
      Helmut Schaa 提交于
      All register reads/writes in rt2800pci were previously done with
      rt2800_register_read/rt2800_register_write. These however indirectly
      call rt2x00pci_register_read/rt2x00pci_register_write which adds an
      additional overhead of at least one call and several move instructions
      to each register access.
      
      Replacing the calls to rt2800_register_read/rt2800_register_write with
      direct calls to rt2x00pci_register_read/rt2x00pci_register_write gets
      rid of quite a number of instructions in the drivers hotpaths (IRQ
      handling and txdone handling).
      
      For consistency replace all references to rt2800_register_read/write
      with the rt2x00pci_register_read/write variants.
      Signed-off-by: NHelmut Schaa <helmut.schaa@googlemail.com>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      9a819996
    • G
      rt2x00: Allow dynamic addition of PCI/USB IDs. · e01ae27f
      Gertjan van Wingerde 提交于
      Both USB and PCI drivers allow a system administrator to dynamically add
      USB/PCI IDs to the device table that a driver supports via the
      /sys/bus/{usb,pci,pci_express}/drivers/<driver-name>/new_id files.
      
      However, for the rt2x00 drivers using this method currently crashes the
      system with a NULL pointer failure.
      
      This is due to the set-up of rt2x00 where the probe functions require a
      rt2x00_ops structure in the driver_info field of the probed device. As
      this field is empty for the dynamically added devices this fails for
      these devices.
      
      Fix this by introducing driver-specific probe wrappers that do nothing
      but calling the bus-specific probe functions with the rt2x00_ops structure
      as an argument, rather than depending on the driver_info field.
      Signed-off-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e01ae27f
    • H
      rt2x00: Always inline rt2x00pci_enable_interrupt · 7a5a681a
      Helmut Schaa 提交于
      This allows the compiler to perform the necessary bitfield calculations
      during compile time instead of run time and thus reduces the number of
      instructions to run during each tasklet invocation. This should improve
      performance in the RX hotpath.
      
      This comes at the cost of a slight increase in the module size (for
      example rt2800pci):
      
      Before:
         text    data     bss     dec     hex filename
        14133     832       4   14969    3a79 drivers/net/wireless/rt2x00/rt2800pci.ko
      
      After:
         text    data     bss     dec     hex filename
        14149     832       4   14985    3a89 drivers/net/wireless/rt2x00/rt2800pci.ko
      Signed-off-by: NHelmut Schaa <helmut.schaa@googlemail.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7a5a681a
    • I
      rt2x00: Decrease association time for USB devices · 152a5992
      Ivo van Doorn 提交于
      When powersaving is enabled, assocaition times are very high
      (for WPA2 networks, the time can easily be around the 3 seconds).
      
      This is caused, because the flushing of the queues takes
      too much time. Without the flushing callback mac80211 assumes
      a timeout of 100ms while scanning. Limit all flush waiting
      loops to the same maximum.
      
      We can apply this maximum by passing the drop status to the
      driver, which makes sure the driver performs extra actions
      during the waiting for the queue to become empty.
      
      After these changes, association times fall within the
      healthy range of ~0.6 seconds with powersaving enabled.
      The difference between association time between powersaving
      enabled and disabled is now only ~0.1 second (which can also
      be due to the measuring method).
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Acked-by: NGertjan van Wingerde <gwingerde@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      152a5992
    • I
      rt2x00: Split rt2x00dev->flags · 7dab73b3
      Ivo van Doorn 提交于
      The number of flags defined for the rt2x00dev->flags field,
      has been growing over the years. Currently we are approaching
      the maximum number of bits which are available in the field.
      
      A secondary problem, is that one part of the field are initialized only
      during boot, because the driver requirements are initialized or device
      requirements are loaded from the EEPROM. In both cases, the flags are
      fixed and will not change during device operation. The other flags are
      the device state, and will change frequently. So far this resulted in the fact
      that for some flags, the atomic bit accessors are used, while for the others
      the non-atomic variants are used.
      
      By splitting the flags up into a "flags" and "cap_flags" we can put all flags
      which are fixed inside "cap_flags". This field can then be read non-atomically.
      In the "flags" field we keep the device state, which is going to be read atomically.
      
      This adds more room for more flags in the future, and sanitizes the field access methods.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Acked-by: NHelmut Schaa <helmut.schaa@googlemail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7dab73b3
  16. 05 4月, 2011 3 次提交
  17. 05 3月, 2011 6 次提交
  18. 22 2月, 2011 2 次提交
  19. 19 2月, 2011 1 次提交
  20. 01 2月, 2011 3 次提交