diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2017-08-01 16:23:09 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2017-08-01 16:23:09 +0200 |
commit | d86f301ecb8c773cde8afc646a8b7ae578b8a232 (patch) | |
tree | c97556261bd02ec2765522e5451a018fa18a25fc /src/drivers/net/network.c | |
parent | 0f6576eba813fdb30b619b9b0b5fa7a76c6cf636 (diff) | |
download | abaos-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.c | 20 |
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", |