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

Merge branch 'Fix-GMII2RGMII-private-field'

Harini Katakam says:

====================
Fix GMII2RGMII private field

Fix the usage of external phy's priv field by gmii2rgmii driver.

Based on net-next.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>

+13 -2
+2 -2
drivers/net/phy/xilinx_gmii2rgmii.c
··· 29 29 30 30 static int xgmiitorgmii_read_status(struct phy_device *phydev) 31 31 { 32 - struct gmii2rgmii *priv = phydev->priv; 32 + struct gmii2rgmii *priv = mdiodev_get_drvdata(&phydev->mdio); 33 33 struct mii_bus *bus = priv->mdio->bus; 34 34 int addr = priv->mdio->addr; 35 35 u16 val = 0; ··· 90 90 memcpy(&priv->conv_phy_drv, priv->phy_dev->drv, 91 91 sizeof(struct phy_driver)); 92 92 priv->conv_phy_drv.read_status = xgmiitorgmii_read_status; 93 - priv->phy_dev->priv = priv; 93 + mdiodev_set_drvdata(&priv->phy_dev->mdio, priv); 94 94 priv->phy_dev->drv = &priv->conv_phy_drv; 95 95 96 96 return 0;
+11
include/linux/mdio.h
··· 68 68 #define to_mdio_driver(d) \ 69 69 container_of(to_mdio_common_driver(d), struct mdio_driver, mdiodrv) 70 70 71 + /* device driver data */ 72 + static inline void mdiodev_set_drvdata(struct mdio_device *mdio, void *data) 73 + { 74 + dev_set_drvdata(&mdio->dev, data); 75 + } 76 + 77 + static inline void *mdiodev_get_drvdata(struct mdio_device *mdio) 78 + { 79 + return dev_get_drvdata(&mdio->dev); 80 + } 81 + 71 82 void mdio_device_free(struct mdio_device *mdiodev); 72 83 struct mdio_device *mdio_device_create(struct mii_bus *bus, int addr); 73 84 int mdio_device_register(struct mdio_device *mdiodev);