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: Thu, 4 Oct 2012 16:38:43 +0100 From: Srinivas KANDAGATLA <srinivas.kandagatla@...com> To: netdev@...r.kernel.org Cc: srinivas.kandagatla@...com, davem@...emloft.net Subject: [RFC:PATCH 3.6.0-] net/ipconfig: Extend ipconfig retries to device open From: Srinivas Kandagatla <srinivas.kandagatla@...com> This patch adds retries to ipconfig at device open, the reason to do this is: Lets say If some mdio bus driver decide to use defered probe when it does not find any phys on the bus. The same mdio-bus driver is re-probed as part of lateinit calls. However ipconfig also fits into lateinit calls, so if ipconfig is called before the re-probe of mdio-bus driver, the mac driver will fail to find a valid PHY on the mdio-bus. Real use case here, is that for phy modes like RMII where the clock to the PHY should be supplied by MAC which can only happen once MAC driver is setup. In my setup Am using stmmac MAC driver and mdio-gpio driver. Moreover ipconfig code already uses retries in dynamic ip case, so extending it to device open would help cases as described. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@...com> --- Hi All, Recently I did try defered probe to address a sequencing issue with our STMMAC and mdio-gpio driver when PHY is in RMII mode. Things did not work as expected, because ipconfig and defered probe both of them are called at lateinit call level. So I was back to sequencing problem again. As, ipconfig code already uses retries in dynamic ip case, so extending it to device open helped in my case. Comments? Am open for any suggestions to address this issue. Thanks, srini net/ipv4/ipconfig.c | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-) diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c index 67e8a6b..c30505e 100644 --- a/net/ipv4/ipconfig.c +++ b/net/ipv4/ipconfig.c @@ -1375,9 +1375,7 @@ static int __init wait_for_devices(void) static int __init ip_auto_config(void) { __be32 addr; -#ifdef IPCONFIG_DYNAMIC int retries = CONF_OPEN_RETRIES; -#endif int err; #ifdef CONFIG_PROC_FS @@ -1398,12 +1396,22 @@ static int __init ip_auto_config(void) /* Setup all network devices */ err = ic_open_devs(); + + if (err && --retries) { + pr_info("IP-Config: Reopening network devices...\n"); + ssleep(1); + goto try_try_again; + } + if (err) return err; /* Give drivers a chance to settle */ msleep(CONF_POST_OPEN); +#ifdef IPCONFIG_DYNAMIC + retries = CONF_OPEN_RETRIES; +#endif /* * If the config information is insufficient (e.g., our IP address or * IP address of the boot server is missing or we have multiple network -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists