1. 06 3月, 2009 1 次提交
  2. 28 2月, 2009 9 次提交
  3. 14 2月, 2009 2 次提交
  4. 12 2月, 2009 1 次提交
    • R
      iwlwifi: fix suspend/resume and its usage of pci saved state · 89c581b3
      Reinette Chatre 提交于
      Here we do two things:
      
      First, revert "iwlwifi: save PCI state before suspend, restore after
      resume".  That misguided patch led to being unable to use iwlwifi
      devices after resume.
      
      Next, indicate to PCI driver that the saved PCI state is valid during suspend.
      
      We restore PCI state and enable the device when network interface is created,
      similarly PCI state is saved and the device is disabled when network interface
      is removed. Thus, when .suspend is called the PCI state is saved and device
      is disabled. This is the case even if an interface is never created as PCI
      state is saved and device disabled during .probe.
      
      PCI driver assumes PCI state is saved in .suspend. Saving the state at this
      time will save state of disabled device and thus cause problems during
      resume (resuming a disabled device). We thus indicate directly to PCI
      driver that current PCI saved state is valid.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Tested-by: NAlex Riesen <fork0@users.sf.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      89c581b3
  5. 10 2月, 2009 3 次提交
  6. 05 2月, 2009 1 次提交
    • R
      iwlwifi: save PCI state before suspend, restore after resume · c4e061ac
      Reinette Chatre 提交于
      This is the right thing to do and fixes the following warning:
      
      [  115.012278] ------------[ cut here ]------------
      [  115.012281] WARNING: at drivers/pci/pci-driver.c:370
      pci_legacy_suspend+0x85/0xc2()
      [  115.012285] Hardware name: Latitude D630
      [  115.012301] PCI PM: Device state not saved by
      iwl3945_pci_suspend+0x0/0x4c [iwl3945]
      [  115.012304] Modules linked in: fuse nfsd lockd nfs_acl auth_rpcgss
      exportfs sunrpc ipv6 acpi_cpufreq kvm_intel kvm snd_hda_codec_idt
      snd_hda_intel snd_hda_codec snd_hwdep arc4 snd_seq_device snd_pcm_oss
      snd_mixer_oss ecb snd_pcm cryptomgr aead snd_timer crypto_blkcipher
      snd snd_page_alloc ohci1394 crypto_hash crypto_algapi ch341 ieee1394
      usbserial thermal iwl3945 mac80211 led_class lib80211 tg3 processor
      i2c_i801 i2c_core sg cfg80211 libphy usbhid battery ac button sr_mod
      cdrom evdev dcdbas ata_generic ata_piix libata sd_mod scsi_mod ext3
      jbd mbcache uhci_hcd ohci_hcd ehci_hcd usbcore [last unloaded:
      microcode]
      [  115.012374] Pid: 4163, comm: pm-suspend Not tainted
      2.6.29-rc3-00227-gf1dd849-dirty #67
      [  115.012377] Call Trace:
      [  115.012382]  [<ffffffff8023d04d>] warn_slowpath+0xb1/0xed
      [  115.012387]  [<ffffffff80450b5e>] ? _spin_unlock_irqrestore+0x5c/0x78
      [  115.012390]  [<ffffffff80254f08>] ? up+0x34/0x39
      [  115.012394]  [<ffffffff80362319>] ? acpi_ut_release_mutex+0x5d/0x61
      [  115.012397]  [<ffffffff803584b2>] ? acpi_get_data+0x5e/0x70
      [  115.012400]  [<ffffffff80363dd9>] ? acpi_bus_get_device+0x25/0x39
      [  115.012403]  [<ffffffff80363e98>] ? acpi_bus_power_manageable+0x11/0x29
      [  115.012406]  [<ffffffff803462f7>] ? acpi_pci_power_manageable+0x17/0x19
      [  115.012410]  [<ffffffff8033ddfd>] ? pci_set_power_state+0xcc/0x101
      [  115.012418]  [<ffffffffa01f28e9>] ? iwl3945_pci_suspend+0x0/0x4c [iwl3945]
      [  115.012422]  [<ffffffff803401e6>] pci_legacy_suspend+0x85/0xc2
      [  115.012425]  [<ffffffff80340316>] pci_pm_suspend+0x34/0x86
      [  115.012429]  [<ffffffff8039d7ce>] pm_op+0x52/0xe5
      [  115.012432]  [<ffffffff8039dd78>] device_suspend+0x32a/0x451
      [  115.012436]  [<ffffffff80269ec2>] suspend_devices_and_enter+0x3e/0x13a
      [  115.012439]  [<ffffffff8026a128>] enter_state+0x110/0x164
      [  115.012442]  [<ffffffff8026a233>] state_store+0xb7/0xd7
      [  115.012446]  [<ffffffff8032f95f>] kobj_attr_store+0x17/0x19
      [  115.012449]  [<ffffffff80307d64>] sysfs_write_file+0xe4/0x119
      [  115.012453]  [<ffffffff802baa7a>] vfs_write+0xae/0x137
      [  115.012456]  [<ffffffff802babc7>] sys_write+0x47/0x70
      [  115.012459]  [<ffffffff8020b73a>] system_call_fastpath+0x16/0x1b
      [  115.012467] ---[ end trace 829828966f6f24dc ]---
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Tested-by: NMing Lei <tom.leiming@gmail.com>
      Cc: Rafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      c4e061ac
  7. 30 1月, 2009 20 次提交
  8. 23 1月, 2009 1 次提交
  9. 20 12月, 2008 2 次提交
    • J
      iwlwifi: indicate txpower is off in sysfs · 91f39e8e
      Jay Sternberg 提交于
      The patch checks if the radio is disabled before displaying the tx power
      level. Previously when the txpower was set off show_tx_power still
      returned the prior power level. Now it will indicate the power has been
      turned off.
      Signed-off-by: NJay Sternberg <jay.e.sternberg@linux.intel.com>
      Signed-off-by: NZhu Yi <yi.zhu@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      91f39e8e
    • Z
      iwlwifi: use GFP_KERNEL to allocate Rx SKB memory · f1bc4ac6
      Zhu Yi 提交于
      Previously we allocate Rx SKB with GFP_ATOMIC flag. This is because we need
      to hold a spinlock to protect the two rx_used and rx_free lists operation
      in the rxq.
      
      	spin_lock();
      	...
      	element = rxq->rx_used.next;
      	element->skb = alloc_skb(..., GFP_ATOMIC);
      	list_del(element);
      	list_add_tail(&element->list, &rxq->rx_free);
      	...
      	spin_unlock();
      
      After spliting the rx_used delete and rx_free insert into two operations,
      we don't require the skb allocation in an atomic context any more (the
      function itself is scheduled in a workqueue).
      
      	spin_lock();
      	...
      	element = rxq->rx_used.next;
      	list_del(element);
      	...
      	spin_unlock();
      	...
      	element->skb = alloc_skb(..., GFP_KERNEL);
      	...
      	spin_lock()
      	...
      	list_add_tail(&element->list, &rxq->rx_free);
      	...
      	spin_unlock();
      
      This patch should fix the "iwlagn: Can not allocate SKB buffers" warning
      we see recently.
      Signed-off-by: NZhu Yi <yi.zhu@intel.com>
      Acked-by: NTomas Winkler <tomas.winkler@intel.com>
      Cc: stable@kernel.org
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f1bc4ac6