Loading drivers/net/ucc_geth.c +52 −35 Original line number Diff line number Diff line Loading @@ -3429,46 +3429,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); Loading @@ -3476,7 +3455,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 */ Loading @@ -3490,13 +3469,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, Loading @@ -3505,16 +3522,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; } Loading Loading
drivers/net/ucc_geth.c +52 −35 Original line number Diff line number Diff line Loading @@ -3429,46 +3429,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); Loading @@ -3476,7 +3455,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 */ Loading @@ -3490,13 +3469,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, Loading @@ -3505,16 +3522,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; } Loading