1. 20 3月, 2010 2 次提交
    • R
      iwlwifi: implement new mac80211 station add/remove calls · fe6b23dd
      Reinette Chatre 提交于
      mac80211 recently implemented two new callbacks that are used to request
      station add/remove from the driver. The benefot from these new callbacks
      are that they enable the driver to sleep while performing this work.
      
      This is a big patch since a few things need to be coordinated in this move.
      First we need to decouple station management from rate scaling, which
      caused a lot of code to be moved and/or deleted. Next we needed to tie in
      with mac80211's station management callback and let it direct our station
      management as well as trigger the rate scaling initialization.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      fe6b23dd
    • R
      iwlwifi: only add broadcast station once · 7e246191
      Reinette Chatre 提交于
      Currently the broadcast station is added after every RXON command. Change
      this to only add the broadcast station when interface is added by mac80211.
      With this we need some extra work to ensure broadcast station is always
      present since station table is cleared when RXON without ASSOC bit set is
      sent. To deal with this we re-add all driver known stations to uCode after
      such an RXON command is sent.
      
      We also do some cleanup and remove the various calls to clear the station
      table. We now only clear the station table in two scenarios:
      - only clear uCode portion of station table when RXON command without ASSOC
      bit is sent
      - clear uCode and driver portion when interface goes down or is removed.
      
      We need to do this clearing when interface goes down to deal with the
      device restart/reconfigure routines which do not remove the interface, but
      do add the interface during reconfiguration.
      
      Previously the keys were also cleared when station table in driver is
      cleared, this is not done anymore since mac80211 will take care that keys
      are set and cleared correctly.
      
      There is a known issue with this change. Associating with different AP
      without bringing interface down fails with a firmware error. This is
      because of the lack of full station notification support and the later
      patches in this series that complete the station notification support will
      fix this.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      7e246191
  2. 10 3月, 2010 10 次提交
  3. 20 2月, 2010 2 次提交
  4. 12 2月, 2010 3 次提交
  5. 09 2月, 2010 1 次提交
  6. 30 1月, 2010 1 次提交
  7. 26 1月, 2010 2 次提交
    • R
      iwlwifi: cleanup spectrum measurement command support · 81963d68
      Reinette Chatre 提交于
      In iwlagn the support for spectrum measurement command has been
      disabled since v2.6.29 without any requests for it. In addition to this
      when this command is indeed enabled it has been found to trigger firmware
      SYSASSERT on at least 4965 and 5100 hardware (see
      http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=1952 ). Since then
      this code has been bitrotting and cannot just be enabled without porting.
      
      Remove support for spectrum measurement command from iwlagn. It can be
      added back if there is a future need and the firmware problem it triggers
      has been fixed. Support for the spectrim measurement notification remains
      as it has been enabled all the time.
      
      In addition to this remove the 3945 spectrum measurement command Kconfig
      option and make this command always supported. The code added by this
      enabling is minimal and only run when user triggers a spectrum measurement
      request via sysfs.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      81963d68
    • W
      iwlwifi: configure missed beacon threshold · a13d276f
      Wey-Yi Guy 提交于
      Add support to configure missed beacon threshold, by default, if receive
      "missed beacon" notification from uCode and has more than 5 consecutive
      beacon missed, then perform sensitivity calibration; with this change,
      allow user to adjust the missed beacon threshold from debugfs in case
      more sensitivity calibration required for better performance in noisy
      environment
      
      The default value (=5) should be good enough for the normal condition,
      but for very noisy environment, more sensitivity calibration could help
      improve the throughput, so by setting the missed beacon threshold to
      lower number, user might experience better performance result.
      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>
      a13d276f
  8. 20 1月, 2010 2 次提交
  9. 29 12月, 2009 1 次提交
  10. 22 12月, 2009 6 次提交
    • W
      iwlwifi: on-screen event log dump · b03d7d0f
      Wey-Yi Guy 提交于
      This feature enables the on-screen uCode event log dump. The original
      method will append the event log to syslog; with this capability,
      we also enable the user to write script to capture the
      events which provide additional flexibility to help uCode debugging
      
      Method
      1) change to debugfs directory (sys/kernel/debug/phyX/iwlagn/data)
      2) #cat log_event
      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>
      b03d7d0f
    • Z
      iwl3945: fix panic in iwl3945 driver · dc57a303
      Zhu Yi 提交于
      3945 updated write_ptr without regard to read_ptr on the Tx path.
      This messes up our TFD on high load and result in the following:
      
      <1>[ 7290.414172] IP: [<ffffffffa0dd53a1>] iwl3945_rx_reply_tx+0xc1/0x450 [iwl3945]
      <4>[ 7290.414205] PGD 0
      <1>[ 7290.414214] Thread overran stack, or stack corrupted
      <0>[ 7290.414229] Oops: 0002 [#1] PREEMPT SMP
      <0>[ 7290.414246] last sysfs file: /sys/devices/platform/coretemp.1/temp1_input
      <4>[ 7290.414265] CPU 0
      <4>[ 7290.414274] Modules linked in: af_packet nfsd usb_storage usb_libusual cpufreq_powersave exportfs cpufreq_conservative iwl3945 nfs cpufreq_userspace snd_hda_codec_realtek acpi_cpufreq uvcvideo lockd iwlcore snd_hda_intel joydev coretemp nfs_acl videodev snd_hda_codec mac80211 v4l1_compat snd_hwdep sbp2 v4l2_compat_ioctl32 uhci_hcd psmouse auth_rpcgss ohci1394 cfg80211 ehci_hcd video ieee1394 snd_pcm serio_raw battery ac nvidia(P) usbcore output sunrpc evdev lirc_ene0100 snd_page_alloc rfkill tg3 libphy fuse lzo lzo_decompress lzo_compress
      <6>[ 7290.414486] Pid: 0, comm: swapper Tainted: P           2.6.32-rc8-wl #213 Aspire 5720
      <6>[ 7290.414507] RIP: 0010:[<ffffffffa0dd53a1>]  [<ffffffffa0dd53a1>] iwl3945_rx_reply_tx+0xc1/0x450 [iwl3945]
      <6>[ 7290.414541] RSP: 0018:ffff880002203d60  EFLAGS: 00010246
      <6>[ 7290.414557] RAX: 000000000000004f RBX: ffff880064c11600 RCX: 0000000000000013
      <6>[ 7290.414576] RDX: ffffffffa0ddcf20 RSI: ffff8800512b7008 RDI: 0000000000000038
      <6>[ 7290.414596] RBP: ffff880002203dd0 R08: 0000000000000000 R09: 0000000000000100
      <6>[ 7290.414616] R10: 0000000000000001 R11: 0000000000000000 R12: 00000000000000a0
      <6>[ 7290.414635] R13: 0000000000000002 R14: 0000000000000013 R15: 0000000000020201
      <6>[ 7290.414655] FS:  0000000000000000(0000) GS:ffff880002200000(0000) knlGS:0000000000000000
      <6>[ 7290.414677] CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
      <6>[ 7290.414693] CR2: 0000000000000041 CR3: 0000000001001000 CR4: 00000000000006f0
      <6>[ 7290.414712] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      <6>[ 7290.414732] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      <4>[ 7290.414752] Process swapper (pid: 0, threadinfo ffffffff81524000, task ffffffff81528b60)
      <0>[ 7290.414772] Stack:
      <4>[ 7290.414780]  ffff880002203da0 0000000000000046 0000000000000000 0000000000000046
      <4>[ 7290.414804] <0> 0000000000000282 0000000000000282 0000000000000282 ffff880064c12010
      <4>[ 7290.414830] <0> ffff880002203db0 ffff880064c11600 ffff880064c12e50 ffff8800512b7000
      <0>[ 7290.414858] Call Trace:
      <0>[ 7290.414867]  <IRQ>
      <4>[ 7290.414884]  [<ffffffffa0dc8c47>] iwl3945_irq_tasklet+0x657/0x1740 [iwl3945]
      <4>[ 7290.414910]  [<ffffffff8138fc60>] ? _spin_unlock+0x30/0x60
      <4>[ 7290.414931]  [<ffffffff81049a21>] tasklet_action+0x101/0x110
      <4>[ 7290.414950]  [<ffffffff8104a3d0>] __do_softirq+0xc0/0x160
      <4>[ 7290.414968]  [<ffffffff8100d01c>] call_softirq+0x1c/0x30
      <4>[ 7290.414986]  [<ffffffff8100eff5>] do_softirq+0x75/0xb0
      <4>[ 7290.415003]  [<ffffffff81049ee5>] irq_exit+0x95/0xa0
      <4>[ 7290.415020]  [<ffffffff8100e547>] do_IRQ+0x77/0xf0
      <4>[ 7290.415038]  [<ffffffff8100c7d3>] ret_from_intr+0x0/0xf
      <0>[ 7290.415052]  <EOI>
      <4>[ 7290.415067]  [<ffffffff81234efa>] ? acpi_idle_enter_bm+0x270/0x2a5
      <4>[ 7290.415087]  [<ffffffff81234f04>] ? acpi_idle_enter_bm+0x27a/0x2a5
      <4>[ 7290.415107]  [<ffffffff81234efa>] ? acpi_idle_enter_bm+0x270/0x2a5
      <4>[ 7290.415130]  [<ffffffff812c11f3>] ? cpuidle_idle_call+0x93/0xf0
      <4>[ 7290.415149]  [<ffffffff8100b0d7>] ? cpu_idle+0xa7/0x110
      <4>[ 7290.415168]  [<ffffffff8137b3d5>] ? rest_init+0x75/0x80
      <4>[ 7290.415187]  [<ffffffff8158cd0a>] ? start_kernel+0x3a7/0x3b3
      <4>[ 7290.415206]  [<ffffffff8158c315>] ? x86_64_start_reservations+0x125/0x129
      <4>[ 7290.415227]  [<ffffffff8158c3fd>] ? x86_64_start_kernel+0xe4/0xeb
      <0>[ 7290.415243] Code: 00 41 39 ce 0f 8d e8 01 00 00 48 8b 47 40 48 63 d2 48 69 d2 98 00 00 00 4c 8b 04 02 48 c7 c2 20 cf dd a0 49 8d 78 38 49 8d 40 4f <c6> 47 09 00 c6 47 0c 00 c6 47 0f 00 c6 47 12 00 c6 47 15 00 49
      <1>[ 7290.415382] RIP  [<ffffffffa0dd53a1>] iwl3945_rx_reply_tx+0xc1/0x450 [iwl3945]
      <4>[ 7290.415410]  RSP <ffff880002203d60>
      <0>[ 7290.415421] CR2: 0000000000000041
      <4>[ 7290.415436] ---[ end trace ec46807277caa515 ]---
      <0>[ 7290.415450] Kernel panic - not syncing: Fatal exception in interrupt
      <4>[ 7290.415468] Pid: 0, comm: swapper Tainted: P      D    2.6.32-rc8-wl #213
      <4>[ 7290.415486] Call Trace:
      <4>[ 7290.415495]  <IRQ>  [<ffffffff8138c040>] panic+0x7d/0x13a
      <4>[ 7290.415519]  [<ffffffff8101071a>] oops_end+0xda/0xe0
      <4>[ 7290.415538]  [<ffffffff8102e1ea>] no_context+0xea/0x250
      <4>[ 7290.415557]  [<ffffffff81038991>] ? select_task_rq_fair+0x511/0x780
      <4>[ 7290.415578]  [<ffffffff8102e475>] __bad_area_nosemaphore+0x125/0x1e0
      <4>[ 7290.415597]  [<ffffffff81038d0c>] ? __enqueue_entity+0x7c/0x80
      <4>[ 7290.415616]  [<ffffffff81039201>] ? enqueue_task_fair+0x111/0x150
      <4>[ 7290.415636]  [<ffffffff8102e53e>] bad_area_nosemaphore+0xe/0x10
      <4>[ 7290.415656]  [<ffffffff8102e8fa>] do_page_fault+0x26a/0x320
      <4>[ 7290.415674]  [<ffffffff813905df>] page_fault+0x1f/0x30
      <4>[ 7290.415697]  [<ffffffffa0dd53a1>] ? iwl3945_rx_reply_tx+0xc1/0x450 [iwl3945]
      <4>[ 7290.415723]  [<ffffffffa0dc8c47>] iwl3945_irq_tasklet+0x657/0x1740 [iwl3945]
      <4>[ 7290.415746]  [<ffffffff8138fc60>] ? _spin_unlock+0x30/0x60
      <4>[ 7290.415764]  [<ffffffff81049a21>] tasklet_action+0x101/0x110
      <4>[ 7290.415783]  [<ffffffff8104a3d0>] __do_softirq+0xc0/0x160
      <4>[ 7290.415801]  [<ffffffff8100d01c>] call_softirq+0x1c/0x30
      <4>[ 7290.415818]  [<ffffffff8100eff5>] do_softirq+0x75/0xb0
      <4>[ 7290.415835]  [<ffffffff81049ee5>] irq_exit+0x95/0xa0
      <4>[ 7290.415852]  [<ffffffff8100e547>] do_IRQ+0x77/0xf0
      <4>[ 7290.415869]  [<ffffffff8100c7d3>] ret_from_intr+0x0/0xf
      <4>[ 7290.415883]  <EOI>  [<ffffffff81234efa>] ? acpi_idle_enter_bm+0x270/0x2a5
      <4>[ 7290.415911]  [<ffffffff81234f04>] ? acpi_idle_enter_bm+0x27a/0x2a5
      <4>[ 7290.415931]  [<ffffffff81234efa>] ? acpi_idle_enter_bm+0x270/0x2a5
      <4>[ 7290.415952]  [<ffffffff812c11f3>] ? cpuidle_idle_call+0x93/0xf0
      <4>[ 7290.415971]  [<ffffffff8100b0d7>] ? cpu_idle+0xa7/0x110
      <4>[ 7290.415989]  [<ffffffff8137b3d5>] ? rest_init+0x75/0x80
      <4>[ 7290.416007]  [<ffffffff8158cd0a>] ? start_kernel+0x3a7/0x3b3
      <4>[ 7290.416026]  [<ffffffff8158c315>] ? x86_64_start_reservations+0x125/0x129
      <4>[ 7290.416047]  [<ffffffff8158c3fd>] ? x86_64_start_kernel+0xe4/0xeb
      Reported-by: NMaxim Levitsky <maximlevitsky@gmail.com>
      Tested-by: NMaxim Levitsky <maximlevitsky@gmail.com>
      Signed-off-by: NZhu Yi <yi.zhu@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      CC: stable@kernel.org
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      dc57a303
    • R
      iwlwifi: initialize spinlock before use · 731a29b7
      Reinette Chatre 提交于
      Recent powersaving work resulted in power management ops being called
      during EEPROM initialization. The lock used by these functions is not
      initialized at this time. Ensure lock is initialized before it is used.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      731a29b7
    • R
      iwl3945: disable power save · bc45a670
      Reinette Chatre 提交于
      we see from http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2125
      that power saving does not work well on 3945. Since then power saving has
      also been connected with association problems where an AP deathenticates a
      3945 after it is unable to transmit data to it - this happens when 3945
      enters power savings mode.
      
      Disable power save support until issues are resolved.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      CC: stable@kernel.org
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      bc45a670
    • W
      iwlwifi: fix syslog message for event log dump size · 521d9bce
      Wey-Yi Guy 提交于
      When trigger event log dumping from debugfs, the entire event log
      should be dumped and the size should match the number of events being
      dump.
      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>
      521d9bce
    • Z
      iwlwifi: allocated rx page accounting cleanup · 64a76b50
      Zhu Yi 提交于
      In iwlwifi, priv->alloc_rxb_page is used to keep track of the Rx
      pages allocated by the driver. This cleans up the page free routines
      by introducing __iwl_free_pages/iwl_free_pages so that the accounting
      is more accurate and less error prone. This also fixes two instances where
      the counter was not updated.
      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>
      64a76b50
  11. 05 12月, 2009 2 次提交
  12. 24 11月, 2009 1 次提交
  13. 20 11月, 2009 1 次提交
  14. 19 11月, 2009 2 次提交
  15. 12 11月, 2009 3 次提交
  16. 03 11月, 2009 1 次提交
    • B
      iwlwifi: remove power-wasting calls to apm_ops.init() · 88521364
      Ben Cahill 提交于
      To save power, don't run apm_ops.init() until needed at "up" time.
      
      EEPROM (5000 and earlier devices) may be read without running apm_ops.init(),
      but OTP reads (6000 and newer devices) require a powered-up chip.
      Therefore, remove apm_ops.init() from the general path in XXXX_pci_probe(),
      and call it only if device uses OTP.  Once done with OTP read, call
      apm_ops.stop() to reset chip and save power until "up" time comes around.
      
      NOTE:  This patch depends on removal of priv->lock from iwl_apm_stop();
      lock does not get initialized until later in flow.  See patch
      "remove unneeded locks from apm_stop()".
      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>
      88521364