summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2010-12-18 14:37:39 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2010-12-20 09:57:35 +0100
commit32558d1ae5ae15a8e417e9640daf0b7e2e01964f (patch)
treec9cfde824ac862292ff44aaf9fd830d0014c11fe /net
parent91d781f51df5d4de23d09a6777bfc968a0a7ca68 (diff)
downloadbarebox-32558d1ae5ae15a8e417e9640daf0b7e2e01964f.tar.gz
barebox-32558d1ae5ae15a8e417e9640daf0b7e2e01964f.tar.xz
LED: Add LED trigger support
This patch allows to associate LEDs with certain triggers, such as heartbeat or network activity. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'net')
-rw-r--r--net/eth.c8
-rw-r--r--net/net.c20
2 files changed, 22 insertions, 6 deletions
diff --git a/net/eth.c b/net/eth.c
index a82a263206..7502e98253 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -77,6 +77,8 @@ int eth_send(void *packet, int length)
eth_current->active = 1;
}
+ led_trigger_network(LED_TRIGGER_NET_TX);
+
return eth_current->send(eth_current, packet, length);
}
@@ -183,4 +185,8 @@ void eth_unregister(struct eth_device *edev)
list_del(&edev->list);
}
-
+void led_trigger_network(enum led_trigger trigger)
+{
+ led_trigger(trigger, TRIGGER_FLASH);
+ led_trigger(LED_TRIGGER_NET_TXRX, TRIGGER_FLASH);
+}
diff --git a/net/net.c b/net/net.c
index a613d1da74..9b4ab8904c 100644
--- a/net/net.c
+++ b/net/net.c
@@ -628,19 +628,29 @@ int net_receive(unsigned char *pkt, int len)
{
struct ethernet *et = (struct ethernet *)pkt;
int et_protlen = ntohs(et->et_protlen);
+ int ret;
- if (len < ETHER_HDR_SIZE)
- return 0;
+ led_trigger_network(LED_TRIGGER_NET_RX);
+
+ if (len < ETHER_HDR_SIZE) {
+ ret = 0;
+ goto out;
+ }
switch (et_protlen) {
case PROT_ARP:
- return net_handle_arp(pkt, len);
+ ret = net_handle_arp(pkt, len);
+ break;
case PROT_IP:
- return net_handle_ip(pkt, len);
+ ret = net_handle_ip(pkt, len);
+ break;
default:
debug("%s: got unknown protocol type: %d\n", __func__, et_protlen);
- return 1;
+ ret = 1;
+ break;
}
+out:
+ return ret;
}
static int net_init(void)