Make lance driver notify inet on startup, and respond to getname
This commit is contained in:
parent
2b23d38c5b
commit
d0806fd1af
1 changed files with 25 additions and 1 deletions
|
@ -166,6 +166,7 @@ _PROTOTYPE( static void put_userdata,
|
||||||
vir_bytes user_addr, vir_bytes count,
|
vir_bytes user_addr, vir_bytes count,
|
||||||
void *loc_addr) );
|
void *loc_addr) );
|
||||||
_PROTOTYPE( static void do_stop, (message *mp) );
|
_PROTOTYPE( static void do_stop, (message *mp) );
|
||||||
|
_PROTOTYPE( static void do_getname, (message *mp) );
|
||||||
|
|
||||||
_PROTOTYPE( static void lance_dump, (void) );
|
_PROTOTYPE( static void lance_dump, (void) );
|
||||||
_PROTOTYPE( static void lance_stop, (void) );
|
_PROTOTYPE( static void lance_stop, (void) );
|
||||||
|
@ -296,6 +297,7 @@ static int rx_slot_nr = 0; /* Rx-slot number */
|
||||||
static int tx_slot_nr = 0; /* Tx-slot number */
|
static int tx_slot_nr = 0; /* Tx-slot number */
|
||||||
static int cur_tx_slot_nr = 0; /* Tx-slot number */
|
static int cur_tx_slot_nr = 0; /* Tx-slot number */
|
||||||
static char isstored[TX_RING_SIZE]; /* Tx-slot in-use */
|
static char isstored[TX_RING_SIZE]; /* Tx-slot in-use */
|
||||||
|
static char *progname;
|
||||||
|
|
||||||
|
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
|
@ -304,10 +306,11 @@ static char isstored[TX_RING_SIZE]; /* Tx-slot in-use */
|
||||||
void main( int argc, char **argv )
|
void main( int argc, char **argv )
|
||||||
{
|
{
|
||||||
message m;
|
message m;
|
||||||
int i,irq,r;
|
int i,irq,r, tasknr;
|
||||||
ether_card_t *ec;
|
ether_card_t *ec;
|
||||||
long v;
|
long v;
|
||||||
int fkeys, sfkeys;
|
int fkeys, sfkeys;
|
||||||
|
(progname=strrchr(argv[0],'/')) ? progname++ : (progname=argv[0]);
|
||||||
|
|
||||||
env_setargs( argc, argv );
|
env_setargs( argc, argv );
|
||||||
|
|
||||||
|
@ -323,6 +326,11 @@ void main( int argc, char **argv )
|
||||||
(void) env_parse("ETH_IGN_PROTO", "x", 0, &v, 0x0000L, 0xFFFFL);
|
(void) env_parse("ETH_IGN_PROTO", "x", 0, &v, 0x0000L, 0xFFFFL);
|
||||||
eth_ign_proto= htons((u16_t) v);
|
eth_ign_proto= htons((u16_t) v);
|
||||||
|
|
||||||
|
/* Try to notify inet that we are present (again) */
|
||||||
|
r = findproc("inet", &tasknr);
|
||||||
|
if (r == OK)
|
||||||
|
notify(tasknr);
|
||||||
|
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
for (i=0;i<EC_PORT_NR_MAX;++i)
|
for (i=0;i<EC_PORT_NR_MAX;++i)
|
||||||
|
@ -353,6 +361,7 @@ void main( int argc, char **argv )
|
||||||
case DL_INIT: do_init(&m); break;
|
case DL_INIT: do_init(&m); break;
|
||||||
case DL_GETSTAT: do_getstat(&m); break;
|
case DL_GETSTAT: do_getstat(&m); break;
|
||||||
case DL_STOP: do_stop(&m); break;
|
case DL_STOP: do_stop(&m); break;
|
||||||
|
case DL_GETNAME: do_getname(&m); break;
|
||||||
case FKEY_PRESSED: lance_dump(); break;
|
case FKEY_PRESSED: lance_dump(); break;
|
||||||
/*case HARD_STOP: lance_stop(); break;*/
|
/*case HARD_STOP: lance_stop(); break;*/
|
||||||
case SYS_SIG:
|
case SYS_SIG:
|
||||||
|
@ -1686,6 +1695,21 @@ ether_card_t *ec;
|
||||||
return lance_version;
|
return lance_version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*===========================================================================*
|
||||||
|
* do_getname *
|
||||||
|
*===========================================================================*/
|
||||||
|
static void do_getname(mp)
|
||||||
|
message *mp;
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
|
||||||
|
strncpy(mp->DL_NAME, progname, sizeof(mp->DL_NAME));
|
||||||
|
mp->DL_NAME[sizeof(mp->DL_NAME)-1]= '\0';
|
||||||
|
mp->m_type= DL_NAME_REPLY;
|
||||||
|
r= send(mp->m_source, mp);
|
||||||
|
if (r != OK)
|
||||||
|
panic("LANCE", "do_getname: send failed", r);
|
||||||
|
}
|
||||||
|
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
* lance_init_card *
|
* lance_init_card *
|
||||||
|
|
Loading…
Reference in a new issue