[PATCH 3/3] net/eth: fix link handling
Sascha Hauer
s.hauer at pengutronix.de
Wed Sep 26 08:43:05 EDT 2012
On Wed, Sep 26, 2012 at 01:53:31PM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
> The current code handle just the send where we are supposed to the same on rx
>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
> ---
This is broken. For better readability I refer to the result, not to the
patch:
> int eth_open(void)
> {
> int ret;
>
> if (!eth_current)
> return -ENODEV;
>
> if (!eth_current->active) {
> ret = eth_current->open(eth_current);
> if (ret)
> return ret;
>
> if (eth_current->phydev)
> eth_current->active = eth_current->phydev->link;
> else
> eth_current->active = 1;
> }
>
> if (!eth_current->active)
> return -ENETDOWN;
>
> return 0;
> }
The eth->active is for tracking whether a device is opened (thus we have
to call eth->halt). With this patch eth->active == 0 could mean:
a) device not opened
b) opened, but no link
This is asking for trouble. A bit only has two states, you should not
encode three states in it.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list