diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-26 21:35:50 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-26 21:35:50 -0400 |
commit | ee20a0dd5400e771ff93eb7f2bcc731eab1f377e (patch) | |
tree | 43743bd300a5b1ed94888881689e1d6a8ecac1e1 /drivers/net/skge.c | |
parent | d55a4528f7f607ca2872fec18574bc8cec060f05 (diff) | |
parent | 732c8bd590625e8bc0b88313b82930e336b2bec4 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (43 commits)
[IPSEC]: Fix BEET output
[ICMP]: Dst entry leak in icmp_send host re-lookup code (v2).
[AX25]: Remove obsolete references to BKL from TODO file.
[NET]: Fix multicast device ioctl checks
[IRDA]: Store irnet_socket termios properly.
[UML]: uml-net: don't set IFF_ALLMULTI in set_multicast_list
[VLAN]: Don't copy ALLMULTI/PROMISC flags from underlying device
netxen, phy/marvell, skge: minor checkpatch fixes
S2io: Handle TX completions on the same CPU as the sender for MIS-X interrupts
b44: Truncate PHY address
skge napi->poll() locking bug
rndis_host: fix oops when query for OID_GEN_PHYSICAL_MEDIUM fails
cxgb3: Fix lockdep problems with sge.reg_lock
ehea: Fix IPv6 support
dm9000: Support promisc and all-multi modes
dm9601: configure MAC to drop invalid (crc/length) packets
dm9601: add Hirose USB-100 device ID
Marvell PHY m88e1111 driver fix
netxen: fix rx dropped stats
netxen: remove low level tx lock
...
Diffstat (limited to 'drivers/net/skge.c')
-rw-r--r-- | drivers/net/skge.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/skge.c b/drivers/net/skge.c index 186eb8ebfda6..2e26dced13a1 100644 --- a/drivers/net/skge.c +++ b/drivers/net/skge.c | |||
@@ -3199,12 +3199,14 @@ static int skge_poll(struct napi_struct *napi, int to_do) | |||
3199 | skge_write8(hw, Q_ADDR(rxqaddr[skge->port], Q_CSR), CSR_START); | 3199 | skge_write8(hw, Q_ADDR(rxqaddr[skge->port], Q_CSR), CSR_START); |
3200 | 3200 | ||
3201 | if (work_done < to_do) { | 3201 | if (work_done < to_do) { |
3202 | spin_lock_irq(&hw->hw_lock); | 3202 | unsigned long flags; |
3203 | |||
3204 | spin_lock_irqsave(&hw->hw_lock, flags); | ||
3203 | __netif_rx_complete(dev, napi); | 3205 | __netif_rx_complete(dev, napi); |
3204 | hw->intr_mask |= napimask[skge->port]; | 3206 | hw->intr_mask |= napimask[skge->port]; |
3205 | skge_write32(hw, B0_IMSK, hw->intr_mask); | 3207 | skge_write32(hw, B0_IMSK, hw->intr_mask); |
3206 | skge_read32(hw, B0_IMSK); | 3208 | skge_read32(hw, B0_IMSK); |
3207 | spin_unlock_irq(&hw->hw_lock); | 3209 | spin_unlock_irqrestore(&hw->hw_lock, flags); |
3208 | } | 3210 | } |
3209 | 3211 | ||
3210 | return work_done; | 3212 | return work_done; |