summaryrefslogtreecommitdiff
path: root/src/drivers/net/network.c
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2017-08-01 16:23:09 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2017-08-01 16:23:09 +0200
commitd86f301ecb8c773cde8afc646a8b7ae578b8a232 (patch)
treec97556261bd02ec2765522e5451a018fa18a25fc /src/drivers/net/network.c
parent0f6576eba813fdb30b619b9b0b5fa7a76c6cf636 (diff)
downloadabaos-d86f301ecb8c773cde8afc646a8b7ae578b8a232.tar.gz
abaos-d86f301ecb8c773cde8afc646a8b7ae578b8a232.tar.bz2
we can receive network events, but the receive buffer remains empty
this is because we must enable DMA transfering on the PCI bus (bus master enable)
Diffstat (limited to 'src/drivers/net/network.c')
-rw-r--r--src/drivers/net/network.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/drivers/net/network.c b/src/drivers/net/network.c
index 46a3295..85bfdf2 100644
--- a/src/drivers/net/network.c
+++ b/src/drivers/net/network.c
@@ -7,11 +7,12 @@
static network_vtable_t const network_vtable = {
{
- driver_activate,
- driver_deactivate,
- driver_deinit,
- driver_print_info
- }
+ driver_activate,
+ driver_deactivate,
+ driver_deinit,
+ driver_print_info
+ },
+ network_register_handler
};
void network_init( network_t *network, interrupt_t *interrupt, void *context )
@@ -20,9 +21,18 @@ void network_init( network_t *network, interrupt_t *interrupt, void *context )
driver_init( (driver_t *)network, DRIVER_TYPE_NETWORK, interrupt, context );
+ network->handler = NULL;
+
((driver_t *)network)->vtable = (driver_vtable_t *)&network_vtable;
}
+void network_register_handler( void *obj, network_event_handler_t handler )
+{
+ network_t *network = (network_t *)obj;
+
+ network->handler = handler;
+}
+
char *network_mac_to_string( network_mac_address_t mac, char *buf, size_t buflen )
{
snprintf( buf, buflen, "%X:%X:%X:%X:%X:%X",