mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH] net: disable all other devices when enabling the new one
@ 2019-11-15 16:20 Michael Grzeschik
  2019-11-18  8:19 ` Sascha Hauer
  0 siblings, 1 reply; 2+ messages in thread
From: Michael Grzeschik @ 2019-11-15 16:20 UTC (permalink / raw)
  To: barebox

Some network devices need proper reinitialization before they can be
used. This is especially the case when using devices that share the same
driver.

Therefor the current approach, starting the open routine of an ether
device just once with the first call of send, runs those devices into
some unreliable behaviour.

This patch disables all devices that are not being used so they get
reinitialized with the next usage.

Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
---
 net/eth.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/net/eth.c b/net/eth.c
index 53d24baa16..0c26324d3f 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -217,6 +217,7 @@ static int eth_carrier_check(struct eth_device *edev, int force)
  */
 static int eth_check_open(struct eth_device *edev)
 {
+	struct eth_device *tmpedev;
 	int ret;
 
 	if (edev->active)
@@ -226,6 +227,9 @@ static int eth_check_open(struct eth_device *edev)
 	if (ret)
 		return ret;
 
+	for_each_netdev(tmpedev)
+		tmpedev->active = 0;
+
 	edev->active = 1;
 
 	return eth_carrier_check(edev, 1);
-- 
2.24.0


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] net: disable all other devices when enabling the new one
  2019-11-15 16:20 [PATCH] net: disable all other devices when enabling the new one Michael Grzeschik
@ 2019-11-18  8:19 ` Sascha Hauer
  0 siblings, 0 replies; 2+ messages in thread
From: Sascha Hauer @ 2019-11-18  8:19 UTC (permalink / raw)
  To: Michael Grzeschik; +Cc: barebox

On Fri, Nov 15, 2019 at 05:20:14PM +0100, Michael Grzeschik wrote:
> Some network devices need proper reinitialization before they can be
> used. This is especially the case when using devices that share the same
> driver.
> 
> Therefor the current approach, starting the open routine of an ether
> device just once with the first call of send, runs those devices into
> some unreliable behaviour.
> 
> This patch disables all devices that are not being used so they get
> reinitialized with the next usage.
> 
> Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
> ---
>  net/eth.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/net/eth.c b/net/eth.c
> index 53d24baa16..0c26324d3f 100644
> --- a/net/eth.c
> +++ b/net/eth.c
> @@ -217,6 +217,7 @@ static int eth_carrier_check(struct eth_device *edev, int force)
>   */
>  static int eth_check_open(struct eth_device *edev)
>  {
> +	struct eth_device *tmpedev;
>  	int ret;
>  
>  	if (edev->active)
> @@ -226,6 +227,9 @@ static int eth_check_open(struct eth_device *edev)
>  	if (ret)
>  		return ret;
>  
> +	for_each_netdev(tmpedev)
> +		tmpedev->active = 0;

This is wrong. barebox can handle multiple open network devices just
fine. The bug is in the cpsw driver like described in my response to
your cpsw patch.

Sascha


-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-11-18  8:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-15 16:20 [PATCH] net: disable all other devices when enabling the new one Michael Grzeschik
2019-11-18  8:19 ` Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox