Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 369753
b: refs/heads/master
c: aacebbf
h: refs/heads/master
i:
  369751: 6bd8d58
v: v3
  • Loading branch information
Sebastian Siewior authored and David S. Miller committed Apr 25, 2013
1 parent b2bec20 commit 4f96b4e
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 14 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: 817f6d1a13754b043e1a6c1cb713763022860689
refs/heads/master: aacebbf8026ecdae1b55db3912e65c6b1308f5ed
35 changes: 22 additions & 13 deletions trunk/drivers/net/ethernet/ti/cpsw.c
Original file line number Diff line number Diff line change
Expand Up @@ -867,6 +867,15 @@ static void cpsw_init_host_port(struct cpsw_priv *priv)
}
}

static void cpsw_slave_stop(struct cpsw_slave *slave, struct cpsw_priv *priv)
{
if (!slave->phy)
return;
phy_stop(slave->phy);
phy_disconnect(slave->phy);
slave->phy = NULL;
}

static int cpsw_ndo_open(struct net_device *ndev)
{
struct cpsw_priv *priv = netdev_priv(ndev);
Expand Down Expand Up @@ -912,14 +921,16 @@ static int cpsw_ndo_open(struct net_device *ndev)
struct sk_buff *skb;

ret = -ENOMEM;
skb = netdev_alloc_skb_ip_align(priv->ndev,
priv->rx_packet_max);
skb = __netdev_alloc_skb_ip_align(priv->ndev,
priv->rx_packet_max, GFP_KERNEL);
if (!skb)
break;
goto err_cleanup;
ret = cpdma_chan_submit(priv->rxch, skb, skb->data,
skb_tailroom(skb), 0, GFP_KERNEL);
if (WARN_ON(ret < 0))
break;
if (ret < 0) {
kfree_skb(skb);
goto err_cleanup;
}
}
/* continue even if we didn't manage to submit all
* receive descs
Expand All @@ -944,15 +955,13 @@ static int cpsw_ndo_open(struct net_device *ndev)
if (priv->data.dual_emac)
priv->slaves[priv->emac_port].open_stat = true;
return 0;
}

static void cpsw_slave_stop(struct cpsw_slave *slave, struct cpsw_priv *priv)
{
if (!slave->phy)
return;
phy_stop(slave->phy);
phy_disconnect(slave->phy);
slave->phy = NULL;
err_cleanup:
cpdma_ctlr_stop(priv->dma);
for_each_slave(priv, cpsw_slave_stop, priv);
pm_runtime_put_sync(&priv->pdev->dev);
netif_carrier_off(priv->ndev);
return ret;
}

static int cpsw_ndo_stop(struct net_device *ndev)
Expand Down

0 comments on commit 4f96b4e

Please sign in to comment.