aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/wireless
AgeCommit message (Collapse)AuthorFilesLines
2011-01-21ath9k: Try more than one queue when scheduling new aggregate.Ben Greear1-27/+37
Try all xmit queues until the hardware buffers are full. Signed-off-by: Ben Greear <[email protected]> Acked-by: Felix Fietkau <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21ath9k: Add 'misc' file to debugfs, fix queue indexes.Ben Greear1-12/+125
Add a misc file to show hardware op-mode, irq setup, number of various types of VIFs and more. Also, previous patches were using the wrong xmit queue indexes. Change to use the internal ath9k indexes instead of the mac80211 queue indexes. Signed-off-by: Ben Greear <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21cfg80211: Extend channel to frequency mapping for 802.11jBruno Randolf10-15/+30
Extend channel to frequency mapping for 802.11j Japan 4.9GHz band, according to IEEE802.11 section 17.3.8.3.2 and Annex J. Because there are now overlapping channel numbers in the 2GHz and 5GHz band we can't map from channel to frequency without knowing the band. This is no problem as in most contexts we know the band. In places where we don't know the band (and WEXT compatibility) we assume the 2GHz band for channels below 14. This patch does not implement all channel to frequency mappings defined in 802.11, it's just an extension for 802.11j 20MHz channels. 5MHz and 10MHz channels as well as 802.11y channels have been omitted. The following drivers have been updated to reflect the API changes: iwl-3945, iwl-agn, iwmc3200wifi, libertas, mwl8k, rt2x00, wl1251, wl12xx. The drivers have been compile-tested only. Signed-off-by: Bruno Randolf <[email protected]> Signed-off-by: Brian Prodoehl <[email protected]> Acked-by: Luciano Coelho <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21ath9k: Restart xmit logic in xmit watchdog.Ben Greear4-29/+68
The system can get into a state where the xmit queue is stopped, but there are no packets pending, so the queue will not be restarted. Add logic to the xmit watchdog to attempt to restart the xmit logic if this situation is detected. Example 'dmesg' output: ath: txq: f4e723e0 axq_qnum: 2, mac80211_qnum: 2 axq_link: f4e996c8 pending frames: 1 axq_acq empty: 1 stopped: 0 axq_depth: 0 Attempting to restart tx logic. Signed-off-by: Ben Greear <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21ath9k: More xmit queue debugfs information.Ben Greear1-0/+26
To try to figure out why xmit logic hangs. Signed-off-by: Ben Greear <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21ath9k: Keep track of stations for debugfs.Ben Greear4-3/+115
The stations hold the ath_node, which holds the tid and other xmit logic structures. In order to debug stuck xmit logic, we need a way to print out the tid state for the stations. Signed-off-by: Ben Greear <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21ath9k: Add counters to distinquish AMPDU enqueues.Ben Greear3-4/+8
Show counters for pkts sent directly to hardware and those queued in software. Signed-off-by: Ben Greear <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21ath9k: Ensure xmit makes progress.Ben Greear1-0/+2
If the txq->axq_q is empty, the code was breaking out of the tx_processq logic without checking to see if it should transmit other queued AMPDU frames (txq->axq_acq). This patches ensures ath_txq_schedule is called. This needs review. Signed-off-by: Ben Greear <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21ath9k: Remove un-used member from ath_node.Ben Greear1-1/+0
Signed-off-by: Ben Greear <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21ath9k: Add more information to debugfs xmit file.Ben Greear4-2/+42
Should help debug strange tx lockup type issues. Signed-off-by: Ben Greear <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21ath9k: Initialize ah->hwBen Greear1-0/+1
Previous code left it NULL. Signed-off-by: Ben Greear <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21ath9k: Show some live tx-queue values in debugfs.Ben Greear1-0/+16
I thought this might help track down stuck queues, etc. Signed-off-by: Ben Greear <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21iwlwifi: fix 4965 notification wait setupJohannes Berg1-0/+5
The notification wait support code is shared between 4965 and other AGN devices, so 4965 also has to initialize the data structures for it, otherwise it crashes. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Wey-Yi Guy <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21iwlagn: return error if PAN disable timeoutJohannes Berg1-1/+3
Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Wey-Yi Guy <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21iwlagn: properly wait for PAN disableJohannes Berg3-3/+14
Previously I hacked this with an msleep(300) which was fine since we never had longer PAN time slots, but now that we will have them I need to fix that. Use the new notification wait support to properly wait for the WIPAN deactivation complete signal from the ucode. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Wey-Yi Guy <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21iwlagn: add support for waiting for notificationsJohannes Berg4-0/+115
In order to implement waiting for notifications, add a structure that captures the information, and a list of such structures that will be traversed when a command is received from the ucode. Use sparse checking to make sure calls to the prepare/wait/cancel functions are always nested correctly. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Wey-Yi Guy <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21iwlagn: make iwl_rx_handle staticJohannes Berg2-2/+1
It's not used or likely to be needed from other files, so it can be static. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Wey-Yi Guy <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21rtlwifi: Fix possible NULL dereferenceJesper Juhl1-2/+9
In drivers/net/wireless/rtlwifi/pci.c::_rtl_pci_rx_interrupt() we call dev_alloc_skb(), which may fail and return NULL, but we do not check the returned value against NULL before dereferencing the returned pointer. This may lead to a NULL pointer dereference which means we'll crash - not good. In a separate call to dev_alloc_skb(), the debug level is changed so that the failure message will always be logged. Signed-off-by: Jesper Juhl <[email protected]> Signed-off-by: Larry Finger <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21ath9k: add missing ps wakeup/restore callsFelix Fietkau2-5/+5
There are several places where ath_reset() was called without proper calls to ath9k_ps_wakeup/ath9k_ps_restore. To fix this, add those calls directly to ath_reset and drop them from callers where it makes sense. Also add them to the config callback around ath_update_txpow to fix a crash that happens when the tx power changed before any vif is brought up. Signed-off-by: Felix Fietkau <[email protected]> Cc: [email protected] Signed-off-by: John W. Linville <[email protected]>
2011-01-21ath9k_hw: disabled PAPRD for AR9003Luis R. Rodriguez2-1/+6
AR9003's PAPRD was enabled prematurely, and is causing some large discrepancies on throughput and network connectivity. For example downlink (RX) throughput against an AR9280 AP can vary widlely from 43-73 Mbit/s while disabling this gets AR9382 (2x2) up to around 93 Mbit/s in a 2.4 GHz HT20 setup. Cc: [email protected] Cc: Paul Shaw <[email protected]> Signed-off-by: Luis R. Rodriguez <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-21iwlwifi: don't read sku information from EEPROM for 4965Wey-Yi Guy2-4/+8
For all the new devices, the sku information should read from EEPROM but for legacy devices such as 4965, appearly the EEPROM does not contain the necessary information. so skip the read from EEPROM and go back to use software configuration. Reported-by: Helmut Schaa <[email protected]> Signed-off-by: Wey-Yi Guy <[email protected]> Tested-by: Helmut Schaa <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6Linus Torvalds9-13/+22
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (41 commits) sctp: user perfect name for Delayed SACK Timer option net: fix can_checksum_protocol() arguments swap Revert "netlink: test for all flags of the NLM_F_DUMP composite" gianfar: Fix misleading indentation in startup_gfar() net/irda/sh_irda: return to RX mode when TX error net offloading: Do not mask out NETIF_F_HW_VLAN_TX for vlan. USB CDC NCM: tx_fixup() race condition fix ns83820: Avoid bad pointer deref in ns83820_init_one(). ipv6: Silence privacy extensions initialization bnx2x: Update bnx2x version to 1.62.00-4 bnx2x: Fix AER setting for BCM57712 bnx2x: Fix BCM84823 LED behavior bnx2x: Mark full duplex on some external PHYs bnx2x: Fix BCM8073/BCM8727 microcode loading bnx2x: LED fix for BCM8727 over BCM57712 bnx2x: Common init will be executed only once after POR bnx2x: Swap BCM8073 PHY polarity if required iwlwifi: fix valid chain reading from EEPROM ath5k: fix locking in tx_complete_poll_work ath9k_hw: do PA offset calibration only on longcal interval ...
2011-01-19mac80211: track receiver's aggregation reorder buffer sizeJohannes Berg11-11/+19
The aggregation code currently doesn't implement the buffer size negotiation. It will always request a max buffer size (which is fine, if a little pointless, as the mac80211 code doesn't know and might just use 0 instead), but if the peer requests a smaller size it isn't possible to honour this request. In order to fix this, look at the buffer size in the addBA response frame, keep track of it and pass it to the driver in the ampdu_action callback when called with the IEEE80211_AMPDU_TX_OPERATIONAL action. That way the driver can limit the number of subframes in aggregates appropriately. Note that this doesn't fix any drivers apart from the addition of the new argument -- they all need to be updated separately to use this variable! Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k: Fix up hardware mode and beacons with multiple vifs.Ben Greear5-146/+263
When using a mixture of AP and Station interfaces, the hardware mode was using the type of the last VIF registered. Instead, we should keep track of the number of different types of vifs and set the mode accordingly. In addtion, use the vif type instead of hardware opmode when dealing with beacons. Attempt to move some of the common setup code into smaller methods so we can re-use it when changing vif mode as well as adding/deleting vifs. Signed-off-by: Ben Greear <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k: fix excessive BAR sending when a frame exceeds its retry limitFelix Fietkau1-1/+1
Because the sendbar variable was not reset to zero, the stack would send Block ACK requests for all subframes following the one that failed, which could mess up the receiver side block ack window. Signed-off-by: Felix Fietkau <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k: try more than one tid when scheduling a new aggregateFelix Fietkau1-3/+6
Sometimes the first TID in the first AC's list is not available for forming a new aggregate (the BAW might not allow it), however other TIDs may have data available for sending. Prevent a slowdown of other TIDs by going through multiple entries until we've either hit the last one or enough AMPDUs are pending in the hardware queue. Signed-off-by: Felix Fietkau <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k_hw: fix carrier leakage calibration for AR9271Rajkumar Manoharan1-1/+4
AR9285 carrier leakage calibration related workaround on high temperature is not applicable for AR9271. Signed-off-by: Rajkumar Manoharan <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k_htc: keep calibrated noise floor value for oper channelRajkumar Manoharan2-4/+5
The ath9k_hw assumes that caldata is valid only for oper channel. But with ath9k_htc case, the caldata is passed for all channels on hw_reset though we are not doing calibration on that channel. So the oper channel's nf history got cleared to default due to mismatch in channel flags. This patch also saves some space. Signed-off-by: Rajkumar Manoharan <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k: preserve caldata history buffer across scanningRajkumar Manoharan1-3/+2
caldata's channel info is never filled with operating channel info which is causing the operating channel's noise floor history buffer is reset to default nf during channel change. Signed-off-by: Rajkumar Manoharan <[email protected]> Acked-by: Felix Fietkau <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k_hw: partially revert "fix dma descriptor rx error bit parsing"Felix Fietkau2-8/+14
The rx error bit parsing was changed to consider PHY errors and various decryption errors separately. While correct according to the documentation, this is causing spurious decryption error reports in some situations. Fix this by restoring the original order of the checks in those places, where the errors are meant to be mutually exclusive. If a CRC error is reported, then MIC failure and decryption errors are irrelevant, and a PHY error is unlikely. Signed-off-by: Felix Fietkau <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath5k: Fix return codes for eeprom read functions.Wojciech Dubowik4-26/+19
Eeprom read functions are of bool type and not int. Signed-off-by: Wojciech Dubowik <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k: reduce the likelihood of baseband hang check false positivesFelix Fietkau1-1/+12
Since baseband hangs are rare, but the hang check function has a high false positive rate in some situations, we need to add more reliable indicators. In AP mode we can use blocked beacon transmissions as an indicator, they should be rare enough. In station mode, we can skip the hang check entirely, since a true hang will trigger beacon loss detection, and mac80211 will rescan, which leads to a hw reset that will bring the hardware back to life. To make this more reliable, we need to skip fast channel changes if the hardware appears to be stuck. Signed-off-by: Felix Fietkau <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k: reinitialize block ack window data when starting aggregationFelix Fietkau1-0/+3
There might be some old stale data left, which could confuse tracking of pending tx frames. Signed-off-by: Felix Fietkau <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k: fix initial sequence number after starting an ampdu sessionFelix Fietkau1-1/+1
txtid->seq_start may not always be up to date, when there is HT non-AMPDU traffic just before starting an AMPDU session. Relying on txtid->seq_next is better, since it is also used to generate the sequence numbers for all QoS data frames. Signed-off-by: Felix Fietkau <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k: fix bogus sequence number increases on aggregation tid flushFelix Fietkau1-1/+1
When a tid pointer is passed to ath_tx_send_normal(), it increases the starting sequence number for the next AMPDU action frame, which should only be done if the sequence number assignment is fresh. In this case it is clearly not. Signed-off-by: Felix Fietkau <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19rt2x00: Fix and fine-tune rf registers for RT3070/RT3071/RT3090RA-Jay Hung2-8/+23
Basically fix and fine-tune RT3070/RT3071/RT3090 chip RF initial value when call rt2800_init_rfcsr Signed-off-by: RA-Jay Hung <[email protected]> Acked-by: Gertjan van Wingerde <[email protected]> Signed-off-by: Ivo van Doorn <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19rt2x00: Fix radio off hang issue for PCIE interfaceRA-Jay Hung2-32/+10
PCI/PCIE radio off behavior is different from SOC/USB. They mainly use MCU command to disable DMA, TX/RX and enter power saving mode. Signed-off-by: RA-Jay Hung <[email protected]> Signed-off-by: Ivo van Doorn <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k_hw: Offload USB eeprom reading to targetSujith Manoharan5-29/+123
For USB devices, reading the EEPROM data can be offloaded to the target. Use multiple register reads to take advantage of this feature to reduce initialization time. Signed-off-by: Sujith Manoharan <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19ath9k_htc: Add multiple register read APISujith Manoharan3-0/+34
This would decrease latency in reading bulk registers. Signed-off-by: Sujith Manoharan <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19mwl8k: Enable HW encryption for AP modeNishant Sarmukadam1-3/+277
set_key callback is defined for mac80211 to install keys for HW crypto in AP mode. Driver currently falls back to SW crypto in STA mode. Add support to configure the keys appropriately in the hardware after the set_key routine is called. Signed-off-by: Nishant Sarmukadam <[email protected]> Signed-off-by: Pradeep Nemavat <[email protected]> Signed-off-by: Thomas Pedersen <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19mwl8k: Set mac80211 rx status flags appropriately when hw crypto is enabledNishant Sarmukadam1-3/+98
When hw crypto is enabled, set rx status flags appropriately depending on whether hw crypto is enabled for a particular bss. Also report MIC errors to mac80211, so that counter measures can be initiated Signed-off-by: Nishant Sarmukadam <[email protected]> Signed-off-by: yogesh powar <[email protected]> Signed-off-by: Thomas Pedersen <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19mwl8k: Add encapsulation of data packet for cryptoNishant Sarmukadam1-1/+53
Different tail pads will be needed for crypto depending on the crypto mode. Add support to encapsulate the packets with appropriate pad value. Signed-off-by: Nishant Sarmukadam <[email protected]> Signed-off-by: Pradeep Nemavat <[email protected]> Signed-off-by: Thomas Pedersen <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-19mwl8k: Modify add_dma_header to include pad parametersNishant Sarmukadam1-6/+10
Add capability to add_dma_header to support padding at tail of the data packet to be transmitted when crypto is enabled. Padding is required for adding crypto information in data packets for supporting 802.11 security modes. Signed-off-by: Nishant Sarmukadam <[email protected]> Signed-off-by: Pradeep Nemavat <[email protected]> Signed-off-by: Thomas Pedersen <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-18iwlwifi: fix valid chain reading from EEPROMWey-Yi Guy1-1/+1
When read valid tx/rx chains from EEPROM, there is a bug to use the tx chain value for both tx and rx, the result of this cause low receive throughput on 1x2 devices becuase rx will only utilize single chain instead of two chains Signed-off-by: Wey-Yi Guy <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-18ath5k: fix locking in tx_complete_poll_workBob Copeland1-0/+4
ath5k_reset must be called with sc->lock. Since the tx queue watchdog runs in a workqueue and accesses sc, it's appropriate to just take the lock over the whole function. Signed-off-by: Bob Copeland <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-17ath9k_hw: do PA offset calibration only on longcal intervalRajkumar Manoharan1-5/+5
The power detector adc offset calibration has to be done on 4 minutes interval (longcal * pa_skip_count). But the commit "ath9k_hw: fix a noise floor calibration related race condition" makes the PA calibration executed more frequently beased on nfcal_pending value. Running PAOffset calibration lesser than longcal interval doesn't help anything and the worse part is that it causes NF load timeouts and RX deaf conditions. In a very noisy environment, where the distance b/w AP & station is ~10 meter and running a downlink udp traffic with frequent background scan causes "Timeout while waiting for nf to load: AR_PHY_AGC_CONTROL=0x40d1a" and moves the chip into deaf state. This issue was originaly reported in Android platform where the network-manager application does bgscan more frequently on AR9271 chips. (AR9285 family usb device). Cc: [email protected] Signed-off-by: Vasanthakumar Thiagarajan <[email protected]> Signed-off-by: Rajkumar Manoharan <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-17ath9k_htc: Fix endian issue in tx headerRajkumar Manoharan2-4/+6
Signed-off-by: Rajkumar Manoharan <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-17ath9k_hw: ASPM interoperability fix for AR9380/AR9382Luis R. Rodriguez2-3/+3
There is an interoperability with AR9382/AR9380 in L1 state with a few root complexes which can cause a hang. This is fixed by setting some work around bits on the PCIE PHY. We fix by using a new ini array to modify these bits when the radio is idle. Cc: [email protected] Cc: Jack Lee <[email protected]> Cc: Carl Huang <[email protected]> Cc: David Quan <[email protected]> Cc: Nael Atallah <[email protected]> Cc: Sarvesh Shrivastava <[email protected]> Signed-off-by: Luis R. Rodriguez <[email protected]> Signed-off-by: John W. Linville <[email protected]>
2011-01-14Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6Linus Torvalds8-23/+51
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (47 commits) GRETH: resolve SMP issues and other problems GRETH: handle frame error interrupts GRETH: avoid writing bad speed/duplex when setting transfer mode GRETH: fixed skb buffer memory leak on frame errors GRETH: GBit transmit descriptor handling optimization GRETH: fix opening/closing GRETH: added raw AMBA vendor/device number to match against. cassini: Fix build bustage on x86. e1000e: consistent use of Rx/Tx vs. RX/TX/rx/tx in comments/logs e1000e: update Copyright for 2011 e1000: Avoid unhandled IRQ r8169: keep firmware in memory. netdev: tilepro: Use is_unicast_ether_addr helper etherdevice.h: Add is_unicast_ether_addr function ks8695net: Use default implementation of ethtool_ops::get_link ks8695net: Disable non-working ethtool operations USB CDC NCM: Don't deref NULL in cdc_ncm_rx_fixup() and don't use uninitialized variable. vxge: Remember to release firmware after upgrading firmware netdev: bfin_mac: Remove is_multicast_ether_addr use in netdev_for_each_mc_addr ipsec: update MAX_AH_AUTH_LEN to support sha512 ...
2011-01-14Merge branch 'linux-next' of ↵Linus Torvalds1-2/+2
git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 * 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: PCI/PM: Report wakeup events before resuming devices PCI/PM: Use pm_wakeup_event() directly for reporting wakeup events PCI: sysfs: Update ROM to include default owner write access x86/PCI: make Broadcom CNB20LE driver EMBEDDED and EXPERIMENTAL x86/PCI: don't use native Broadcom CNB20LE driver when ACPI is available PCI/ACPI: Request _OSC control once for each root bridge (v3) PCI: enable pci=bfsort by default on future Dell systems PCI/PCIe: Clear Root PME Status bits early during system resume PCI: pci-stub: ignore zero-length id parameters x86/PCI: irq and pci_ids patch for Intel Patsburg PCI: Skip id checking if no id is passed PCI: fix __pci_device_probe kernel-doc warning PCI: make pci_restore_state return void PCI: Disable ASPM if BIOS asks us to PCI: Add mask bit definition for MSI-X table PCI: MSI: Move MSI-X entry definition to pci_regs.h Fix up trivial conflicts in drivers/net/{skge.c,sky2.c} that had in the meantime been converted to not use legacy PCI power management, and thus no longer use pci_restore_state() at all (and that caused trivial conflicts with the "make pci_restore_state return void" patch)