summaryrefslogtreecommitdiffstats
path: root/net/eth.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2009-06-10 19:44:14 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2009-07-21 16:41:45 +0200
commitbac65c6cde68e0bf76c8d01462321d8af98f0b81 (patch)
tree95ca6ed492b060aaeb21a4461c2c350d16320b4b /net/eth.c
parentaa611e7e690bc41e2fa855631b85bde91a5a26a2 (diff)
downloadbarebox-bac65c6cde68e0bf76c8d01462321d8af98f0b81.tar.gz
barebox-bac65c6cde68e0bf76c8d01462321d8af98f0b81.tar.xz
net: Get rid of DEVICE_TYPE_ETHER usage
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'net/eth.c')
-rw-r--r--net/eth.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/net/eth.c b/net/eth.c
index 139893c580..b8a61a2a46 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -32,6 +32,8 @@
static struct eth_device *eth_current;
+static LIST_HEAD(netdev_list);
+
void eth_set_current(struct eth_device *eth)
{
eth_current = eth;
@@ -42,6 +44,17 @@ struct eth_device * eth_get_current(void)
return eth_current;
}
+struct eth_device *eth_get_byname(char *name)
+{
+ struct eth_device *edev;
+
+ list_for_each_entry(edev, &netdev_list, list) {
+ if (!strcmp(edev->dev->id, name))
+ return edev;
+ }
+ return NULL;
+}
+
int eth_open(void)
{
if (!eth_current)
@@ -117,7 +130,6 @@ int eth_register(struct eth_device *edev)
}
dev->type_data = edev;
- dev->type = DEVICE_TYPE_ETHER;
edev->param_ip.name = "ipaddr";
edev->param_ip.set = &eth_set_ipaddr;
edev->param_ethaddr.name = "ethaddr";
@@ -136,6 +148,8 @@ int eth_register(struct eth_device *edev)
edev->init(edev);
+ list_add_tail(&edev->list, &netdev_list);
+
if (edev->get_ethaddr(edev, ethaddr) == 0) {
ethaddr_to_string(ethaddr, ethaddr_str);
printf("got MAC address from EEPROM: %s\n",ethaddr_str);
@@ -163,5 +177,7 @@ void eth_unregister(struct eth_device *edev)
if (eth_current == edev)
eth_current = NULL;
+
+ list_del(&edev->list);
}