Lines Matching refs:slave_dev

2474 static int dsa_slave_phy_connect(struct net_device *slave_dev, int addr,
2477 struct dsa_port *dp = dsa_slave_to_port(slave_dev);
2480 slave_dev->phydev = mdiobus_get_phy(ds->slave_mii_bus, addr);
2481 if (!slave_dev->phydev) {
2482 netdev_err(slave_dev, "no phy at %d\n", addr);
2486 slave_dev->phydev->dev_flags |= flags;
2488 return phylink_connect_phy(dp->pl, slave_dev->phydev);
2491 static int dsa_slave_phy_setup(struct net_device *slave_dev)
2493 struct dsa_port *dp = dsa_slave_to_port(slave_dev);
2499 dp->pl_config.dev = &slave_dev->dev;
2523 ret = dsa_slave_phy_connect(slave_dev, dp->index, phy_flags);
2526 netdev_err(slave_dev, "failed to connect to PHY: %pe\n",
2562 int dsa_slave_suspend(struct net_device *slave_dev)
2564 struct dsa_port *dp = dsa_slave_to_port(slave_dev);
2566 if (!netif_running(slave_dev))
2569 netif_device_detach(slave_dev);
2578 int dsa_slave_resume(struct net_device *slave_dev)
2580 struct dsa_port *dp = dsa_slave_to_port(slave_dev);
2582 if (!netif_running(slave_dev))
2585 netif_device_attach(slave_dev);
2598 struct net_device *slave_dev;
2615 slave_dev = alloc_netdev_mqs(sizeof(struct dsa_slave_priv), name,
2618 if (slave_dev == NULL)
2621 slave_dev->rtnl_link_ops = &dsa_link_ops;
2622 slave_dev->ethtool_ops = &dsa_slave_ethtool_ops;
2624 slave_dev->dcbnl_ops = &dsa_slave_dcbnl_ops;
2627 eth_hw_addr_set(slave_dev, port->mac);
2629 eth_hw_addr_inherit(slave_dev, master);
2630 slave_dev->priv_flags |= IFF_NO_QUEUE;
2632 slave_dev->priv_flags |= IFF_UNICAST_FLT;
2633 slave_dev->netdev_ops = &dsa_slave_netdev_ops;
2635 slave_dev->max_mtu = ds->ops->port_max_mtu(ds, port->index);
2636 SET_NETDEV_DEVTYPE(slave_dev, &dsa_type);
2638 SET_NETDEV_DEV(slave_dev, port->ds->dev);
2639 SET_NETDEV_DEVLINK_PORT(slave_dev, &port->devlink_port);
2640 slave_dev->dev.of_node = port->dn;
2641 slave_dev->vlan_features = master->vlan_features;
2643 p = netdev_priv(slave_dev);
2644 slave_dev->tstats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);
2645 if (!slave_dev->tstats) {
2646 free_netdev(slave_dev);
2650 ret = gro_cells_init(&p->gcells, slave_dev);
2656 port->slave = slave_dev;
2657 dsa_slave_setup_tagger(slave_dev);
2659 netif_carrier_off(slave_dev);
2661 ret = dsa_slave_phy_setup(slave_dev);
2663 netdev_err(slave_dev,
2671 ret = dsa_slave_change_mtu(slave_dev, ETH_DATA_LEN);
2676 ret = register_netdevice(slave_dev);
2679 ret, slave_dev->name);
2685 ret = dsa_slave_dcbnl_init(slave_dev);
2687 netdev_err(slave_dev,
2695 ret = netdev_upper_dev_link(master, slave_dev, NULL);
2705 unregister_netdev(slave_dev);
2714 free_percpu(slave_dev->tstats);
2715 free_netdev(slave_dev);
2720 void dsa_slave_destroy(struct net_device *slave_dev)
2722 struct net_device *master = dsa_slave_to_master(slave_dev);
2723 struct dsa_port *dp = dsa_slave_to_port(slave_dev);
2724 struct dsa_slave_priv *p = netdev_priv(slave_dev);
2726 netif_carrier_off(slave_dev);
2728 netdev_upper_dev_unlink(master, slave_dev);
2729 unregister_netdevice(slave_dev);
2735 free_percpu(slave_dev->tstats);
2736 free_netdev(slave_dev);