lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 16 Oct 2019 16:19:50 +0200 From: Andrew Lunn <andrew@...n.ch> To: Florian Fainelli <f.fainelli@...il.com> Cc: netdev@...r.kernel.org, "David S. Miller" <davem@...emloft.net>, open list <linux-kernel@...r.kernel.org>, hkallweit1@...il.com, bcm-kernel-feedback-list@...adcom.com, olteanv@...il.com, rmk+kernel@...linux.org.uk, cphealy@...il.com, Jose Abreu <joabreu@...opsys.com> Subject: Re: [PATCH net-next 2/2] net: phy: Add ability to debug RGMII connections > If all is well, we stop iterating over all possible RGMII combinations > and offer the one that is deemed suitable which is what an user should > be trying by configuring the platform appropriately. Hi Florian I like the idea, however... I think it would be good to always iterate over all possible delay modes, not until it works. We want to try to catch PHY drivers which don't implement all four possible settings. If two or more delay modes work, it suggests something is wrong in the implementation, not all modes are supported correctly. > +int phy_rgmii_debug_probe(struct phy_device *phydev) > +{ > + struct net_device *ndev = phydev->attached_dev; > + unsigned char operstate = ndev->operstate; > + phy_interface_t rgmii_modes[4] = { > + PHY_INTERFACE_MODE_RGMII, > + PHY_INTERFACE_MODE_RGMII_ID, > + PHY_INTERFACE_MODE_RGMII_RXID, > + PHY_INTERFACE_MODE_RGMII_TXID > + }; > + struct phy_rgmii_debug_priv *priv; > + unsigned int i, count; > + int ret; > + > + ret = phy_rgmii_can_debug(phydev); > + if (ret <= 0) > + return ret; > + > + priv = kzalloc(sizeof(*priv), GFP_KERNEL); > + if (!priv) > + return -ENOMEM; > + > + if (phy_rgmii_probes_type.af_packet_priv) > + return -EBUSY; > + > + phy_rgmii_probes_type.af_packet_priv = priv; > + priv->phydev = phydev; > + INIT_WORK(&priv->work, phy_rgmii_probe_xmit_work); > + init_completion(&priv->compl); > + > + /* We are now testing this network device */ > + ndev->operstate = IF_OPER_TESTING; I should dig out and re-submit my patch set of doing this. > + > + dev_add_pack(&phy_rgmii_probes_type); > + > + /* Determine where to start */ > + for (i = 0; i < ARRAY_SIZE(rgmii_modes); i++) { > + if (phydev->interface == rgmii_modes[i]) > + break; > + } I don't think that is a good idea. What if setting the RGMII delay is a NOP, and relying on strapping? We will never know we have the wrong mode in DT, because it works. I would much prefer we used all four modes, all four modes pass, and then we know the driver is broken. Andrew
Powered by blists - more mailing lists