summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorFrancois Romieu <romieu@fr.zoreil.com>2006-08-16 15:23:13 +0200
committerFrancois Romieu <romieu@fr.zoreil.com>2006-08-31 21:59:24 +0200
commitb518fa8eac2d0ac497c0fdb27e4cec68d0249bb7 (patch)
tree96ffced71b36d055c57726deaa20443c84fb5f6b /drivers
parentr8169: use NETDEV_TX_{BUSY/OK} (diff)
downloadlinux-b518fa8eac2d0ac497c0fdb27e4cec68d0249bb7.tar.xz
linux-b518fa8eac2d0ac497c0fdb27e4cec68d0249bb7.zip
r8169: udelay() removal
No need to chew CPU cycles as there is no heavy timing requirement and the delays are always requested from a sleepable context. Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/r8169.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index b07d2eadeae6..653b9a7a4178 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -1623,10 +1623,10 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
RTL_W8(ChipCmd, CmdReset);
/* Check that the chip has finished the reset. */
- for (i = 1000; i > 0; i--) {
+ for (i = 100; i > 0; i--) {
if ((RTL_R8(ChipCmd) & CmdReset) == 0)
break;
- udelay(10);
+ msleep_interruptible(1);
}
/* Identify chip attached to board */
@@ -1848,10 +1848,10 @@ rtl8169_hw_start(struct net_device *dev)
RTL_W8(ChipCmd, CmdReset);
/* Check that the chip has finished the reset. */
- for (i = 1000; i > 0; i--) {
+ for (i = 100; i > 0; i--) {
if ((RTL_R8(ChipCmd) & CmdReset) == 0)
break;
- udelay(10);
+ msleep_interruptible(1);
}
if (tp->mac_version == RTL_GIGA_MAC_VER_13) {
@@ -1914,7 +1914,9 @@ rtl8169_hw_start(struct net_device *dev)
RTL_W32(RxDescAddrHigh, ((u64) tp->RxPhyAddr >> 32));
RTL_W8(ChipCmd, CmdTxEnb | CmdRxEnb);
RTL_W8(Cfg9346, Cfg9346_Lock);
- udelay(10);
+
+ /* Initially a 10 us delay. Turned it into a PCI commit. - FR */
+ RTL_R8(IntrMask);
RTL_W32(RxMissed, 0);