Lines Matching refs:p
61 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_get_iflink() local
63 return p->parent->dst->master_netdev->ifindex; in dsa_slave_get_iflink()
66 static inline bool dsa_port_is_bridged(struct dsa_slave_priv *p) in dsa_port_is_bridged() argument
68 return !!p->bridge_dev; in dsa_port_is_bridged()
73 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_open() local
74 struct net_device *master = p->parent->dst->master_netdev; in dsa_slave_open()
75 struct dsa_switch *ds = p->parent; in dsa_slave_open()
76 u8 stp_state = dsa_port_is_bridged(p) ? in dsa_slave_open()
101 err = ds->drv->port_enable(ds, p->port, p->phy); in dsa_slave_open()
107 ds->drv->port_stp_update(ds, p->port, stp_state); in dsa_slave_open()
109 if (p->phy) in dsa_slave_open()
110 phy_start(p->phy); in dsa_slave_open()
129 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_close() local
130 struct net_device *master = p->parent->dst->master_netdev; in dsa_slave_close()
131 struct dsa_switch *ds = p->parent; in dsa_slave_close()
133 if (p->phy) in dsa_slave_close()
134 phy_stop(p->phy); in dsa_slave_close()
147 ds->drv->port_disable(ds, p->port, p->phy); in dsa_slave_close()
150 ds->drv->port_stp_update(ds, p->port, BR_STATE_DISABLED); in dsa_slave_close()
157 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_change_rx_flags() local
158 struct net_device *master = p->parent->dst->master_netdev; in dsa_slave_change_rx_flags()
168 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_set_rx_mode() local
169 struct net_device *master = p->parent->dst->master_netdev; in dsa_slave_set_rx_mode()
177 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_set_mac_address() local
178 struct net_device *master = p->parent->dst->master_netdev; in dsa_slave_set_mac_address()
207 struct dsa_slave_priv *p; in dsa_bridge_check_vlan_range() local
232 p = netdev_priv(dev); in dsa_bridge_check_vlan_range()
233 vlan_br = p->bridge_dev; in dsa_bridge_check_vlan_range()
248 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_port_vlan_add() local
249 struct dsa_switch *ds = p->parent; in dsa_slave_port_vlan_add()
259 err = dsa_bridge_check_vlan_range(ds, p->bridge_dev, in dsa_slave_port_vlan_add()
265 err = ds->drv->port_vlan_prepare(ds, p->port, vlan, trans); in dsa_slave_port_vlan_add()
269 err = ds->drv->port_vlan_add(ds, p->port, vlan, trans); in dsa_slave_port_vlan_add()
280 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_port_vlan_del() local
281 struct dsa_switch *ds = p->parent; in dsa_slave_port_vlan_del()
286 return ds->drv->port_vlan_del(ds, p->port, vlan); in dsa_slave_port_vlan_del()
293 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_port_vlan_dump() local
294 struct dsa_switch *ds = p->parent; in dsa_slave_port_vlan_dump()
303 err = ds->drv->port_pvid_get(ds, p->port, &pvid); in dsa_slave_port_vlan_dump()
312 if (!test_bit(p->port, members)) in dsa_slave_port_vlan_dump()
321 if (test_bit(p->port, untagged)) in dsa_slave_port_vlan_dump()
336 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_port_fdb_add() local
337 struct dsa_switch *ds = p->parent; in dsa_slave_port_fdb_add()
344 ret = ds->drv->port_fdb_prepare(ds, p->port, fdb, trans); in dsa_slave_port_fdb_add()
346 ret = ds->drv->port_fdb_add(ds, p->port, fdb, trans); in dsa_slave_port_fdb_add()
354 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_port_fdb_del() local
355 struct dsa_switch *ds = p->parent; in dsa_slave_port_fdb_del()
359 ret = ds->drv->port_fdb_del(ds, p->port, fdb); in dsa_slave_port_fdb_del()
368 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_port_fdb_dump() local
369 struct dsa_switch *ds = p->parent; in dsa_slave_port_fdb_dump()
372 return ds->drv->port_fdb_dump(ds, p->port, fdb, cb); in dsa_slave_port_fdb_dump()
379 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_ioctl() local
381 if (p->phy != NULL) in dsa_slave_ioctl()
382 return phy_mii_ioctl(p->phy, ifr, cmd); in dsa_slave_ioctl()
394 struct dsa_slave_priv *p; in dsa_slave_br_port_mask() local
402 p = netdev_priv(ds->ports[port]); in dsa_slave_br_port_mask()
405 p->bridge_dev == bridge) in dsa_slave_br_port_mask()
414 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_stp_update() local
415 struct dsa_switch *ds = p->parent; in dsa_slave_stp_update()
419 ret = ds->drv->port_stp_update(ds, p->port, state); in dsa_slave_stp_update()
428 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_port_attr_set() local
429 struct dsa_switch *ds = p->parent; in dsa_slave_port_attr_set()
437 ret = ds->drv->port_stp_update(ds, p->port, in dsa_slave_port_attr_set()
528 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_bridge_port_join() local
529 struct dsa_switch *ds = p->parent; in dsa_slave_bridge_port_join()
532 p->bridge_dev = br; in dsa_slave_bridge_port_join()
535 ret = ds->drv->port_join_bridge(ds, p->port, in dsa_slave_bridge_port_join()
543 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_bridge_port_leave() local
544 struct dsa_switch *ds = p->parent; in dsa_slave_bridge_port_leave()
549 ret = ds->drv->port_leave_bridge(ds, p->port, in dsa_slave_bridge_port_leave()
550 dsa_slave_br_port_mask(ds, p->bridge_dev)); in dsa_slave_bridge_port_leave()
552 p->bridge_dev = NULL; in dsa_slave_bridge_port_leave()
565 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_port_attr_get() local
566 struct dsa_switch *ds = p->parent; in dsa_slave_port_attr_get()
580 static inline netdev_tx_t dsa_netpoll_send_skb(struct dsa_slave_priv *p, in dsa_netpoll_send_skb() argument
584 if (p->netpoll) in dsa_netpoll_send_skb()
585 netpoll_send_skb(p->netpoll, skb); in dsa_netpoll_send_skb()
594 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_xmit() local
601 nskb = p->xmit(skb, dev); in dsa_slave_xmit()
609 return dsa_netpoll_send_skb(p, nskb); in dsa_slave_xmit()
614 nskb->dev = p->parent->dst->master_netdev; in dsa_slave_xmit()
632 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_get_settings() local
636 if (p->phy != NULL) { in dsa_slave_get_settings()
637 err = phy_read_status(p->phy); in dsa_slave_get_settings()
639 err = phy_ethtool_gset(p->phy, cmd); in dsa_slave_get_settings()
648 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_set_settings() local
650 if (p->phy != NULL) in dsa_slave_set_settings()
651 return phy_ethtool_sset(p->phy, cmd); in dsa_slave_set_settings()
667 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_get_regs_len() local
668 struct dsa_switch *ds = p->parent; in dsa_slave_get_regs_len()
671 return ds->drv->get_regs_len(ds, p->port); in dsa_slave_get_regs_len()
679 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_get_regs() local
680 struct dsa_switch *ds = p->parent; in dsa_slave_get_regs()
683 ds->drv->get_regs(ds, p->port, regs, _p); in dsa_slave_get_regs()
688 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_nway_reset() local
690 if (p->phy != NULL) in dsa_slave_nway_reset()
691 return genphy_restart_aneg(p->phy); in dsa_slave_nway_reset()
698 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_get_link() local
700 if (p->phy != NULL) { in dsa_slave_get_link()
701 genphy_update_link(p->phy); in dsa_slave_get_link()
702 return p->phy->link; in dsa_slave_get_link()
710 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_get_eeprom_len() local
711 struct dsa_switch *ds = p->parent; in dsa_slave_get_eeprom_len()
725 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_get_eeprom() local
726 struct dsa_switch *ds = p->parent; in dsa_slave_get_eeprom()
737 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_set_eeprom() local
738 struct dsa_switch *ds = p->parent; in dsa_slave_set_eeprom()
749 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_get_strings() local
750 struct dsa_switch *ds = p->parent; in dsa_slave_get_strings()
760 ds->drv->get_strings(ds, p->port, data + 4 * len); in dsa_slave_get_strings()
768 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_get_ethtool_stats() local
769 struct dsa_switch *ds = p->parent; in dsa_slave_get_ethtool_stats()
771 data[0] = p->dev->stats.tx_packets; in dsa_slave_get_ethtool_stats()
772 data[1] = p->dev->stats.tx_bytes; in dsa_slave_get_ethtool_stats()
773 data[2] = p->dev->stats.rx_packets; in dsa_slave_get_ethtool_stats()
774 data[3] = p->dev->stats.rx_bytes; in dsa_slave_get_ethtool_stats()
776 ds->drv->get_ethtool_stats(ds, p->port, data + 4); in dsa_slave_get_ethtool_stats()
781 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_get_sset_count() local
782 struct dsa_switch *ds = p->parent; in dsa_slave_get_sset_count()
799 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_get_wol() local
800 struct dsa_switch *ds = p->parent; in dsa_slave_get_wol()
803 ds->drv->get_wol(ds, p->port, w); in dsa_slave_get_wol()
808 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_set_wol() local
809 struct dsa_switch *ds = p->parent; in dsa_slave_set_wol()
813 ret = ds->drv->set_wol(ds, p->port, w); in dsa_slave_set_wol()
820 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_set_eee() local
821 struct dsa_switch *ds = p->parent; in dsa_slave_set_eee()
827 ret = ds->drv->set_eee(ds, p->port, p->phy, e); in dsa_slave_set_eee()
831 if (p->phy) in dsa_slave_set_eee()
832 ret = phy_ethtool_set_eee(p->phy, e); in dsa_slave_set_eee()
839 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_get_eee() local
840 struct dsa_switch *ds = p->parent; in dsa_slave_get_eee()
846 ret = ds->drv->get_eee(ds, p->port, e); in dsa_slave_get_eee()
850 if (p->phy) in dsa_slave_get_eee()
851 ret = phy_ethtool_get_eee(p->phy, e); in dsa_slave_get_eee()
860 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_netpoll_setup() local
861 struct dsa_switch *ds = p->parent; in dsa_slave_netpoll_setup()
876 p->netpoll = netpoll; in dsa_slave_netpoll_setup()
883 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_netpoll_cleanup() local
884 struct netpoll *netpoll = p->netpoll; in dsa_slave_netpoll_cleanup()
889 p->netpoll = NULL; in dsa_slave_netpoll_cleanup()
955 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_adjust_link() local
956 struct dsa_switch *ds = p->parent; in dsa_slave_adjust_link()
959 if (p->old_link != p->phy->link) { in dsa_slave_adjust_link()
961 p->old_link = p->phy->link; in dsa_slave_adjust_link()
964 if (p->old_duplex != p->phy->duplex) { in dsa_slave_adjust_link()
966 p->old_duplex = p->phy->duplex; in dsa_slave_adjust_link()
969 if (p->old_pause != p->phy->pause) { in dsa_slave_adjust_link()
971 p->old_pause = p->phy->pause; in dsa_slave_adjust_link()
975 ds->drv->adjust_link(ds, p->port, p->phy); in dsa_slave_adjust_link()
978 phy_print_status(p->phy); in dsa_slave_adjust_link()
984 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_fixed_link_update() local
985 struct dsa_switch *ds = p->parent; in dsa_slave_fixed_link_update()
988 ds->drv->fixed_link_update(ds, p->port, status); in dsa_slave_fixed_link_update()
994 static int dsa_slave_phy_connect(struct dsa_slave_priv *p, in dsa_slave_phy_connect() argument
998 struct dsa_switch *ds = p->parent; in dsa_slave_phy_connect()
1000 p->phy = ds->slave_mii_bus->phy_map[addr]; in dsa_slave_phy_connect()
1001 if (!p->phy) { in dsa_slave_phy_connect()
1007 if (p->phy_interface == PHY_INTERFACE_MODE_NA) in dsa_slave_phy_connect()
1008 p->phy_interface = p->phy->interface; in dsa_slave_phy_connect()
1009 phy_connect_direct(slave_dev, p->phy, dsa_slave_adjust_link, in dsa_slave_phy_connect()
1010 p->phy_interface); in dsa_slave_phy_connect()
1015 static int dsa_slave_phy_setup(struct dsa_slave_priv *p, in dsa_slave_phy_setup() argument
1018 struct dsa_switch *ds = p->parent; in dsa_slave_phy_setup()
1025 port_dn = cd->port_dn[p->port]; in dsa_slave_phy_setup()
1029 p->phy_interface = mode; in dsa_slave_phy_setup()
1046 phy_flags = ds->drv->get_phy_flags(ds, p->port); in dsa_slave_phy_setup()
1058 ret = dsa_slave_phy_connect(p, slave_dev, phy_id); in dsa_slave_phy_setup()
1064 p->phy = of_phy_connect(slave_dev, phy_dn, in dsa_slave_phy_setup()
1067 p->phy_interface); in dsa_slave_phy_setup()
1071 if (p->phy && phy_is_fixed) in dsa_slave_phy_setup()
1072 fixed_phy_set_link_update(p->phy, dsa_slave_fixed_link_update); in dsa_slave_phy_setup()
1077 if (!p->phy) { in dsa_slave_phy_setup()
1078 ret = dsa_slave_phy_connect(p, slave_dev, p->port); in dsa_slave_phy_setup()
1080 netdev_err(slave_dev, "failed to connect to port %d: %d\n", p->port, ret); in dsa_slave_phy_setup()
1085 p->phy->addr, p->phy->drv->name); in dsa_slave_phy_setup()
1102 struct dsa_slave_priv *p = netdev_priv(slave_dev); in dsa_slave_suspend() local
1104 if (p->phy) { in dsa_slave_suspend()
1105 phy_stop(p->phy); in dsa_slave_suspend()
1106 p->old_pause = -1; in dsa_slave_suspend()
1107 p->old_link = -1; in dsa_slave_suspend()
1108 p->old_duplex = -1; in dsa_slave_suspend()
1109 phy_suspend(p->phy); in dsa_slave_suspend()
1117 struct dsa_slave_priv *p = netdev_priv(slave_dev); in dsa_slave_resume() local
1121 if (p->phy) { in dsa_slave_resume()
1122 phy_resume(p->phy); in dsa_slave_resume()
1123 phy_start(p->phy); in dsa_slave_resume()
1134 struct dsa_slave_priv *p; in dsa_slave_create() local
1157 p = netdev_priv(slave_dev); in dsa_slave_create()
1158 p->dev = slave_dev; in dsa_slave_create()
1159 p->parent = ds; in dsa_slave_create()
1160 p->port = port; in dsa_slave_create()
1165 p->xmit = dsa_netdev_ops.xmit; in dsa_slave_create()
1170 p->xmit = edsa_netdev_ops.xmit; in dsa_slave_create()
1175 p->xmit = trailer_netdev_ops.xmit; in dsa_slave_create()
1180 p->xmit = brcm_netdev_ops.xmit; in dsa_slave_create()
1184 p->xmit = dsa_slave_notag_xmit; in dsa_slave_create()
1188 p->old_pause = -1; in dsa_slave_create()
1189 p->old_link = -1; in dsa_slave_create()
1190 p->old_duplex = -1; in dsa_slave_create()
1192 ret = dsa_slave_phy_setup(p, slave_dev); in dsa_slave_create()
1204 phy_disconnect(p->phy); in dsa_slave_create()
1223 struct dsa_slave_priv *p = netdev_priv(dev); in dsa_slave_master_changed() local
1229 else if (dsa_port_is_bridged(p)) in dsa_slave_master_changed()