Date: Mon, 8 Nov 2004 17:44:35 +0900 From: Pyun YongHyeon <yongari@kt-is.co.kr> To: freebsd-sparc64@freebsd.org Subject: Executing downloaded micorcode of fxp panics sparc64 Message-ID: <20041108084435.GA1511@kt-is.co.kr>
next in thread | raw e-mail | index | archive | help
--LZvS9be/3tNcYl/X Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi, It seems that fxp driver panics sparc64 system when executing downloaded microcode. The following patch fixes the panic. It would be appriciated if interested users could apply the patch, download microcode and try to pass packets on fxp. Thanks. -- Regards, Pyun YongHyeon http://www.kr.freebsd.org/~yongari | yongari@freebsd.org --LZvS9be/3tNcYl/X Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="fxp.patch" --- if_fxp.c.orig Mon Sep 20 11:22:43 2004 +++ if_fxp.c Mon Nov 8 17:35:53 2004 @@ -2624,7 +2624,7 @@ static u_int32_t fxp_ucode_d102[] = D102_B_RCVBUNDLE_UCODE; static u_int32_t fxp_ucode_d102c[] = D102_C_RCVBUNDLE_UCODE; -#define UCODE(x) x, sizeof(x) +#define UCODE(x) x, sizeof(x)/sizeof(u_int32_t) struct ucode { u_int32_t revision; @@ -2651,6 +2651,7 @@ { struct ucode *uc; struct fxp_cb_ucode *cbp; + int i; for (uc = ucode_table; uc->ucode != NULL; uc++) if (sc->revision == uc->revision) @@ -2661,7 +2662,8 @@ cbp->cb_status = 0; cbp->cb_command = htole16(FXP_CB_COMMAND_UCODE | FXP_CB_COMMAND_EL); cbp->link_addr = 0xffffffff; /* (no) next command */ - memcpy(cbp->ucode, uc->ucode, uc->length); + for (i = 0; i < uc->length; i++) + cbp->ucode[i] = htole32(uc->ucode[i]); if (uc->int_delay_offset) *(u_int16_t *)&cbp->ucode[uc->int_delay_offset] = htole16(sc->tunable_int_delay + sc->tunable_int_delay / 2); --LZvS9be/3tNcYl/X--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041108084435.GA1511>