Compaq Tru64 UNIX Installation Manual page 71

Writing network device drivers
Table of Contents

Advertisement

if (status == SUCCESS) {
ee = (unsigned char *)&ee_copy;
for (i = 0; i < (sizeof(struct w3_eeprom)); i++) {
*ee = tuple_data_infop->TupleData[i];
ee++;
}
} else {
printf("el%d: Can't read multifunction card's eeprom.\n",
unit);
if (sc->ispcmcia)
pcmcia_unregister_event_callback(card_infop->socket_vnum,
return(0);
}
} else {
printf("el%d: Can't read multifunction card's eeprom.\n",
unit);
if (sc->ispcmcia)
pcmcia_unregister_event_callback(card_infop->socket_vnum,
return(0);
}
} else {
2
ed = (unsigned short *)&ee_copy;
for (i=0; i<(sizeof(struct w3_eeprom)/2); i++) {
WRITE_ECR(sc, ECR_READ+i);
DELAY(1000);
*ed = READ_EDR(sc);
ed++;
}
}
if (bcmp(sc->eeprom.addr, ee_copy.addr, 6)) {
for (i=0; i<3; i++) {
j = sc->eeprom.addr[i];
tmp_addr[(i*2)] = (j>>8) & 0xff;
tmp_addr[(i*2)+1] = (j) & 0xff;
}
if (bcmp(tmp_addr, sc->is_addr, 6) == 0) {
for (i=0; i<3; i++) {
j = ee_copy.addr[i];
tmp_addr[(i*2)] = (j>>8) & 0xff;
tmp_addr[(i*2)+1] = (j) & 0xff;
}
bzero(&ifr, sizeof(struct ifreq));
bcopy(tmp_addr, ifr.ifr_addr.sa_data, 6);
bcopy(tmp_addr, sc->is_addr, 6);
if (((struct arpcom *)ifp)->ac_flag & AC_IPUP) {
rearpwhohas((struct arpcom *)ifp);
}
if_sphyaddr(ifp, &ifr);
pfilt_newaddress(sc->is_ed.ess_enetunit, sc->is_addr);
}
Implementing the Autoconfiguration Support Section (probe) 5–13
CARD_REMOVAL_EVENT,
(caddr_t)el_card_remove);
CARD_REMOVAL_EVENT,
(caddr_t)el_card_remove);
3
4
5
6
7
9
8
10

Advertisement

Table of Contents
loading

Table of Contents