Date: Thu, 12 Apr 2001 18:03:28 +0800 From: Vladimir Kurtukov <vk@hvv.svzserv.kemerovo.su> To: jlemon@flugsvamp.com Cc: eugen@svzserv.kemerovo.su, stable@freebsd.org, jlemon@freebsd.org, jkh@freebsd.org Subject: Re: New 4.3 BETA (BETA2) release available Message-ID: <MEd.20010412180328.670223@hvv.svzserv.kemerovo.su> In-Reply-To: <200103140624.f2E6Om137753@prism.flugsvamp.com>; from Jonathan Lemon <jlemon@flugsvamp.com> References: <local.mail.freebsd-stable/20010313191333C.jkh@osd.bsdi.com> <200103140624.f2E6Om137753@prism.flugsvamp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] Hello ! Wed Mar 14 13:24, Jonathan Lemon <jlemon@flugsvamp.com> wrote: > >> Anyway, please test the heck even more out of this one since we're > >> only 12 days away from the final release candidate! :) > > > >le nic driver is broken in all 4.x versions. Any chance that > >kern/25650 will be commited before 4.3-RELEASE? > > > >http://www.FreeBSD.org/cgi/query-pr.cgi?pr=25650 > > If someone who has a le card will confirm that the following patch > fixes the problem, (I don't have one here), then we should probably > be able to get it into 4.3. this patch (see attach) work fine for about a 4 weeks (it's yours patch + my one line) --- Best regards, { Vladimir Kurtukov, ICQ 2929697 } Vladimir { vk@hvv.svzserv.kemerovo.su } { 2:5006/9@fidonet } [-- Attachment #2 --] --- if_le.c.orig Tue Jul 18 05:24:30 2000 +++ if_le.c Thu Apr 12 18:00:55 2001 @@ -73,8 +73,6 @@ typedef u_short le_mcbits_t; #define LE_MC_NBPW_LOG2 4 #define LE_MC_NBPW (1 << LE_MC_NBPW_LOG2) -#define IF_RESET_ARGS int unit -#define LE_RESET(ifp) (((sc)->if_reset)((sc)->le_if.if_unit)) #if !defined(LE_NOLEMAC) /* @@ -193,8 +191,8 @@ */ struct le_softc { struct arpcom le_ac; /* Common Ethernet/ARP Structure */ - void (*if_init) __P((int)); /* Interface init routine */ - void (*if_reset) __P((int)); /* Interface reset routine */ + void (*if_init) __P((le_softc_t *));/* Interface init routine */ + void (*if_reset) __P((le_softc_t *));/* Interface reset routine */ caddr_t le_membase; /* Starting memory address (virtual) */ unsigned le_iobase; /* Starting I/O base address */ unsigned le_irq; /* Interrupt Request Value */ @@ -348,6 +346,7 @@ ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; ifp->if_output = ether_output; ifp->if_ioctl = le_ioctl; + ifp->if_init = sc->if_init; ifp->if_type = IFT_ETHER; ifp->if_addrlen = 6; ifp->if_hdrlen = 14; @@ -448,7 +447,7 @@ break; case SIOCSIFFLAGS: { - (*sc->if_init)(ifp->if_unit); + sc->if_init(sc); break; } @@ -457,7 +456,7 @@ /* * Update multicast listeners */ - (*sc->if_init)(ifp->if_unit); + sc->if_init(sc); error = 0; break; @@ -615,9 +614,9 @@ #define LEMAC_32K_MODE(mbase) (((mbase) >= 0x14) && ((mbase) <= 0x1F)) #define LEMAC_2K_MODE(mbase) ( (mbase) >= 0x40) -static void lemac_init(int unit); +static void lemac_init(le_softc_t *sc); static void lemac_start(struct ifnet *ifp); -static void lemac_reset(IF_RESET_ARGS); +static void lemac_reset(le_softc_t *sc); static void lemac_intr(le_softc_t *sc); static void lemac_rne_intr(le_softc_t *sc); static void lemac_tne_intr(le_softc_t *sc); @@ -694,7 +693,7 @@ sc->le_if.if_start = lemac_start; sc->if_reset = lemac_reset; sc->lemac_memmode = 2; - LE_RESET(sc); + sc->if_reset(sc); if ((sc->le_flags & IFF_UP) == 0) return 0; @@ -723,9 +722,8 @@ */ static void lemac_reset( - IF_RESET_ARGS) + le_softc_t *sc) { - le_softc_t *sc = &le_softc[unit]; int portval, cksum; /* @@ -781,9 +779,8 @@ static void lemac_init( - int unit) + le_softc_t *sc) { - le_softc_t *sc = &le_softc[unit]; int s; if ((sc->le_flags & IFF_UP) == 0) @@ -948,9 +945,9 @@ printf("%s%d: fatal RXD error, attempting recovery\n", sc->le_if.if_name, sc->le_if.if_unit); - LE_RESET(sc); + sc->if_reset(sc); if (sc->le_flags & IFF_UP) { - lemac_init(sc->le_if.if_unit); + lemac_init(sc); return; } @@ -1142,8 +1139,8 @@ static int lance_init_ring(le_softc_t *sc, ln_ring_t *rp, lance_ring_t *ri, unsigned ndescs, unsigned bufoffset, unsigned descoffset); -static void lance_init(int unit); -static void lance_reset(IF_RESET_ARGS); +static void lance_init(le_softc_t *sc); +static void lance_reset(le_softc_t *sc); static void lance_intr(le_softc_t *sc); static int lance_rx_intr(le_softc_t *sc); static void lance_start(struct ifnet *ifp); @@ -1367,7 +1364,7 @@ sc->if_init = lance_init; sc->le_if.if_start = lance_start; DEPCA_WRNICSR(sc, DEPCA_NICSR_SHE | DEPCA_NICSR_ENABINTR); - LE_RESET(sc); + sc->if_reset(sc); LN_STAT(low_txfree = sc->lance_txinfo.ri_max); LN_STAT(low_txheapsize = 0xFFFFFFFF); @@ -1520,9 +1517,8 @@ static void lance_reset( - IF_RESET_ARGS) + le_softc_t *sc) { - le_softc_t *sc = &le_softc[unit]; register int cnt, csr; /* lance_dumpcsrs(sc, "lance_reset: start"); */ @@ -1585,16 +1581,15 @@ static void lance_init( - int unit) + le_softc_t *sc) { - le_softc_t *sc = &le_softc[unit]; lance_ring_t *ri; lance_descinfo_t *di; ln_desc_t desc; LN_STAT(inits++); if (sc->le_if.if_flags & IFF_RUNNING) { - LE_RESET(sc); + sc->if_reset(sc); lance_tx_intr(sc); /* * If we were running, requeue any pending transmits. @@ -1611,7 +1606,7 @@ ri->ri_free++; } } else { - LE_RESET(sc); + sc->if_reset(sc); } /* @@ -1685,14 +1680,14 @@ if (oldcsr & LN_CSR0_MEMERROR) { LN_STAT(memory_errors++); if (oldcsr & (LN_CSR0_RXON|LN_CSR0_TXON)) { - lance_init(sc->le_if.if_unit); + lance_init(sc); return; } } } if ((oldcsr & LN_CSR0_RXINT) && lance_rx_intr(sc)) { - lance_init(sc->le_if.if_unit); + lance_init(sc); return; } @@ -1961,7 +1956,7 @@ LN_STAT(tx_buferror++); sc->le_if.if_oerrors++; if ((desc.d_status & LN_DSTS_TxLATECOLL) == 0) { - lance_init(sc->le_if.if_unit); + lance_init(sc); return 0; } else { LN_STAT(tx_late_collisions++);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?MEd.20010412180328.670223>
