Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 4497 → Rev 4498

/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 ];