Date: Wed, 29 Jul 1998 15:16:32 +0900 (JST) From: HAMADA Naoki <hamada@astec.co.jp> To: wpaul@skynet.ctr.columbia.edu Cc: hackers@FreeBSD.ORG Subject: Re: Call for testers for 3c905B driver Message-ID: <199807290616.PAA13818@stone.astec.co.jp> In-Reply-To: Bill Paul's message of "Tue, 28 Jul 1998 16:35:53 -0400 (EDT)" <199807282035.QAA27573@skynet.ctr.columbia.edu> References: <199807282035.QAA27573@skynet.ctr.columbia.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
Bill Paul wrote:
>I would appreciate it if people with 3c900, 3c905 and 3c905B hardware
>could test this driver for me. I'm particularly interested to hear it
>it works correctly with Fast Etherlink XL boards (3c905 10/100 cards).
>These cards use a NatSemi 10/100 PHY via the MII interface: I don't
>have one of these to test, so I can't be sure the MII support will
>work correctly.
I tried my 3C905 (not 3C905B) with new xl driver. It works almost
well, but the auto negotiation (under 10M and half-duplex) invoked by
'ifconfig xl0 media autoselect' sometimes fails.
xl1: autoneg not complete, waiting a little longer...
xl1: autoneg not complete, waiting a little longer...
xl1: autoneg not complete, waiting a little longer...
xl1: autoneg not complete, waiting a little longer...
xl1: autoneg not complete, waiting a little longer...
xl1: autoneg not complete, waiting a little longer...
xl1: autoneg not complete, waiting a little longer...
xl1: autoneg not complete, waiting a little longer...
xl1: autoneg not complete, waiting a little longer...
xl1: autoneg not complete, no carrier
After setting 'ifconfig xl0 media 10BaseT/UTP' I tried the auto
negotiation again, and it returns a successful message.
xl1: selecting MII, 10Mbps, half duplex
xl1: autoneg complete, link status good (half-duplex, 10Mbps)
But, alas, the network is still dead. I have to explicitly specify the
media to enable the network. I am going to look into this problem.
By the way, here is my patch for its multicast support, which is not
tested yet.
- nao
--- if_xl.c Wed Jul 29 13:38:04 1998
+++ if_xl.c.new Wed Jul 29 14:58:23 1998
@@ -207,6 +207,7 @@
static int xl_mii_writereg __P((struct xl_softc *, struct xl_mii_frame *));
static u_int16_t xl_phy_readreg __P((struct xl_softc *, int));
static void xl_phy_writereg __P((struct xl_softc *, u_int16_t, u_int16_t));
+static void xl_testpacket __P((struct xl_softc *));
static void xl_autoneg_xmit __P((struct xl_softc *));
static void xl_autoneg_mii __P((struct xl_softc *, int, int));
@@ -581,6 +582,13 @@
XL_SEL_WIN(5);
rxfilt = CSR_READ_1(sc, XL_W5_RX_FILTER);
+ if (sc->arpcom.ac_multicnt == 0) {
+ /* disable multicast */
+ rxfilt &= ~(XL_RXFILTER_ALLMULTI | XL_RXFILTER_MULTIHASH);
+ CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_RX_SET_FILT|rxfilt);
+ return;
+ }
+
if (sc->arpcom.ac_multicnt > 64 || ifp->if_flags & IFF_ALLMULTI ||
sc->xl_type == XL_TYPE_90X) {
rxfilt |= XL_RXFILTER_ALLMULTI;
@@ -591,6 +599,7 @@
CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_RX_SET_HASH|i);
/* now program new ones */
rxfilt |= XL_RXFILTER_MULTIHASH;
+ rxfilt &= ~XL_RXFILTER_ALLMULTI;
ETHER_FIRST_MULTI(step, &sc->arpcom, enm);
while(enm != NULL) {
if (bcmp(enm->enm_addrlo, enm->enm_addrhi,
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199807290616.PAA13818>
