Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

net: usb: introduce usbnet_mii_ioctl helper function

Many USB network drivers use identical code to pass ioctl
requests on to the MII layer. Reduce code duplication by
refactoring this code into a helper function.

Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev> (v1)
Reviewed-by: Andrew Lunn <andrew@lunn.ch> (v3)
Signed-off-by: Ethan Nelson-Moore <enelsonmoore@gmail.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://patch.msgid.link/20260203013517.26170-1-enelsonmoore@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Ethan Nelson-Moore and committed by
Jakub Kicinski
61e94cbd e9a1a28a

+16 -42
+2 -9
drivers/net/usb/asix_devices.c
··· 97 97 return phy_id; 98 98 } 99 99 100 - static int asix_ioctl (struct net_device *net, struct ifreq *rq, int cmd) 101 - { 102 - struct usbnet *dev = netdev_priv(net); 103 - 104 - return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); 105 - } 106 - 107 100 /* We need to override some ethtool_ops so we require our 108 101 own structure so we don't interfere with other usbnet 109 102 devices that may be connected at the same time. */ ··· 183 190 .ndo_get_stats64 = dev_get_tstats64, 184 191 .ndo_set_mac_address = eth_mac_addr, 185 192 .ndo_validate_addr = eth_validate_addr, 186 - .ndo_eth_ioctl = asix_ioctl, 193 + .ndo_eth_ioctl = usbnet_mii_ioctl, 187 194 .ndo_set_rx_mode = ax88172_set_multicast, 188 195 }; 189 196 ··· 1262 1269 .ndo_set_mac_address = asix_set_mac_address, 1263 1270 .ndo_validate_addr = eth_validate_addr, 1264 1271 .ndo_set_rx_mode = asix_set_multicast, 1265 - .ndo_eth_ioctl = asix_ioctl, 1272 + .ndo_eth_ioctl = usbnet_mii_ioctl, 1266 1273 .ndo_change_mtu = ax88178_change_mtu, 1267 1274 }; 1268 1275
+1 -7
drivers/net/usb/ax88179_178a.c
··· 847 847 return ret; 848 848 } 849 849 850 - static int ax88179_ioctl(struct net_device *net, struct ifreq *rq, int cmd) 851 - { 852 - struct usbnet *dev = netdev_priv(net); 853 - return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); 854 - } 855 - 856 850 static const struct ethtool_ops ax88179_ethtool_ops = { 857 851 .get_link = ethtool_op_get_link, 858 852 .get_msglevel = usbnet_get_msglevel, ··· 992 998 .ndo_change_mtu = ax88179_change_mtu, 993 999 .ndo_set_mac_address = ax88179_set_mac_addr, 994 1000 .ndo_validate_addr = eth_validate_addr, 995 - .ndo_eth_ioctl = ax88179_ioctl, 1001 + .ndo_eth_ioctl = usbnet_mii_ioctl, 996 1002 .ndo_set_rx_mode = ax88179_set_multicast, 997 1003 .ndo_set_features = ax88179_set_features, 998 1004 };
+1 -8
drivers/net/usb/dm9601.c
··· 259 259 dm_write_shared_word(dev, 1, loc, res); 260 260 } 261 261 262 - static int dm9601_ioctl(struct net_device *net, struct ifreq *rq, int cmd) 263 - { 264 - struct usbnet *dev = netdev_priv(net); 265 - 266 - return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); 267 - } 268 - 269 262 static const struct ethtool_ops dm9601_ethtool_ops = { 270 263 .get_drvinfo = usbnet_get_drvinfo, 271 264 .get_link = usbnet_get_link, ··· 330 337 .ndo_change_mtu = usbnet_change_mtu, 331 338 .ndo_get_stats64 = dev_get_tstats64, 332 339 .ndo_validate_addr = eth_validate_addr, 333 - .ndo_eth_ioctl = dm9601_ioctl, 340 + .ndo_eth_ioctl = usbnet_mii_ioctl, 334 341 .ndo_set_rx_mode = dm9601_set_multicast, 335 342 .ndo_set_mac_address = dm9601_set_mac_address, 336 343 };
+1 -7
drivers/net/usb/mcs7830.c
··· 325 325 mcs7830_write_phy(dev, location, val); 326 326 } 327 327 328 - static int mcs7830_ioctl(struct net_device *net, struct ifreq *rq, int cmd) 329 - { 330 - struct usbnet *dev = netdev_priv(net); 331 - return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); 332 - } 333 - 334 328 static inline struct mcs7830_data *mcs7830_get_data(struct usbnet *dev) 335 329 { 336 330 return (struct mcs7830_data *)&dev->data; ··· 462 468 .ndo_change_mtu = usbnet_change_mtu, 463 469 .ndo_get_stats64 = dev_get_tstats64, 464 470 .ndo_validate_addr = eth_validate_addr, 465 - .ndo_eth_ioctl = mcs7830_ioctl, 471 + .ndo_eth_ioctl = usbnet_mii_ioctl, 466 472 .ndo_set_rx_mode = mcs7830_set_multicast, 467 473 .ndo_set_mac_address = mcs7830_set_mac_address, 468 474 };
+1 -3
drivers/net/usb/smsc75xx.c
··· 743 743 744 744 static int smsc75xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) 745 745 { 746 - struct usbnet *dev = netdev_priv(netdev); 747 - 748 746 if (!netif_running(netdev)) 749 747 return -EINVAL; 750 748 751 - return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); 749 + return usbnet_mii_ioctl(netdev, rq, cmd); 752 750 } 753 751 754 752 static void smsc75xx_init_mac_address(struct usbnet *dev)
+1 -8
drivers/net/usb/sr9800.c
··· 469 469 return 0; 470 470 } 471 471 472 - static int sr_ioctl(struct net_device *net, struct ifreq *rq, int cmd) 473 - { 474 - struct usbnet *dev = netdev_priv(net); 475 - 476 - return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); 477 - } 478 - 479 472 static int sr_set_mac_address(struct net_device *net, void *p) 480 473 { 481 474 struct usbnet *dev = netdev_priv(net); ··· 661 668 .ndo_get_stats64 = dev_get_tstats64, 662 669 .ndo_set_mac_address = sr_set_mac_address, 663 670 .ndo_validate_addr = eth_validate_addr, 664 - .ndo_eth_ioctl = sr_ioctl, 671 + .ndo_eth_ioctl = usbnet_mii_ioctl, 665 672 .ndo_set_rx_mode = sr_set_multicast, 666 673 }; 667 674
+8
drivers/net/usb/usbnet.c
··· 1085 1085 } 1086 1086 EXPORT_SYMBOL_GPL(usbnet_nway_reset); 1087 1087 1088 + int usbnet_mii_ioctl(struct net_device *net, struct ifreq *rq, int cmd) 1089 + { 1090 + struct usbnet *dev = netdev_priv(net); 1091 + 1092 + return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); 1093 + } 1094 + EXPORT_SYMBOL_GPL(usbnet_mii_ioctl); 1095 + 1088 1096 void usbnet_get_drvinfo(struct net_device *net, struct ethtool_drvinfo *info) 1089 1097 { 1090 1098 struct usbnet *dev = netdev_priv(net);
+1
include/linux/usb/usbnet.h
··· 290 290 extern void usbnet_set_msglevel(struct net_device *, u32); 291 291 extern void usbnet_set_rx_mode(struct net_device *net); 292 292 extern void usbnet_get_drvinfo(struct net_device *, struct ethtool_drvinfo *); 293 + extern int usbnet_mii_ioctl(struct net_device *net, struct ifreq *rq, int cmd); 293 294 extern int usbnet_nway_reset(struct net_device *net); 294 295 295 296 extern int usbnet_manage_power(struct usbnet *, int);