summaryrefslogtreecommitdiff
path: root/drivers/net/phy/smsc.c
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2006-10-03 19:18:35 +0400
committerJeff Garzik <jeff@garzik.org>2006-12-02 08:11:55 +0300
commit3c3070d713d798f7f9e7ee3614e49b47655d14d8 (patch)
tree232d881df29f8a14b73b08bf862739089b194e65 /drivers/net/phy/smsc.c
parent13df29f69749a61b5209d52b71fcbf7300e5d6fb (diff)
downloadlinux-3c3070d713d798f7f9e7ee3614e49b47655d14d8.tar.xz
[PATCH] 2.6.18: sb1250-mac: Phylib IRQ handling fixes
This patch fixes a couple of problems discovered with interrupt handling in the phylib core, namely: 1. The driver uses timer and workqueue calls, but does not include <linux/timer.h> nor <linux/workqueue.h>. 2. The driver uses schedule_work() for handling interrupts, but does not make sure any pending work scheduled thus has been completed before driver's structures get freed from memory. This is especially important as interrupts may keep arriving if the line is shared with another PHY. The solution is to ignore phy_interrupt() calls if the reported device has already been halted and calling flush_scheduled_work() from phy_stop_interrupts() (but guarded with current_is_keventd() in case the function has been called through keventd from the MAC device's close call to avoid a deadlock on the netlink lock). Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org> patch-mips-2.6.18-20060920-phy-irq-16 Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/phy/smsc.c')
0 files changed, 0 insertions, 0 deletions