+ /*
+ * If we must reprogram this board's physical ethernet
+ * address (as for secondary XNS interfaces), we do so
+ * before putting it on line, and starting receive requests.
+ * If you try this on an older 1010 board, it will total
+ * wedge the board.
+ */
+ if (is->is_flags & ILF_SETADDR) {
+ bcopy((caddr_t)is->is_addr, (caddr_t)&is->is_stats,
+ sizeof is->is_addr);
+ addr->il_bar = is->is_ubaddr & 0xffff;
+ addr->il_bcr = sizeof is->is_addr;
+ addr->il_csr = ((is->is_ubaddr >> 2) & IL_EUA)|ILC_LDPA;
+ if (ilwait(ui, "setaddr"))
+ return;
+ addr->il_bar = is->is_ubaddr & 0xffff;
+ addr->il_bcr = sizeof (struct il_stats);
+ addr->il_csr = ((is->is_ubaddr >> 2) & IL_EUA)|ILC_STAT;
+ if (ilwait(ui, "verifying setaddr"))
+ return;
+ if (bcmp((caddr_t)is->is_stats.ils_addr, (caddr_t)is->is_addr,
+ sizeof (is->is_addr)) != 0) {
+ printf("il%d: setaddr didn't work\n", ui->ui_unit);
+ return;
+ }
+ }