ucc_geth: Factor out MAC initialization steps into a call
Subsystems (2)
PATCH 3/5 ucc_geth: Factor out MAC initialization steps into a call
This patch factors out MAC initialization into ucc_geth_init_mac() function that we'll use for suspend/resume.
Signed-off-by Anton Vorontsov <[email protected]>
--- drivers/net/ucc_geth.c | 87 ++++++++++++++++++++++++++++------------------- 1 files changed, 52 insertions(+), 35 deletions(-)
drivers/net/ucc_geth.c +52 -35
@@ -3413,46 +3413,25 @@ static int ucc_geth_set_mac_addr(struct net_device *dev, void *p)return 0 ; } -/* Called when something needs to use the ethernet device */ -/* Returns 0 for success. */ -static int ucc_geth_open (struct net_device *dev) +static int ucc_geth_init_mac (struct ucc_geth_private *ugeth) { -struct ucc_geth_private *ugeth =netdev_priv (dev); +struct net_device *dev = ugeth->ndev;int err; -ugeth_vdbg ("%s: IN" , __func__); - -/* Test station address */ -if (dev->dev_addr[0 ] &ENET_GROUP_ADDR ) { -if (netif_msg_ifup (ugeth)) -ugeth_err ("%s: Multicast address used for station address" -" - is this what you wanted?" , __func__); -return -EINVAL ; - } - - err =init_phy (dev); -if (err) { -if (netif_msg_ifup (ugeth)) -ugeth_err ("%s: Cannot initialize PHY, aborting." , - dev->name); -return err; - } - err =ucc_struct_init (ugeth);if (err) {if (netif_msg_ifup (ugeth)) -ugeth_err ("%s: Cannot configure internal struct, aborting." , dev->name); - goto out_err_stop; +ugeth_err ("%s: Cannot configure internal struct, " +"aborting." , dev->name); + goto err; } -napi_enable (&ugeth->napi); - err =ucc_geth_startup (ugeth);if (err) {if (netif_msg_ifup (ugeth))ugeth_err ("%s: Cannot configure net device, aborting." , dev->name); - goto out_err; + goto err; } err =adjust_enet_interface (ugeth);
@@ -3460,7 +3439,7 @@ static int ucc_geth_open(struct net_device *dev)if (netif_msg_ifup (ugeth))ugeth_err ("%s: Cannot configure net device, aborting." , dev->name); - goto out_err; + goto err; }/* Set MACSTNADDR1, MACSTNADDR2 */
@@ -3474,13 +3453,51 @@ static int ucc_geth_open(struct net_device *dev) &ugeth->ug_regs->macstnaddr1, &ugeth->ug_regs->macstnaddr2); -phy_start (ugeth->phydev); - err =ugeth_enable (ugeth,COMM_DIR_RX_AND_TX );if (err) {if (netif_msg_ifup (ugeth))ugeth_err ("%s: Cannot enable net device, aborting." , dev->name); - goto out_err; + goto err; + } + +return 0 ; +err: +ucc_geth_stop (ugeth); +return err; +} + +/* Called when something needs to use the ethernet device */ +/* Returns 0 for success. */ +static int ucc_geth_open (struct net_device *dev) +{ +struct ucc_geth_private *ugeth =netdev_priv (dev); +int err; + +ugeth_vdbg ("%s: IN" , __func__); + +/* Test station address */ +if (dev->dev_addr[0 ] &ENET_GROUP_ADDR ) { +if (netif_msg_ifup (ugeth)) +ugeth_err ("%s: Multicast address used for station " +"address - is this what you wanted?" , + __func__); +return -EINVAL ; + } + + err =init_phy (dev); +if (err) { +if (netif_msg_ifup (ugeth)) +ugeth_err ("%s: Cannot initialize PHY, aborting." , + dev->name); +return err; + } + + err =ucc_geth_init_mac (ugeth); +if (err) { +if (netif_msg_ifup (ugeth)) +ugeth_err ("%s: Cannot initialize MAC, aborting." , + dev->name); + goto err; } err = request_irq(ugeth->ug_info->uf_info.irq, ucc_geth_irq_handler,
@@ -3489,16 +3506,16 @@ static int ucc_geth_open(struct net_device *dev)if (netif_msg_ifup (ugeth))ugeth_err ("%s: Cannot get IRQ for net device, aborting." , dev->name); - goto out_err; + goto err; } +phy_start (ugeth->phydev); +napi_enable (&ugeth->napi);netif_start_queue (dev);return err; -out_err: -napi_disable (&ugeth->napi); -out_err_stop: +err:ucc_geth_stop (ugeth);return err; }
Signature · 1 line
1.6.3.3