/branches/network/uspace/srv/net/netif/dp8390/dp8390.c |
---|
351,7 → 351,7 |
if (dep->de_mode == DEM_SINK) |
{ |
assert(!from_int); |
dep->de_flags |= DEF_PACK_SEND; |
// dep->de_flags |= DEF_PACK_SEND; |
reply(dep, OK, FALSE); |
// return; |
return EOK; |
358,23 → 358,24 |
} |
assert(dep->de_mode == DEM_ENABLED); |
assert(dep->de_flags & DEF_ENABLED); |
if (dep->de_flags & DEF_SEND_AVAIL){ |
if( dep->packet_queue && ( ! from_int )){ |
// if (dep->de_flags & DEF_SEND_AVAIL){ |
// panic("", "dp8390: send already in progress", NO_NUM); |
return queue_packet( dep, packet ); |
} |
sendq_head= dep->de_sendq_head; |
if (dep->de_sendq[sendq_head].sq_filled) |
{ |
if (from_int) |
panic("", "dp8390: should not be sending\n", NO_NUM); |
// if (dep->de_sendq[sendq_head].sq_filled) |
// { |
// if (from_int) |
// panic("", "dp8390: should not be sending\n", NO_NUM); |
// dep->de_sendmsg= *mp; |
dep->de_flags |= DEF_SEND_AVAIL; |
reply(dep, OK, FALSE); |
// dep->de_flags |= DEF_SEND_AVAIL; |
// reply(dep, OK, FALSE); |
// return; |
return queue_packet( dep, packet ); |
} |
assert(!(dep->de_flags & DEF_PACK_SEND)); |
// return queue_packet( dep, packet ); |
// } |
// assert(!(dep->de_flags & DEF_PACK_SEND)); |
/* if (vectored) |
{ |
430,7 → 431,7 |
assert(sendq_head < SENDQ_NR); |
dep->de_sendq_head= sendq_head; |
dep->de_flags |= DEF_PACK_SEND; |
// dep->de_flags |= DEF_PACK_SEND; |
/* If the interrupt handler called, don't send a reply. The reply |
* will be sent after all interrupts are handled. |
720,7 → 721,7 |
outb_reg0(dep, DP_TBCR0, size & 0xff); |
outb_reg0(dep, DP_CR, CR_TXP | CR_EXTRA); |
} |
if (dep->de_flags & DEF_SEND_AVAIL) |
// if (dep->de_flags & DEF_SEND_AVAIL) |
dp_send(dep); |
} |
883,11 → 884,10 |
{ |
packet_t packet; |
if (!(dep->de_flags & DEF_SEND_AVAIL)) |
return; |
// if (!(dep->de_flags & DEF_SEND_AVAIL)) |
// return; |
dep->de_flags &= ~DEF_SEND_AVAIL; |
while( dep->packet_queue ){ |
if( dep->packet_queue ){ |
packet = dep->packet_queue; |
dep->packet_queue = pq_detach( packet ); |
do_pwrite( dep, packet, TRUE ); |
894,6 → 894,9 |
netif_pq_release( packet_get_id( packet )); |
-- dep->packet_count; |
} |
// if( ! dep->packet_queue ){ |
// dep->de_flags &= ~DEF_SEND_AVAIL; |
// } |
/* switch(dep->de_sendmsg.m_type) |
{ |
case DL_WRITE: do_vwrite(&dep->de_sendmsg, TRUE, FALSE); break; |
1557,7 → 1560,7 |
panic("", "dp8390: send failed:", r); |
*/ dep->de_read_s = 0; |
dep->de_flags &= ~(DEF_PACK_SEND | DEF_PACK_RECV); |
// dep->de_flags &= ~(DEF_PACK_SEND | DEF_PACK_RECV); |
} |
/*===========================================================================* |
/branches/network/uspace/srv/net/netif/dp8390/dp8390.h |
---|
265,7 → 265,7 |
vir_bytes iod_iovec_offset; |
} iovec_dat_s_t; |
*/ |
#define SENDQ_NR 2 /* Maximum size of the send queue */ |
#define SENDQ_NR 1 /* Maximum size of the send queue */ |
#define SENDQ_PAGES 6 /* 6 * DP_PAGESIZE >= 1514 bytes */ |
typedef struct dpeth |
/branches/network/uspace/srv/net/netif/dp8390/dp8390_module.c |
---|
156,8 → 156,9 |
return; |
} |
assert( dep->de_flags & DEF_ENABLED); |
dep->de_int_pending= 0; |
printf( "I%d: %d\n", device_id, IPC_GET_ISR( call )); |
dep->de_int_pending = 0; |
// TODO remove debug print: |
printf( "I%d: 0x%x\n", device_id, IPC_GET_ISR( call )); |
dp_check_ints( dep, IPC_GET_ISR( call )); |
if( dep->received_queue ){ |
received = dep->received_queue; |
224,14 → 225,14 |
ERROR_PROPAGATE( find_device( device_id, & device )); |
dep = ( dpeth_t * ) device->specific; |
// TODO remove debug dump: |
uint8_t * data; |
data = packet_get_data( packet ); |
printf( "Sending packet:\n\tid\t= %d\n\tlength\t= %d\n\tdata\t= %.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX\n\t\t%.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX\n", packet_get_id( packet ), packet_get_data_length( packet ), data[ 0 ], data[ 1 ], data[ 2 ], data[ 3 ], data[ 4 ], data[ 5 ], data[ 6 ], data[ 7 ], data[ 8 ], data[ 9 ], data[ 10 ], data[ 11 ], data[ 12 ], data[ 13 ], data[ 14 ], data[ 15 ], data[ 16 ], data[ 17 ], data[ 18 ], data[ 19 ], data[ 20 ], data[ 21 ], data[ 22 ], data[ 23 ], data[ 24 ], data[ 25 ], data[ 26 ], data[ 27 ], data[ 28 ], data[ 29 ], data[ 30 ], data[ 31 ], data[ 32 ], data[ 33 ], data[ 34 ], data[ 35 ], data[ 36 ], data[ 37 ], data[ 38 ], data[ 39 ], data[ 40 ], data[ 41 ], data[ 42 ], data[ 43 ], data[ 44 ], data[ 45 ], data[ 46 ], data[ 47 ], data[ 48 ], data[ 49 ], data[ 50 ], data[ 51 ], data[ 52 ], data[ 53 ], data[ 54 ], data[ 55 ], data[ 56 ], data[ 57 ], data[ 58 ], data[ 59 ] ); |
// process packet queue |
do{ |
next = pq_detach( packet ); |
// TODO remove debug dump: |
uint8_t * data; |
data = packet_get_data( packet ); |
printf( "Sending packet:\n\tid\t= %d\n\tlength\t= %d\n\tdata\t= %.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX\n\t\t%.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX\n", packet_get_id( packet ), packet_get_data_length( packet ), data[ 0 ], data[ 1 ], data[ 2 ], data[ 3 ], data[ 4 ], data[ 5 ], data[ 6 ], data[ 7 ], data[ 8 ], data[ 9 ], data[ 10 ], data[ 11 ], data[ 12 ], data[ 13 ], data[ 14 ], data[ 15 ], data[ 16 ], data[ 17 ], data[ 18 ], data[ 19 ], data[ 20 ], data[ 21 ], data[ 22 ], data[ 23 ], data[ 24 ], data[ 25 ], data[ 26 ], data[ 27 ], data[ 28 ], data[ 29 ], data[ 30 ], data[ 31 ], data[ 32 ], data[ 33 ], data[ 34 ], data[ 35 ], data[ 36 ], data[ 37 ], data[ 38 ], data[ 39 ], data[ 40 ], data[ 41 ], data[ 42 ], data[ 43 ], data[ 44 ], data[ 45 ], data[ 46 ], data[ 47 ], data[ 48 ], data[ 49 ], data[ 50 ], data[ 51 ], data[ 52 ], data[ 53 ], data[ 54 ], data[ 55 ], data[ 56 ], data[ 57 ], data[ 58 ], data[ 59 ] ); |
if( do_pwrite( dep, packet, FALSE ) != EBUSY ){ |
netif_pq_release( packet_get_id( packet )); |
} |
/branches/network/uspace/srv/net/netif/lo/lo.c |
---|
52,6 → 52,8 |
#include "../../include/nil_interface.h" |
#include "../../include/net_interface.h" |
#include "../../nil/nil_messages.h" |
#include "../netif.h" |
#include "../netif_module.h" |
104,7 → 106,17 |
void module_print_name( void ); |
int netif_specific_message( ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count ){ |
return ENOTSUP; |
switch( IPC_GET_METHOD( * call )){ |
case NET_NIL_PACKET_SPACE: |
* IPC_SET_ADDR( answer ) = 0; |
* IPC_SET_PREFIX( answer ) = 0; |
* IPC_SET_CONTENT( answer ) = lo_globals.mtu; |
* IPC_SET_SUFFIX( answer ) = 0; |
* answer_count = 4; |
return EOK; |
default: |
return ENOTSUP; |
} |
} |
int netif_get_addr_message( device_id_t device_id, measured_string_ref address ){ |
188,7 → 200,7 |
device_ref device; |
measured_string_t names[ 1 ] = {{ "MTU", 3 }}; |
measured_string_ref configuration; |
int count = 1; |
size_t count = sizeof( names ) / sizeof( measured_string_t ); |
char * data; |
configuration = & names[ 0 ]; |