/* this worker thread exists because we must acquire a semaphore to read the phy, which we could msleep while waiting for it, and we can't msleep in a timer.  */
static void e1000e_update_phy_task(struct work_struct *work)
/* this worker thread exists because we must acquire a semaphore to read the phy, which we could msleep while waiting for it, and we can't msleep in a timer.  */
static void e1000e_update_phy_task(struct work_struct *work)
{
	struct e1000_adapter *adapter = container_of(work,
					struct e1000_adapter, update_phy_task);
	e1000_get_phy_info(&adapter->hw);
}