Skip to content

Commit

Permalink
[PATCH] via-rhine: revert "change mdelay to msleep and remove from IS…
Browse files Browse the repository at this point in the history
…R path"

Revert previous patch with subject "change mdelay to msleep and remove
from ISR path".  This patch seems to have caused bigger problems than
it solved, and it didn't solve much of a problem to begin with...

Discussion about backing-out this patch can be found here:

	http://marc.theaimsgroup.com/?l=linux-netdev&m=114321570402396&w=2

The git commit associated w/ the original patch is:

	6ba98d3

Signed-off-by: John W. Linville <linville@tuxdriver.com
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
John W. Linville authored and Jeff Garzik committed May 20, 2006
1 parent f34ba4e commit 38bb6b2
Showing 1 changed file with 3 additions and 31 deletions.
34 changes: 3 additions & 31 deletions drivers/net/via-rhine.c
Original file line number Diff line number Diff line change
Expand Up @@ -491,17 +491,13 @@ struct rhine_private {
u8 tx_thresh, rx_thresh;

struct mii_if_info mii_if;
struct work_struct tx_timeout_task;
struct work_struct check_media_task;
void __iomem *base;
};

static int mdio_read(struct net_device *dev, int phy_id, int location);
static void mdio_write(struct net_device *dev, int phy_id, int location, int value);
static int rhine_open(struct net_device *dev);
static void rhine_tx_timeout(struct net_device *dev);
static void rhine_tx_timeout_task(struct net_device *dev);
static void rhine_check_media_task(struct net_device *dev);
static int rhine_start_tx(struct sk_buff *skb, struct net_device *dev);
static irqreturn_t rhine_interrupt(int irq, void *dev_instance, struct pt_regs *regs);
static void rhine_tx(struct net_device *dev);
Expand Down Expand Up @@ -856,12 +852,6 @@ static int __devinit rhine_init_one(struct pci_dev *pdev,
if (rp->quirks & rqRhineI)
dev->features |= NETIF_F_SG|NETIF_F_HW_CSUM;

INIT_WORK(&rp->tx_timeout_task,
(void (*)(void *))rhine_tx_timeout_task, dev);

INIT_WORK(&rp->check_media_task,
(void (*)(void *))rhine_check_media_task, dev);

/* dev->name not defined before register_netdev()! */
rc = register_netdev(dev);
if (rc)
Expand Down Expand Up @@ -1108,11 +1098,6 @@ static void rhine_set_carrier(struct mii_if_info *mii)
netif_carrier_ok(mii->dev));
}

static void rhine_check_media_task(struct net_device *dev)
{
rhine_check_media(dev, 0);
}

static void init_registers(struct net_device *dev)
{
struct rhine_private *rp = netdev_priv(dev);
Expand Down Expand Up @@ -1166,8 +1151,8 @@ static void rhine_disable_linkmon(void __iomem *ioaddr, u32 quirks)
if (quirks & rqRhineI) {
iowrite8(0x01, ioaddr + MIIRegAddr); // MII_BMSR

/* Do not call from ISR! */
msleep(1);
/* Can be called from ISR. Evil. */
mdelay(1);

/* 0x80 must be set immediately before turning it off */
iowrite8(0x80, ioaddr + MIICmd);
Expand Down Expand Up @@ -1255,16 +1240,6 @@ static int rhine_open(struct net_device *dev)
}

static void rhine_tx_timeout(struct net_device *dev)
{
struct rhine_private *rp = netdev_priv(dev);

/*
* Move bulk of work outside of interrupt context
*/
schedule_work(&rp->tx_timeout_task);
}

static void rhine_tx_timeout_task(struct net_device *dev)
{
struct rhine_private *rp = netdev_priv(dev);
void __iomem *ioaddr = rp->base;
Expand Down Expand Up @@ -1677,7 +1652,7 @@ static void rhine_error(struct net_device *dev, int intr_status)
spin_lock(&rp->lock);

if (intr_status & IntrLinkChange)
schedule_work(&rp->check_media_task);
rhine_check_media(dev, 0);
if (intr_status & IntrStatsMax) {
rp->stats.rx_crc_errors += ioread16(ioaddr + RxCRCErrs);
rp->stats.rx_missed_errors += ioread16(ioaddr + RxMissed);
Expand Down Expand Up @@ -1927,9 +1902,6 @@ static int rhine_close(struct net_device *dev)
spin_unlock_irq(&rp->lock);

free_irq(rp->pdev->irq, dev);

flush_scheduled_work();

free_rbufs(dev);
free_tbufs(dev);
free_ring(dev);
Expand Down

0 comments on commit 38bb6b2

Please sign in to comment.