From 235551b84395233770f525714dee257ffb0e4842 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Tue, 8 Aug 2017 21:06:42 +0200 Subject: sending sort of an ARP reply over the rtl8139 driver --- src/drivers/net/rtl8139.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/drivers/net/rtl8139.c b/src/drivers/net/rtl8139.c index ad6ccfe..7731475 100644 --- a/src/drivers/net/rtl8139.c +++ b/src/drivers/net/rtl8139.c @@ -335,7 +335,6 @@ uint32_t rtl8139_handle_interrupt( interrupt_handler_t *handler, uint32_t esp ) printf( "rtl8139: INTERRUPT: %X\n", isr ); #endif - if( isr & ISR_RECEIVE_OK ) { // TODO: manual says, we should reset the ISR bit first, // then go into a read loop? @@ -370,6 +369,8 @@ void rtl8139_print_info( void *obj ) void rtl8139_write( void *obj, network_buffer_t buf ) { + rtl8139_t *rtl8139 = (rtl8139_t *)obj; + #ifdef DEBUG printf( "rtl8139: sending data of length %d\n", buf.length ); printf( "rtl8139: " ); @@ -378,4 +379,11 @@ void rtl8139_write( void *obj, network_buffer_t buf ) } puts( "" ); #endif + + memcpy( rtl8139->transmit_buffer[rtl8139->transmit_buffer_idx], buf.data, buf.length ); + + port32_write( &rtl8139->TSD_port[rtl8139->transmit_buffer_idx], buf.length & 0xFFF ); + + rtl8139->transmit_buffer_idx += 1; + rtl8139->transmit_buffer_idx %= NOF_TRANSMIT_BUFFERS; } -- cgit v1.2.3-54-g00ecf