fixed au1000 eth0 ioctl patch
authorblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 24 Jul 2007 21:11:28 +0000 (21:11 +0000)
committerblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 24 Jul 2007 21:11:28 +0000 (21:11 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8147 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/au1000-2.6/patches/014-au1000_eth_ioctl.patch

index 5996ccf2ac872c78d754b9c5ec5d6b67b1d81965..6187a7d5afbeebb5cafce6120ac3e2606a748a5f 100644 (file)
@@ -1,26 +1,15 @@
-diff --git a/drivers/net/au1000_eth.c b/drivers/net/au1000_eth.c
-index c27cfce..99a1c61 100644
---- a/drivers/net/au1000_eth.c
-+++ b/drivers/net/au1000_eth.c
-@@ -1316,12 +1316,20 @@ static void set_rx_mode(struct net_device *dev)
+--- linux-2.6.22.1.orig/drivers/net/au1000_eth.c       2007-07-24 18:43:25.527583520 +0200
++++ linux-2.6.22.1/drivers/net/au1000_eth.c    2007-07-24 23:07:00.388821102 +0200
+@@ -1320,9 +1320,12 @@
+       }
+ }
++#define AU1000_KNOWN_PHY_IOCTLS               (SIOCGMIIPHY & 0xfff0)
  static int au1000_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
  {
        struct au1000_private *aup = (struct au1000_private *)dev->priv;
-+      struct mii_ioctl_data *data = if_mii(rq);
-+      int rc = -EOPNOTSUPP;
++      if((cmd & AU1000_KNOWN_PHY_IOCTLS) != AU1000_KNOWN_PHY_IOCTLS)
++              return -EINVAL;
  
        if (!netif_running(dev)) return -EINVAL;
  
-       if (!aup->phy_dev) return -EINVAL; // PHY not controllable
--      return phy_mii_ioctl(aup->phy_dev, if_mii(rq), cmd);
-+      switch (cmd) {
-+      default:
-+              rc = phy_mii_ioctl(aup->phy_dev, data, cmd);
-+              break;
-+      }
-+
-+      return rc;
- }
- static struct net_device_stats *au1000_get_stats(struct net_device *dev)