diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-18 17:07:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-18 17:07:15 -0400 |
commit | d2aa4550379f92e929af7ed1dd4f55e6a1e331f8 (patch) | |
tree | 5ef0fc69a507f0d701fd157b6652427eabd5efdd /drivers/net/wireless/libertas | |
parent | 9e3e4b1d2d13bead8d52703c82a02b55f108b491 (diff) | |
parent | cb2107be43d2fc5eadec58b92b54bf32c00bfff3 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (55 commits)
netxen: fix tx ring accounting
netxen: fix detection of cut-thru firmware mode
forcedeth: fix dma api mismatches
atm: sk_wmem_alloc initial value is one
net: correct off-by-one write allocations reports
via-velocity : fix no link detection on boot
Net / e100: Fix suspend of devices that cannot be power managed
TI DaVinci EMAC : Fix rmmod error
net: group address list and its count
ipv4: Fix fib_trie rebalancing, part 2
pkt_sched: Update drops stats in act_police
sky2: version 1.23
sky2: add GRO support
sky2: skb recycling
sky2: reduce default transmit ring
sky2: receive counter update
sky2: fix shutdown synchronization
sky2: PCI irq issues
sky2: more receive shutdown
sky2: turn off pause during shutdown
...
Manually fix trivial conflict in net/core/skbuff.c due to kmemcheck
Diffstat (limited to 'drivers/net/wireless/libertas')
-rw-r--r-- | drivers/net/wireless/libertas/if_spi.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c index 06a46d7b3d6c..6564282ce476 100644 --- a/drivers/net/wireless/libertas/if_spi.c +++ b/drivers/net/wireless/libertas/if_spi.c | |||
@@ -812,7 +812,6 @@ out: | |||
812 | static void if_spi_e2h(struct if_spi_card *card) | 812 | static void if_spi_e2h(struct if_spi_card *card) |
813 | { | 813 | { |
814 | int err = 0; | 814 | int err = 0; |
815 | unsigned long flags; | ||
816 | u32 cause; | 815 | u32 cause; |
817 | struct lbs_private *priv = card->priv; | 816 | struct lbs_private *priv = card->priv; |
818 | 817 | ||
@@ -827,10 +826,7 @@ static void if_spi_e2h(struct if_spi_card *card) | |||
827 | /* generate a card interrupt */ | 826 | /* generate a card interrupt */ |
828 | spu_write_u16(card, IF_SPI_CARD_INT_CAUSE_REG, IF_SPI_CIC_HOST_EVENT); | 827 | spu_write_u16(card, IF_SPI_CARD_INT_CAUSE_REG, IF_SPI_CIC_HOST_EVENT); |
829 | 828 | ||
830 | spin_lock_irqsave(&priv->driver_lock, flags); | ||
831 | lbs_queue_event(priv, cause & 0xff); | 829 | lbs_queue_event(priv, cause & 0xff); |
832 | spin_unlock_irqrestore(&priv->driver_lock, flags); | ||
833 | |||
834 | out: | 830 | out: |
835 | if (err) | 831 | if (err) |
836 | lbs_pr_err("%s: error %d\n", __func__, err); | 832 | lbs_pr_err("%s: error %d\n", __func__, err); |
@@ -875,7 +871,12 @@ static int lbs_spi_thread(void *data) | |||
875 | err = if_spi_c2h_data(card); | 871 | err = if_spi_c2h_data(card); |
876 | if (err) | 872 | if (err) |
877 | goto err; | 873 | goto err; |
878 | if (hiStatus & IF_SPI_HIST_CMD_DOWNLOAD_RDY) { | 874 | |
875 | /* workaround: in PS mode, the card does not set the Command | ||
876 | * Download Ready bit, but it sets TX Download Ready. */ | ||
877 | if (hiStatus & IF_SPI_HIST_CMD_DOWNLOAD_RDY || | ||
878 | (card->priv->psstate != PS_STATE_FULL_POWER && | ||
879 | (hiStatus & IF_SPI_HIST_TX_DOWNLOAD_RDY))) { | ||
879 | /* This means two things. First of all, | 880 | /* This means two things. First of all, |
880 | * if there was a previous command sent, the card has | 881 | * if there was a previous command sent, the card has |
881 | * successfully received it. | 882 | * successfully received it. |