Lines Matching full:if

49 	if (!dev->devlink_port)  in netdev_to_devlink_get()
56 * If we find that all drivers want to do the same thing here,
106 if (get_user(copy_size, sizeaddr)) in ethtool_get_features()
109 if (copy_size > ETHTOOL_DEV_FEATURE_WORDS) in ethtool_get_features()
112 if (copy_to_user(useraddr, &cmd, sizeof(cmd))) in ethtool_get_features()
115 if (copy_to_user(useraddr, features, in ethtool_get_features()
129 if (copy_from_user(&cmd, useraddr, sizeof(cmd))) in ethtool_set_features()
133 if (cmd.size != ETHTOOL_DEV_FEATURE_WORDS) in ethtool_set_features()
136 if (copy_from_user(features, useraddr, sizeof(features))) in ethtool_set_features()
144 if (valid & ~NETIF_F_ETHTOOL_BITS) in ethtool_set_features()
147 if (valid & ~dev->hw_features) { in ethtool_set_features()
156 if ((dev->wanted_features ^ dev->features) & valid) in ethtool_set_features()
167 if (sset == ETH_SS_FEATURES) in __ethtool_get_sset_count()
170 if (sset == ETH_SS_RSS_HASH_FUNCS) in __ethtool_get_sset_count()
173 if (sset == ETH_SS_TUNABLES) in __ethtool_get_sset_count()
176 if (sset == ETH_SS_PHY_TUNABLES) in __ethtool_get_sset_count()
179 if (sset == ETH_SS_PHY_STATS && dev->phydev && in __ethtool_get_sset_count()
184 if (sset == ETH_SS_LINK_MODES) in __ethtool_get_sset_count()
187 if (ops->get_sset_count && ops->get_strings) in __ethtool_get_sset_count()
199 if (stringset == ETH_SS_FEATURES) in __ethtool_get_strings()
202 else if (stringset == ETH_SS_RSS_HASH_FUNCS) in __ethtool_get_strings()
205 else if (stringset == ETH_SS_TUNABLES) in __ethtool_get_strings()
207 else if (stringset == ETH_SS_PHY_TUNABLES) in __ethtool_get_strings()
209 else if (stringset == ETH_SS_PHY_STATS && dev->phydev && in __ethtool_get_strings()
213 else if (stringset == ETH_SS_LINK_MODES) in __ethtool_get_strings()
259 if (copy_to_user(useraddr, &edata, sizeof(edata))) in ethtool_get_one_feature()
270 if (copy_from_user(&edata, useraddr, sizeof(edata))) in ethtool_set_one_feature()
275 if (!mask) in ethtool_set_one_feature()
278 if (edata.data) in ethtool_set_one_feature()
298 if (dev->features & NETIF_F_LRO) in __ethtool_get_flags()
300 if (dev->features & NETIF_F_HW_VLAN_CTAG_RX) in __ethtool_get_flags()
302 if (dev->features & NETIF_F_HW_VLAN_CTAG_TX) in __ethtool_get_flags()
304 if (dev->features & NETIF_F_NTUPLE) in __ethtool_get_flags()
306 if (dev->features & NETIF_F_RXHASH) in __ethtool_get_flags()
316 if (data & ~ETH_ALL_FLAGS) in __ethtool_set_flags()
319 if (data & ETH_FLAG_LRO) in __ethtool_set_flags()
321 if (data & ETH_FLAG_RXVLAN) in __ethtool_set_flags()
323 if (data & ETH_FLAG_TXVLAN) in __ethtool_set_flags()
325 if (data & ETH_FLAG_NTUPLE) in __ethtool_set_flags()
327 if (data & ETH_FLAG_RXHASH) in __ethtool_set_flags()
332 if (changed & ~dev->hw_features) in __ethtool_set_flags()
367 /* return false if src had higher bits set. lower bits always updated. */
377 /* return false if ksettings link modes had higher bits
443 if (!dev->ethtool_ops->get_link_ksettings) in __ethtool_get_link_ksettings()
446 if (!netif_device_present(dev)) in __ethtool_get_link_ksettings()
462 if (copy_from_user(&link_usettings, from, sizeof(link_usettings))) in load_link_ksettings_from_user()
479 /* Check if the user is trying to change anything besides speed/duplex */
518 if (copy_to_user(to, &link_usettings, sizeof(link_usettings))) in store_link_ksettings_for_user()
532 if (!dev->ethtool_ops->get_link_ksettings) in ethtool_get_link_ksettings()
536 if (copy_from_user(&link_ksettings.base, useraddr, in ethtool_get_link_ksettings()
540 if (__ETHTOOL_LINK_MODE_MASK_NU32 in ethtool_get_link_ksettings()
554 if (copy_to_user(useraddr, &link_ksettings.base, in ethtool_get_link_ksettings()
567 if (err < 0) in ethtool_get_link_ksettings()
590 if (!dev->ethtool_ops->set_link_ksettings) in ethtool_set_link_ksettings()
594 if (copy_from_user(&link_ksettings.base, useraddr, in ethtool_set_link_ksettings()
598 if (__ETHTOOL_LINK_MODE_MASK_NU32 in ethtool_set_link_ksettings()
606 if (err) in ethtool_set_link_ksettings()
610 if (__ETHTOOL_LINK_MODE_MASK_NU32 in ethtool_set_link_ksettings()
614 if (link_ksettings.base.master_slave_cfg || in ethtool_set_link_ksettings()
619 if (err >= 0) { in ethtool_set_link_ksettings()
636 if (!ethtool_validate_speed(speed) || in ethtool_virtdev_set_link_ksettings()
663 if (!dev->ethtool_ops->get_link_ksettings) in ethtool_get_settings()
666 if (dev->ethtool->module_fw_flash_in_progress) in ethtool_get_settings()
671 if (err < 0) in ethtool_get_settings()
678 if (copy_to_user(useraddr, &cmd, sizeof(cmd))) in ethtool_get_settings()
700 if (copy_from_user(&cmd, useraddr, sizeof(cmd))) in ethtool_set_settings()
702 if (!dev->ethtool_ops->set_link_ksettings) in ethtool_set_settings()
705 if (!convert_legacy_settings_to_link_ksettings(&link_ksettings, &cmd)) in ethtool_set_settings()
710 if (ret >= 0) { in ethtool_set_settings()
726 if (ops->get_drvinfo) { in ethtool_get_drvinfo()
728 if (!rsp->info.bus_info[0] && parent) in ethtool_get_drvinfo()
731 if (!rsp->info.driver[0] && parent && parent->driver) in ethtool_get_drvinfo()
734 } else if (parent && parent->driver) { in ethtool_get_drvinfo()
739 } else if (dev->rtnl_link_ops) { in ethtool_get_drvinfo()
750 if (ops->get_sset_count) { in ethtool_get_drvinfo()
754 if (rc >= 0) in ethtool_get_drvinfo()
757 if (rc >= 0) in ethtool_get_drvinfo()
760 if (rc >= 0) in ethtool_get_drvinfo()
763 if (ops->get_regs_len) { in ethtool_get_drvinfo()
766 if (ret > 0) in ethtool_get_drvinfo()
770 if (ops->get_eeprom_len) in ethtool_get_drvinfo()
773 if (!rsp->info.fw_version[0]) in ethtool_get_drvinfo()
787 if (copy_from_user(&info, useraddr, sizeof(info))) in ethtool_get_sset_info()
792 if (!sset_mask) in ethtool_get_sset_info()
802 if (!info_buf) in ethtool_get_sset_info()
810 if (!(sset_mask & (1ULL << i))) in ethtool_get_sset_info()
814 if (rc >= 0) { in ethtool_get_sset_info()
821 if (copy_to_user(useraddr, &info, sizeof(info))) in ethtool_get_sset_info()
825 if (copy_to_user(useraddr, info_buf, array_size(idx, sizeof(u32)))) in ethtool_get_sset_info()
858 if (copy_from_user(&crxnfc, useraddr, min(size, sizeof(crxnfc)))) in ethtool_rxnfc_copy_from_compat()
884 if (compat_need_64bit_alignment_fixup()) in ethtool_rxnfc_copy_from_user()
887 if (copy_from_user(rxnfc, useraddr, size)) in ethtool_rxnfc_copy_from_user()
916 if (copy_to_user(useraddr, &crxnfc, min(size, sizeof(crxnfc)))) in ethtool_rxnfc_copy_to_compat()
930 if (cmd == ETHTOOL_GRXFH || cmd == ETHTOOL_SRXFH) in ethtool_rxnfc_copy_struct()
934 if (ethtool_rxnfc_copy_from_user(info, useraddr, *info_size)) in ethtool_rxnfc_copy_struct()
937 if ((cmd == ETHTOOL_GRXFH || cmd == ETHTOOL_SRXFH) && info->flow_type & FLOW_RSS) { in ethtool_rxnfc_copy_struct()
939 if (ethtool_rxnfc_copy_from_user(info, useraddr, *info_size)) in ethtool_rxnfc_copy_struct()
944 if (!(info->flow_type & FLOW_RSS)) in ethtool_rxnfc_copy_struct()
948 if (info->cmd != cmd) in ethtool_rxnfc_copy_struct()
960 if (compat_need_64bit_alignment_fixup()) { in ethtool_rxnfc_copy_to_user()
969 if (ret) in ethtool_rxnfc_copy_to_user()
972 if (rule_buf) { in ethtool_rxnfc_copy_to_user()
973 if (copy_to_user(useraddr, rule_buf, in ethtool_rxnfc_copy_to_user()
1039 /* When adding a new type, update the assert and, if it's hashable, add it to
1046 /* Sanity check: if symmetric-xor/symmetric-or-xor is set, then: in ethtool_check_xfrm_rxfh()
1048 * 2 - If src is set, dst must also be set in ethtool_check_xfrm_rxfh()
1050 if ((input_xfrm != RXH_XFRM_NO_CHANGE && in ethtool_check_xfrm_rxfh()
1064 if (!input_xfrm || input_xfrm == RXH_XFRM_NO_CHANGE) in ethtool_check_flow_types()
1072 if (!flow_type_hashable(i)) in ethtool_check_flow_types()
1075 if (ops->get_rxfh_fields(dev, &fields)) in ethtool_check_flow_types()
1079 if (err) in ethtool_check_flow_types()
1095 if (!ops->set_rxfh_fields) in ethtool_set_rxfh_fields()
1099 if (rc) in ethtool_set_rxfh_fields()
1102 if (info.data & RXH_IP6_FL && !flow_type_v6(info.flow_type)) in ethtool_set_rxfh_fields()
1105 if (info.flow_type & FLOW_RSS && info.rss_context && in ethtool_set_rxfh_fields()
1110 if (ops->get_rxfh) { in ethtool_set_rxfh_fields()
1114 if (rc) in ethtool_set_rxfh_fields()
1118 if (rc) in ethtool_set_rxfh_fields()
1124 if (info.flow_type & FLOW_RSS) in ethtool_set_rxfh_fields()
1130 if (rc) in ethtool_set_rxfh_fields()
1146 if (!ops->get_rxfh_fields) in ethtool_get_rxfh_fields()
1150 if (ret) in ethtool_get_rxfh_fields()
1153 if (info.flow_type & FLOW_RSS && info.rss_context && in ethtool_get_rxfh_fields()
1158 if (info.flow_type & FLOW_RSS) in ethtool_get_rxfh_fields()
1164 if (ret < 0) in ethtool_get_rxfh_fields()
1180 if (!ops->set_rxnfc) in ethtool_set_rxnfc()
1184 if (rc) in ethtool_set_rxnfc()
1187 if (cmd == ETHTOOL_SRXCLSRLINS && info.fs.flow_type & FLOW_RSS) { in ethtool_set_rxnfc()
1189 * if NIC adds them together in ethtool_set_rxnfc()
1191 if (!ops->cap_rss_rxnfc_adds && in ethtool_set_rxnfc()
1195 if (info.rss_context && in ethtool_set_rxnfc()
1201 if (rc) in ethtool_set_rxnfc()
1204 if (cmd == ETHTOOL_SRXCLSRLINS && in ethtool_set_rxnfc()
1221 if (ret) in ethtool_get_rxrings()
1225 if (ret < 0) in ethtool_get_rxrings()
1242 if (!ops->get_rxnfc) in ethtool_get_rxnfc()
1247 if (ret) in ethtool_get_rxnfc()
1250 if (info.cmd == ETHTOOL_GRXCLSRLALL) { in ethtool_get_rxnfc()
1251 if (info.rule_cnt > 0) { in ethtool_get_rxnfc()
1252 if (info.rule_cnt <= KMALLOC_MAX_SIZE / sizeof(u32)) in ethtool_get_rxnfc()
1255 if (!rule_buf) in ethtool_get_rxnfc()
1261 if (ret < 0) in ethtool_get_rxnfc()
1277 if (copy_from_user(indir, useraddr, array_size(size, sizeof(indir[0])))) in ethtool_copy_validate_indir()
1282 if (indir[i] >= num_rx_rings) in ethtool_copy_validate_indir()
1305 if (!dev->ethtool_ops->get_rxfh_indir_size || in ethtool_get_rxfh_indir()
1309 if (rxfh.indir_size == 0) in ethtool_get_rxfh_indir()
1312 if (copy_from_user(&user_size, in ethtool_get_rxfh_indir()
1317 if (copy_to_user(useraddr + offsetof(struct ethtool_rxfh_indir, size), in ethtool_get_rxfh_indir()
1321 /* If the user buffer size is 0, this is just a query for the in ethtool_get_rxfh_indir()
1322 * device table size. Otherwise, if it's smaller than the in ethtool_get_rxfh_indir()
1325 if (user_size < rxfh.indir_size) in ethtool_get_rxfh_indir()
1329 if (!rxfh.indir) in ethtool_get_rxfh_indir()
1335 if (ret) in ethtool_get_rxfh_indir()
1337 if (copy_to_user(useraddr + in ethtool_get_rxfh_indir()
1358 if (!ops->get_rxfh_indir_size || !ops->set_rxfh) in ethtool_set_rxfh_indir()
1362 if (rxfh_dev.indir_size == 0) in ethtool_set_rxfh_indir()
1365 if (copy_from_user(&user_size, in ethtool_set_rxfh_indir()
1370 if (user_size != 0 && user_size != rxfh_dev.indir_size) in ethtool_set_rxfh_indir()
1375 if (!rxfh_dev.indir) in ethtool_set_rxfh_indir()
1379 if (num_rx_rings < 0) { in ethtool_set_rxfh_indir()
1384 if (user_size == 0) { in ethtool_set_rxfh_indir()
1394 if (ret) in ethtool_set_rxfh_indir()
1402 if (ret) in ethtool_set_rxfh_indir()
1406 if (user_size == 0) in ethtool_set_rxfh_indir()
1431 if (!ops->get_rxfh) in ethtool_get_rxfh()
1434 if (ops->get_rxfh_indir_size) in ethtool_get_rxfh()
1436 if (ops->get_rxfh_key_size) in ethtool_get_rxfh()
1439 if (copy_from_user(&rxfh, useraddr, sizeof(rxfh))) in ethtool_get_rxfh()
1445 if (rxfh.rsvd8[0] || rxfh.rsvd8[1] || rxfh.rsvd32) in ethtool_get_rxfh()
1448 if (rxfh.rss_context && !ops->create_rxfh_context) in ethtool_get_rxfh()
1453 if (copy_to_user(useraddr, &rxfh, sizeof(rxfh))) in ethtool_get_rxfh()
1456 if ((user_indir_size && user_indir_size != rxfh_dev.indir_size) || in ethtool_get_rxfh()
1463 if (!rss_config) in ethtool_get_rxfh()
1466 if (user_indir_size) in ethtool_get_rxfh()
1469 if (user_key_size) in ethtool_get_rxfh()
1473 if (rxfh.rss_context) { in ethtool_get_rxfh()
1475 if (!ctx) { in ethtool_get_rxfh()
1479 if (rxfh_dev.indir) in ethtool_get_rxfh()
1482 if (!ops->rxfh_per_ctx_key) { in ethtool_get_rxfh()
1485 if (rxfh_dev.key) in ethtool_get_rxfh()
1495 if (ret) in ethtool_get_rxfh()
1499 if (copy_to_user(useraddr + offsetof(struct ethtool_rxfh, hfunc), in ethtool_get_rxfh()
1502 } else if (copy_to_user(useraddr + in ethtool_get_rxfh()
1507 } else if (copy_to_user(useraddr + in ethtool_get_rxfh()
1512 } else if (copy_to_user(useraddr + in ethtool_get_rxfh()
1541 if (!ops->set_rxfh) in ethtool_set_rxfh()
1544 if (ops->get_rxfh_indir_size) in ethtool_set_rxfh()
1546 if (ops->get_rxfh_key_size) in ethtool_set_rxfh()
1549 if (copy_from_user(&rxfh, useraddr, sizeof(rxfh))) in ethtool_set_rxfh()
1553 if (rxfh.rsvd8[0] || rxfh.rsvd8[1] || rxfh.rsvd32) in ethtool_set_rxfh()
1556 if (rxfh.rss_context && !ops->create_rxfh_context) in ethtool_set_rxfh()
1559 if (rxfh.input_xfrm && rxfh.input_xfrm != RXH_XFRM_SYM_XOR && in ethtool_set_rxfh()
1563 if (rxfh.input_xfrm != RXH_XFRM_NO_CHANGE && in ethtool_set_rxfh()
1568 if ((rxfh.indir_size && in ethtool_set_rxfh()
1578 if (!create && in ethtool_set_rxfh()
1587 if (rxfh.rss_context && !ops->rxfh_per_ctx_key) in ethtool_set_rxfh()
1588 if (rxfh.key_size || in ethtool_set_rxfh()
1594 if (!rss_config) in ethtool_set_rxfh()
1598 if (num_rx_rings < 0) { in ethtool_set_rxfh()
1607 if (rxfh.indir_size && in ethtool_set_rxfh()
1616 if (ret) in ethtool_set_rxfh()
1618 } else if (rxfh.indir_size == 0) { in ethtool_set_rxfh()
1619 if (rxfh.rss_context == 0) { in ethtool_set_rxfh()
1633 if (rxfh.key_size) { in ethtool_set_rxfh()
1636 if (copy_from_user(rxfh_dev.key, in ethtool_set_rxfh()
1647 if (ret) in ethtool_set_rxfh()
1650 if (rxfh.rss_context && rxfh_dev.rss_delete) { in ethtool_set_rxfh()
1652 if (ret) in ethtool_set_rxfh()
1656 if (create) { in ethtool_set_rxfh()
1659 if (rxfh_dev.rss_delete) { in ethtool_set_rxfh()
1664 if (!ctx) { in ethtool_set_rxfh()
1672 if (ret < 0) { in ethtool_set_rxfh()
1678 } else if (rxfh.rss_context) { in ethtool_set_rxfh()
1680 if (!ctx) { in ethtool_set_rxfh()
1689 if (!rxfh.rss_context) { in ethtool_set_rxfh()
1692 } else if (create) { in ethtool_set_rxfh()
1699 } else if (rxfh_dev.rss_delete) { in ethtool_set_rxfh()
1707 if (ret) { in ethtool_set_rxfh()
1709 if (create) { in ethtool_set_rxfh()
1717 if (copy_to_user(useraddr + offsetof(struct ethtool_rxfh, rss_context), in ethtool_set_rxfh()
1721 if (!rxfh_dev.rss_context) { in ethtool_set_rxfh()
1723 if (rxfh.indir_size == 0) in ethtool_set_rxfh()
1725 else if (rxfh.indir_size != ETH_RXFH_INDIR_NO_CHANGE) in ethtool_set_rxfh()
1729 if (rxfh_dev.rss_delete) { in ethtool_set_rxfh()
1732 } else if (ctx) { in ethtool_set_rxfh()
1733 if (rxfh_dev.indir) { in ethtool_set_rxfh()
1740 if (rxfh_dev.key) { in ethtool_set_rxfh()
1745 if (rxfh_dev.hfunc != ETH_RSS_HASH_NO_CHANGE) in ethtool_set_rxfh()
1747 if (rxfh_dev.input_xfrm != RXH_XFRM_NO_CHANGE) in ethtool_set_rxfh()
1755 if (ntf) in ethtool_set_rxfh()
1767 if (!ops->get_regs || !ops->get_regs_len) in ethtool_get_regs()
1770 if (copy_from_user(&regs, useraddr, sizeof(regs))) in ethtool_get_regs()
1774 if (reglen <= 0) in ethtool_get_regs()
1777 if (regs.len > reglen) in ethtool_get_regs()
1781 if (!regbuf) in ethtool_get_regs()
1784 if (regs.len < reglen) in ethtool_get_regs()
1790 if (copy_to_user(useraddr, &regs, sizeof(regs))) in ethtool_get_regs()
1793 if (copy_to_user(useraddr, regbuf, reglen)) in ethtool_get_regs()
1807 if (!dev->ethtool_ops->reset) in ethtool_reset()
1810 if (dev->ethtool->module_fw_flash_in_progress) in ethtool_reset()
1813 if (copy_from_user(&reset, useraddr, sizeof(reset))) in ethtool_reset()
1817 if (ret) in ethtool_reset()
1820 if (copy_to_user(useraddr, &reset, sizeof(reset))) in ethtool_reset()
1829 if (!dev->ethtool_ops->get_wol) in ethtool_get_wol()
1836 if (copy_to_user(useraddr, &wol, sizeof(wol))) in ethtool_get_wol()
1846 if (!dev->ethtool_ops->get_wol || !dev->ethtool_ops->set_wol) in ethtool_set_wol()
1853 if (copy_from_user(&wol, useraddr, sizeof(wol))) in ethtool_set_wol()
1856 if (wol.wolopts & ~cur_wol.supported) in ethtool_set_wol()
1859 if (wol.wolopts == cur_wol.wolopts && in ethtool_set_wol()
1864 if (ret) in ethtool_set_wol()
1904 if (overflow) in keee_to_eee()
1914 if (!dev->ethtool_ops->get_eee) in ethtool_get_eee()
1919 if (rc) in ethtool_get_eee()
1923 if (copy_to_user(useraddr, &eee, sizeof(eee))) in ethtool_get_eee()
1935 if (!dev->ethtool_ops->set_eee) in ethtool_set_eee()
1938 if (copy_from_user(&eee, useraddr, sizeof(eee))) in ethtool_set_eee()
1943 if (!ret) in ethtool_set_eee()
1950 if (!dev->ethtool_ops->nway_reset) in ethtool_nway_reset()
1961 if (link < 0) in ethtool_get_link()
1965 if (copy_to_user(useraddr, &edata, sizeof(edata))) in ethtool_get_link()
1981 if (copy_from_user(&eeprom, useraddr, sizeof(eeprom))) in ethtool_get_any_eeprom()
1985 if (eeprom.offset + eeprom.len <= eeprom.offset) in ethtool_get_any_eeprom()
1989 if (eeprom.offset + eeprom.len > total_len) in ethtool_get_any_eeprom()
1993 if (!data) in ethtool_get_any_eeprom()
2001 if (ret) in ethtool_get_any_eeprom()
2003 if (!eeprom.len) { in ethtool_get_any_eeprom()
2007 if (copy_to_user(userbuf, data, eeprom.len)) { in ethtool_get_any_eeprom()
2018 if (copy_to_user(useraddr, &eeprom, sizeof(eeprom))) in ethtool_get_any_eeprom()
2029 if (!ops->get_eeprom || !ops->get_eeprom_len || in ethtool_get_eeprom()
2046 if (!ops->set_eeprom || !ops->get_eeprom_len || in ethtool_set_eeprom()
2050 if (copy_from_user(&eeprom, useraddr, sizeof(eeprom))) in ethtool_set_eeprom()
2054 if (eeprom.offset + eeprom.len <= eeprom.offset) in ethtool_set_eeprom()
2058 if (eeprom.offset + eeprom.len > ops->get_eeprom_len(dev)) in ethtool_set_eeprom()
2062 if (!data) in ethtool_set_eeprom()
2069 if (copy_from_user(data, userbuf, eeprom.len)) { in ethtool_set_eeprom()
2074 if (ret) in ethtool_set_eeprom()
2092 if (!dev->ethtool_ops->get_coalesce) in ethtool_get_coalesce()
2097 if (ret) in ethtool_get_coalesce()
2100 if (copy_to_user(useraddr, &coalesce, sizeof(coalesce))) in ethtool_get_coalesce()
2112 if (coalesce->rx_coalesce_usecs) in ethtool_set_coalesce_supported()
2114 if (coalesce->rx_max_coalesced_frames) in ethtool_set_coalesce_supported()
2116 if (coalesce->rx_coalesce_usecs_irq) in ethtool_set_coalesce_supported()
2118 if (coalesce->rx_max_coalesced_frames_irq) in ethtool_set_coalesce_supported()
2120 if (coalesce->tx_coalesce_usecs) in ethtool_set_coalesce_supported()
2122 if (coalesce->tx_max_coalesced_frames) in ethtool_set_coalesce_supported()
2124 if (coalesce->tx_coalesce_usecs_irq) in ethtool_set_coalesce_supported()
2126 if (coalesce->tx_max_coalesced_frames_irq) in ethtool_set_coalesce_supported()
2128 if (coalesce->stats_block_coalesce_usecs) in ethtool_set_coalesce_supported()
2130 if (coalesce->use_adaptive_rx_coalesce) in ethtool_set_coalesce_supported()
2132 if (coalesce->use_adaptive_tx_coalesce) in ethtool_set_coalesce_supported()
2134 if (coalesce->pkt_rate_low) in ethtool_set_coalesce_supported()
2136 if (coalesce->rx_coalesce_usecs_low) in ethtool_set_coalesce_supported()
2138 if (coalesce->rx_max_coalesced_frames_low) in ethtool_set_coalesce_supported()
2140 if (coalesce->tx_coalesce_usecs_low) in ethtool_set_coalesce_supported()
2142 if (coalesce->tx_max_coalesced_frames_low) in ethtool_set_coalesce_supported()
2144 if (coalesce->pkt_rate_high) in ethtool_set_coalesce_supported()
2146 if (coalesce->rx_coalesce_usecs_high) in ethtool_set_coalesce_supported()
2148 if (coalesce->rx_max_coalesced_frames_high) in ethtool_set_coalesce_supported()
2150 if (coalesce->tx_coalesce_usecs_high) in ethtool_set_coalesce_supported()
2152 if (coalesce->tx_max_coalesced_frames_high) in ethtool_set_coalesce_supported()
2154 if (coalesce->rate_sample_interval) in ethtool_set_coalesce_supported()
2167 if (!dev->ethtool_ops->set_coalesce || !dev->ethtool_ops->get_coalesce) in ethtool_set_coalesce()
2172 if (ret) in ethtool_set_coalesce()
2175 if (copy_from_user(&coalesce, useraddr, sizeof(coalesce))) in ethtool_set_coalesce()
2178 if (!ethtool_set_coalesce_supported(dev, &coalesce)) in ethtool_set_coalesce()
2183 if (!ret) in ethtool_set_coalesce()
2193 if (!dev->ethtool_ops->get_ringparam) in ethtool_get_ringparam()
2199 if (copy_to_user(useraddr, &ringparam, sizeof(ringparam))) in ethtool_get_ringparam()
2210 if (!dev->ethtool_ops->set_ringparam || !dev->ethtool_ops->get_ringparam) in ethtool_set_ringparam()
2213 if (copy_from_user(&ringparam, useraddr, sizeof(ringparam))) in ethtool_set_ringparam()
2219 if (ringparam.rx_pending > max.rx_max_pending || in ethtool_set_ringparam()
2227 if (!ret) in ethtool_set_ringparam()
2237 if (!dev->ethtool_ops->get_channels) in ethtool_get_channels()
2242 if (copy_to_user(useraddr, &channels, sizeof(channels))) in ethtool_get_channels()
2255 if (!dev->ethtool_ops->set_channels || !dev->ethtool_ops->get_channels) in ethtool_set_channels()
2258 if (copy_from_user(&channels, useraddr, sizeof(channels))) in ethtool_set_channels()
2263 if (channels.rx_count == curr.rx_count && in ethtool_set_channels()
2270 if (channels.rx_count > curr.max_rx || in ethtool_set_channels()
2277 if (!channels.combined_count && in ethtool_set_channels()
2282 if (ret) in ethtool_set_channels()
2290 if (xsk_get_pool_from_qid(dev, i)) in ethtool_set_channels()
2294 if (!ret) in ethtool_set_channels()
2303 if (!dev->ethtool_ops->get_pauseparam) in ethtool_get_pauseparam()
2308 if (copy_to_user(useraddr, &pauseparam, sizeof(pauseparam))) in ethtool_get_pauseparam()
2318 if (!dev->ethtool_ops->set_pauseparam) in ethtool_set_pauseparam()
2321 if (copy_from_user(&pauseparam, useraddr, sizeof(pauseparam))) in ethtool_set_pauseparam()
2325 if (!ret) in ethtool_set_pauseparam()
2337 if (!ops->self_test || !ops->get_sset_count) in ethtool_self_test()
2341 if (test_len < 0) in ethtool_self_test()
2345 if (copy_from_user(&test, useraddr, sizeof(test))) in ethtool_self_test()
2350 if (!data) in ethtool_self_test()
2358 if (copy_to_user(useraddr, &test, sizeof(test))) in ethtool_self_test()
2361 if (copy_to_user(useraddr, data, array_size(test.len, sizeof(u64)))) in ethtool_self_test()
2376 if (copy_from_user(&gstrings, useraddr, sizeof(gstrings))) in ethtool_get_strings()
2380 if (ret < 0) in ethtool_get_strings()
2382 if (ret > S32_MAX / ETH_GSTRING_LEN) in ethtool_get_strings()
2386 if (gstrings.len && gstrings.len != ret) in ethtool_get_strings()
2391 if (gstrings.len) { in ethtool_get_strings()
2393 if (!data) in ethtool_get_strings()
2402 if (copy_to_user(useraddr, &gstrings, sizeof(gstrings))) in ethtool_get_strings()
2405 if (gstrings.len && in ethtool_get_strings()
2443 if (!ops->set_phys_id) in ethtool_phys_id()
2446 if (busy) in ethtool_phys_id()
2449 if (copy_from_user(&id, useraddr, sizeof(id))) in ethtool_phys_id()
2453 if (rc < 0) in ethtool_phys_id()
2464 if (rc == 0) { in ethtool_phys_id()
2481 if (rc) in ethtool_phys_id()
2503 if (!ops->get_ethtool_stats || !ops->get_sset_count) in ethtool_get_stats()
2507 if (n_stats < 0) in ethtool_get_stats()
2509 if (n_stats > S32_MAX / sizeof(u64)) in ethtool_get_stats()
2512 if (copy_from_user(&stats, useraddr, sizeof(stats))) in ethtool_get_stats()
2515 if (stats.n_stats && stats.n_stats != n_stats) in ethtool_get_stats()
2520 if (stats.n_stats) { in ethtool_get_stats()
2522 if (!data) in ethtool_get_stats()
2530 if (copy_to_user(useraddr, &stats, sizeof(stats))) in ethtool_get_stats()
2533 if (stats.n_stats && in ethtool_get_stats()
2546 if (n_stats < 0) in ethtool_vzalloc_stats_array()
2548 if (n_stats > S32_MAX / sizeof(u64)) in ethtool_vzalloc_stats_array()
2550 if (WARN_ON_ONCE(!n_stats)) in ethtool_vzalloc_stats_array()
2554 if (!*data) in ethtool_vzalloc_stats_array()
2567 if (!phy_ops || !phy_ops->get_sset_count || !phy_ops->get_stats) in ethtool_get_phy_stats_phydev()
2571 if (stats->n_stats && stats->n_stats != n_stats) { in ethtool_get_phy_stats_phydev()
2577 if (ret) in ethtool_get_phy_stats_phydev()
2591 if (!ops || !ops->get_sset_count || !ops->get_ethtool_phy_stats) in ethtool_get_phy_stats_ethtool()
2595 if (stats->n_stats && stats->n_stats != n_stats) { in ethtool_get_phy_stats_ethtool()
2601 if (ret) in ethtool_get_phy_stats_ethtool()
2617 if (copy_from_user(&stats, useraddr, sizeof(stats))) in ethtool_get_phy_stats()
2620 if (phydev) in ethtool_get_phy_stats()
2623 if (ret == -EOPNOTSUPP) in ethtool_get_phy_stats()
2626 if (ret) in ethtool_get_phy_stats()
2629 if (copy_to_user(useraddr, &stats, sizeof(stats))) { in ethtool_get_phy_stats()
2635 if (stats.n_stats && in ethtool_get_phy_stats()
2649 if (copy_from_user(&epaddr, useraddr, sizeof(epaddr))) in ethtool_get_perm_addr()
2652 if (epaddr.size < dev->addr_len) in ethtool_get_perm_addr()
2656 if (copy_to_user(useraddr, &epaddr, sizeof(epaddr))) in ethtool_get_perm_addr()
2659 if (copy_to_user(useraddr, dev->perm_addr, epaddr.size)) in ethtool_get_perm_addr()
2669 if (!actor) in ethtool_get_value()
2674 if (copy_to_user(useraddr, &edata, sizeof(edata))) in ethtool_get_value()
2684 if (!actor) in ethtool_set_value_void()
2687 if (copy_from_user(&edata, useraddr, sizeof(edata))) in ethtool_set_value_void()
2699 if (!actor) in ethtool_set_value()
2702 if (copy_from_user(&edata, useraddr, sizeof(edata))) in ethtool_set_value()
2711 if (!dev->ethtool_ops->flash_device) { in ethtool_flash_device()
2724 if (!dev->ethtool_ops->set_dump) in ethtool_set_dump()
2727 if (copy_from_user(&dump, useraddr, sizeof(dump))) in ethtool_set_dump()
2740 if (!ops->get_dump_flag) in ethtool_get_dump_flag()
2743 if (copy_from_user(&dump, useraddr, sizeof(dump))) in ethtool_get_dump_flag()
2747 if (ret) in ethtool_get_dump_flag()
2750 if (copy_to_user(useraddr, &dump, sizeof(dump))) in ethtool_get_dump_flag()
2764 if (!ops->get_dump_data || !ops->get_dump_flag) in ethtool_get_dump_data()
2767 if (copy_from_user(&dump, useraddr, sizeof(dump))) in ethtool_get_dump_data()
2773 if (ret) in ethtool_get_dump_data()
2777 if (!len) in ethtool_get_dump_data()
2790 if (!data) in ethtool_get_dump_data()
2793 if (ret) in ethtool_get_dump_data()
2799 * should be tmp.len (or len if it can do a partial dump). in ethtool_get_dump_data()
2806 if (copy_to_user(useraddr, &dump, sizeof(dump))) { in ethtool_get_dump_data()
2811 if (copy_to_user(useraddr, data, len)) in ethtool_get_dump_data()
2825 if (err) in ethtool_get_ts_info()
2834 if (copy_to_user(useraddr, &info, sizeof(info))) in ethtool_get_ts_info()
2846 if (dev->ethtool->module_fw_flash_in_progress) in ethtool_get_module_info_call()
2849 if (dev->sfp_bus) in ethtool_get_module_info_call()
2852 if (phydev && phydev->drv && phydev->drv->module_info) in ethtool_get_module_info_call()
2855 if (ops->get_module_info) in ethtool_get_module_info_call()
2867 if (copy_from_user(&modinfo, useraddr, sizeof(modinfo))) in ethtool_get_module_info()
2871 if (ret) in ethtool_get_module_info()
2874 if (copy_to_user(useraddr, &modinfo, sizeof(modinfo))) in ethtool_get_module_info()
2886 if (dev->ethtool->module_fw_flash_in_progress) in ethtool_get_module_eeprom_call()
2889 if (dev->sfp_bus) in ethtool_get_module_eeprom_call()
2892 if (phydev && phydev->drv && phydev->drv->module_eeprom) in ethtool_get_module_eeprom_call()
2895 if (ops->get_module_eeprom) in ethtool_get_module_eeprom_call()
2908 if (ret) in ethtool_get_module_eeprom()
2922 if (tuna->len != sizeof(u32) || in ethtool_tunable_valid()
2927 if (tuna->len != sizeof(u16) || in ethtool_tunable_valid()
2945 if (!ops->get_tunable) in ethtool_get_tunable()
2947 if (copy_from_user(&tuna, useraddr, sizeof(tuna))) in ethtool_get_tunable()
2950 if (ret) in ethtool_get_tunable()
2953 if (!data) in ethtool_get_tunable()
2956 if (ret) in ethtool_get_tunable()
2960 if (copy_to_user(useraddr, data, tuna.len)) in ethtool_get_tunable()
2976 if (!ops->set_tunable) in ethtool_set_tunable()
2978 if (copy_from_user(&tuna, useraddr, sizeof(tuna))) in ethtool_set_tunable()
2981 if (ret) in ethtool_set_tunable()
2985 if (IS_ERR(data)) in ethtool_set_tunable()
3002 if (!dev->ethtool_ops->get_per_queue_coalesce) in ethtool_get_per_queue_coalesce()
3014 if (ret != 0) in ethtool_get_per_queue_coalesce()
3016 if (copy_to_user(useraddr, &coalesce, sizeof(coalesce))) in ethtool_get_per_queue_coalesce()
3035 if ((!dev->ethtool_ops->set_per_queue_coalesce) || in ethtool_set_per_queue_coalesce()
3044 if (!backup) in ethtool_set_per_queue_coalesce()
3051 if (ret != 0) in ethtool_set_per_queue_coalesce()
3056 if (copy_from_user(&coalesce, useraddr, sizeof(coalesce))) { in ethtool_set_per_queue_coalesce()
3061 if (!ethtool_set_coalesce_supported(dev, &coalesce)) { in ethtool_set_per_queue_coalesce()
3067 if (ret != 0) in ethtool_set_per_queue_coalesce()
3074 if (ret != 0) { in ethtool_set_per_queue_coalesce()
3091 if (copy_from_user(&per_queue_opt, useraddr, sizeof(per_queue_opt))) in ethtool_set_per_queue()
3094 if (per_queue_opt.sub_command != sub_cmd) in ethtool_set_per_queue()
3112 if (tuna->len != sizeof(u8) || in ethtool_phy_tunable_valid()
3117 if (tuna->len != sizeof(u16) || in ethtool_phy_tunable_valid()
3137 if (!phy_drv_tunable && !dev->ethtool_ops->get_phy_tunable) in get_phy_tunable()
3139 if (copy_from_user(&tuna, useraddr, sizeof(tuna))) in get_phy_tunable()
3142 if (ret) in get_phy_tunable()
3145 if (!data) in get_phy_tunable()
3147 if (phy_drv_tunable) { in get_phy_tunable()
3154 if (ret) in get_phy_tunable()
3158 if (copy_to_user(useraddr, data, tuna.len)) in get_phy_tunable()
3176 if (!phy_drv_tunable && !dev->ethtool_ops->set_phy_tunable) in set_phy_tunable()
3178 if (copy_from_user(&tuna, useraddr, sizeof(tuna))) in set_phy_tunable()
3181 if (ret) in set_phy_tunable()
3185 if (IS_ERR(data)) in set_phy_tunable()
3187 if (phy_drv_tunable) { in set_phy_tunable()
3204 if (!dev->ethtool_ops->get_fecparam) in ethtool_get_fecparam()
3208 if (rc) in ethtool_get_fecparam()
3211 if (WARN_ON_ONCE(fecparam.reserved)) in ethtool_get_fecparam()
3214 if (copy_to_user(useraddr, &fecparam, sizeof(fecparam))) in ethtool_get_fecparam()
3223 if (!dev->ethtool_ops->set_fecparam) in ethtool_set_fecparam()
3226 if (copy_from_user(&fecparam, useraddr, sizeof(fecparam))) in ethtool_set_fecparam()
3229 if (!fecparam.fec || fecparam.fec & ETHTOOL_FEC_NONE) in ethtool_set_fecparam()
3250 if (!dev) in __dev_ethtool()
3253 if (ethcmd == ETHTOOL_PERQUEUE) { in __dev_ethtool()
3254 if (copy_from_user(&sub_cmd, useraddr + sizeof(ethcmd), sizeof(sub_cmd))) in __dev_ethtool()
3299 if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) in __dev_ethtool()
3304 if (dev->dev.parent) in __dev_ethtool()
3307 if (!netif_device_present(dev)) { in __dev_ethtool()
3312 if (dev->ethtool_ops->begin) { in __dev_ethtool()
3314 if (rc < 0) in __dev_ethtool()
3345 if (!rc) in __dev_ethtool()
3409 if (!rc) in __dev_ethtool()
3535 if (dev->ethtool_ops->complete) in __dev_ethtool()
3538 if (old_features != dev->features) in __dev_ethtool()
3541 if (dev->dev.parent) in __dev_ethtool()
3554 if (copy_from_user(&ethcmd, useraddr, sizeof(ethcmd))) in dev_ethtool()
3558 if (!state) in dev_ethtool()
3563 if (copy_from_user(&state->efl, useraddr, sizeof(state->efl))) { in dev_ethtool()
3574 if (rc) in dev_ethtool()
3579 if (state->devlink) in dev_ethtool()
3584 if (state->devlink) in dev_ethtool()
3588 if (copy_to_user(useraddr, &state->info, sizeof(state->info))) { in dev_ethtool()
3596 if (state->devlink) in dev_ethtool()
3630 if (!flow) in ethtool_rx_flow_rule_create()
3635 if (!flow->rule) { in ethtool_rx_flow_rule_create()
3654 if (!is_zero_ether_addr(ether_m_spec->h_source)) { in ethtool_rx_flow_rule_create()
3660 if (!is_zero_ether_addr(ether_m_spec->h_dest)) { in ethtool_rx_flow_rule_create()
3666 if (ether_m_spec->h_proto) { in ethtool_rx_flow_rule_create()
3681 if (v4_m_spec->ip4src) { in ethtool_rx_flow_rule_create()
3685 if (v4_m_spec->ip4dst) { in ethtool_rx_flow_rule_create()
3689 if (v4_m_spec->ip4src || in ethtool_rx_flow_rule_create()
3696 if (v4_m_spec->psrc) { in ethtool_rx_flow_rule_create()
3700 if (v4_m_spec->pdst) { in ethtool_rx_flow_rule_create()
3704 if (v4_m_spec->psrc || in ethtool_rx_flow_rule_create()
3711 if (v4_m_spec->tos) { in ethtool_rx_flow_rule_create()
3729 if (!ipv6_addr_any((struct in6_addr *)v6_m_spec->ip6src)) { in ethtool_rx_flow_rule_create()
3735 if (!ipv6_addr_any((struct in6_addr *)v6_m_spec->ip6dst)) { in ethtool_rx_flow_rule_create()
3741 if (!ipv6_addr_any((struct in6_addr *)v6_m_spec->ip6src) || in ethtool_rx_flow_rule_create()
3748 if (v6_m_spec->psrc) { in ethtool_rx_flow_rule_create()
3752 if (v6_m_spec->pdst) { in ethtool_rx_flow_rule_create()
3756 if (v6_m_spec->psrc || in ethtool_rx_flow_rule_create()
3763 if (v6_m_spec->tclass) { in ethtool_rx_flow_rule_create()
3795 if (fs->flow_type & FLOW_EXT) { in ethtool_rx_flow_rule_create()
3799 if (ext_m_spec->vlan_etype) { in ethtool_rx_flow_rule_create()
3804 if (ext_m_spec->vlan_tci) { in ethtool_rx_flow_rule_create()
3821 if (ext_m_spec->vlan_etype || in ethtool_rx_flow_rule_create()
3829 if (fs->flow_type & FLOW_MAC_EXT) { in ethtool_rx_flow_rule_create()
3854 if (fs->flow_type & FLOW_RSS) in ethtool_rx_flow_rule_create()