Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 74728
b: refs/heads/master
c: 911b237
h: refs/heads/master
v: v3
  • Loading branch information
Benjamin Herrenschmidt authored and Jeff Garzik committed Dec 7, 2007
1 parent d8e6e29 commit 151c993
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 968530643a0685caced9dfd6f72f20d5e7bc8fbb
refs/heads/master: 911b237d7d327db5371a762f4d8d8cd9ea763662
20 changes: 14 additions & 6 deletions trunk/drivers/net/ibm_newemac/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -464,26 +464,34 @@ static int emac_configure(struct emac_instance *dev)
{
struct emac_regs __iomem *p = dev->emacp;
struct net_device *ndev = dev->ndev;
int tx_size, rx_size;
int tx_size, rx_size, link = netif_carrier_ok(dev->ndev);
u32 r, mr1 = 0;

DBG(dev, "configure" NL);

if (emac_reset(dev) < 0)
if (!link) {
out_be32(&p->mr1, in_be32(&p->mr1)
| EMAC_MR1_FDE | EMAC_MR1_ILE);
udelay(100);
} else if (emac_reset(dev) < 0)
return -ETIMEDOUT;

if (emac_has_feature(dev, EMAC_FTR_HAS_TAH))
tah_reset(dev->tah_dev);

DBG(dev, " duplex = %d, pause = %d, asym_pause = %d\n",
dev->phy.duplex, dev->phy.pause, dev->phy.asym_pause);
DBG(dev, " link = %d duplex = %d, pause = %d, asym_pause = %d\n",
link, dev->phy.duplex, dev->phy.pause, dev->phy.asym_pause);

/* Default fifo sizes */
tx_size = dev->tx_fifo_size;
rx_size = dev->rx_fifo_size;

/* No link, force loopback */
if (!link)
mr1 = EMAC_MR1_FDE | EMAC_MR1_ILE;

/* Check for full duplex */
if (dev->phy.duplex == DUPLEX_FULL)
else if (dev->phy.duplex == DUPLEX_FULL)
mr1 |= EMAC_MR1_FDE | EMAC_MR1_MWSW_001;

/* Adjust fifo sizes, mr1 and timeouts based on link speed */
Expand Down Expand Up @@ -1165,9 +1173,9 @@ static void emac_link_timer(struct work_struct *work)
link_poll_interval = PHY_POLL_LINK_ON;
} else {
if (netif_carrier_ok(dev->ndev)) {
emac_reinitialize(dev);
netif_carrier_off(dev->ndev);
netif_tx_disable(dev->ndev);
emac_reinitialize(dev);
emac_print_link_status(dev);
}
link_poll_interval = PHY_POLL_LINK_OFF;
Expand Down

0 comments on commit 151c993

Please sign in to comment.