2002-09-20 04:41:15

by Felipe W Damasio

[permalink] [raw]
Subject: [PATCH] 8139cp: SIOCGMIIPHY and SIOCGMIIREG

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;