1. 05 12月, 2009 1 次提交
  2. 24 11月, 2009 6 次提交
  3. 20 11月, 2009 1 次提交
  4. 19 11月, 2009 6 次提交
  5. 12 11月, 2009 7 次提交
  6. 11 11月, 2009 1 次提交
    • W
      iwlwifi: Use RTS/CTS as the preferred protection mechanism for 6000 series · 73871f71
      Wey-Yi Guy 提交于
      When 802.11g was introduced, we had RTS/CTS and CTS-to-Self protection
      mechanisms. In an HT Beacon, HT stations use the "Operating Mode" field
      in the HT Information Element to determine whether or not to use
      protection.
      
      The Operating Mode field has 4 possible settings: 0-3:
      Mode 0: If all stations in the BSS are 20/40 MHz HT capable, or if the
      BSS is 20/40 MHz capable, or if all stations in the BSS are 20 MHz HT
      stations in a 20 MHz BSS
      Mode 1: used if there are non-HT stations or APs using the primary or
      secondary channels
      Mode 2: if only HT stations are associated in the BSS and at least one
      20 MHz HT station is associated.
      Mode 3: used if one or more non-HT stations are associated in the BSS.
      
      When in operating modes 1 or 3, and the Use_Protection field is 1 in the
      Beacon's ERP IE, all HT transmissions must be protected using RTS/CTS or
      CTS-to-Self.
      
      By default, CTS-to-self is the preferred protection mechanism for less
      overhead and higher throughput; but using the full RTS/CTS will better
      protect the inner exchange from interference, especially in
      highly-congested environment.
      
      For 6000 series WIFI NIC, RTS/CTS protection mechanism is the
      recommended choice for HT traffic based on the HW design.
      Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Cc: stable@kernel.org
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      73871f71
  7. 03 11月, 2009 7 次提交
  8. 28 10月, 2009 8 次提交
    • B
      iwlwifi: make sure device is reset when unloading driver · c166b25a
      Ben Cahill 提交于
      Add unconditional call to apm_ops.stop() to reset device to low power state
      when unloading driver.  Some paths have existed to unload driver *without*
      resetting device, therefore some errors have persisted through multiple
      load/unload cycles, until the whole platform gets rebooted; this is an
      attempt to remedy some of those situations.  Sorry, I can't seem to find
      a bughost.org bug that specifically has these symptoms, but I had it happen
      recently here.
      
      Note that this will *not* fix situations in which the PCI express bus has
      crashed (evidenced by register reads showing "0xffffffff"), e.g. bughost.org
      1855 and 2096; device is unreachable from driver in those cases.
      Signed-off-by: NBen Cahill <ben.m.cahill@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      c166b25a
    • Z
      iwlwifi: reuse page for notification packets · 7300515d
      Zhu Yi 提交于
      For notification packets and SKBs that fail to rx correctly, add
      them back into the rx_free list so that the pages can be reused
      later. This avoids allocating new rx pages unnecessarily.
      Signed-off-by: NZhu Yi <yi.zhu@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7300515d
    • Z
      iwlwifi: fix use after free bug for paged rx · 29b1b268
      Zhu Yi 提交于
      In the paged rx patch (4854fde2), I introduced a bug that could possibly
      touch an already freed page. It is fixed by avoiding the access in this
      patch. I've also added some comments so that other people touching the
      code won't make the same mistake. In the future, if we cannot avoid
      access the page after being handled to the upper layer, we can use
      get_page/put_page to handle it. For now, it's just not necessary.
      
      It also fixed a debug message print bug reported by Stanislaw Gruszka
      <sgruszka@redhat.com>.
      Signed-off-by: NZhu Yi <yi.zhu@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      29b1b268
    • W
      iwlwifi: separate led function from statistic notification · 1ed2a3d2
      Wey-Yi Guy 提交于
      Detach led background task from statistic notification routine. if led
      blinking is required; the blink rate is based on the traffic condition.
      It do not relate to statistics notification. In addition to that, there is
      not a requirement for statistics notification has to occur all the time.
      Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      1ed2a3d2
    • R
      iwlagn: store station rate scale information in mac80211 station structure · 8d9698b3
      Reinette Chatre 提交于
      Currently mac80211 initializes the rate scaling before notifying the driver
      of the station's existence. The driver dealt with this by not relying on
      mac80211's station notifications and instead mixing this functionality with
      the rate scaling code and other places. To clean this up the driver needs
      to do rate scaling initialization after being notified of the station, this
      can be done if the rate scaling information forms part of the station
      information passed from mac80211 to driver.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8d9698b3
    • R
      iwlwifi: move iwl_setup_mac to iwlagn · f0b6e2e8
      Reinette Chatre 提交于
      This function is only used in iwlagn so there is no need to have it in
      iwlcore.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f0b6e2e8
    • Z
      iwlwifi: use paged Rx · 2f301227
      Zhu Yi 提交于
      This switches the iwlwifi driver to use paged skb from linear skb for Rx
      buffer. So that it relieves some Rx buffer allocation pressure for the
      memory subsystem. Currently iwlwifi (4K for 3945) requests 8K bytes for
      Rx buffer. Due to the trailing skb_shared_info in the skb->data,
      alloc_skb() will do the next order allocation, which is 16K bytes. This
      is suboptimal and more likely to fail when the system is under memory
      usage pressure. Switching to paged Rx skb lets us allocate the RXB
      directly by alloc_pages(), so that only order 1 allocation is required.
      
      It also adjusts the area spin_lock (with IRQ disabled) protected in the
      tasklet because tasklet guarentees to run only on one CPU and the new
      unprotected code can be preempted by the IRQ handler. This saves us from
      spawning another workqueue to make skb_linearize/__pskb_pull_tail happy
      (which cannot be called in hard irq context).
      
      Finally, mac80211 doesn't support paged Rx yet. So we linearize the skb
      for all the management frames and software decryption or defragmentation
      required data frames before handed to mac80211. For all the other frames,
      we __pskb_pull_tail 64 bytes in the linear area of the skb for mac80211
      to handle them properly.
      Signed-off-by: NZhu Yi <yi.zhu@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      2f301227
    • B
      iwlwifi: turn off device when not used. · 4d2ccdb9
      Ben Cahill 提交于
      In some cases (e.g. when mac80211 calls iwl_mac_stop() for suspend or user
      no longer wants device active), device has not been going into low power state
      via __iwl_down().  apm_ops.reset() does not put device into low power state;
      instead it resets the device, then puts it into a powered-up state ready to be
      re-loaded with uCode and re-started.  This has needlessly warmed up user's
      laptops and drained batteries.
      
      With current architecture in which mac80211 controls device up/down (including
      resetting device after firmware errors), there is no need for apm_ops.reset()
      any more; apm_ops.reset() is basically a combination of apm_ops.stop() and
      apm_ops.init().
      
      Instead, __iwl_down() now unconditionally places the device into a low-power
      state via apm_ops.stop(). Device may be re-started via __iwl_up() calling
      apm_ops.init() as soon as it may be needed (e.g. quickly for firmware errors),
      but in the meantime, device will stop wasting energy.
      
      Note that, even in this low power state, if driver re-enables interrupts,
      the device retains the ability to sense the hardware RF-KILL switch, and
      (except for 3945) interrupt the host when it changes.
      Signed-off-by: NBen Cahill <ben.m.cahill@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4d2ccdb9
  9. 13 10月, 2009 1 次提交
  10. 12 10月, 2009 1 次提交
  11. 08 10月, 2009 1 次提交
    • J
      iwlwifi: LED cleanup · e932a609
      Johannes Berg 提交于
      The iwlwifi drivers have LED blinking requirements that
      mac80211 cannot fulfill due to the use of just a single
      LED instead of different ones for TX, RX, radio etc.
      Instead, the single LED blinks according to transfers
      and is solid on the rest of the time. As such, having
      LED class devices registered that mac80211 triggers are
      connected to is pointless as we don't use the triggers
      anyway.
      
      Remove all the useless code and add hooks into the
      driver itself. At the same time, make the LED code
      abstracted so the core code that determines blink rate
      etc. can be shared between 3945 and agn in iwlcore.
      
      At the same time, the fact that we removed the use of
      the mac80211 LED triggers means we can also remove the
      IWLWIFI_LEDS Kconfig symbol since the LED support is
      now self-contained.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e932a609