Lines Matching full:port
20 struct phy_port *port; in phy_port_alloc() local
22 port = kzalloc_obj(*port); in phy_port_alloc()
23 if (!port) in phy_port_alloc()
26 linkmode_zero(port->supported); in phy_port_alloc()
27 INIT_LIST_HEAD(&port->head); in phy_port_alloc()
29 return port; in phy_port_alloc()
35 * @port: The port to destroy
37 void phy_port_destroy(struct phy_port *port) in phy_port_destroy() argument
39 kfree(port); in phy_port_destroy()
45 * @dn: device_node representation of the port, following the
54 struct phy_port *port; in phy_of_parse_port() local
88 port = phy_port_alloc(); in phy_of_parse_port()
89 if (!port) in phy_of_parse_port()
92 port->pairs = pairs; in phy_of_parse_port()
93 port->mediums = BIT(medium); in phy_of_parse_port()
95 return port; in phy_of_parse_port()
100 * phy_port_update_supported() - Setup the port->supported field
101 * @port: the port to update
103 * Once the port's medium list and number of pairs has been configured based
105 * called to update the port's supported linkmodes list.
107 * Any mode that was manually set in the port's supported list remains set.
109 void phy_port_update_supported(struct phy_port *port) in phy_port_update_supported() argument
118 if (!port->pairs) in phy_port_update_supported()
119 for_each_set_bit(mode, port->supported, in phy_port_update_supported()
121 port->pairs = max_t(int, port->pairs, in phy_port_update_supported()
124 for_each_set_bit(i, &port->mediums, __ETHTOOL_LINK_MEDIUM_LAST) { in phy_port_update_supported()
127 phy_caps_medium_get_supported(med_supported, i, port->pairs); in phy_port_update_supported()
131 /* If port->supported is already populated, filter it out with the in phy_port_update_supported()
133 * support as the port's supported list. in phy_port_update_supported()
135 if (linkmode_empty(port->supported)) in phy_port_update_supported()
136 linkmode_copy(port->supported, supported); in phy_port_update_supported()
138 linkmode_and(port->supported, supported, port->supported); in phy_port_update_supported()
144 if (port->is_mii && !port->mediums) { in phy_port_update_supported()
148 for_each_set_bit(interface, port->interfaces, in phy_port_update_supported()
152 phy_caps_linkmodes(link_caps, port->supported); in phy_port_update_supported()
158 * phy_port_filter_supported() - Make sure that port->supported match port->mediums
159 * @port: The port to filter
161 * After updating a port's mediums to a more restricted subset, this helper will
162 * make sure that port->supported only contains linkmodes that are compatible
163 * with port->mediums.
165 static void phy_port_filter_supported(struct phy_port *port) in phy_port_filter_supported() argument
170 for_each_set_bit(i, &port->mediums, __ETHTOOL_LINK_MEDIUM_LAST) in phy_port_filter_supported()
171 phy_caps_medium_get_supported(supported, i, port->pairs); in phy_port_filter_supported()
173 linkmode_and(port->supported, port->supported, supported); in phy_port_filter_supported()
177 * phy_port_restrict_mediums - Mask away some of the port's supported mediums
178 * @port: The port to act upon
179 * @mediums: A mask of mediums to support on the port
181 * This helper allows removing some mediums from a port's list of supported
182 * mediums, which occurs once we have enough information about the port to
187 int phy_port_restrict_mediums(struct phy_port *port, unsigned long mediums) in phy_port_restrict_mediums() argument
189 /* We forbid ending-up with a port with empty mediums */ in phy_port_restrict_mediums()
190 if (!(port->mediums & mediums)) in phy_port_restrict_mediums()
193 port->mediums &= mediums; in phy_port_restrict_mediums()
195 phy_port_filter_supported(port); in phy_port_restrict_mediums()
202 * phy_port_get_type() - get the PORT_* attribute for that port.
203 * @port: The port we want the information from
207 int phy_port_get_type(struct phy_port *port) in phy_port_get_type() argument
209 if (port->mediums & BIT(ETHTOOL_LINK_MEDIUM_BASET)) in phy_port_get_type()
212 if (phy_port_is_fiber(port)) in phy_port_get_type()