[PATCH] sky2: phy processing in workqueue rather than tasklet

Do phy processing in a work queue rather than a tasklet.
This means we can let bottom halves run.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
diff --git a/drivers/net/sky2.h b/drivers/net/sky2.h
index 7943dd4..29ebca0 100644
--- a/drivers/net/sky2.h
+++ b/drivers/net/sky2.h
@@ -1823,8 +1823,10 @@
 	u8		     rx_csum;
 	u8		     wol;
 
-	struct tasklet_struct phy_task;
 	struct net_device_stats net_stats;
+
+	struct work_struct   phy_task;
+	struct semaphore     phy_sema;
 };
 
 struct sky2_hw {
@@ -1842,8 +1844,6 @@
 	struct sky2_status_le *st_le;
 	u32		     st_idx;
 	dma_addr_t   	     st_dma;
-
-	spinlock_t	     phy_lock;
 };
 
 /* Register accessor for memory mapped device */