diff options
author | David S. Miller <davem@davemloft.net> | 2010-05-29 01:36:41 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-05-29 01:36:41 -0400 |
commit | e5e5cf4c71508ed38e921b31b438b8b349409f2a (patch) | |
tree | 1e5f57fb8adaae40746031c2bec77c986cbbc52b /drivers | |
parent | 045de01a174d9f0734f657eb4b3313d89b4fd5ad (diff) | |
parent | da1fdb02d9200ff28b6f3a380d21930335fe5429 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/ath/ar9170/usb.c | 14 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/xmit.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/rx.c | 5 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800usb.c | 2 | ||||
-rw-r--r-- | drivers/ssb/pci.c | 9 | ||||
-rw-r--r-- | drivers/ssb/sprom.c | 1 |
6 files changed, 26 insertions, 11 deletions
diff --git a/drivers/net/wireless/ath/ar9170/usb.c b/drivers/net/wireless/ath/ar9170/usb.c index 82ab532a4923..a93dc18a45c3 100644 --- a/drivers/net/wireless/ath/ar9170/usb.c +++ b/drivers/net/wireless/ath/ar9170/usb.c | |||
@@ -739,17 +739,27 @@ err_out: | |||
739 | static void ar9170_usb_firmware_failed(struct ar9170_usb *aru) | 739 | static void ar9170_usb_firmware_failed(struct ar9170_usb *aru) |
740 | { | 740 | { |
741 | struct device *parent = aru->udev->dev.parent; | 741 | struct device *parent = aru->udev->dev.parent; |
742 | struct usb_device *udev; | ||
743 | |||
744 | /* | ||
745 | * Store a copy of the usb_device pointer locally. | ||
746 | * This is because device_release_driver initiates | ||
747 | * ar9170_usb_disconnect, which in turn frees our | ||
748 | * driver context (aru). | ||
749 | */ | ||
750 | udev = aru->udev; | ||
742 | 751 | ||
743 | complete(&aru->firmware_loading_complete); | 752 | complete(&aru->firmware_loading_complete); |
744 | 753 | ||
745 | /* unbind anything failed */ | 754 | /* unbind anything failed */ |
746 | if (parent) | 755 | if (parent) |
747 | device_lock(parent); | 756 | device_lock(parent); |
748 | device_release_driver(&aru->udev->dev); | 757 | |
758 | device_release_driver(&udev->dev); | ||
749 | if (parent) | 759 | if (parent) |
750 | device_unlock(parent); | 760 | device_unlock(parent); |
751 | 761 | ||
752 | usb_put_dev(aru->udev); | 762 | usb_put_dev(udev); |
753 | } | 763 | } |
754 | 764 | ||
755 | static void ar9170_usb_firmware_finish(const struct firmware *fw, void *context) | 765 | static void ar9170_usb_firmware_finish(const struct firmware *fw, void *context) |
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index 3db19172b43b..859aa4ab0769 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c | |||
@@ -1198,7 +1198,7 @@ void ath_drain_all_txq(struct ath_softc *sc, bool retry_tx) | |||
1198 | int r; | 1198 | int r; |
1199 | 1199 | ||
1200 | ath_print(common, ATH_DBG_FATAL, | 1200 | ath_print(common, ATH_DBG_FATAL, |
1201 | "Unable to stop TxDMA. Reset HAL!\n"); | 1201 | "Failed to stop TX DMA. Resetting hardware!\n"); |
1202 | 1202 | ||
1203 | spin_lock_bh(&sc->sc_resetlock); | 1203 | spin_lock_bh(&sc->sc_resetlock); |
1204 | r = ath9k_hw_reset(ah, sc->sc_ah->curchan, false); | 1204 | r = ath9k_hw_reset(ah, sc->sc_ah->curchan, false); |
@@ -1728,6 +1728,8 @@ static int ath_tx_setup_buffer(struct ieee80211_hw *hw, struct ath_buf *bf, | |||
1728 | } else | 1728 | } else |
1729 | bf->bf_isnullfunc = false; | 1729 | bf->bf_isnullfunc = false; |
1730 | 1730 | ||
1731 | bf->bf_tx_aborted = false; | ||
1732 | |||
1731 | return 0; | 1733 | return 0; |
1732 | } | 1734 | } |
1733 | 1735 | ||
@@ -1989,7 +1991,7 @@ static int ath_tx_num_badfrms(struct ath_softc *sc, struct ath_buf *bf, | |||
1989 | int nbad = 0; | 1991 | int nbad = 0; |
1990 | int isaggr = 0; | 1992 | int isaggr = 0; |
1991 | 1993 | ||
1992 | if (bf->bf_tx_aborted) | 1994 | if (bf->bf_lastbf->bf_tx_aborted) |
1993 | return 0; | 1995 | return 0; |
1994 | 1996 | ||
1995 | isaggr = bf_isaggr(bf); | 1997 | isaggr = bf_isaggr(bf); |
diff --git a/drivers/net/wireless/libertas/rx.c b/drivers/net/wireless/libertas/rx.c index a115bfa9513a..7a377f5b7662 100644 --- a/drivers/net/wireless/libertas/rx.c +++ b/drivers/net/wireless/libertas/rx.c | |||
@@ -329,9 +329,8 @@ static int process_rxed_802_11_packet(struct lbs_private *priv, | |||
329 | /* create the exported radio header */ | 329 | /* create the exported radio header */ |
330 | 330 | ||
331 | /* radiotap header */ | 331 | /* radiotap header */ |
332 | radiotap_hdr.hdr.it_version = 0; | 332 | memset(&radiotap_hdr, 0, sizeof(radiotap_hdr)); |
333 | /* XXX must check this value for pad */ | 333 | /* XXX must check radiotap_hdr.hdr.it_pad for pad */ |
334 | radiotap_hdr.hdr.it_pad = 0; | ||
335 | radiotap_hdr.hdr.it_len = cpu_to_le16 (sizeof(struct rx_radiotap_hdr)); | 334 | radiotap_hdr.hdr.it_len = cpu_to_le16 (sizeof(struct rx_radiotap_hdr)); |
336 | radiotap_hdr.hdr.it_present = cpu_to_le32 (RX_RADIOTAP_PRESENT); | 335 | radiotap_hdr.hdr.it_present = cpu_to_le32 (RX_RADIOTAP_PRESENT); |
337 | radiotap_hdr.rate = convert_mv_rate_to_radiotap(prxpd->rx_rate); | 336 | radiotap_hdr.rate = convert_mv_rate_to_radiotap(prxpd->rx_rate); |
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c index 699161327d65..0f8b84b7224c 100644 --- a/drivers/net/wireless/rt2x00/rt2800usb.c +++ b/drivers/net/wireless/rt2x00/rt2800usb.c | |||
@@ -413,7 +413,7 @@ static void rt2800usb_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
413 | */ | 413 | */ |
414 | rt2x00_desc_read(txi, 0, &word); | 414 | rt2x00_desc_read(txi, 0, &word); |
415 | rt2x00_set_field32(&word, TXINFO_W0_USB_DMA_TX_PKT_LEN, | 415 | rt2x00_set_field32(&word, TXINFO_W0_USB_DMA_TX_PKT_LEN, |
416 | skb->len - TXINFO_DESC_SIZE); | 416 | skb->len + TXWI_DESC_SIZE); |
417 | rt2x00_set_field32(&word, TXINFO_W0_WIV, | 417 | rt2x00_set_field32(&word, TXINFO_W0_WIV, |
418 | !test_bit(ENTRY_TXD_ENCRYPT_IV, &txdesc->flags)); | 418 | !test_bit(ENTRY_TXD_ENCRYPT_IV, &txdesc->flags)); |
419 | rt2x00_set_field32(&word, TXINFO_W0_QSEL, 2); | 419 | rt2x00_set_field32(&word, TXINFO_W0_QSEL, 2); |
diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c index 989e2752cc36..6dcda86be6eb 100644 --- a/drivers/ssb/pci.c +++ b/drivers/ssb/pci.c | |||
@@ -625,9 +625,12 @@ static int ssb_pci_sprom_get(struct ssb_bus *bus, | |||
625 | ssb_printk(KERN_ERR PFX "No SPROM available!\n"); | 625 | ssb_printk(KERN_ERR PFX "No SPROM available!\n"); |
626 | return -ENODEV; | 626 | return -ENODEV; |
627 | } | 627 | } |
628 | 628 | if (bus->chipco.dev) { /* can be unavailible! */ | |
629 | bus->sprom_offset = (bus->chipco.dev->id.revision < 31) ? | 629 | bus->sprom_offset = (bus->chipco.dev->id.revision < 31) ? |
630 | SSB_SPROM_BASE1 : SSB_SPROM_BASE31; | 630 | SSB_SPROM_BASE1 : SSB_SPROM_BASE31; |
631 | } else { | ||
632 | bus->sprom_offset = SSB_SPROM_BASE1; | ||
633 | } | ||
631 | 634 | ||
632 | buf = kcalloc(SSB_SPROMSIZE_WORDS_R123, sizeof(u16), GFP_KERNEL); | 635 | buf = kcalloc(SSB_SPROMSIZE_WORDS_R123, sizeof(u16), GFP_KERNEL); |
633 | if (!buf) | 636 | if (!buf) |
diff --git a/drivers/ssb/sprom.c b/drivers/ssb/sprom.c index 007bc3a03486..4f7cc8d13277 100644 --- a/drivers/ssb/sprom.c +++ b/drivers/ssb/sprom.c | |||
@@ -185,6 +185,7 @@ bool ssb_is_sprom_available(struct ssb_bus *bus) | |||
185 | /* this routine differs from specs as we do not access SPROM directly | 185 | /* this routine differs from specs as we do not access SPROM directly |
186 | on PCMCIA */ | 186 | on PCMCIA */ |
187 | if (bus->bustype == SSB_BUSTYPE_PCI && | 187 | if (bus->bustype == SSB_BUSTYPE_PCI && |
188 | bus->chipco.dev && /* can be unavailible! */ | ||
188 | bus->chipco.dev->id.revision >= 31) | 189 | bus->chipco.dev->id.revision >= 31) |
189 | return bus->chipco.capabilities & SSB_CHIPCO_CAP_SPROM; | 190 | return bus->chipco.capabilities & SSB_CHIPCO_CAP_SPROM; |
190 | 191 | ||