Commit e07b1aa8 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by Jeff Garzik

[PATCH] sky2: rework of NAPI and IRQ management

Redo the interupt handling of sky2 driver based on the IRQ mangement
documentation. All interrupts are handled by the device0 NAPI poll
routine.

Don't need to adjust interrupt mask in IRQ context, done only when
changing device under RTNL. Therefore don't need hwlock anymore.
Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent c4b1580e
This diff is collapsed.
...@@ -278,13 +278,9 @@ enum { ...@@ -278,13 +278,9 @@ enum {
Y2_IS_CHK_TXS1 = 1<<1, /* Descriptor error TXS 1 */ Y2_IS_CHK_TXS1 = 1<<1, /* Descriptor error TXS 1 */
Y2_IS_CHK_TXA1 = 1<<0, /* Descriptor error TXA 1 */ Y2_IS_CHK_TXA1 = 1<<0, /* Descriptor error TXA 1 */
Y2_IS_BASE = Y2_IS_HW_ERR | Y2_IS_STAT_BMU | Y2_IS_BASE = Y2_IS_HW_ERR | Y2_IS_STAT_BMU,
Y2_IS_POLL_CHK | Y2_IS_TWSI_RDY | Y2_IS_PORT_1 = Y2_IS_IRQ_PHY1 | Y2_IS_IRQ_MAC1,
Y2_IS_IRQ_SW | Y2_IS_TIMINT, Y2_IS_PORT_2 = Y2_IS_IRQ_PHY2 | Y2_IS_IRQ_MAC2,
Y2_IS_PORT_1 = Y2_IS_IRQ_PHY1 | Y2_IS_IRQ_MAC1 |
Y2_IS_CHK_RX1 | Y2_IS_CHK_TXA1 | Y2_IS_CHK_TXS1,
Y2_IS_PORT_2 = Y2_IS_IRQ_PHY2 | Y2_IS_IRQ_MAC2 |
Y2_IS_CHK_RX2 | Y2_IS_CHK_TXA2 | Y2_IS_CHK_TXS2,
}; };
/* B2_IRQM_HWE_MSK 32 bit IRQ Moderation HW Error Mask */ /* B2_IRQM_HWE_MSK 32 bit IRQ Moderation HW Error Mask */
...@@ -1832,6 +1828,7 @@ struct sky2_port { ...@@ -1832,6 +1828,7 @@ struct sky2_port {
struct net_device *netdev; struct net_device *netdev;
unsigned port; unsigned port;
u32 msg_enable; u32 msg_enable;
spinlock_t phy_lock;
spinlock_t tx_lock ____cacheline_aligned_in_smp; spinlock_t tx_lock ____cacheline_aligned_in_smp;
struct tx_ring_info *tx_ring; struct tx_ring_info *tx_ring;
...@@ -1866,16 +1863,12 @@ struct sky2_port { ...@@ -1866,16 +1863,12 @@ struct sky2_port {
struct net_device_stats net_stats; struct net_device_stats net_stats;
struct work_struct phy_task;
struct semaphore phy_sema;
}; };
struct sky2_hw { struct sky2_hw {
void __iomem *regs; void __iomem *regs;
struct pci_dev *pdev; struct pci_dev *pdev;
struct net_device *dev[2]; struct net_device *dev[2];
spinlock_t hw_lock;
u32 intr_mask;
int pm_cap; int pm_cap;
u8 chip_id; u8 chip_id;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment