Lines Matching +full:full +full:- +full:duplex

1 // SPDX-License-Identifier: GPL-2.0-only
31 struct net_device *dev = reply_base->dev; in linkmodes_prepare_data()
34 data->lsettings = &data->ksettings.base; in linkmodes_prepare_data()
40 ret = __ethtool_get_link_ksettings(dev, &data->ksettings); in linkmodes_prepare_data()
46 data->peer_empty = in linkmodes_prepare_data()
47 bitmap_empty(data->ksettings.link_modes.lp_advertising, in linkmodes_prepare_data()
59 const struct ethtool_link_ksettings *ksettings = &data->ksettings; in linkmodes_reply_size()
60 const struct ethtool_link_settings *lsettings = &ksettings->base; in linkmodes_reply_size()
61 bool compact = req_base->flags & ETHTOOL_FLAG_COMPACT_BITSETS; in linkmodes_reply_size()
68 ret = ethnl_bitset_size(ksettings->link_modes.advertising, in linkmodes_reply_size()
69 ksettings->link_modes.supported, in linkmodes_reply_size()
75 if (!data->peer_empty) { in linkmodes_reply_size()
76 ret = ethnl_bitset_size(ksettings->link_modes.lp_advertising, in linkmodes_reply_size()
84 if (lsettings->master_slave_cfg != MASTER_SLAVE_CFG_UNSUPPORTED) in linkmodes_reply_size()
87 if (lsettings->master_slave_state != MASTER_SLAVE_STATE_UNSUPPORTED) in linkmodes_reply_size()
98 const struct ethtool_link_ksettings *ksettings = &data->ksettings; in linkmodes_fill_reply()
99 const struct ethtool_link_settings *lsettings = &ksettings->base; in linkmodes_fill_reply()
100 bool compact = req_base->flags & ETHTOOL_FLAG_COMPACT_BITSETS; in linkmodes_fill_reply()
103 if (nla_put_u8(skb, ETHTOOL_A_LINKMODES_AUTONEG, lsettings->autoneg)) in linkmodes_fill_reply()
104 return -EMSGSIZE; in linkmodes_fill_reply()
107 ksettings->link_modes.advertising, in linkmodes_fill_reply()
108 ksettings->link_modes.supported, in linkmodes_fill_reply()
112 return -EMSGSIZE; in linkmodes_fill_reply()
113 if (!data->peer_empty) { in linkmodes_fill_reply()
115 ksettings->link_modes.lp_advertising, in linkmodes_fill_reply()
119 return -EMSGSIZE; in linkmodes_fill_reply()
122 if (nla_put_u32(skb, ETHTOOL_A_LINKMODES_SPEED, lsettings->speed) || in linkmodes_fill_reply()
123 nla_put_u8(skb, ETHTOOL_A_LINKMODES_DUPLEX, lsettings->duplex)) in linkmodes_fill_reply()
124 return -EMSGSIZE; in linkmodes_fill_reply()
126 if (lsettings->master_slave_cfg != MASTER_SLAVE_CFG_UNSUPPORTED && in linkmodes_fill_reply()
128 lsettings->master_slave_cfg)) in linkmodes_fill_reply()
129 return -EMSGSIZE; in linkmodes_fill_reply()
131 if (lsettings->master_slave_state != MASTER_SLAVE_STATE_UNSUPPORTED && in linkmodes_fill_reply()
133 lsettings->master_slave_state)) in linkmodes_fill_reply()
134 return -EMSGSIZE; in linkmodes_fill_reply()
155 u8 duplex; member
161 .duplex = __DUPLEX_ ## _duplex \
168 .duplex = DUPLEX_UNKNOWN, \
173 __DEFINE_LINK_MODE_PARAMS(10, T, Full),
175 __DEFINE_LINK_MODE_PARAMS(100, T, Full),
177 __DEFINE_LINK_MODE_PARAMS(1000, T, Full),
184 __DEFINE_LINK_MODE_PARAMS(10000, T, Full),
187 __DEFINE_LINK_MODE_PARAMS(2500, X, Full),
189 __DEFINE_LINK_MODE_PARAMS(1000, KX, Full),
190 __DEFINE_LINK_MODE_PARAMS(10000, KX4, Full),
191 __DEFINE_LINK_MODE_PARAMS(10000, KR, Full),
194 .duplex = DUPLEX_FULL,
196 __DEFINE_LINK_MODE_PARAMS(20000, MLD2, Full),
197 __DEFINE_LINK_MODE_PARAMS(20000, KR2, Full),
198 __DEFINE_LINK_MODE_PARAMS(40000, KR4, Full),
199 __DEFINE_LINK_MODE_PARAMS(40000, CR4, Full),
200 __DEFINE_LINK_MODE_PARAMS(40000, SR4, Full),
201 __DEFINE_LINK_MODE_PARAMS(40000, LR4, Full),
202 __DEFINE_LINK_MODE_PARAMS(56000, KR4, Full),
203 __DEFINE_LINK_MODE_PARAMS(56000, CR4, Full),
204 __DEFINE_LINK_MODE_PARAMS(56000, SR4, Full),
205 __DEFINE_LINK_MODE_PARAMS(56000, LR4, Full),
206 __DEFINE_LINK_MODE_PARAMS(25000, CR, Full),
207 __DEFINE_LINK_MODE_PARAMS(25000, KR, Full),
208 __DEFINE_LINK_MODE_PARAMS(25000, SR, Full),
209 __DEFINE_LINK_MODE_PARAMS(50000, CR2, Full),
210 __DEFINE_LINK_MODE_PARAMS(50000, KR2, Full),
211 __DEFINE_LINK_MODE_PARAMS(100000, KR4, Full),
212 __DEFINE_LINK_MODE_PARAMS(100000, SR4, Full),
213 __DEFINE_LINK_MODE_PARAMS(100000, CR4, Full),
214 __DEFINE_LINK_MODE_PARAMS(100000, LR4_ER4, Full),
215 __DEFINE_LINK_MODE_PARAMS(50000, SR2, Full),
216 __DEFINE_LINK_MODE_PARAMS(1000, X, Full),
217 __DEFINE_LINK_MODE_PARAMS(10000, CR, Full),
218 __DEFINE_LINK_MODE_PARAMS(10000, SR, Full),
219 __DEFINE_LINK_MODE_PARAMS(10000, LR, Full),
220 __DEFINE_LINK_MODE_PARAMS(10000, LRM, Full),
221 __DEFINE_LINK_MODE_PARAMS(10000, ER, Full),
222 __DEFINE_LINK_MODE_PARAMS(2500, T, Full),
223 __DEFINE_LINK_MODE_PARAMS(5000, T, Full),
227 __DEFINE_LINK_MODE_PARAMS(50000, KR, Full),
228 __DEFINE_LINK_MODE_PARAMS(50000, SR, Full),
229 __DEFINE_LINK_MODE_PARAMS(50000, CR, Full),
230 __DEFINE_LINK_MODE_PARAMS(50000, LR_ER_FR, Full),
231 __DEFINE_LINK_MODE_PARAMS(50000, DR, Full),
232 __DEFINE_LINK_MODE_PARAMS(100000, KR2, Full),
233 __DEFINE_LINK_MODE_PARAMS(100000, SR2, Full),
234 __DEFINE_LINK_MODE_PARAMS(100000, CR2, Full),
235 __DEFINE_LINK_MODE_PARAMS(100000, LR2_ER2_FR2, Full),
236 __DEFINE_LINK_MODE_PARAMS(100000, DR2, Full),
237 __DEFINE_LINK_MODE_PARAMS(200000, KR4, Full),
238 __DEFINE_LINK_MODE_PARAMS(200000, SR4, Full),
239 __DEFINE_LINK_MODE_PARAMS(200000, LR4_ER4_FR4, Full),
240 __DEFINE_LINK_MODE_PARAMS(200000, DR4, Full),
241 __DEFINE_LINK_MODE_PARAMS(200000, CR4, Full),
242 __DEFINE_LINK_MODE_PARAMS(100, T1, Full),
243 __DEFINE_LINK_MODE_PARAMS(1000, T1, Full),
244 __DEFINE_LINK_MODE_PARAMS(400000, KR8, Full),
245 __DEFINE_LINK_MODE_PARAMS(400000, SR8, Full),
246 __DEFINE_LINK_MODE_PARAMS(400000, LR8_ER8_FR8, Full),
247 __DEFINE_LINK_MODE_PARAMS(400000, DR8, Full),
248 __DEFINE_LINK_MODE_PARAMS(400000, CR8, Full),
250 __DEFINE_LINK_MODE_PARAMS(100000, KR, Full),
251 __DEFINE_LINK_MODE_PARAMS(100000, SR, Full),
252 __DEFINE_LINK_MODE_PARAMS(100000, LR_ER_FR, Full),
253 __DEFINE_LINK_MODE_PARAMS(100000, DR, Full),
254 __DEFINE_LINK_MODE_PARAMS(100000, CR, Full),
255 __DEFINE_LINK_MODE_PARAMS(200000, KR2, Full),
256 __DEFINE_LINK_MODE_PARAMS(200000, SR2, Full),
257 __DEFINE_LINK_MODE_PARAMS(200000, LR2_ER2_FR2, Full),
258 __DEFINE_LINK_MODE_PARAMS(200000, DR2, Full),
259 __DEFINE_LINK_MODE_PARAMS(200000, CR2, Full),
260 __DEFINE_LINK_MODE_PARAMS(400000, KR4, Full),
261 __DEFINE_LINK_MODE_PARAMS(400000, SR4, Full),
262 __DEFINE_LINK_MODE_PARAMS(400000, LR4_ER4_FR4, Full),
263 __DEFINE_LINK_MODE_PARAMS(400000, DR4, Full),
264 __DEFINE_LINK_MODE_PARAMS(400000, CR4, Full),
266 __DEFINE_LINK_MODE_PARAMS(100, FX, Full),
280 * and duplex values. Called when autonegotiation is on, speed or duplex is
288 unsigned long *advertising = ksettings->link_modes.advertising; in ethnl_auto_linkmodes()
289 unsigned long *supported = ksettings->link_modes.supported; in ethnl_auto_linkmodes()
301 if (info->speed == SPEED_UNKNOWN) in ethnl_auto_linkmodes()
304 (!req_speed || info->speed == ksettings->base.speed) && in ethnl_auto_linkmodes()
305 (!req_duplex || info->duplex == ksettings->base.duplex)) in ethnl_auto_linkmodes()
332 struct ethtool_link_settings *lsettings = &ksettings->base; in ethnl_update_linkmodes()
341 if (lsettings->master_slave_cfg == MASTER_SLAVE_CFG_UNSUPPORTED) { in ethnl_update_linkmodes()
342 NL_SET_ERR_MSG_ATTR(info->extack, master_slave_cfg, in ethnl_update_linkmodes()
344 return -EOPNOTSUPP; in ethnl_update_linkmodes()
348 NL_SET_ERR_MSG_ATTR(info->extack, master_slave_cfg, in ethnl_update_linkmodes()
350 return -EOPNOTSUPP; in ethnl_update_linkmodes()
358 ethnl_update_u8(&lsettings->autoneg, tb[ETHTOOL_A_LINKMODES_AUTONEG], in ethnl_update_linkmodes()
360 ret = ethnl_update_bitset(ksettings->link_modes.advertising, in ethnl_update_linkmodes()
363 info->extack, mod); in ethnl_update_linkmodes()
366 ethnl_update_u32(&lsettings->speed, tb[ETHTOOL_A_LINKMODES_SPEED], in ethnl_update_linkmodes()
368 ethnl_update_u8(&lsettings->duplex, tb[ETHTOOL_A_LINKMODES_DUPLEX], in ethnl_update_linkmodes()
370 ethnl_update_u8(&lsettings->master_slave_cfg, master_slave_cfg, mod); in ethnl_update_linkmodes()
372 if (!tb[ETHTOOL_A_LINKMODES_OURS] && lsettings->autoneg && in ethnl_update_linkmodes()
384 struct nlattr **tb = info->attrs; in ethnl_set_linkmodes()
391 genl_info_net(info), info->extack, in ethnl_set_linkmodes()
396 ret = -EOPNOTSUPP; in ethnl_set_linkmodes()
397 if (!dev->ethtool_ops->get_link_ksettings || in ethnl_set_linkmodes()
398 !dev->ethtool_ops->set_link_ksettings) in ethnl_set_linkmodes()
417 ret = dev->ethtool_ops->set_link_ksettings(dev, &ksettings); in ethnl_set_linkmodes()