Hi,
This patch adds support to the GMIIPHY and GMIIREG ioctls to the 2.4
version of the 8139cp ethernet driver.
This is required so we don't break apps (eg mii-diag, mii-tools) who
rely on these ioctls to get the NIC's settings.
Patch against 2.4.20-pre7.
Please consider pulling it from:
http://cscience.org/~felipewd/linux/patches-fwd/2.4/8139cp-gmii.patch
Felipe
--- ./8139cp.c.orig Fri Sep 20 00:20:19 2002
+++ ./8139cp.c Fri Sep 20 00:29:01 2002
@@ -1641,14 +1641,29 @@
static int cp_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
{
struct cp_private *cp = dev->priv;
+ struct mii_ioctl_data *mii;
int rc = 0;
+ mii = (struct mii_ioctl_data *) &rq->ifr_data;
if (!netif_running(dev))
return -EINVAL;
+ if (cmd != SIOCETHTOOL)
+ mii->reg_num &= 0x1f;
+
switch (cmd) {
case SIOCETHTOOL:
return cp_ethtool_ioctl(cp, (void *) rq->ifr_data);
+
+ case SIOCGMIIPHY: /* Get the address of the PHY in use. */
+ case SIOCDEVPRIVATE: /* binary compat, remove in 2.5 */
+ mii->phy_id = CP_INTERNAL_PHY;
+ /* Fall Through */
+
+ case SIOCGMIIREG: /* Read the specified MII register. */
+ case SIOCDEVPRIVATE+1: /* binary compat, remove in 2.5 */
+ mii->val_out = mdio_read (dev, CP_INTERNAL_PHY, mii->reg_num);
+ break;
default:
rc = -EOPNOTSUPP;