]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
net: xilinx: emaclite: add minimal ndo_do_ioctl hook
authorAlexandru Ardelean <alexandru.ardelean@analog.com>
Mon, 8 Apr 2019 09:01:57 +0000 (12:01 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 8 Apr 2019 17:00:10 +0000 (10:00 -0700)
This hook only implements a minimal set of ioctl hooks to be able to access
MII regs by using phytool.
When using this simple MAC controller, it's pretty difficult to do
debugging of the PHY chip without checking MII regs.

Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Reviewed-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/xilinx/xilinx_emaclite.c

index eece204d6239b7b999dd415a498292cedd3846e2..fc38692da71e0c72da9931a3b189f58179fc66fe 100644 (file)
@@ -1252,12 +1252,29 @@ xemaclite_poll_controller(struct net_device *ndev)
 }
 #endif
 
+/* Ioctl MII Interface */
+static int xemaclite_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
+{
+       if (!dev->phydev || !netif_running(dev))
+               return -EINVAL;
+
+       switch (cmd) {
+       case SIOCGMIIPHY:
+       case SIOCGMIIREG:
+       case SIOCSMIIREG:
+               return phy_mii_ioctl(dev->phydev, rq, cmd);
+       default:
+               return -EOPNOTSUPP;
+       }
+}
+
 static const struct net_device_ops xemaclite_netdev_ops = {
        .ndo_open               = xemaclite_open,
        .ndo_stop               = xemaclite_close,
        .ndo_start_xmit         = xemaclite_send,
        .ndo_set_mac_address    = xemaclite_set_mac_address,
        .ndo_tx_timeout         = xemaclite_tx_timeout,
+       .ndo_do_ioctl           = xemaclite_ioctl,
 #ifdef CONFIG_NET_POLL_CONTROLLER
        .ndo_poll_controller = xemaclite_poll_controller,
 #endif